一、修改设备树
1.1 硬件接线
1.2 修改s3c2440-pinctrl.dtsi
修改内核arch/arm/boot/dts/s3c2440-pinctrl.dtsi文件,在pinctrl节点下添加两个引脚配置节点:
lcd_pinctrl: lcd_pinctrl { samsung,pins = "gpc-8", "gpc-9", "gpc-10", "gpc-11", "gpc-12", "gpc-13", "gpc-14", "gpc-15", "gpd-0", "gpd-1", "gpd-2", "gpd-3", "gpd-4", "gpd-5", "gpd-6", "gpd-7", "gpd-8", "gpd-9", "gpd-10", "gpd-11", "gpd-12", "gpd-13", "gpd-14", "gpd-15", "gpc-1", "gpc-2", "gpc-3", "gpc-4"; samsung,pin-function = <EXYNOS_PIN_FUNC_2>; }; lcd_backlight: lcd_backlight { samsung,pins = "gpg-4"; samsung,pin-function = <3>; };
lcd_pinctrl:配置GPC8、GPC9、GPC10等引脚功能为LCD。
lcd_backlight:配置GPG4引脚功能为LCD电源。
1.3 修改s3c2440-smdk2440.dts
在内核arch/arm/boot/dts/s3c2440-smdk2440.dts文件中添加fb0设备节点:
fb0: fb@4d000000{ compatible = "tq2440,lcd"; reg = <0x4D000000 0x60>; interrupts = <0 0 16 3>; clocks = <&clocks HCLK_LCD>; clock-names = "lcd"; pinctrl-names = "default"; pinctrl-0 = <&lcd_pinctrl &lcd_backlight>; status = "okay"; lcdcon5 = <0xb09>; type = <0x60>; width = /bits/ 16 <480>; height = /bits/ 16 <272>; pixclock = <100000>; xres = /bits/ 16 <480>; yres = /bits/ 16 <272>; bpp = /bits/ 16 <16>; left_margin = /bits/ 16 <2>; right_margin =/bits/ 16 <2>; hsync_len = /bits/ 16 <41>; upper_margin = /bits/ 16 <2>; lower_margin = /bits/ 16 <2>; vsync_len = /bits/ 16 <10>; };
当platform设备和驱动匹配,就会调用pinctrl_bind_pins函数,该函数通过调用pinctrl_lookup_state函数获取状态名为default和init的状态,并分别保存到default_state和init_state成员变量中。如果找不到init状态,则选择default状态作为设备引脚的状态。
二、修改驱动程序
参考文章
[6]tq2440_dt/drivers/video/fbdev/s3c2410fb.c
[7] tq2440_dt/arch/arm/boot/dts/s3c2440-tq2440-dt.dts