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!