一、現象:今天更新了一個新版本的buildroot linux sdk ,調試兩個mipi 屏幕,這兩個屏幕之前在其他的sdk都調好了的,所有直接把配置搬過來。但是有一個屏幕可以正常顯示,有一個屏幕開機時候不顯示,開機后按power 按鍵休眠喚醒就可以顯示,真是百思不得其解。
二、經過分析,出現這樣的問題原因是reset gpio 被復用了,有的屏幕內部有reset了,有的屏幕沒有reset。在u-boot運行的時候u-boot\drivers\video\drm\rockchip_panel.c 里面就對mipi 屏幕進行初始化了,如果在kernel里面才正確的配置gpio,那就會出現這種情況。 下面的LCD_RST_1V8 連接到GPIO1_B5.
?
三、解決方法一,
root@xxx:/# io -4 -r 0xff14000c
ff14000c: ?00001111 發現是被設置成flash_wrn。
在uboot里面強制配置復用的腳是gpio,writel(0xf00000, 0xff14000c) ,如何得來呢,看datasheet。
?
?
?
?
二、解決方案二,在kernel下的dts里面增加下面的代碼,設置gpio1_b5 默認為gpio。實際測試,在開機運行后uboot里面處置化mipi屏幕也是可以的。正常天亮mipi屏幕。
&dsi {status = "okay";rockchip,lane-rate = <600>;panel@0 {compatible = "simple-panel-dsi";status = "okay";reg = <0>;power-supply = <&vcc3v3_lcd>;backlight = <&backlight>;pinctrl-names = "default";pinctrl-0 = <&mipilcd_rst_gpio>;&pinctrl {mipilcd_ctl {mipilcd_rst_gpio: mipilcd-rst-gpioo {rockchip,pins =<1 RK_PB5 RK_FUNC_GPIO &pcfg_pull_none>;};};
};
?