static int ls3a_get_intensity(struct backlight_device * bd)
{
// 从 EC 获取 backlight 数据
return ???;
}
static int ls3a_set_intensity(struct backlight_device * bd)
{
int brightness = bd->props.brightness;
// 调用 EC 设置 brightness
return 0;
}
static struct backlight_ops ls3a_backlight_ops =
{
.get_brightness = ls3a_get_intensity,
.update_status = ls3a_set_intensity,
};
static int __init ls3a_init(void)
{
// 注册平台驱动和设备
platform_driver_register(...);
platform_device_register(...);
...
// 通过 EC 查询 backlight 属性
...
// 注册 backlight 设备
ls3a_backlight_device = backlight_device_register(...);
...
// 设置 backlight 设备属性
ls3a_backlight_device->props.max_brightness = ????; // from EC
ls3a_backlight_device->props.brightness = ????; // default value
backlight_update_status(ls3a_backlight_device); // update
...
return 0;
}
static void __exit ls3a_exit(void)
{
// 注册 backlight 设备
backlight_device_unregister(ls3a_backlight_device);
...
platform_device_unregister(ls3a_device);
platform_driver_unregister(ls3a_driver);
}
module_init(ls3a_init);
module_exit(ls3a_exit);
Over!