summaryrefslogtreecommitdiff
path: root/board/kirby
diff options
context:
space:
mode:
authorVic Yang <victoryang@chromium.org>2013-08-20 22:20:38 +0800
committerchrome-internal-fetch <chrome-internal-fetch@google.com>2013-08-30 15:39:52 +0000
commitcfd007c833a676ca2e5b82503f5871ec2531f322 (patch)
treec2c25711771224fc99fddb55ed3613906d5590b4 /board/kirby
parent7cb7d7dd99bf8c919010122667a69c6107a77228 (diff)
downloadchrome-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.c15
-rw-r--r--board/kirby/board.h12
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 */