diff options
author | Shawn Nematbakhsh <shawnn@chromium.org> | 2015-12-01 13:56:19 -0800 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2015-12-04 11:33:43 -0800 |
commit | b2945c1ce203358e0fd3cd20880265473a62fd2f (patch) | |
tree | 4e47e9ff425701a56ae97682f2fd721b73364e15 | |
parent | aad615c80d439f5b4443c6b11661b8896f43b442 (diff) | |
download | chrome-ec-b2945c1ce203358e0fd3cd20880265473a62fd2f.tar.gz |
snoball: Enable PWMs for post-regulator voltage control
BUG=chrome-os-partner:48044
TEST=Manual with snoball w/ subsequent commit. Run `pwm <ch> 50` for
each channel, verify with `adc` that each PD output voltage is
approximately VBUCK / 2.
BRANCH=None
Signed-off-by: Shawn Nematbakhsh <shawnn@chromium.org>
Change-Id: I0c791fa4de47f92423c4cfd6ef5013495f5a5019
Reviewed-on: https://chromium-review.googlesource.com/315142
Commit-Ready: Shawn N <shawnn@chromium.org>
Tested-by: Shawn N <shawnn@chromium.org>
Reviewed-by: Alec Berg <alecaberg@chromium.org>
-rw-r--r-- | board/snoball/board.c | 15 | ||||
-rw-r--r-- | board/snoball/board.h | 9 | ||||
-rw-r--r-- | board/snoball/gpio.inc | 16 |
3 files changed, 32 insertions, 8 deletions
diff --git a/board/snoball/board.c b/board/snoball/board.c index d4d05f13ea..5eaf722946 100644 --- a/board/snoball/board.c +++ b/board/snoball/board.c @@ -15,6 +15,8 @@ #include "host_command.h" #include "i2c.h" #include "registers.h" +#include "pwm.h" +#include "pwm_chip.h" #include "task.h" #include "usb_pd.h" #include "usb_pd_tcpm.h" @@ -71,11 +73,24 @@ const struct adc_t adc_channels[] = { }; BUILD_ASSERT(ARRAY_SIZE(adc_channels) == ADC_CH_COUNT); +#define VR_PWM_FLAGS (PWM_CONFIG_ACTIVE_LOW | PWM_CONFIG_COMPLEMENTARY_OUTPUT) + +const struct pwm_t pwm_channels[] = { + {STM32_TIM(15), STM32_TIM_CH(1), VR_PWM_FLAGS, 480000}, + {STM32_TIM(16), STM32_TIM_CH(1), VR_PWM_FLAGS, 480000}, + {STM32_TIM(17), STM32_TIM_CH(1), VR_PWM_FLAGS, 480000}, +}; +BUILD_ASSERT(ARRAY_SIZE(pwm_channels) == PWM_CH_COUNT); + static void board_init(void) { gpio_enable_interrupt(GPIO_TCPC1_INT); gpio_enable_interrupt(GPIO_TCPC2_INT); gpio_enable_interrupt(GPIO_TCPC3_INT); + + pwm_enable(PWM_PD1, 1); + pwm_enable(PWM_PD2, 1); + pwm_enable(PWM_PD3, 1); } DECLARE_HOOK(HOOK_INIT, board_init, HOOK_PRIO_DEFAULT); diff --git a/board/snoball/board.h b/board/snoball/board.h index 55684fc093..f73a50f5ad 100644 --- a/board/snoball/board.h +++ b/board/snoball/board.h @@ -32,6 +32,7 @@ #define CONFIG_HW_CRC #define CONFIG_I2C #define CONFIG_I2C_MASTER +#define CONFIG_PWM #undef CONFIG_LID_SWITCH #undef CONFIG_WATCHDOG_HELP @@ -71,6 +72,14 @@ enum adc_channel { ADC_CH_COUNT }; +enum pwm_channel { + PWM_PD1 = 0, + PWM_PD2, + PWM_PD3, + /* Number of PWM channels */ + PWM_CH_COUNT +}; + enum board_src_cap { SRC_CAP_5V = 0, SRC_CAP_12V, diff --git a/board/snoball/gpio.inc b/board/snoball/gpio.inc index cd0b71825e..c2512e3d9d 100644 --- a/board/snoball/gpio.inc +++ b/board/snoball/gpio.inc @@ -49,15 +49,15 @@ GPIO(DSPIC_UART_RX, PIN(A, 15), GPIO_INPUT) /* WKUP6 */ GPIO(WAKE, PIN(B, 5), GPIO_INPUT) +#endif /* PWM outputs w/ negation */ GPIO(PD1_PWM, PIN(B, 14), GPIO_OUT_LOW) -GPIO(PD1_PWM_CMP, PIN(B, 15), GPIO_OUT_HIGH) +GPIO(PD1_PWM_CMP, PIN(B, 15), GPIO_OUT_LOW) GPIO(PD2_PWM, PIN(A, 6), GPIO_OUT_LOW) -GPIO(PD2_PWM_CMP, PIN(B, 6), GPIO_OUT_HIGH) +GPIO(PD2_PWM_CMP, PIN(B, 6), GPIO_OUT_LOW) GPIO(PD3_PWM, PIN(A, 7), GPIO_OUT_LOW) -GPIO(PD3_PWM_CMP, PIN(B, 7), GPIO_OUT_HIGH) -#endif +GPIO(PD3_PWM_CMP, PIN(B, 7), GPIO_OUT_LOW) /* PB8 / PB9 / PB11: I2C1_SCL / I2C1_SDA / I2C2_SDA */ ALTERNATE(PIN_MASK(B, 0x0B00), 1, MODULE_I2C, 0) @@ -66,10 +66,10 @@ ALTERNATE(PIN_MASK(B, 0x2000), 5, MODULE_I2C, 0) /* PA9 / PA10 / PA14 / PA15: USART1 / USART2 */ ALTERNATE(PIN_MASK(A, 0xC600), 1, MODULE_UART, 0) /* PA6 / PA7: TIM16_CH1 / TIM17_CH1 */ -ALTERNATE(PIN_MASK(A, 0x00C0), 5, MODULE_EXTPOWER, 0) +ALTERNATE(PIN_MASK(A, 0x00C0), 5, MODULE_PWM, 0) /* PB6 / PB7: TIM16_CH1N / TIM17_CH1N */ -ALTERNATE(PIN_MASK(B, 0x00C0), 2, MODULE_EXTPOWER, 0) +ALTERNATE(PIN_MASK(B, 0x00C0), 2, MODULE_PWM, 0) /* PB14: TIM15_CH1 */ -ALTERNATE(PIN_MASK(B, 0x4000), 1, MODULE_EXTPOWER, 0) +ALTERNATE(PIN_MASK(B, 0x4000), 1, MODULE_PWM, 0) /* PB15: TIM15_CH1N */ -ALTERNATE(PIN_MASK(B, 0x8000), 3, MODULE_EXTPOWER, 0) +ALTERNATE(PIN_MASK(B, 0x8000), 3, MODULE_PWM, 0) |