mirror of
https://github.com/Telecominfraproject/OpenCellular.git
synced 2026-01-09 09:01:35 +00:00
plankton: Update board configuration to Plankton V2
*** This breaks Plankton V1 support *** This CL updates GPIO and PD configuration. BUG=chrome-os-partner:31633 TEST=Build successfully. No board to test. BRANCH=None Change-Id: I9bbcde8aed15aa488e659a69dc87978532f33f13 Signed-off-by: Vic Yang <victoryang@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/214823 Reviewed-by: Alec Berg <alecaberg@chromium.org>
This commit is contained in:
committed by
chrome-internal-fetch
parent
e523cf49b2
commit
31a935f520
@@ -26,7 +26,9 @@ static enum gpio_signal button_pressed;
|
||||
enum usbc_action {
|
||||
USBC_ACT_5V_TO_DUT,
|
||||
USBC_ACT_12V_TO_DUT,
|
||||
USBC_ACT_20V_TO_DUT,
|
||||
USBC_ACT_DEVICE,
|
||||
USBC_ACT_USBDP_TOGGLE,
|
||||
USBC_ACT_USB_EN,
|
||||
USBC_ACT_DP_EN,
|
||||
USBC_ACT_CABLE_FLIP,
|
||||
@@ -45,9 +47,17 @@ static void set_usbc_action(enum usbc_action act)
|
||||
board_set_source_cap(SRC_CAP_12V);
|
||||
pd_set_dual_role(PD_DRP_FORCE_SOURCE);
|
||||
break;
|
||||
case USBC_ACT_20V_TO_DUT:
|
||||
board_set_source_cap(SRC_CAP_20V);
|
||||
pd_set_dual_role(PD_DRP_FORCE_SOURCE);
|
||||
break;
|
||||
case USBC_ACT_DEVICE:
|
||||
pd_set_dual_role(PD_DRP_FORCE_SINK);
|
||||
break;
|
||||
case USBC_ACT_USBDP_TOGGLE:
|
||||
gpio_set_level(GPIO_USBC_SS_USB_MODE,
|
||||
!gpio_get_level(GPIO_USBC_SS_USB_MODE));
|
||||
break;
|
||||
case USBC_ACT_USB_EN:
|
||||
gpio_set_level(GPIO_USBC_SS_USB_MODE, 1);
|
||||
break;
|
||||
@@ -55,14 +65,14 @@ static void set_usbc_action(enum usbc_action act)
|
||||
gpio_set_level(GPIO_USBC_SS_USB_MODE, 0);
|
||||
break;
|
||||
case USBC_ACT_CABLE_FLIP:
|
||||
gpio_set_level(GPIO_USBC_DP_POLARITY,
|
||||
!gpio_get_level(GPIO_USBC_DP_POLARITY));
|
||||
gpio_set_level(GPIO_USBC_POLARITY,
|
||||
!gpio_get_level(GPIO_USBC_POLARITY));
|
||||
break;
|
||||
case USBC_ACT_CABLE_POLARITY0:
|
||||
gpio_set_level(GPIO_USBC_DP_POLARITY, 0);
|
||||
gpio_set_level(GPIO_USBC_POLARITY, 0);
|
||||
break;
|
||||
case USBC_ACT_CABLE_POLARITY1:
|
||||
gpio_set_level(GPIO_USBC_DP_POLARITY, 1);
|
||||
gpio_set_level(GPIO_USBC_POLARITY, 1);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@@ -72,10 +82,6 @@ static void set_usbc_action(enum usbc_action act)
|
||||
/* Handle debounced button press */
|
||||
static void button_deferred(void)
|
||||
{
|
||||
/* don't do anything if not in debug mode */
|
||||
if (!gpio_get_level(GPIO_DBG_MODE_EN))
|
||||
return;
|
||||
|
||||
/* bounce ? */
|
||||
if (gpio_get_level(button_pressed) != 0)
|
||||
return;
|
||||
@@ -87,14 +93,14 @@ static void button_deferred(void)
|
||||
case GPIO_DBG_12V_TO_DUT_L:
|
||||
set_usbc_action(USBC_ACT_12V_TO_DUT);
|
||||
break;
|
||||
case GPIO_DBG_20V_TO_DUT_L:
|
||||
set_usbc_action(USBC_ACT_20V_TO_DUT);
|
||||
break;
|
||||
case GPIO_DBG_CHG_TO_DEV_L:
|
||||
set_usbc_action(USBC_ACT_DEVICE);
|
||||
break;
|
||||
case GPIO_DBG_USB_EN_L:
|
||||
set_usbc_action(USBC_ACT_USB_EN);
|
||||
break;
|
||||
case GPIO_DBG_DP_EN_L:
|
||||
set_usbc_action(USBC_ACT_DP_EN);
|
||||
case GPIO_DBG_USB_TOGGLE_L:
|
||||
set_usbc_action(USBC_ACT_USBDP_TOGGLE);
|
||||
break;
|
||||
case GPIO_DBG_CABLE_FLIP_L:
|
||||
set_usbc_action(USBC_ACT_CABLE_FLIP);
|
||||
@@ -126,14 +132,15 @@ void vbus_event(enum gpio_signal signal)
|
||||
/* ADC channels */
|
||||
const struct adc_t adc_channels[] = {
|
||||
/* USB PD CC lines sensing. Converted to mV (3300mV/4096). */
|
||||
[ADC_CH_CC1_PD] = {"CC1_PD", 3300, 4096, 0, STM32_AIN(1)},
|
||||
[ADC_CH_CC1_PD] = {"CC1_PD", 3300, 4096, 0, STM32_AIN(0)},
|
||||
[ADC_CH_CC2_PD] = {"CC2_PD", 3300, 4096, 0, STM32_AIN(4)},
|
||||
};
|
||||
BUILD_ASSERT(ARRAY_SIZE(adc_channels) == ADC_CH_COUNT);
|
||||
|
||||
/* I2C ports */
|
||||
const struct i2c_port_t i2c_ports[] = {
|
||||
{"slave", I2C_PORT_SLAVE, 100,
|
||||
GPIO_SLAVE_I2C_SCL, GPIO_SLAVE_I2C_SDA},
|
||||
{"master", I2C_PORT_MASTER, 100,
|
||||
GPIO_MASTER_I2C_SCL, GPIO_MASTER_I2C_SDA},
|
||||
};
|
||||
const unsigned int i2c_ports_used = ARRAY_SIZE(i2c_ports);
|
||||
|
||||
@@ -143,12 +150,11 @@ static void board_init(void)
|
||||
gpio_enable_interrupt(GPIO_VBUS_WAKE);
|
||||
|
||||
/* Enable button interrupts. */
|
||||
gpio_enable_interrupt(GPIO_DBG_12V_TO_DUT_L);
|
||||
gpio_enable_interrupt(GPIO_DBG_CHG_TO_DEV_L);
|
||||
gpio_enable_interrupt(GPIO_DBG_5V_TO_DUT_L);
|
||||
gpio_enable_interrupt(GPIO_DBG_USB_EN_L);
|
||||
gpio_enable_interrupt(GPIO_DBG_DP_EN_L);
|
||||
gpio_enable_interrupt(GPIO_DBG_STATUS_CLEAR_L);
|
||||
gpio_enable_interrupt(GPIO_DBG_12V_TO_DUT_L);
|
||||
gpio_enable_interrupt(GPIO_DBG_20V_TO_DUT_L);
|
||||
gpio_enable_interrupt(GPIO_DBG_CHG_TO_DEV_L);
|
||||
gpio_enable_interrupt(GPIO_DBG_USB_TOGGLE_L);
|
||||
gpio_enable_interrupt(GPIO_DBG_CABLE_FLIP_L);
|
||||
}
|
||||
DECLARE_HOOK(HOOK_INIT, board_init, HOOK_PRIO_DEFAULT);
|
||||
@@ -164,6 +170,8 @@ static int cmd_usbc_action(int argc, char *argv[])
|
||||
act = USBC_ACT_5V_TO_DUT;
|
||||
else if (!strcasecmp(argv[1], "12v"))
|
||||
act = USBC_ACT_12V_TO_DUT;
|
||||
else if (!strcasecmp(argv[1], "20v"))
|
||||
act = USBC_ACT_20V_TO_DUT;
|
||||
else if (!strcasecmp(argv[1], "dev"))
|
||||
act = USBC_ACT_DEVICE;
|
||||
else if (!strcasecmp(argv[1], "usb"))
|
||||
@@ -184,6 +192,6 @@ static int cmd_usbc_action(int argc, char *argv[])
|
||||
return EC_SUCCESS;
|
||||
}
|
||||
DECLARE_CONSOLE_COMMAND(usbc_action, cmd_usbc_action,
|
||||
"<5v | 12v | dev | usb | dp | flip | pol0 | pol1>",
|
||||
"<5v|12v|20v|dev|usb|dp|flip|pol0|pol1>",
|
||||
"Set Plankton type-C port state",
|
||||
NULL);
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
#undef CONFIG_TASK_PROFILING
|
||||
|
||||
/* I2C ports configuration */
|
||||
#define I2C_PORT_SLAVE 0
|
||||
#define I2C_PORT_MASTER 1
|
||||
|
||||
/*
|
||||
* Allow dangerous commands all the time, since we don't have a write protect
|
||||
@@ -48,6 +48,7 @@
|
||||
/* ADC signal */
|
||||
enum adc_channel {
|
||||
ADC_CH_CC1_PD = 0,
|
||||
ADC_CH_CC2_PD,
|
||||
/* Number of ADC channels */
|
||||
ADC_CH_COUNT
|
||||
};
|
||||
@@ -55,6 +56,7 @@ enum adc_channel {
|
||||
enum board_src_cap {
|
||||
SRC_CAP_5V = 0,
|
||||
SRC_CAP_12V,
|
||||
SRC_CAP_20V,
|
||||
};
|
||||
|
||||
/* Set USB PD source capability */
|
||||
|
||||
@@ -6,66 +6,61 @@
|
||||
*/
|
||||
|
||||
/* Inputs with interrupt handlers are first for efficiency */
|
||||
GPIO(VBUS_WAKE, B, 5, GPIO_INT_BOTH, vbus_event)
|
||||
GPIO(DBG_12V_TO_DUT_L, A, 4, GPIO_INT_FALLING, button_event)
|
||||
GPIO(DBG_CHG_TO_DEV_L, A, 7, GPIO_INT_FALLING, button_event)
|
||||
GPIO(DBG_5V_TO_DUT_L, B, 8, GPIO_INT_FALLING, button_event)
|
||||
GPIO(DBG_MODE_EN, B, 10, GPIO_INT_BOTH, button_event)
|
||||
GPIO(DBG_USB_EN_L, B, 11, GPIO_INT_FALLING, button_event)
|
||||
GPIO(DBG_DP_EN_L, B, 12, GPIO_INT_FALLING, button_event)
|
||||
GPIO(DBG_STATUS_CLEAR_L,C, 13, GPIO_INT_FALLING, button_event)
|
||||
GPIO(DBG_CABLE_FLIP_L, B, 15, GPIO_INT_FALLING, button_event)
|
||||
GPIO(VBUS_WAKE, B, 5, GPIO_INT_BOTH, vbus_event)
|
||||
GPIO(DBG_20V_TO_DUT_L, C, 13, GPIO_INT_FALLING, button_event)
|
||||
GPIO(DBG_12V_TO_DUT_L, B, 14, GPIO_INT_FALLING, button_event)
|
||||
GPIO(DBG_CHG_TO_DEV_L, F, 1, GPIO_INT_FALLING, button_event)
|
||||
GPIO(DBG_5V_TO_DUT_L, B, 8, GPIO_INT_FALLING, button_event)
|
||||
GPIO(DBG_USB_TOGGLE_L, F, 0, GPIO_INT_FALLING, button_event)
|
||||
GPIO(DBG_CASE_CLOSE_EN_L, B, 12, GPIO_INT_FALLING, button_event)
|
||||
GPIO(DBG_CABLE_FLIP_L, B, 15, GPIO_INT_FALLING, button_event)
|
||||
|
||||
/* PD RX/TX */
|
||||
GPIO(USBC_PD_REF, A, 0, GPIO_ANALOG, NULL)
|
||||
GPIO(USBC_CC1_PD, A, 1, GPIO_ANALOG, NULL)
|
||||
GPIO(USBC_CC_TX_EN, A, 3, GPIO_OUT_LOW, NULL)
|
||||
GPIO(USBC_CC_TX_DATA, A, 6, GPIO_OUT_LOW, NULL)
|
||||
GPIO(USBC_PD_REF, A, 1, GPIO_ANALOG, NULL)
|
||||
GPIO(USBC_CC1_PD, A, 0, GPIO_ANALOG, NULL)
|
||||
GPIO(USBC_CC1_TX_EN, A, 3, GPIO_OUT_LOW, NULL)
|
||||
GPIO(USBC_CC2_PD, A, 4, GPIO_ANALOG, NULL)
|
||||
GPIO(USBC_CC2_TX_EN, B, 2, GPIO_OUT_LOW, NULL)
|
||||
GPIO(USBC_CC_TX_DATA, A, 6, GPIO_OUT_LOW, NULL)
|
||||
|
||||
#if 0
|
||||
/* Alternate functions */
|
||||
GPIO(USBC_TX_CLKOUT, B, 9, GPIO_OUT_LOW, NULL)
|
||||
GPIO(USBC_TX_CLKIN, A, 5, GPIO_OUT_LOW, NULL)
|
||||
GPIO(USBC_TX_CLKOUT, B, 9, GPIO_OUT_LOW, NULL)
|
||||
GPIO(USBC_TX_CLKIN, A, 5, GPIO_OUT_LOW, NULL)
|
||||
#endif
|
||||
|
||||
/* USB-C Power and muxes control */
|
||||
GPIO(USBC_CHARGE_EN, A, 8, GPIO_OUT_HIGH, NULL)
|
||||
GPIO(USBC_CC_DEVICE_ODL,A, 9, GPIO_OUT_LOW, NULL)
|
||||
GPIO(USBC_CC_HOST, A, 2, GPIO_INPUT, NULL)
|
||||
GPIO(USBC_5V_EN, A, 10, GPIO_OUT_LOW, NULL)
|
||||
GPIO(USBC_12V_EN, C, 14, GPIO_OUT_LOW, NULL)
|
||||
GPIO(USBC_DP_MODE_L, B, 0, GPIO_OUT_LOW, NULL)
|
||||
GPIO(USBC_DP_POLARITY, B, 1, GPIO_OUT_HIGH, NULL)
|
||||
GPIO(USBC_SS_USB_MODE, B, 3, GPIO_OUT_LOW, NULL)
|
||||
GPIO(USBC_SS_EN_L, B, 4, GPIO_OUT_LOW, NULL)
|
||||
GPIO(USBC_CHARGE_EN, A, 8, GPIO_OUT_HIGH, NULL)
|
||||
GPIO(USBC_CC1_DEVICE_ODL, A, 9, GPIO_OUT_LOW, NULL)
|
||||
GPIO(USBC_CC1_HOST, A, 2, GPIO_INPUT, NULL)
|
||||
GPIO(USBC_CC2_DEVICE_ODL, B, 7, GPIO_OUT_LOW, NULL)
|
||||
GPIO(USBC_CC2_HOST, B, 6, GPIO_INPUT, NULL)
|
||||
GPIO(USBC_POLARITY, B, 1, GPIO_OUT_HIGH, NULL)
|
||||
GPIO(USBC_SS_USB_MODE, B, 3, GPIO_OUT_LOW, NULL)
|
||||
GPIO(USBC_SS_EN_L, B, 4, GPIO_OUT_LOW, NULL)
|
||||
GPIO(USB_CC1_VCONN_EN_L, A, 11, GPIO_OUT_HIGH, NULL)
|
||||
GPIO(USB_CC2_VCONN_EN_L, A, 12, GPIO_OUT_HIGH, NULL)
|
||||
|
||||
GPIO(VBUS_CHARGER_EN, B, 0, GPIO_OUT_LOW, NULL)
|
||||
/* VSEL_0/1: 0/0 = 5V, 1/0 = 12V, 1/1 = 20V */
|
||||
GPIO(USBC_VSEL_1, A, 10, GPIO_OUT_LOW, NULL)
|
||||
GPIO(USBC_VSEL_0, C, 14, GPIO_OUT_LOW, NULL)
|
||||
|
||||
/* Alternate functions */
|
||||
#if 0
|
||||
GPIO(USB_DM, A, 11, GPIO_ANALOG, NULL)
|
||||
GPIO(USB_DP, A, 12, GPIO_ANALOG, NULL)
|
||||
GPIO(UART_TX, A, 14, GPIO_OUT_LOW, NULL)
|
||||
GPIO(UART_RX, A, 15, GPIO_OUT_LOW, NULL)
|
||||
GPIO(UART_TX, A, 14, GPIO_OUT_LOW, NULL)
|
||||
GPIO(UART_RX, A, 15, GPIO_OUT_LOW, NULL)
|
||||
#endif
|
||||
|
||||
/*
|
||||
* I2C pins should be configured as inputs until I2C module is
|
||||
* initialized. This will avoid driving the lines unintentionally.
|
||||
*/
|
||||
GPIO(SLAVE_I2C_SCL, B, 6, GPIO_INPUT, NULL)
|
||||
GPIO(SLAVE_I2C_SDA, B, 7, GPIO_INPUT, NULL)
|
||||
|
||||
/* Outputs */
|
||||
GPIO(SLAVE_I2C_INT_L, B, 2, GPIO_OUT_HIGH, NULL)
|
||||
GPIO(RAIDEN_CC1_EN_L, B, 13, GPIO_OUT_LOW, NULL)
|
||||
GPIO(RAIDEN_CC2_EN_L, B, 14, GPIO_OUT_HIGH, NULL)
|
||||
|
||||
/* Inputs */
|
||||
GPIO(SLOT_PLN_A0, C, 15, GPIO_INPUT, NULL)
|
||||
GPIO(SLOT_PLN_A1, F, 0, GPIO_INPUT, NULL)
|
||||
GPIO(SLOT_PLN_A2, F, 1, GPIO_INPUT, NULL)
|
||||
GPIO(MASTER_I2C_SCL, B, 10, GPIO_INPUT, NULL)
|
||||
GPIO(MASTER_I2C_SDA, B, 11, GPIO_INPUT, NULL)
|
||||
|
||||
/* Test points */
|
||||
GPIO(TP9, A, 13, GPIO_ODR_HIGH, NULL)
|
||||
GPIO(TP1, A, 13, GPIO_ODR_HIGH, NULL)
|
||||
|
||||
/* Unimplemented signals which we need to emulate for now */
|
||||
UNIMPLEMENTED(ENTERING_RW)
|
||||
@@ -74,5 +69,5 @@ UNIMPLEMENTED(WP_L)
|
||||
ALTERNATE(A, 0x0020, 0, MODULE_USB_PD, 0) /* SPI1: SCK(PA5) */
|
||||
ALTERNATE(B, 0x0200, 2, MODULE_USB_PD, 0) /* TIM17_CH1: (PB9) */
|
||||
ALTERNATE(A, 0xC000, 1, MODULE_UART, 0) /* USART2: PA14/PA15 */
|
||||
ALTERNATE(B, 0x00C0, 1, MODULE_I2C, 0) /* I2C SLAVE:PB6/7 */
|
||||
ALTERNATE(B, 0x0C00, 1, MODULE_I2C, 0) /* I2C MASTER:PB10/11 */
|
||||
|
||||
|
||||
@@ -62,10 +62,10 @@ static inline void spi_enable_clock(int port)
|
||||
/* the pins used for communication need to be hi-speed */
|
||||
static inline void pd_set_pins_speed(int port)
|
||||
{
|
||||
/* 40 MHz pin speed on SPI1 PA5/6 */
|
||||
STM32_GPIO_OSPEEDR(GPIO_A) |= 0x00003C00;
|
||||
/* 40 MHz pin speed on TIM17_CH1 (PB9) */
|
||||
STM32_GPIO_OSPEEDR(GPIO_B) |= 0x000C0000;
|
||||
/* 40 MHz pin speed on SPI1 (PA5/6) and CC1_TX_EN (PA3) */
|
||||
STM32_GPIO_OSPEEDR(GPIO_A) |= 0x00003CC0;
|
||||
/* 40 MHz pin speed on TIM17_CH1 (PB9) and CC2_TX_EN (PB2) */
|
||||
STM32_GPIO_OSPEEDR(GPIO_B) |= 0x000C0030;
|
||||
}
|
||||
|
||||
/* Reset SPI peripheral used for TX */
|
||||
@@ -83,8 +83,9 @@ static inline void pd_tx_enable(int port, int polarity)
|
||||
/* PA6 is SPI1 MISO */
|
||||
gpio_set_alternate_function(GPIO_A, 0x0040, 0);
|
||||
|
||||
/* set the low level reference */
|
||||
gpio_set_level(GPIO_USBC_CC_TX_EN, 1);
|
||||
/* set the polarity */
|
||||
gpio_set_level(GPIO_USBC_CC1_TX_EN, !polarity);
|
||||
gpio_set_level(GPIO_USBC_CC2_TX_EN, polarity);
|
||||
}
|
||||
|
||||
/* Put the TX driver in Hi-Z state */
|
||||
@@ -96,7 +97,8 @@ static inline void pd_tx_disable(int port, int polarity)
|
||||
& ~(3 << (2*6)))
|
||||
| (1 << (2*6));
|
||||
/* put the low level reference in Hi-Z */
|
||||
gpio_set_level(GPIO_USBC_CC_TX_EN, 0);
|
||||
gpio_set_level(GPIO_USBC_CC1_TX_EN, 0);
|
||||
gpio_set_level(GPIO_USBC_CC2_TX_EN, 0);
|
||||
}
|
||||
|
||||
/* we know the plug polarity, do the right configuration */
|
||||
@@ -105,7 +107,9 @@ static inline void pd_select_polarity(int port, int polarity)
|
||||
/* use the right comparator non inverted input for COMP1 */
|
||||
STM32_COMP_CSR = (STM32_COMP_CSR & ~STM32_COMP_CMP1INSEL_MASK)
|
||||
| STM32_COMP_CMP1EN
|
||||
| STM32_COMP_CMP1INSEL_INM6;
|
||||
| (polarity ?
|
||||
STM32_COMP_CMP1INSEL_INM4 :
|
||||
STM32_COMP_CMP1INSEL_INM6);
|
||||
}
|
||||
|
||||
/* Initialize pins used for TX and put them in Hi-Z */
|
||||
@@ -121,18 +125,27 @@ static inline void pd_set_host_mode(int port, int enable)
|
||||
if (enable) {
|
||||
/* Source mode, disable charging */
|
||||
gpio_set_level(GPIO_USBC_CHARGE_EN, 0);
|
||||
/* High Z for no pull-down resistor on CC */
|
||||
/* High Z for no pull-down resistor on CC1 */
|
||||
gpio_set_flags_by_mask(GPIO_A, (1 << 9), GPIO_INPUT);
|
||||
/* Set pull-up resistor on CC */
|
||||
/* Set pull-up resistor on CC1 */
|
||||
gpio_set_flags_by_mask(GPIO_A, (1 << 2), GPIO_OUT_HIGH);
|
||||
/* High Z for no pull-down resistor on CC2 */
|
||||
gpio_set_flags_by_mask(GPIO_B, (1 << 7), GPIO_INPUT);
|
||||
/* Set pull-up resistor on CC2 */
|
||||
gpio_set_flags_by_mask(GPIO_B, (1 << 6), GPIO_OUT_HIGH);
|
||||
} else {
|
||||
/* Device mode, disable VBUS */
|
||||
gpio_set_level(GPIO_USBC_5V_EN, 0);
|
||||
gpio_set_level(GPIO_USBC_12V_EN, 0);
|
||||
/* High Z for no pull-up resistor on CC */
|
||||
gpio_set_level(GPIO_VBUS_CHARGER_EN, 0);
|
||||
gpio_set_level(GPIO_USBC_VSEL_0, 0);
|
||||
gpio_set_level(GPIO_USBC_VSEL_1, 0);
|
||||
/* High Z for no pull-up resistor on CC1 */
|
||||
gpio_set_flags_by_mask(GPIO_A, (1 << 2), GPIO_INPUT);
|
||||
/* Set pull-down resistor on CC. */
|
||||
/* Set pull-down resistor on CC1 */
|
||||
gpio_set_flags_by_mask(GPIO_A, (1 << 9), GPIO_OUT_LOW);
|
||||
/* High Z for no pull-up resistor on CC2 */
|
||||
gpio_set_flags_by_mask(GPIO_B, (1 << 6), GPIO_INPUT);
|
||||
/* Set pull-down resistor on CC2 */
|
||||
gpio_set_flags_by_mask(GPIO_B, (1 << 7), GPIO_OUT_LOW);
|
||||
/* Set charge enable */
|
||||
gpio_set_level(GPIO_USBC_CHARGE_EN, 1);
|
||||
}
|
||||
@@ -140,8 +153,10 @@ static inline void pd_set_host_mode(int port, int enable)
|
||||
|
||||
static inline int pd_adc_read(int port, int cc)
|
||||
{
|
||||
/* Always return CC1 */
|
||||
return adc_read_channel(ADC_CH_CC1_PD);
|
||||
if (cc == 0)
|
||||
return adc_read_channel(ADC_CH_CC1_PD);
|
||||
else
|
||||
return adc_read_channel(ADC_CH_CC2_PD);
|
||||
}
|
||||
|
||||
static inline int pd_snk_is_vbus_provided(int port)
|
||||
|
||||
@@ -24,10 +24,12 @@
|
||||
const uint32_t pd_src_pdo[] = {
|
||||
PDO_FIXED(5000, 500, PDO_FIXED_EXTERNAL),
|
||||
PDO_FIXED(12000, 3000, PDO_FIXED_EXTERNAL),
|
||||
PDO_FIXED(20000, 3000, PDO_FIXED_EXTERNAL),
|
||||
};
|
||||
static const int pd_src_pdo_cnts[2] = {
|
||||
static const int pd_src_pdo_cnts[3] = {
|
||||
[SRC_CAP_5V] = 1,
|
||||
[SRC_CAP_12V] = 2,
|
||||
[SRC_CAP_20V] = 3,
|
||||
};
|
||||
|
||||
static int pd_src_pdo_idx;
|
||||
@@ -124,8 +126,9 @@ int pd_request_voltage(uint32_t rdo)
|
||||
int pd_set_power_supply_ready(int port)
|
||||
{
|
||||
/* Output the correct voltage */
|
||||
gpio_set_level(requested_voltage_idx ? GPIO_USBC_12V_EN :
|
||||
GPIO_USBC_5V_EN, 1);
|
||||
gpio_set_level(GPIO_VBUS_CHARGER_EN, 1);
|
||||
gpio_set_level(GPIO_USBC_VSEL_0, requested_voltage_idx >= 1);
|
||||
gpio_set_level(GPIO_USBC_VSEL_1, requested_voltage_idx >= 2);
|
||||
|
||||
return EC_SUCCESS;
|
||||
}
|
||||
@@ -134,8 +137,9 @@ void pd_power_supply_reset(int port)
|
||||
{
|
||||
/* Kill VBUS */
|
||||
requested_voltage_idx = 0;
|
||||
gpio_set_level(GPIO_USBC_5V_EN, 0);
|
||||
gpio_set_level(GPIO_USBC_12V_EN, 0);
|
||||
gpio_set_level(GPIO_VBUS_CHARGER_EN, 0);
|
||||
gpio_set_level(GPIO_USBC_VSEL_0, 0);
|
||||
gpio_set_level(GPIO_USBC_VSEL_1, 0);
|
||||
}
|
||||
|
||||
int pd_board_checks(void)
|
||||
|
||||
Reference in New Issue
Block a user