Subversion Repositories freemyipod

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
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
};