summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlec Berg <alecaberg@chromium.org>2014-08-22 11:07:45 -0700
committerchrome-internal-fetch <chrome-internal-fetch@google.com>2014-08-26 01:06:38 +0000
commit334bc80cb6f39f93db3b8444a5e23a319da19b07 (patch)
tree92a19e55a6cadac4609d109f9796dfcaf22ebde2
parentf862275b9dfe375a4c4a2e5b09ad5d2eebabd69f (diff)
downloadchrome-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.c4
-rw-r--r--board/samus_pd/gpio.inc40
-rw-r--r--board/samus_pd/usb_pd_config.h86
-rw-r--r--board/samus_pd/usb_pd_policy.c4
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)