| 881 |
theseven |
1 |
#include "global.h"
|
|
|
2 |
#include "device/pcf50635/backlight_manager.h"
|
|
|
3 |
#include "interface/backlight_manager/backlight_manager.h"
|
|
|
4 |
#include "protocol/i2c/i2c.h"
|
|
|
5 |
|
|
|
6 |
|
|
|
7 |
static void backlight_set_brightness(const struct backlight_manager_instance* instance, uint8_t brightness)
|
|
|
8 |
{
|
|
|
9 |
const struct pcf50635_backlight_manager_driver_config* data = (const struct pcf50635_backlight_manager_driver_config*)instance->driver_config;
|
|
|
10 |
uint8_t on = !!brightness;
|
|
|
11 |
brightness = (data->max_current * (brightness & 0xff)) >> 8;
|
|
|
12 |
if (on) i2c_write_regs(data->i2c, 0x73, 0x28, &brightness, 1);
|
|
|
13 |
i2c_write_regs(data->i2c, 0x73, 0x29, &on, 1);
|
|
|
14 |
}
|
|
|
15 |
|
|
|
16 |
static void backlight_set_fade(const struct backlight_manager_instance* instance, uint8_t fade)
|
|
|
17 |
{
|
|
|
18 |
const struct pcf50635_backlight_manager_driver_config* data = (const struct pcf50635_backlight_manager_driver_config*)instance->driver_config;
|
|
|
19 |
i2c_write_regs(data->i2c, 0x73, 0x2b, &fade, 1);
|
|
|
20 |
}
|
|
|
21 |
|
|
|
22 |
static void backlight_init(const struct backlight_manager_instance* instance)
|
|
|
23 |
{
|
|
|
24 |
const struct pcf50635_backlight_manager_driver_config* data = (const struct pcf50635_backlight_manager_driver_config*)instance->driver_config;
|
|
|
25 |
backlight_set_fade(instance, data->default_fade);
|
|
|
26 |
}
|
|
|
27 |
|
|
|
28 |
const struct backlight_manager_driver pcf50635_backlight_manager_driver =
|
|
|
29 |
{
|
|
|
30 |
.init = backlight_init,
|
|
|
31 |
.set_brightness = backlight_set_brightness,
|
|
|
32 |
.set_fade = backlight_set_fade,
|
|
|
33 |
};
|