首先查看硬件电路上的屏幕背光控制所使用的GPIO,找到其连接的GPIO后,在内核imx6ullGPIO宏定义的头文件“arch\arm\boot\dts\imx6ul-pinfunc.h”中找到GPIO使用的PWM。 原理图如下图所示:
查看原理图,背光控制“BL_EN_PWM”连接在“CSI_HSYNC”引脚上。在“imx6ul-pinfunc.h”文件找到“CSI_HSYNC”。 CSI_HSYNC复用功能如下所示:
#define MX6UL_PAD_CSI_HSYNC__CSI_HSYNC 0x01E0 0x046C 0x0524 0x0 0x0 #define MX6UL_PAD_CSI_HSYNC__USDHC2_CMD 0x01E0 0x046C 0x0678 0x1 0x0 #define MX6UL_PAD_CSI_HSYNC__SIM1_PORT1_PD 0x01E0 0x046C 0x0000 0x2 0x0 #define MX6UL_PAD_CSI_HSYNC__I2C2_SCL 0x01E0 0x046C 0x05AC 0x3 0x0 #define MX6UL_PAD_CSI_HSYNC__EIM_LBA_B 0x01E0 0x046C 0x0000 0x4 0x0 #define MX6UL_PAD_CSI_HSYNC__GPIO4_IO20 0x01E0 0x046C 0x0000 0x5 0x0 #define MX6UL_PAD_CSI_HSYNC__PWM8_OUT 0x01E0 0x046C 0x0000 0x6 0x0 #define MX6UL_PAD_CSI_HSYNC__UART6_DCE_CTS 0x01E0 0x046C 0x0000 0x8 0x0 #define MX6UL_PAD_CSI_HSYNC__UART6_DTE_RTS 0x01E0 0x046C 0x0648 0x8 0x1
查看文件内容,此处需要将CSI_HSYNC复用为PWM功能,所以需要使用宏定义“MX6UL_PAD_CSI_HSYNC__PWM8_OUT”。
需要修改的文件:"arch\arm\boot\dts\imx6ull-14x14-evk.dts" "arch\arm\boot\dts\imx6ull.dtsi"
dts文件中,默认有一个backlight节点,使用的是PWM1 GPIO1_IO08,而现在需要修改为pwm8,所以需要添加pwm8所使用的IO初始化,和pwm8的使能,添加CSI_HSYNC的时候,要注意别的地方是否有用到CSI_HSYNC引脚作为其它功能,避免冲突。
修改内容如下:
/*在iomuxc节点下,增加pinctrl_pwm8,初始化GPIO*/ pinctrl_pwm8: pwm8grp { fsl,pins = < MX6UL_PAD_CSI_HSYNC__PWM8_OUT 0x110b0 >; }; /*引用pwm8并设置使用的GPIO组和使能pwm8*/ &pwm8 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_pwm8>; status = "okay"; }; /*修改backlight节点,设置使用pwm8*/ backlight { compatible = "pwm-backlight"; pwms = <&pwm8 0 5000000>; brightness-levels = <0 4 8 16 32 64 128 255>; default-brightness-level = <6>; status = "okay"; };
修改以后dts文件之后,还需要在imx6ull.dtsi文件中将PWM8使用的时钟修改为PWM8的时钟“IMX6UL_CLK_PWM8”。
修改内容如下所示:
pwm8: pwm@020fc000 { compatible = "fsl,imx6ul-pwm", "fsl,imx27-pwm"; reg = <0x020fc000 0x4000>; interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>; clocks = <&clks IMX6UL_CLK_PWM8>, <&clks IMX6UL_CLK_PWM8>; clock-names = "ipg", "per"; #pwm-cells = <2>; };
dts中添加的backlight设备节点的驱动位于“drivers\video\backlight\pwm_bl.c”文件中,此驱动文件已经实现了背光控制的驱动。修改完dts后,下载到开发板中测试即可。
测试方法:
#设置背光亮度为3挡,此处echo的值对应的真实值在dts的brightness-levels属性中定义 echo 2 > /sys/class/backlight/backlight/brightness
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!