PWM 与 GPIO 背光驱动
1. PWM Backlight
pwm_bl.c是RK3588常用路径:
1 | platform probe |
2. DTS
典型:
1 | backlight: backlight { |
Panel通过backlight phandle关联。
3. Duty计算
用户brightness先映射到brightness-levels[],再按scale和PWM period得到duty cycle。
需避免:
- 乘法溢出;
- levels非单调;
- index越界;
- 0亮度仍输出duty;
- polarity反向。
4. 上电顺序
常见enable:
1 | enable regulator |
关闭通常反向,并满足panel datasheet延迟。实际顺序可由driver/platform callback调整。
5. PWM极性
Active-high/low由PWM flags和硬件定义共同决定。配置错误会导致:
- 0最亮;
- 默认全亮;
- suspend漏光;
- enable瞬间闪白。
6. GPIO Backlight
gpio_backlight.c仅支持开/关级别,适合无亮度调节的简单板。它注册backlight class并控制enable GPIO。
7. LED Backlight
led_bl.c可把LED class设备聚合为backlight。适用于多通道LED,但需协调LED trigger和backlight ownership。
8. RK3588 DTS
本树tablet、EVB及vehicle显示DTS中存在大量compatible = "pwm-backlight"节点。SoC公共节点并不代表每块板都启用,需检查最终DTB的PWM、regulator和status。
9. DRM Panel协作
正确时序通常为:
1 | panel prepare |
关机反向。Backlight过早开启会显示未初始化帧。
10. Suspend/Resume
Driver保存requested brightness,通过Core suspended state让effective brightness为0。Resume恢复前需保证PWM clock和regulator已准备。
11. 调试
1 | ls /sys/class/backlight |
示波器确认频率、duty和极性比只看sysfs更可靠。
12. 可靠性
PWM频率过低会闪烁,过高可能超出controller/背光芯片能力。Brightness曲线应按光学感知校准,而不是简单线性假设。
正在加载留言…