diff options
author | Alec Berg <alecaberg@chromium.org> | 2014-08-22 11:07:45 -0700 |
---|---|---|
committer | chrome-internal-fetch <chrome-internal-fetch@google.com> | 2014-08-26 01:06:38 +0000 |
commit | 334bc80cb6f39f93db3b8444a5e23a319da19b07 (patch) | |
tree | 92a19e55a6cadac4609d109f9796dfcaf22ebde2 | |
parent | f862275b9dfe375a4c4a2e5b09ad5d2eebabd69f (diff) | |
download | chrome-ec-334bc80cb6f39f93db3b8444a5e23a319da19b07.tar.gz |
samus_pd: GPIO updates for EVT build
Update GPIO's for EVT build, including the following changes:
- SPI1 and SPI2 busses swapped (used for C0 and C1)
- Added 1.5A enable GPIOs for powering type-C devices
- One enable line for each type-C port
- EC_INT changed polarity from active low to active high
- Added ILIM adjustment PWM gpio (hard-coded to low for now)
BUG=chrome-os-partner:31549
BRANCH=none
TEST=make -j buildall, cannot test further until EVT
Change-Id: I3ee4002ba3d1a848203a41d96a40310a89dfca76
Signed-off-by: Alec Berg <alecaberg@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/213746
Reviewed-by: Duncan Laurie <dlaurie@chromium.org>
-rw-r--r-- | board/samus_pd/board.c | 4 | ||||
-rw-r--r-- | board/samus_pd/gpio.inc | 40 | ||||
-rw-r--r-- | board/samus_pd/usb_pd_config.h | 86 | ||||
-rw-r--r-- | board/samus_pd/usb_pd_policy.c | 4 |
4 files changed, 65 insertions, 69 deletions
diff --git a/board/samus_pd/board.c b/board/samus_pd/board.c index 882c02fd16..a62299d71c 100644 --- a/board/samus_pd/board.c +++ b/board/samus_pd/board.c @@ -81,11 +81,11 @@ void board_config_pre_init(void) /* * the DMA mapping is : * Chan 2 : TIM1_CH1 (C0 RX) - * Chan 3 : SPI1_TX (C0 TX) + * Chan 3 : SPI1_TX (C1 TX) * Chan 4 : USART1_TX * Chan 5 : USART1_RX * Chan 6 : TIM3_CH1 (C1 RX) - * Chan 7 : SPI2_TX (C1 TX) + * Chan 7 : SPI2_TX (C0 TX) */ /* diff --git a/board/samus_pd/gpio.inc b/board/samus_pd/gpio.inc index f917847981..b0ff0c1839 100644 --- a/board/samus_pd/gpio.inc +++ b/board/samus_pd/gpio.inc @@ -19,28 +19,24 @@ GPIO(WP_L, D, 2, GPIO_INT_BOTH, switch_interrupt) GPIO(USB_C0_CC1_PD, A, 0, GPIO_ANALOG, NULL) GPIO(USB_C0_REF, A, 1, GPIO_ANALOG, NULL) GPIO(USB_C1_CC1_PD, A, 2, GPIO_ANALOG, NULL) -GPIO(USB_C1_REF, A, 3, GPIO_ANALOG, NULL) GPIO(USB_C0_CC2_PD, A, 4, GPIO_ANALOG, NULL) GPIO(USB_C1_CC2_PD, A, 5, GPIO_ANALOG, NULL) GPIO(USB_C0_REF_PD_ODL, A, 6, GPIO_ODR_LOW, NULL) -GPIO(USB_C1_REF_PD_ODL, A, 7, GPIO_ODR_LOW, NULL) GPIO(USB_C_CC_EN, C, 10, GPIO_OUT_LOW, NULL) -GPIO(USB_C0_CC1_TX_EN, A, 15, GPIO_OUT_LOW, NULL) -GPIO(USB_C0_CC2_TX_EN, E, 12, GPIO_OUT_LOW, NULL) -GPIO(USB_C1_CC1_TX_EN, B, 9, GPIO_OUT_LOW, NULL) -GPIO(USB_C1_CC2_TX_EN, B, 12, GPIO_OUT_LOW, NULL) -GPIO(USB_C0_CC1_TX_DATA, B, 4, GPIO_OUT_LOW, NULL) -GPIO(USB_C1_CC1_TX_DATA, B, 14, GPIO_OUT_LOW, NULL) -GPIO(USB_C0_CC2_TX_DATA, E, 14, GPIO_OUT_LOW, NULL) -GPIO(USB_C1_CC2_TX_DATA, D, 3, GPIO_OUT_LOW, NULL) +GPIO(USB_C1_CC_TX_EN, A, 15, GPIO_OUT_LOW, NULL) +GPIO(USB_C0_CC_TX_EN, B, 9, GPIO_OUT_LOW, NULL) +GPIO(USB_C1_CC1_TX_DATA, B, 4, GPIO_OUT_LOW, NULL) +GPIO(USB_C0_CC1_TX_DATA, B, 14, GPIO_OUT_LOW, NULL) +GPIO(USB_C1_CC2_TX_DATA, E, 14, GPIO_OUT_LOW, NULL) +GPIO(USB_C0_CC2_TX_DATA, D, 3, GPIO_OUT_LOW, NULL) #if 0 /* Alternate functions */ -GPIO(USB_C0_TX_CLKOUT, B, 1, GPIO_OUT_LOW, NULL) -GPIO(USB_C1_TX_CLKOUT, E, 1, GPIO_OUT_LOW, NULL) -GPIO(USB_C0_TX_CLKIN, B, 3, GPIO_OUT_LOW, NULL) -GPIO(USB_C1_TX_CLKIN, B, 13, GPIO_OUT_LOW, NULL) +GPIO(USB_C1_TX_CLKOUT, B, 1, GPIO_OUT_LOW, NULL) +GPIO(USB_C0_TX_CLKOUT, E, 1, GPIO_OUT_LOW, NULL) +GPIO(USB_C1_TX_CLKIN, B, 3, GPIO_OUT_LOW, NULL) +GPIO(USB_C0_TX_CLKIN, B, 13, GPIO_OUT_LOW, NULL) #endif /* Power and muxes control */ @@ -54,6 +50,9 @@ GPIO(USB_C0_CC1_VCONN1_EN, D, 8, GPIO_OUT_HIGH, NULL) GPIO(USB_C0_CC2_VCONN1_EN, D, 9, GPIO_OUT_HIGH, NULL) GPIO(USB_C1_CC1_VCONN1_EN, D, 10, GPIO_OUT_HIGH, NULL) GPIO(USB_C1_CC2_VCONN1_EN, D, 11, GPIO_OUT_HIGH, NULL) +GPIO(USB_C0_CC_1A5_EN, B, 12, GPIO_OUT_LOW, NULL) +GPIO(USB_C1_CC_1A5_EN, E, 12, GPIO_OUT_LOW, NULL) +GPIO(ILIM_ADJ_PWM, B, 15, GPIO_OUT_LOW, NULL) GPIO(USB_C0_CC1_ODL, B, 8, GPIO_ODR_LOW, NULL) GPIO(USB_C0_CC2_ODL, E, 0, GPIO_ODR_LOW, NULL) @@ -94,21 +93,22 @@ GPIO(MASTER_I2C_SCL, B, 10, GPIO_INPUT, NULL) GPIO(MASTER_I2C_SDA, B, 11, GPIO_INPUT, NULL) /* Case closed debugging. */ -GPIO(EC_INT_L, B, 2, GPIO_ODR_HIGH, NULL) +GPIO(EC_INT, B, 2, GPIO_OUT_LOW, NULL) GPIO(EC_IN_RW, C, 12, GPIO_INPUT, NULL) GPIO(EC_RST_L, C, 13, GPIO_OUT_HIGH, NULL) GPIO(SPI_FLASH_CS_L, D, 0, GPIO_INPUT, NULL) GPIO(SPI_FLASH_CSK, D, 1, GPIO_INPUT, NULL) GPIO(SPI_FLASH_MOSI, C, 3, GPIO_INPUT, NULL) GPIO(SPI_FLASH_MISO, C, 2, GPIO_INPUT, NULL) -GPIO(EC_JTAG_TMS, C, 6, GPIO_INPUT, NULL) -GPIO(EC_JTAG_TCK, C, 7, GPIO_INPUT, NULL) +GPIO(EC_JTAG_TCK, C, 6, GPIO_INPUT, NULL) +GPIO(EC_JTAG_TMS, C, 7, GPIO_INPUT, NULL) GPIO(EC_JTAG_TDO, C, 8, GPIO_INPUT, NULL) GPIO(EC_JTAG_TDI, C, 9, GPIO_INPUT, NULL) GPIO(PD_ENTERING_RW, B, 5, GPIO_OUT_LOW, NULL) -GPIO(PD_IN_RW, B, 15, GPIO_INPUT, NULL) -GPIO(PD_DISABLE_DEBUG, E, 15, GPIO_OUT_LOW, NULL) -GPIO(PD_DEBUG_EN, D, 4, GPIO_INPUT, NULL) +GPIO(PD_DISABLE_DEBUG, E, 15, GPIO_OUT_HIGH, NULL) +GPIO(PD_DEBUG_EN_L, D, 4, GPIO_INPUT | GPIO_PULL_UP, NULL) +GPIO(PD_SPI_PP3300_EN_L, A, 7, GPIO_OUT_HIGH, NULL) +GPIO(TP203, A, 3, GPIO_OUT_LOW, NULL) #if 0 /* Alternate functions */ diff --git a/board/samus_pd/usb_pd_config.h b/board/samus_pd/usb_pd_config.h index c6ec62e2cf..ce260a1e0d 100644 --- a/board/samus_pd/usb_pd_config.h +++ b/board/samus_pd/usb_pd_config.h @@ -14,9 +14,9 @@ #define TASK_ID_TO_PORT(id) ((id) == TASK_ID_PD_C0 ? 0 : 1) /* Timer selection for baseband PD communication */ -#define TIM_CLOCK_PD_TX_C0 14 +#define TIM_CLOCK_PD_TX_C0 17 #define TIM_CLOCK_PD_RX_C0 1 -#define TIM_CLOCK_PD_TX_C1 17 +#define TIM_CLOCK_PD_TX_C1 14 #define TIM_CLOCK_PD_RX_C1 3 #define TIM_CLOCK_PD_TX(p) ((p) ? TIM_CLOCK_PD_TX_C1 : TIM_CLOCK_PD_TX_C0) @@ -42,8 +42,8 @@ /* use the hardware accelerator for CRC */ #define CONFIG_HW_CRC -/* TX uses SPI1 on PB3-5 for port C0, SPI2 on PB 13-15 for port C1 */ -#define SPI_REGS(p) ((p) ? STM32_SPI2_REGS : STM32_SPI1_REGS) +/* TX uses SPI1 on PB3-4 for port C1, SPI2 on PB 13-14 for port C0 */ +#define SPI_REGS(p) ((p) ? STM32_SPI1_REGS : STM32_SPI2_REGS) static inline void spi_enable_clock(int port) { if (port == 0) @@ -52,8 +52,8 @@ static inline void spi_enable_clock(int port) STM32_RCC_APB1ENR |= STM32_RCC_PB1_SPI2; } -/* DMA for transmit uses DMA CH3 for C0 and DMA_CH7 for C1 */ -#define DMAC_SPI_TX(p) ((p) ? STM32_DMAC_CH7 : STM32_DMAC_CH3) +/* DMA for transmit uses DMA CH7 for C0 and DMA_CH3 for C1 */ +#define DMAC_SPI_TX(p) ((p) ? STM32_DMAC_CH3 : STM32_DMAC_CH7) /* RX uses COMP1 and TIM1 CH1 on port C0 and COMP2 and TIM3_CH1 for port C1*/ #define CMP1OUTSEL STM32_COMP_CMP1OUTSEL_TIM1_IC1 @@ -73,15 +73,15 @@ static inline void spi_enable_clock(int port) static inline void pd_set_pins_speed(int port) { if (port == 0) { - /* 40 MHz pin speed on SPI PB3/4/5 */ - STM32_GPIO_OSPEEDR(GPIO_B) |= 0x00000FC0; - /* 40 MHz pin speed on TIM14_CH1 (PB1) */ - STM32_GPIO_OSPEEDR(GPIO_B) |= 0x0000000C; - } else { - /* 40 MHz pin speed on SPI PB13/14/15 */ - STM32_GPIO_OSPEEDR(GPIO_B) |= 0xFC000000; + /* 40 MHz pin speed on SPI PB13/14 */ + STM32_GPIO_OSPEEDR(GPIO_B) |= 0x3C000000; /* 40 MHz pin speed on TIM17_CH1 (PE1) */ STM32_GPIO_OSPEEDR(GPIO_E) |= 0x0000000C; + } else { + /* 40 MHz pin speed on SPI PB3/4 */ + STM32_GPIO_OSPEEDR(GPIO_B) |= 0x000003C0; + /* 40 MHz pin speed on TIM14_CH1 (PB1) */ + STM32_GPIO_OSPEEDR(GPIO_B) |= 0x0000000C; } } @@ -89,13 +89,13 @@ static inline void pd_set_pins_speed(int port) static inline void pd_tx_spi_reset(int port) { if (port == 0) { - /* Reset SPI1 */ - STM32_RCC_APB2RSTR |= (1 << 12); - STM32_RCC_APB2RSTR &= ~(1 << 12); - } else { /* Reset SPI2 */ STM32_RCC_APB1RSTR |= (1 << 14); STM32_RCC_APB1RSTR &= ~(1 << 14); + } else { + /* Reset SPI1 */ + STM32_RCC_APB2RSTR |= (1 << 12); + STM32_RCC_APB2RSTR &= ~(1 << 12); } } @@ -104,24 +104,22 @@ static inline void pd_tx_enable(int port, int polarity) { if (port == 0) { /* put SPI function on TX pin */ - if (polarity) /* PE14 is SPI1 MISO */ - gpio_set_alternate_function(GPIO_E, 0x4000, 1); - else /* PB4 is SPI1 MISO */ - gpio_set_alternate_function(GPIO_B, 0x0010, 0); - - /* set the low level reference */ - gpio_set_level(polarity ? GPIO_USB_C0_CC2_TX_EN : - GPIO_USB_C0_CC1_TX_EN, 1); - } else { - /* put SPI function on TX pin */ if (polarity) /* PD3 is SPI2 MISO */ gpio_set_alternate_function(GPIO_D, 0x0008, 1); else /* PB14 is SPI2 MISO */ gpio_set_alternate_function(GPIO_B, 0x4000, 0); /* set the low level reference */ - gpio_set_level(polarity ? GPIO_USB_C1_CC2_TX_EN : - GPIO_USB_C1_CC1_TX_EN, 1); + gpio_set_level(GPIO_USB_C0_CC_TX_EN, 1); + } else { + /* put SPI function on TX pin */ + if (polarity) /* PE14 is SPI1 MISO */ + gpio_set_alternate_function(GPIO_E, 0x4000, 1); + else /* PB4 is SPI1 MISO */ + gpio_set_alternate_function(GPIO_B, 0x0010, 0); + + /* set the low level reference */ + gpio_set_level(GPIO_USB_C1_CC_TX_EN, 1); } } @@ -130,20 +128,6 @@ static inline void pd_tx_disable(int port, int polarity) { if (port == 0) { /* output low on SPI TX to disable the FET */ - if (polarity) /* PE14 is SPI1 MISO */ - STM32_GPIO_MODER(GPIO_E) = (STM32_GPIO_MODER(GPIO_E) - & ~(3 << (2*14))) - | (1 << (2*14)); - else /* PB4 is SPI1 MISO */ - STM32_GPIO_MODER(GPIO_B) = (STM32_GPIO_MODER(GPIO_B) - & ~(3 << (2*4))) - | (1 << (2*4)); - - /* put the low level reference in Hi-Z */ - gpio_set_level(polarity ? GPIO_USB_C0_CC2_TX_EN : - GPIO_USB_C0_CC1_TX_EN, 0); - } else { - /* output low on SPI TX to disable the FET */ if (polarity) /* PD3 is SPI2 MISO */ STM32_GPIO_MODER(GPIO_D) = (STM32_GPIO_MODER(GPIO_D) & ~(3 << (2*3))) @@ -154,8 +138,20 @@ static inline void pd_tx_disable(int port, int polarity) | (1 << (2*14)); /* put the low level reference in Hi-Z */ - gpio_set_level(polarity ? GPIO_USB_C1_CC2_TX_EN : - GPIO_USB_C1_CC1_TX_EN, 0); + gpio_set_level(GPIO_USB_C0_CC_TX_EN, 0); + } else { + /* output low on SPI TX to disable the FET */ + if (polarity) /* PE14 is SPI1 MISO */ + STM32_GPIO_MODER(GPIO_E) = (STM32_GPIO_MODER(GPIO_E) + & ~(3 << (2*14))) + | (1 << (2*14)); + else /* PB4 is SPI1 MISO */ + STM32_GPIO_MODER(GPIO_B) = (STM32_GPIO_MODER(GPIO_B) + & ~(3 << (2*4))) + | (1 << (2*4)); + + /* put the low level reference in Hi-Z */ + gpio_set_level(GPIO_USB_C1_CC_TX_EN, 0); } } diff --git a/board/samus_pd/usb_pd_policy.c b/board/samus_pd/usb_pd_policy.c index 826369b50b..90b7fc6121 100644 --- a/board/samus_pd/usb_pd_policy.c +++ b/board/samus_pd/usb_pd_policy.c @@ -127,7 +127,7 @@ void pd_power_supply_reset(int port) static void pd_send_ec_int(void) { - gpio_set_level(GPIO_EC_INT_L, 0); + gpio_set_level(GPIO_EC_INT, 1); /* * Delay long enough to guarantee EC see's the change. Slowest @@ -136,7 +136,7 @@ static void pd_send_ec_int(void) */ usleep(5); - gpio_set_level(GPIO_EC_INT_L, 1); + gpio_set_level(GPIO_EC_INT, 0); } void pd_set_input_current_limit(uint32_t max_ma) |