mirror of
https://github.com/Telecominfraproject/OpenCellular.git
synced 2025-12-31 11:01:19 +00:00
poppy/soraka: Add support for poppy-rev1
Update GPIO pinout for poppy rev1. The incompatible changes are gated with #ifdef POPPY_REV1, which can be set in board.h. For soraka, rev1 is the default. For poppy, we'll switch the default board revision at a later stage. BRANCH=none BUG=b:35585396 TEST=Build and boot poppy and soraka on poppy-rev0, still works fine. Change-Id: Iaca1721f38566848cd725dbc396d93e4913de0d7 Reviewed-on: https://chromium-review.googlesource.com/481564 Commit-Ready: Nicolas Boichat <drinkcat@chromium.org> Tested-by: Nicolas Boichat <drinkcat@chromium.org> Reviewed-by: Furquan Shaikh <furquan@chromium.org>
This commit is contained in:
committed by
chrome-bot
parent
769464c544
commit
ecae0ea6ba
@@ -8,6 +8,14 @@
|
||||
#ifndef __CROS_EC_BOARD_H
|
||||
#define __CROS_EC_BOARD_H
|
||||
|
||||
/* Set the default board revision */
|
||||
#ifdef BOARD_SORAKA
|
||||
#define POPPY_REV1
|
||||
#else
|
||||
/* TODO(b/35585396): Deprecate rev0 */
|
||||
#define POPPY_REV0
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Allow dangerous commands.
|
||||
* TODO: Remove this config before production.
|
||||
|
||||
@@ -20,15 +20,22 @@ GPIO_INT(RSMRST_L_PGOOD, PIN(B, 0), GPIO_INT_BOTH, power_signal_interrupt)
|
||||
GPIO_INT(PMIC_DPWROK, PIN(C, 7), GPIO_INT_BOTH, power_signal_interrupt)
|
||||
GPIO_INT(POWER_BUTTON_L, PIN(0, 4), GPIO_INT_BOTH | GPIO_PULL_UP, power_button_interrupt)
|
||||
GPIO_INT(LID_OPEN, PIN(6, 7), GPIO_INT_BOTH, lid_interrupt)
|
||||
/* TODO(b/35585396): Make use of reverse dock signal. */
|
||||
GPIO_INT(REVERSE_DOCK, PIN(B, 7), GPIO_INT_BOTH, lid_interrupt)
|
||||
GPIO_INT(VOLUME_DOWN_L, PIN(8, 3), GPIO_INT_BOTH | GPIO_PULL_UP, button_interrupt)
|
||||
GPIO_INT(VOLUME_UP_L, PIN(8, 2), GPIO_INT_BOTH | GPIO_PULL_UP, button_interrupt)
|
||||
GPIO_INT(WP_L, PIN(4, 0), GPIO_INT_BOTH, switch_interrupt)
|
||||
GPIO_INT(AC_PRESENT, PIN(C, 1), GPIO_INT_BOTH, extpower_interrupt)
|
||||
GPIO_INT(USB_C0_VBUS_WAKE_L, PIN(2, 2), GPIO_INT_BOTH | GPIO_PULL_UP, vbus0_evt)
|
||||
GPIO_INT(USB_C1_VBUS_WAKE_L, PIN(2, 3), GPIO_INT_BOTH | GPIO_PULL_UP, vbus1_evt)
|
||||
GPIO_INT(USB_C0_VBUS_WAKE_L, PIN(9, 3), GPIO_INT_BOTH | GPIO_PULL_UP, vbus0_evt)
|
||||
GPIO_INT(USB_C1_VBUS_WAKE_L, PIN(9, 7), GPIO_INT_BOTH | GPIO_PULL_UP, vbus1_evt)
|
||||
GPIO_INT(USB_C0_BC12_INT_L, PIN(D, 3), GPIO_INT_FALLING, usb0_evt)
|
||||
GPIO_INT(USB_C1_BC12_INT_L, PIN(3, 3), GPIO_INT_FALLING, usb1_evt)
|
||||
/* TODO(b/35585396): Invert logic after rev1, then deprecate rev0 and remove. */
|
||||
#ifdef POPPY_REV1
|
||||
GPIO_INT(ACCELGYRO3_INT_L, PIN(3, 6), GPIO_INT_FALLING, bmi160_interrupt)
|
||||
#else
|
||||
GPIO_INT(ACCELGYRO3_INT_L, PIN(3, 0), GPIO_INT_FALLING, bmi160_interrupt)
|
||||
#endif
|
||||
GPIO_INT(BASE_DET_A, PIN(4, 5), GPIO_INT_BOTH, base_detect_interrupt)
|
||||
GPIO_INT(USB_C0_CABLE_DET, PIN(D, 2), GPIO_INT_RISING, anx74xx_cable_det_interrupt)
|
||||
|
||||
@@ -55,21 +62,24 @@ GPIO(PCH_SLP_S0_L, PIN(7, 5), GPIO_INPUT)
|
||||
GPIO(ALS_INT_L, PIN(2, 5), GPIO_INPUT)
|
||||
GPIO(FP_INT_L, PIN(5, 6), GPIO_INPUT)
|
||||
|
||||
/* TODO(crosbug.com/p/61098): Make use of these GPIOs */
|
||||
/* TODO(b/35585396): Make use of these GPIOs */
|
||||
GPIO(PP1800_DX_SENSOR, PIN(1, 4), GPIO_OUTPUT)
|
||||
GPIO(PP3300_DX_SENSOR, PIN(2, 1), GPIO_OUTPUT)
|
||||
GPIO(PP3300_USB_PD, PIN(2, 0), GPIO_OUTPUT)
|
||||
|
||||
#ifdef POPPY_REV0
|
||||
GPIO(PP5000_DX_NFC, PIN(1, 5), GPIO_OUTPUT)
|
||||
|
||||
GPIO(PP3300_DX_CAM, PIN(1, 0), GPIO_OUT_HIGH)
|
||||
GPIO(CAM_PMIC_RST_L, PIN(0, 7), GPIO_INPUT)
|
||||
#endif
|
||||
|
||||
GPIO(WLAN_PE_RST, PIN(1, 2), GPIO_OUTPUT)
|
||||
GPIO(PP3300_DX_LTE, PIN(0, 5), GPIO_OUT_LOW)
|
||||
GPIO(LTE_GPS_OFF_L, PIN(0, 0), GPIO_OUTPUT)
|
||||
GPIO(LTE_BODY_SAR_L, PIN(0, 1), GPIO_OUTPUT)
|
||||
GPIO(LTE_WAKE_L, PIN(7, 1), GPIO_INPUT)
|
||||
GPIO(LTE_OFF_ODL, PIN(8, 0), GPIO_ODR_LOW)
|
||||
/* end of TODO */
|
||||
|
||||
GPIO(PP3300_DX_BASE, PIN(1, 1), GPIO_OUT_LOW)
|
||||
|
||||
@@ -85,10 +95,12 @@ GPIO(I2C2_SDA, PIN(9, 1), GPIO_INPUT) /* EC_I2C2_PMIC_3V3_SDA */
|
||||
GPIO(I2C3_SCL, PIN(D, 1), GPIO_INPUT) /* EC_I2C3_SENSOR_1V8_SCL */
|
||||
GPIO(I2C3_SDA, PIN(D, 0), GPIO_INPUT) /* EC_I2C3_SENSOR_1V8_SDA */
|
||||
|
||||
/* 5V enables: INPUT=1.5A, OUT_LOW=OFF, OUT_HIGH=3A */
|
||||
/* rev0: 5V enables: INPUT=1.5A, OUT_LOW=OFF, OUT_HIGH=3A */
|
||||
GPIO(USB_C0_5V_EN, PIN(4, 2), GPIO_OUT_LOW) /* C0 5V Enable */
|
||||
GPIO(USB_C0_3A_EN, PIN(6, 6), GPIO_OUT_LOW) /* C0 Enable 3A */
|
||||
GPIO(USB_C0_CHARGE_L, PIN(C, 0), GPIO_OUT_LOW) /* C0 Charge enable */
|
||||
GPIO(USB_C1_5V_EN, PIN(B, 1), GPIO_OUT_LOW) /* C1 5V Enable */
|
||||
GPIO(USB_C1_3A_EN, PIN(3, 5), GPIO_OUT_LOW) /* C1 3A Enable */
|
||||
GPIO(USB_C1_CHARGE_L, PIN(C, 3), GPIO_OUT_LOW) /* C1 Charge enable */
|
||||
GPIO(USB_C0_PD_RST_L, PIN(0, 3), GPIO_OUT_LOW) /* C0 PD Reset */
|
||||
GPIO(USB_C1_PD_RST_L, PIN(7, 4), GPIO_OUT_LOW) /* C1 PD Reset */
|
||||
@@ -98,16 +110,20 @@ GPIO(USB_C0_TCPC_PWR, PIN(8, 4), GPIO_OUT_LOW) /* Enable C0 TCPC Power */
|
||||
GPIO(USB2_OTG_ID, PIN(A, 1), GPIO_ODR_LOW) /* OTG ID */
|
||||
GPIO(USB2_OTG_VBUSSENSE, PIN(9, 5), GPIO_OUT_LOW) /* OTG VBUS Sense */
|
||||
|
||||
#ifdef BOARD_SORAKA
|
||||
/* LEDs (2 colors on each port) */
|
||||
/* TODO(b/35585396): Implement. */
|
||||
GPIO(LED_YELLOW_C0, PIN(3, 2), GPIO_OUT_LOW)
|
||||
GPIO(LED_WHITE_C0, PIN(C, 6), GPIO_OUT_LOW)
|
||||
GPIO(LED_YELLOW_C1, PIN(3, 1), GPIO_OUT_LOW)
|
||||
GPIO(LED_WHITE_C1, PIN(3, 0), GPIO_OUT_LOW)
|
||||
#endif
|
||||
|
||||
/* Board ID */
|
||||
GPIO(BOARD_VERSION1, PIN(C, 4), GPIO_INPUT) /* Board ID bit0 */
|
||||
GPIO(BOARD_VERSION2, PIN(C, 2), GPIO_INPUT) /* Board ID bit1 */
|
||||
GPIO(BOARD_VERSION3, PIN(1, 3), GPIO_INPUT) /* Board ID bit2 */
|
||||
|
||||
/* Test points */
|
||||
GPIO(TP248, PIN(5, 7), GPIO_INPUT | GPIO_PULL_UP) /* EC_GPIO57 */
|
||||
GPIO(TP249, PIN(6, 6), GPIO_INPUT | GPIO_PULL_UP) /* EC_GPO66_ARM_L */
|
||||
GPIO(TP250, PIN(3, 5), GPIO_INPUT | GPIO_PULL_UP) /* EC_GPIO35_TEST_L */
|
||||
|
||||
/* Alternate functions GPIO definitions */
|
||||
ALTERNATE(PIN_MASK(6, 0x30), 1, MODULE_UART, 0) /* GPIO64-65 */ /* UART from EC to Servo */
|
||||
ALTERNATE(PIN_MASK(8, 0x80), 1, MODULE_I2C, 0) /* GPIO87 */ /* EC_I2C1_3V3_SDA */
|
||||
|
||||
@@ -65,19 +65,36 @@ int board_vbus_source_enabled(int port)
|
||||
|
||||
static void board_vbus_update_source_current(int port)
|
||||
{
|
||||
enum gpio_signal gpio = port ? GPIO_USB_C1_5V_EN : GPIO_USB_C0_5V_EN;
|
||||
int flags = (vbus_rp[port] == TYPEC_RP_1A5 && vbus_en[port]) ?
|
||||
(GPIO_INPUT | GPIO_PULL_UP) : (GPIO_OUTPUT | GPIO_PULL_UP);
|
||||
enum gpio_signal gpio_5v_en = port ? GPIO_USB_C1_5V_EN :
|
||||
GPIO_USB_C0_5V_EN;
|
||||
enum gpio_signal gpio_3a_en = port ? GPIO_USB_C1_3A_EN :
|
||||
GPIO_USB_C0_3A_EN;
|
||||
|
||||
/*
|
||||
* Driving USB_Cx_5V_EN high, actually put a 16.5k resistance
|
||||
* (2x 33k in parallel) on the NX5P3290 load switch ILIM pin,
|
||||
* setting a minimum OCP current of 3186 mA.
|
||||
* Putting an internal pull-up on USB_Cx_5V_EN, effectively put a 33k
|
||||
* resistor on ILIM, setting a minimum OCP current of 1505 mA.
|
||||
*/
|
||||
gpio_set_level(gpio, vbus_en[port]);
|
||||
gpio_set_flags(gpio, flags);
|
||||
if (system_get_board_version() >= 1) {
|
||||
/*
|
||||
* For rev1 and beyond, 1.5 vs 3.0 A limit is controlled by a
|
||||
* dedicated gpio where high = 3.0A and low = 1.5A. VBUS on/off
|
||||
* is controlled by GPIO_USB_C0/1_5V_EN. Both of these signals
|
||||
* can remain outputs.
|
||||
*/
|
||||
gpio_set_level(gpio_3a_en, vbus_rp[port] == TYPEC_RP_3A0 ?
|
||||
1 : 0);
|
||||
gpio_set_level(gpio_5v_en, vbus_en[port]);
|
||||
} else {
|
||||
/*
|
||||
* Driving USB_Cx_5V_EN high, actually put a 16.5k resistance
|
||||
* (2x 33k in parallel) on the NX5P3290 load switch ILIM pin,
|
||||
* setting a minimum OCP current of 3186 mA.
|
||||
* Putting an internal pull-up on USB_Cx_5V_EN, effectively put
|
||||
* a 33k resistor on ILIM, setting a minimum OCP current of
|
||||
* 1505 mA.
|
||||
*/
|
||||
int flags = (vbus_rp[port] == TYPEC_RP_1A5 && vbus_en[port]) ?
|
||||
(GPIO_INPUT | GPIO_PULL_UP) :
|
||||
(GPIO_OUTPUT | GPIO_PULL_UP);
|
||||
gpio_set_level(gpio_5v_en, vbus_en[port]);
|
||||
gpio_set_flags(gpio_5v_en, flags);
|
||||
}
|
||||
}
|
||||
|
||||
void typec_set_source_current_limit(int port, int rp)
|
||||
|
||||
Reference in New Issue
Block a user