coding无法使用浏览器打开,必须用git工具下载:
git clone https://e.coding.net/weidongshan/linux/doc_and_source_for_drivers.git
参考资料,GIT仓库里:
IMX6ULL\开发板配套资料\datasheet\Core_board\CPU\IMX6ULLRM.pdf
《Chapter 34 Enhanced LCD Interface (eLCDIF)》
IMX6ULL\source\03_LCD\05_参考的裸机源码\03_font_test
Linux-4.9.88\drivers\video\fbdev\mxsfb.c
arch/arm/boot/dts/imx6ull.dtsi
arch/arm/boot/dts/100ask_imx6ull-14x14.dts
IMX6ULL\source\03_LCD\10_lcd_drv_lcdcontroller_reg_config_use_devicetree
LCD驱动程序的核心就是:
硬件相关的设置又可以分为3部分:
framebuffer-mylcd {
compatible = "100ask,lcd_drv";
pinctrl-names = "default";
pinctrl-0 = <&mylcd_pinctrl>;
backlight-gpios = <&gpio1 8 GPIO_ACTIVE_HIGH>;
clocks = <&clks IMX6UL_CLK_LCDIF_PIX>,
<&clks IMX6UL_CLK_LCDIF_APB>;
clock-names = "pix", "axi";
display = <&display0>;
display0: display {
bits-per-pixel = <24>;
bus-width = <24>;
display-timings {
native-mode = <&timing0>;
timing0: timing0_1024x768 {
clock-frequency = <50000000>;
hactive = <1024>;
vactive = <600>;
hfront-porch = <160>;
hback-porch = <140>;
hsync-len = <20>;
vback-porch = <20>;
vfront-porch = <12>;
vsync-len = <3>;
hsync-active = <0>;
vsync-active = <0>;
de-active = <1>;
pixelclk-active = <0>;
};
};
};
};
时序参数、引脚极性等信息,都被保存在一个display_timing结构体里:
参考内核文件:
drivers\video\of_display_timing.c
drivers\video\fbdev\mxsfb.c
根据芯片手册,一个一个设置寄存器: