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/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
};