开发版本:
u-boot:主线2016.09
kernel:TI SDK 4.9.69
rootfs:ubi
问题描述:
内核启动后,找不到/dev/fb0。启动信息中发现如下信息:
[drm] Initialized
tilcdc 4830e000.lcdc: no encoders/connectors found
内核配置:
通过menuconfig进行配置,使用omap2plus_defconfig默认配置。
修改内核命令行字符串
Boot options --->
Default kernel command string
修改的内容为:
console=ttyO0,115200n8 root=ubi0:rootfs rw ubi.mtd=7,2048 noinitrd rootfstype=ubifs rootwait=1 rootflags=sync
其他采用默认配置。
设备树:
在am335x-evm.dts的基础上修改:
1 修改LCD的pinmux
lcd_pins_s0: lcd_pins_s0 {
pinctrl-single,pins = <
AM33XX_IOPAD(0x83c, PIN_OUTPUT | MUX_MODE1) /* gpmc_ad15.lcd_data16, OUTPUT | MODE1 */
AM33XX_IOPAD(0x838, PIN_OUTPUT | MUX_MODE1) /* gpmc_ad14.lcd_data17, OUTPUT | MODE1 */
AM33XX_IOPAD(0x834, PIN_OUTPUT | MUX_MODE1) /* gpmc_ad13.lcd_data18, OUTPUT | MODE1 */
AM33XX_IOPAD(0x830, PIN_OUTPUT | MUX_MODE1) /* gpmc_ad12.lcd_data19, OUTPUT | MODE1 */
AM33XX_IOPAD(0x82c, PIN_OUTPUT | MUX_MODE1) /* gpmc_ad11.lcd_data20, OUTPUT | MODE1 */
AM33XX_IOPAD(0x828, PIN_OUTPUT | MUX_MODE1) /* gpmc_ad10.lcd_data21, OUTPUT | MODE1 */
AM33XX_IOPAD(0x824, PIN_OUTPUT | MUX_MODE1) /* gpmc_ad9.lcd_data22, OUTPUT | MODE1 */
AM33XX_IOPAD(0x820, PIN_OUTPUT | MUX_MODE1) /* gpmc_ad8.lcd_data23, OUTPUT | MODE1 */
AM33XX_IOPAD(0x8a0, PIN_OUTPUT | MUX_MODE0) /* lcd_data0.lcd_data0, OUTPUT | MODE0 */
AM33XX_IOPAD(0x8a4, PIN_OUTPUT | MUX_MODE0) /* lcd_data1.lcd_data1, OUTPUT | MODE0 */
AM33XX_IOPAD(0x8a8, PIN_OUTPUT | MUX_MODE0) /* lcd_data2.lcd_data2, OUTPUT | MODE0 */
AM33XX_IOPAD(0x8ac, PIN_OUTPUT | MUX_MODE0) /* lcd_data3.lcd_data3, OUTPUT | MODE0 */
AM33XX_IOPAD(0x8b0, PIN_OUTPUT | MUX_MODE0) /* lcd_data4.lcd_data4, OUTPUT | MODE0 */
AM33XX_IOPAD(0x8b4, PIN_OUTPUT | MUX_MODE0) /* lcd_data5.lcd_data5, OUTPUT | MODE0 */
AM33XX_IOPAD(0x8b8, PIN_OUTPUT | MUX_MODE0) /* lcd_data6.lcd_data6, OUTPUT | MODE0 */
AM33XX_IOPAD(0x8bc, PIN_OUTPUT | MUX_MODE0) /* lcd_data7.lcd_data7, OUTPUT | MODE0 */
AM33XX_IOPAD(0x8c0, PIN_OUTPUT | MUX_MODE0) /* lcd_data8.lcd_data8, OUTPUT | MODE0 */
AM33XX_IOPAD(0x8c4, PIN_OUTPUT | MUX_MODE0) /* lcd_data9.lcd_data9, OUTPUT | MODE0 */
AM33XX_IOPAD(0x8c8, PIN_OUTPUT | MUX_MODE0) /* lcd_data10.lcd_data10, OUTPUT | MODE0 */
AM33XX_IOPAD(0x8cc, PIN_OUTPUT | MUX_MODE0) /* lcd_data11.lcd_data11, OUTPUT | MODE0 */
AM33XX_IOPAD(0x8d0, PIN_OUTPUT | MUX_MODE0) /* lcd_data12.lcd_data12, OUTPUT | MODE0 */
AM33XX_IOPAD(0x8d4, PIN_OUTPUT | MUX_MODE0) /* lcd_data13.lcd_data13, OUTPUT | MODE0 */
AM33XX_IOPAD(0x8d8, PIN_OUTPUT | MUX_MODE0) /* lcd_data14.lcd_data14, OUTPUT | MODE0 */
AM33XX_IOPAD(0x8dc, PIN_OUTPUT | MUX_MODE0) /* lcd_data15.lcd_data15, OUTPUT | MODE0 */
AM33XX_IOPAD(0x8e0, PIN_OUTPUT | MUX_MODE0) /* lcd_vsync.lcd_vsync, OUTPUT | MODE0 */
AM33XX_IOPAD(0x8e4, PIN_OUTPUT | MUX_MODE0) /* lcd_hsync.lcd_hsync, OUTPUT | MODE0 */
AM33XX_IOPAD(0x8e8, PIN_OUTPUT | MUX_MODE0) /* lcd_pclk.lcd_pclk, OUTPUT | MODE0 */
AM33XX_IOPAD(0x8ec, PIN_OUTPUT | MUX_MODE0) /* lcd_ac_bias_en.lcd_ac_bias_en, OUTPUT | MODE0 */
>;
};
2 修改LCD时序
panel {
compatible = "ti,tilcdc,panel";
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&lcd_pins_s0>;
backlight = <&lcd_bl>;
panel-info {
ac-bias = <255>;
ac-bias-intrpt = <0>;
dma-burst-sz = <16>;
bpp = <16>;
fdd = <255>;
sync-edge = <0>;
sync-ctrl = <1>;
raster-order = <0>;
fifo-th = <6>;
};
display-timings {
800x480p62 {
clock-frequency = <30000000>;
hactive = <800>;
vactive = <480>;
hfront-porch = <40>;
hback-porch = <88>;
hsync-len = <48>;
vback-porch = <32>;
vfront-porch = <13>;
vsync-len = <3>;
hsync-active = <1>;
vsync-active = <1>;
};
};
};
3 使能lcdc
&lcdc {
status = "okay";
blue-and-red-wiring = "straight";
};
测试情况:
之前使用的是3.14的内核版本,从内核主线获取修改过来的,可以正常驱动LCD,说明硬件没有问题。
用4.9的内核和设备树替换之前的,其他u-boot和rootfs都不变,LCD就没有任何反应。
现在使用的rootfs是根据4.9内核定制的ubi格式的根文件系统。
疑惑:
3.14的内核和4.9的内核在LCD配置这块机制有何改变?
如何在4.9的内核上配置,进而驱动LCD?