From 90145968b22e9578cc2f008fa4a6947f6168d48a Mon Sep 17 00:00:00 2001 From: Shawn Nematbakhsh Date: Fri, 8 Apr 2016 19:42:09 -0700 Subject: kevin: GPIO changes for new proto build BUG=chrome-os-partner:52171 TEST=Verify old kevin boards still boot + power sequence. BRANCH=None Change-Id: Iacc02beba05ef3e80ffa59aa7fc5718c12bae20c Signed-off-by: Shawn Nematbakhsh Reviewed-on: https://chromium-review.googlesource.com/338043 Commit-Ready: Shawn N Tested-by: Shawn N Reviewed-by: Shawn N --- board/kevin/board.c | 8 +++++--- board/kevin/board.h | 4 +++- board/kevin/gpio.inc | 34 ++++++++++++++++++---------------- power/rk3399.c | 9 +++------ 4 files changed, 29 insertions(+), 26 deletions(-) diff --git a/board/kevin/board.c b/board/kevin/board.c index 79346b9203..b3169f9738 100644 --- a/board/kevin/board.c +++ b/board/kevin/board.c @@ -68,8 +68,10 @@ BUILD_ASSERT(ARRAY_SIZE(adc_channels) == ADC_CH_COUNT); /******************************************************************************/ /* PWM channels. Must be in the exactly same order as in enum pwm_channel. */ const struct pwm_t pwm_channels[] = { - [PWM_CH_BKLIGHT] = { 2, 0, 10000 }, - [PWM_CH_LED] = { 3, PWM_CONFIG_DSLEEP, 100 }, + [PWM_CH_FULL_LED] = { 0, PWM_CONFIG_DSLEEP, 100 }, + [PWM_CH_BKLIGHT] = { 2, 0, 10000 }, + [PWM_CH_CHG_LED] = { 3, PWM_CONFIG_DSLEEP, 100 }, + [PWM_CH_PWR_LED] = { 4, PWM_CONFIG_DSLEEP, 100 }, }; BUILD_ASSERT(ARRAY_SIZE(pwm_channels) == PWM_CH_COUNT); @@ -78,7 +80,7 @@ BUILD_ASSERT(ARRAY_SIZE(pwm_channels) == PWM_CH_COUNT); const struct i2c_port_t i2c_ports[] = { {"tcpc0", NPCX_I2C_PORT0_0, 1000, GPIO_I2C0_SCL0, GPIO_I2C0_SDA0}, {"tcpc1", NPCX_I2C_PORT0_1, 1000, GPIO_I2C0_SCL1, GPIO_I2C0_SDA1}, - {"sensors", NPCX_I2C_PORT1, 1000, GPIO_I2C1_SCL, GPIO_I2C1_SDA}, + {"sensors", NPCX_I2C_PORT1, 400, GPIO_I2C1_SCL, GPIO_I2C1_SDA}, {"charger", NPCX_I2C_PORT2, 400, GPIO_I2C2_SCL, GPIO_I2C2_SDA}, {"battery", NPCX_I2C_PORT3, 100, GPIO_I2C3_SCL, GPIO_I2C3_SDA}, }; diff --git a/board/kevin/board.h b/board/kevin/board.h index 9c046c6bc6..05f46339ee 100644 --- a/board/kevin/board.h +++ b/board/kevin/board.h @@ -108,8 +108,10 @@ enum adc_channel { }; enum pwm_channel { + PWM_CH_FULL_LED, PWM_CH_BKLIGHT, - PWM_CH_LED, + PWM_CH_CHG_LED, + PWM_CH_PWR_LED, /* Number of PWM channels */ PWM_CH_COUNT }; diff --git a/board/kevin/gpio.inc b/board/kevin/gpio.inc index f372b7fdc8..48292085e6 100644 --- a/board/kevin/gpio.inc +++ b/board/kevin/gpio.inc @@ -12,6 +12,7 @@ GPIO_INT(WP_L, PIN(9, 3), GPIO_INT_BOTH, switch_interrupt) +/* TODO: May be floating when SOC unpowered */ GPIO_INT(SHI_CS_L, PIN(5, 3), GPIO_INT_FALLING, shi_cs_event) GPIO_INT(USB_C0_PD_INT_L, PIN(6, 0), GPIO_INT_FALLING | GPIO_PULL_UP, tcpc_alert_event) @@ -21,7 +22,7 @@ GPIO_INT(VOLUME_UP_L, PIN(8, 2), GPIO_INT_BOTH | GPIO_INPUT | GPIO_PULL_UP, button_interrupt) GPIO_INT(VOLUME_DOWN_L, PIN(8, 3), GPIO_INT_BOTH | GPIO_INPUT | GPIO_PULL_UP, button_interrupt) -GPIO_INT(POWER_BUTTON_L, PIN(0, 4), GPIO_INT_BOTH | GPIO_INPUT, +GPIO_INT(POWER_BUTTON_L, PIN(0, 4), GPIO_INT_BOTH | GPIO_INPUT | GPIO_PULL_UP, power_button_interrupt) GPIO_INT(LID_OPEN, PIN(9, 7), GPIO_INT_BOTH | GPIO_INPUT | GPIO_SEL_1P8V, lid_interrupt) @@ -41,7 +42,8 @@ GPIO(PP900_PMU_EN, PIN(C, 2), GPIO_OUT_LOW) GPIO(PP900_USB_EN, PIN(A, 5), GPIO_OUT_LOW) GPIO(PP900_PCIE_EN, PIN(0, 0), GPIO_OUT_LOW) -GPIO(PP1200_HSIC_EN, PIN(8, 1), GPIO_OUT_LOW) +/* NC */ +GPIO(GPIO81_NC, PIN(8, 1), GPIO_INPUT | GPIO_PULL_UP) GPIO(PP1800_SENSOR_EN_L, PIN(A, 7), GPIO_OUT_HIGH) GPIO(PP1800_USB_EN_L, PIN(A, 6), GPIO_OUT_HIGH) @@ -51,7 +53,6 @@ GPIO(PP1800_AP_AVDD_EN_L, PIN(5, 2), GPIO_OUT_HIGH) GPIO(PP1800_S0_EN_L, PIN(5, 0), GPIO_OUT_HIGH) GPIO(PP1800_SIXAXIS_EN_L, PIN(5, 6), GPIO_OUT_HIGH) -GPIO(PP3300_S0_EN_L, PIN(C, 3), GPIO_OUT_HIGH) GPIO(PP3300_TRACKPAD_EN_L, PIN(3, 2), GPIO_OUT_HIGH) GPIO(PP3300_USB_EN_L, PIN(3, 7), GPIO_OUT_HIGH) @@ -59,6 +60,7 @@ GPIO(PP5000_EN, PIN(C, 6), GPIO_OUT_LOW) GPIO(PP5000_PG, PIN(7, 1), GPIO_INPUT | GPIO_PULL_UP) GPIO(TPS65261_PG, PIN(7, 5), GPIO_INPUT | GPIO_PULL_UP) +/* TODO: May be floating when SOC unpowered */ GPIO(AP_EC_S3_S0_L, PIN(5, 4), GPIO_INPUT) GPIO(AP_CORE_PG, PIN(6, 7), GPIO_INPUT | GPIO_PULL_UP) @@ -84,16 +86,14 @@ GPIO(CLK_32K_IN, PIN(E, 7), GPIO_INPUT) GPIO(LID_ACCEL_INT_L, PIN(C, 7), GPIO_INPUT | GPIO_PULL_UP) -GPIO(C0_VOUT_EN_L, PIN(D, 3), GPIO_OUT_HIGH) -GPIO(C1_VOUT_EN_L, PIN(D, 2), GPIO_OUT_HIGH) +GPIO(C0_VOUT_EN_L, PIN(D, 3), GPIO_OUT_HIGH | GPIO_OPEN_DRAIN) +GPIO(C1_VOUT_EN_L, PIN(D, 2), GPIO_OUT_HIGH | GPIO_OPEN_DRAIN) GPIO(ENTERING_RW, PIN(7, 6), GPIO_OUT_LOW) -GPIO(SYS_RST_L, PIN(6, 1), GPIO_OUT_HIGH) -GPIO(EC_INT_L, PIN(5, 7), GPIO_OUT_HIGH) +GPIO(SYS_RST_L, PIN(6, 1), GPIO_OUT_HIGH | GPIO_OPEN_DRAIN) +GPIO(EC_INT_L, PIN(5, 7), GPIO_OUT_HIGH | GPIO_OPEN_DRAIN) GPIO(EC_BOARD_ID_EN_L, PIN(3, 5), GPIO_OUT_HIGH) -/* NC */ -GPIO(STRAP_ENG_L, PIN(B, 6), GPIO_OUT_LOW) GPIO(USB_DP_HPD, PIN(6, 6), GPIO_OUT_LOW) GPIO(CHARGER_RESET_L, PIN(0, 1), GPIO_OUT_HIGH | GPIO_OPEN_DRAIN) GPIO(CR50_RESET_L, PIN(0, 2), GPIO_OUT_HIGH | GPIO_OPEN_DRAIN) @@ -101,12 +101,12 @@ GPIO(CHARGER_INT_L, PIN(3, 3), GPIO_INPUT) GPIO(EC_BATT_PRES_L, PIN(3, 4), GPIO_INPUT) GPIO(LID_360_L, PIN(3, 6), GPIO_INPUT | GPIO_SEL_1P8V) GPIO(BASE_SIXAXIS_INT_L, PIN(4, 0), GPIO_INPUT | GPIO_SEL_1P8V) -GPIO(CCD_MODE, PIN(6, 3), GPIO_INPUT) -GPIO(USB_A_EN, PIN(7, 0), GPIO_OUT_LOW) +GPIO(CCD_MODE_ODL, PIN(6, 3), GPIO_INPUT | GPIO_PULL_UP) +GPIO(PP3300_S0_EN_L, PIN(7, 0), GPIO_OUT_HIGH) GPIO(WARM_RESET_REQ, PIN(7, 3), GPIO_INPUT) GPIO(AP_OVERTEMP, PIN(7, 4), GPIO_INPUT) -GPIO(USB_A_CHARGE_EN, PIN(8, 4), GPIO_INPUT) -GPIO(SPI_SENSOR_CS_L, PIN(9, 4), GPIO_OUT_HIGH | GPIO_OPEN_DRAIN) +GPIO(USB_A_CHARGE_EN, PIN(8, 4), GPIO_OUT_LOW) +GPIO(SPI_SENSOR_CS_L, PIN(9, 4), GPIO_OUT_HIGH) GPIO(USB_C0_DISCHARGE, PIN(0, 3), GPIO_OUT_LOW) @@ -125,12 +125,14 @@ ALTERNATE(PIN_MASK(8, 0x80), 1, MODULE_I2C, 0) ALTERNATE(PIN_MASK(9, 0x07), 1, MODULE_I2C, 0) /* I2C3SDA/I2C3SCL GPIOD0/D1 */ ALTERNATE(PIN_MASK(D, 0x03), 1, MODULE_I2C, 0) -/* PWM2 / BLPWM */ -ALTERNATE(PIN_MASK(C, 0x10), 1, MODULE_PWM, 0) +/* PWM0 / LED_FULL PWM2 / BLPWM */ +ALTERNATE(PIN_MASK(C, 0x18), 1, MODULE_PWM, 0) /* PWM3 / CHGLED */ ALTERNATE(PIN_MASK(8, 0x01), 1, MODULE_PWM, 0) +/* PWM4 / PWRLED */ +ALTERNATE(PIN_MASK(B, 0x40), 1, MODULE_PWM, 0) /* CR_SIN/SOUT GPIO64/65 */ -ALTERNATE(PIN_MASK(6, 0x30), 1, MODULE_UART, 0) +ALTERNATE(PIN_MASK(6, 0x30), 1, MODULE_UART, GPIO_PULL_UP) /* ADC0-4 */ ALTERNATE(PIN_MASK(4, 0x3e), 1, MODULE_ADC, 0) diff --git a/power/rk3399.c b/power/rk3399.c index c3ed2cfc08..81fff5c3a2 100644 --- a/power/rk3399.c +++ b/power/rk3399.c @@ -41,8 +41,6 @@ static const struct power_signal_info power_control_outputs[] = { { GPIO_PP900_USB_EN, 1 }, { GPIO_PP900_PCIE_EN, 1 }, - { GPIO_PP1200_HSIC_EN, 1 }, - { GPIO_PP1800_SENSOR_EN_L, 0 }, { GPIO_PP1800_LID_EN_L, 0 }, { GPIO_PP1800_PMU_EN_L, 0 }, @@ -152,8 +150,8 @@ enum power_state power_handle_state(enum power_state state) msleep(2); gpio_set_level(GPIO_PP1800_SIXAXIS_EN_L, 0); + msleep(2); gpio_set_level(GPIO_PP3300_TRACKPAD_EN_L, 0); - gpio_set_level(GPIO_PP1200_HSIC_EN, 1); /* Call hooks now that rails are up */ hook_notify(HOOK_CHIPSET_STARTUP); @@ -163,13 +161,12 @@ enum power_state power_handle_state(enum power_state state) case POWER_S3S0: gpio_set_level(GPIO_AP_CORE_EN, 1); msleep(2); - gpio_set_level(GPIO_PP3300_USB_EN_L, 0); - msleep(2); gpio_set_level(GPIO_PP1800_S0_EN_L, 0); msleep(2); gpio_set_level(GPIO_PP3300_S0_EN_L, 0); msleep(2); - msleep(10); /* TBD */ + gpio_set_level(GPIO_PP3300_USB_EN_L, 0); + msleep(2); /* Pulse SYS_RST */ gpio_set_level(GPIO_SYS_RST_L, 0); -- cgit v1.2.1