| 881 |
theseven |
1 |
#include "global.h"
|
|
|
2 |
#include "device/d1759/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 d1759_backlight_manager_driver_config* data = (const struct d1759_backlight_manager_driver_config*)instance->driver_config;
|
|
|
10 |
struct d1759_backlight_manager_driver_state* state = (struct d1759_backlight_manager_driver_state*)instance->driver_state;
|
|
|
11 |
uint8_t on = (!!brightness) | ((!!state->fade) << 1);
|
|
|
12 |
brightness = (data->max_current * (brightness & 0xff)) >> 8;
|
|
|
13 |
if (on) i2c_write_regs(data->i2c, 0x73, 0x30, &brightness, 1);
|
|
|
14 |
i2c_write_regs(data->i2c, 0x73, 0x31, &on, 1);
|
|
|
15 |
}
|
|
|
16 |
|
|
|
17 |
static void backlight_set_fade(const struct backlight_manager_instance* instance, uint8_t fade)
|
|
|
18 |
{
|
|
|
19 |
struct d1759_backlight_manager_driver_state* state = (struct d1759_backlight_manager_driver_state*)instance->driver_state;
|
|
|
20 |
state->fade = fade;
|
|
|
21 |
}
|
|
|
22 |
|
|
|
23 |
static void backlight_init(const struct backlight_manager_instance* instance)
|
|
|
24 |
{
|
|
|
25 |
const struct d1759_backlight_manager_driver_config* data = (const struct d1759_backlight_manager_driver_config*)instance->driver_config;
|
|
|
26 |
backlight_set_fade(instance, data->default_fade);
|
|
|
27 |
}
|
|
|
28 |
|
|
|
29 |
const struct backlight_manager_driver d1759_backlight_manager_driver =
|
|
|
30 |
{
|
|
|
31 |
.init = backlight_init,
|
|
|
32 |
.set_brightness = backlight_set_brightness,
|
|
|
33 |
.set_fade = backlight_set_fade,
|
|
|
34 |
};
|