RK3288W Android8.1開發日誌(五)

1、EDP屏調試:

&edp {
	status = "okay";
};

&edp_panel {
	compatible = "simple-panel";
	backlight = <&backlight>;
	enable-gpios = <&gpio7 13 GPIO_ACTIVE_HIGH>; 
	enable-delay-ms = <120>;
	prepare-delay-ms = <200>; //上電時序延時加大解決uboot出現Aux通信出錯
	bus-format = <MEDIA_BUS_FMT_RGB888_1X24>;
	power-supply = <&vcc_lcd>;
	status = "okay";

	disp_timings: display-timings {
		native-mode = <&timing0>;

		timing0: timing0 {
			clock-frequency = <141000000>; 
			hactive = <1920>; 
			vactive = <1080>;
			hfront-porch = <30>;
			hsync-len = <5>;
			hback-porch = <153>;
			vfront-porch = <15>;
			vsync-len = <1>;//8
			vback-porch = <20>;
			hsync-active = <0>;
			vsync-active = <0>;
			de-active = <0>;
			pixelclk-active = <0>;
		};
	};
};

&edp_phy {
	status = "okay";
};

&route_edp {
	status = "okay";
};

碰到問題:開機很大概率不會亮屏,去掉&route_edp ,可以正常開機,但無法顯示靜態logo圖像,測試發現以太網通信時屏幕會抖動,確認是硬件干擾所致,還有EDP走線過長引起。

2、MIPI屏調試:

&dsi0 {
	status = "okay";

	panel: panel {
		compatible = "simple-panel-dsi";
		reg = <0>;
		backlight = <&backlight>;
		1v8-gpio = <&gpio7 2 GPIO_ACTIVE_HIGH>; //添加1.8v的使能,需要修改panel_simple.c
		enable-gpios = <&gpio7 3 GPIO_ACTIVE_HIGH>;
		reset-gpios = <&gpio7 4 GPIO_ACTIVE_HIGH>;//復位時序是高低高,系統默認是低高低,需    
要修改panel_simple.c的上下電時的狀態,從log看,他是先走上電函數,在下電,綁定vop成功的時候在執行上電函數。
		power-supply = <&vcc_lcd>;
		dsi,flags = <(MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST)>;
		dsi,format = <MIPI_DSI_FMT_RGB888>;
		dsi,lanes = <4>;
		reset-delay-ms = <20>;
		init-delay-ms = <20>;
		enable-delay-ms = <120>;
		prepare-delay-ms = <120>;
		status = "okay";
		panel-init-sequence = [ //屏初始化代碼,找屏廠要
			15 00 02 E0 00 //02代表長度,E0代表cmd,00代表data
			15 00 02 E1 93
			15 00 02 E2 65
			15 00 02 E3 F8
			15 00 02 80 03
			15 00 02 E0 04  
 			15 00 02 2D 03  
 			15 00 02 E0 01  
 			15 00 02 00 00  
  			15 00 02 01 5C  
            …………………………
        ];
		panel-exit-sequence = [
           	 	05 00 01 28
            	05 78 01 10
        	];
			
		disp_timings: display-timings {
			native-mode = <&timing0>;

			timing0: timing0 {
				clock-frequency = <67000000>;
				hactive = <800>;
				vactive = <1280>;
				hback-porch = <18>;
				hfront-porch = <18>;
				vback-porch = <8>;
				vfront-porch = <30>;
				hsync-len = <18>;
				vsync-len = <4>;
				hsync-active = <0>;
				vsync-active = <0>;
				de-active = <0>;
				pixelclk-active = <0>;
			};
		};
	};
};
    

3、gt9712觸摸屏調試。

系統有gt9xx的驅動,gt9系列基本這個驅動都兼容,在內核配置編譯gt9xx,調試的時候打開debug,在gt9xx.h,有個DEBUG_SWITCH 宏,修改dts。

&i2c4{
   status = "okay";
   gt9xx@5d {
   	compatible = "goodix,gt9xx";
	reg = <0x5d>;
	touch-gpio = <&gpio7 6 IRQ_TYPE_LEVEL_HIGH>;
	reset-gpio = <&gpio7 5 GPIO_ACTIVE_LOW>;
	max-x = <800>;
	max-y = <1280>;
	tp-size = <101>; //從驅動查看,這個跟x或y水平翻轉,x y對調等等
	tp-supply = <&vcc_tp>; //根據硬件,這個電壓是2.8,系統默認是3.3,修改
	status = "okay";
   };
};

			vcc_tp: LDO_REG1 {
				regulator-always-on;
				regulator-boot-on;
				regulator-min-microvolt = <2800000>; //修改2.8V TP供電電壓
				regulator-max-microvolt = <2800000>;
				regulator-name = "vcc_tp";
				regulator-state-mem {
					regulator-off-in-suspend;
				};
			};

看看tp-size在驅動中表現:
if (of_property_read_u32(np, "tp-size", &val)) {
    	dev_err(&client->dev, "no max-x defined\n");
    	return -EINVAL;
    }

	if (val == 89) {
		m89or101 = TRUE;
		gtp_change_x2y = TRUE;
		gtp_x_reverse = FALSE;
		gtp_y_reverse = TRUE;
	} else if (val == 101) {
		m89or101 = FALSE;
		gtp_change_x2y = TRUE;
		gtp_x_reverse = TRUE;
		gtp_y_reverse = FALSE;
	} else if (val == 911) {
		m89or101 = FALSE;
		bgt911 = TRUE;
		gtp_change_x2y = TRUE;
		gtp_x_reverse = FALSE;
		gtp_y_reverse = TRUE;
	} else if (val == 970) {
		m89or101 = FALSE;
		bgt911 = FALSE;
		bgt970 = TRUE;
		gtp_change_x2y = FALSE;
		gtp_x_reverse = FALSE;
		gtp_y_reverse = TRUE;
	} else if (val == 910) {
		m89or101 = FALSE;
		bgt911 = FALSE;
		bgt970 = FALSE;
		bgt910 = TRUE;
		gtp_change_x2y = TRUE;
		gtp_x_reverse = FALSE;
		gtp_y_reverse = TRUE;
	}
根據出現的現象給tp-size選擇就行了。

還需要添加TP固件,TP廠會提供cfg文件,把這個文件拷貝到驅動目錄下,修改gt9xx_cfg.c文件,配置cfg文件進去即可。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章