Backlight 与 LCD Class 框架

Backlight 与 LCD Class 框架

1. Backlight对象

backlight_device包含:

  • class device;
  • backlight_ops
  • properties;
  • update lock;
  • notifier;
  • parent和driver data。

Properties包括brightness、max_brightness、power、fb_blank、state和type。

2. 注册

1
2
3
4
5
6
backlight_device_register/devm_backlight_device_register
-> validate ops/properties
-> allocate class device
-> create sysfs
-> add to list
-> update initial status

Managed注册简化内存释放,但remove前仍应关闭输出。

3. Ops

  • update_status():应用brightness/power/blank;
  • get_brightness():读取硬件实际值;
  • check_fb():决定某framebuffer事件是否关联;
  • controls_device等辅助。

4. 有效亮度

Core综合:

  • requested brightness;
  • power;
  • fb blank;
  • suspended state;
  • thermal/driver限制。

若blank/power要求关闭,有效brightness应为0,即使sysfs brightness仍保留用户请求。

5. Sysfs

典型属性:

  • brightness;
  • actual_brightness;
  • max_brightness;
  • bl_power;
  • type;
  • scale。

写brightness调用backlight_update_status(),driver必须校验范围。

6. Notifier

Backlight状态变化可发notifier,panel/graphics clients也可调用强制更新。Callback不能在update lock下形成循环依赖。

7. LCD Class

lcd_device是较旧的面板电源/contrast抽象,ops包括set/get power、contrast、mode。现代面板通常使用DRM panel framework,LCD class主要服务legacy驱动。

本版本LCD Core有两个历史边界:

  • contrast sysfs写路径不统一校验max_contrast,driver仍需自行防越界;
  • fb notifier除blank外,对其它事件调用set_mode时缺少严格的FB_EVENT_MODE_CHANGE过滤,legacy driver的callback必须谨慎验证输入。

8. Blank与DRM

历史fbdev通过FB blank事件影响backlight;现代DRM connector/panel在atomic enable/disable中控制panel和backlight。

两条路径同时操作时需避免:

  • 一边enable另一边blank;
  • suspend重复关闭;
  • brightness恢复顺序错误。

9. PM

Suspend:

1
2
3
mark suspended
-> update_status -> hardware off
-> panel/rail off

Resume先恢复power/PWM,再按保存brightness update。

10. 热管理

亮度可能被thermal cooling或LED framework限制。Sysfs requested和actual brightness不同是正常现象。

11. 安全

Backlight不是机密接口,但恶意高频写可造成闪烁、PWM负载和面板寿命问题。限制普通容器访问sysfs,并对更新做合理串行。

12. RK3588

大量板级panel节点引用backlight = <&backlight>,常见实现为pwm-backlight。Backlight class在本目录,panel/connector通常在DRM。

通过名称或OF节点查找到backlight对象后,非devm调用方需用put_device(&bd->dev)释放引用;本版本没有独立的backlight_put() API。

文章互动

阅读 --

留言

0 条留言

正在加载留言…