diff options
author | Vic Yang <victoryang@chromium.org> | 2013-08-20 22:20:38 +0800 |
---|---|---|
committer | chrome-internal-fetch <chrome-internal-fetch@google.com> | 2013-08-30 15:39:52 +0000 |
commit | cfd007c833a676ca2e5b82503f5871ec2531f322 (patch) | |
tree | c2c25711771224fc99fddb55ed3613906d5590b4 /board/kirby | |
parent | 7cb7d7dd99bf8c919010122667a69c6107a77228 (diff) | |
download | chrome-ec-cfd007c833a676ca2e5b82503f5871ec2531f322.tar.gz |
Kirby LED driver
This is just a simple driver that provides a function to set LED color
and also a console command for testing.
BUG=chrome-os-partner:22056
TEST=Change LED color and brightness with the console command.
BRANCH=None
Change-Id: I66ece63310a0547127698d1b242a5a1c130abff6
Signed-off-by: Vic Yang <victoryang@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/167450
Diffstat (limited to 'board/kirby')
-rw-r--r-- | board/kirby/board.c | 15 | ||||
-rw-r--r-- | board/kirby/board.h | 12 |
2 files changed, 26 insertions, 1 deletions
diff --git a/board/kirby/board.c b/board/kirby/board.c index 560250c56f..4a702b2781 100644 --- a/board/kirby/board.c +++ b/board/kirby/board.c @@ -12,6 +12,8 @@ #include "i2c.h" #include "keyboard_raw.h" #include "lid_switch.h" +#include "pwm.h" +#include "pwm_data.h" #include "registers.h" #include "spi.h" #include "task.h" @@ -95,7 +97,7 @@ BUILD_ASSERT(ARRAY_SIZE(gpio_list) == GPIO_COUNT); /* Pins with alternate functions */ const struct gpio_alt_func gpio_alt_funcs[] = { - {GPIO_C, 0x00e0, GPIO_ALT_TIM3_4, MODULE_LED_KIRBY}, + {GPIO_C, 0x01c0, GPIO_ALT_TIM3_4, MODULE_LED_KIRBY}, {GPIO_A, 0x00f0, GPIO_ALT_SPI, MODULE_SPI}, {GPIO_A, 0x0600, GPIO_ALT_USART, MODULE_UART}, {GPIO_B, 0x00c0, GPIO_ALT_I2C, MODULE_I2C}, @@ -112,6 +114,17 @@ const struct battery_temperature_ranges bat_temp_ranges = { .discharging_max_c = 100, }; +/* PWM channels */ +const struct pwm_t pwm_channels[] = { + [PWM_CH_CHG_Y] = {STM32_TIM(3), STM32_TIM_CH(1), PWM_CONFIG_ACTIVE_LOW, + GPIO_CHG_LED_Y}, + [PWM_CH_CHG_G] = {STM32_TIM(3), STM32_TIM_CH(2), PWM_CONFIG_ACTIVE_LOW, + GPIO_CHG_LED_G}, + [PWM_CH_CHG_R] = {STM32_TIM(3), STM32_TIM_CH(3), PWM_CONFIG_ACTIVE_LOW, + GPIO_CHG_LED_R}, +}; +BUILD_ASSERT(ARRAY_SIZE(pwm_channels) == PWM_CH_COUNT); + /* I2C ports */ const struct i2c_port_t i2c_ports[] = { {"host", I2C_PORT_HOST, 100}, diff --git a/board/kirby/board.h b/board/kirby/board.h index e44ecbdb47..f7fd9573ff 100644 --- a/board/kirby/board.h +++ b/board/kirby/board.h @@ -18,6 +18,7 @@ #define CONFIG_I2C #define CONFIG_KEYBOARD_PROTOCOL_MKBP #define CONFIG_SPI +#define CONFIG_PWM #ifndef __ASSEMBLER__ @@ -57,6 +58,17 @@ enum module_id { #define TIM_CLOCK_LSB 9 #define TIM_WATCHDOG 4 +/* PWM signal */ +enum pwm_channel { + /* Y, G, R charging LEDs */ + PWM_CH_CHG_Y = 0, + PWM_CH_CHG_G, + PWM_CH_CHG_R, + + /* Number of PWM channels */ + PWM_CH_COUNT +}; + /* GPIO signal list */ enum gpio_signal { /* Inputs with interrupt handlers are first for efficiency */ |