AM335x(TQ335x)学习笔记——LCD驱动移植
(3)backlight节点分析及配置
本文引用地址:https://www.eepw.com.cn/article/201611/322821.htm从backlight节点中可以获得如下信息:
- 1.匹配内核驱动的关键词是"pwm-backlight"。
- 2.使用的ECAP0进行PWM输出。
- 3.有8个亮度等级。
- 4.默认的亮度等级是8,也就是最亮。
- Step1.将backlight节点中&eacp0改为&eacp2。
- Step2.将&epwmss0改为&epwmss2,并将该节点内的ecap0:ecap@48304100改成ecap0:ecap@48304100,然后将该节点中的&ecap0_pins改成&ecap2_pins。
- Step3.将ecap0_pins节点改名为ecap2_pins,然后将pinctrl-single,pins内的内容改为:0x19cMUX_MODE4。
- backlight{
- compatible="pwm-backlight";
- pwms=<&ecap20500000>;
- brightness-levels=<05153566275101152255>;
- default-brightness-level=<8>;
- };
- &epwmss2{
- status="okay";
- ecap2:ecap@48304100{
- status="okay";
- pinctrl-names="default";
- pinctrl-0=<&ecap2_pins>;
- };
- };
- ecap2_pins:backlight_pins{
- pinctrl-single,pins=<
- 0x19cMUX_MODE4/*MCASP0_AHCLKR.eCAP2_in_PWM2_outMODE4*/
- >;
- };
- makeARCH=armmenuconfig
- Graphicssupport--->
- [*]Pulse-WidthModulation(PWM)Support--->
- <*>ECAPPWMsupport
- <*>EHRPWMPWMsupport
- -*-Backlight&LCDdevicesupport--->
- <*>GenericPWMbasedBacklightDriver
- Graphicssupport--->
- DirectRenderingManager--->
- <*>DirectRenderingManager(XFree864.1.0andhigherDRIsupport)--->
- <*>DRMSupportforTILCDCDisplayController
- makeARCH=armCROSS_COMPILE=arm-linux-gnueabi-tq335x.dtb
- makeARCH=armCROSS_COMPILE=arm-linux-gnueabi--j8
将新编译好的tq335x.dtb和zImage拷贝到SD卡的boot目录下,然后用SD启动开发板到u-boot命令行模式,通过u-boot指令启动内核(每次都这样启动会比较麻烦,可以通过设置u-boot的bootcmd环境变量并保存来简化此动作),启动内核的指令与前一篇文章的命令是相同的:
- loadmmc00x88000000/boot/tq335x.dtb
- loadmmc00x82000000/boot/zImage
- loadmmc00x88080000/boot/ramdisk.img
- bootz0x820000000x880800000x88000000
(7)pinmux配置参数的确定方法
相信有些人看完这几篇文章之后有个疑问,就是配置pinmux的时候offset是如何确定的。配置GPIO管脚复用功能时经常用到pinctrl-single,pins =
讲offset的确定方法之前需要指出的是,TI的GPIO控制与三星的芯片不同,三星的芯片管脚复用功能是放在GPIO寄存器中的,而TI的芯片则有个专门的控制模块叫Control Module,该模块可以控制所有的GPIO管脚功能复用;另外,与三星芯片的另外一个不同是TI的芯片分为技术参考手册和数据手册,技术参考手册非常详细的讲述同family的芯片功能及使用方法,数据手册则用来讲述同family中不同芯片特有的属性。因此,调试TI芯片时需要结合技术参考手册和数据手册,而配置GPIO则需要阅读技术手册的GPIO、Control Module两章和数据手册中相关的部分。
从am33xx.dtsi中可以看到pinmux的基地址是0x44e10800,我们先来看这个地址是怎么来的。从技术参考手册的内存映射表可以确定该地址位于L4_WKUP段内,如下图:
点击L4_WKUP超链接,可以切换到L4_WKUP的地址映射表,从该表中可以确定,该地址位于Control Module,如下图:
点击Control Module的超链接,可以切换到Control Module的地址映射表,从该表中可以找到0x44e10800地址,实际上就是conf_gpmc_ad0控制寄存器的地址,也就是说,pinmux配置时的offset都基于这个地址的。

评论