diff options
author | Rachel Nancollas <rachelsn@google.com> | 2017-11-07 19:18:23 -0800 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2017-11-15 20:21:12 -0800 |
commit | dcf047fc1609b2afd06b7a2544f40742ae1e8493 (patch) | |
tree | f092ef80cbe5a7a87c01e49d7d9fdfff13ba7218 | |
parent | 204880575d9b4f8d630c5e3264d8f96fe7690031 (diff) | |
download | chrome-ec-dcf047fc1609b2afd06b7a2544f40742ae1e8493.tar.gz |
Meowth: Added initial board file.
Created Meowth symbolic link to Zoombini.
Modified Zoombini gpio.inc and board, etc. files to
compile a Meowth EC image with the correct gpios.
BUG=b:69133424
BRANCH=none
TEST=make BOARD=meowth and BOARD=zoombini
runs with no errors
Change-Id: Ib34d956efa89ae125de1ce7f8799162c74df0122
Signed-off-by: Rachel Nancollas <rachelsn@google.com>
Reviewed-on: https://chromium-review.googlesource.com/762039
Commit-Ready: Aseda Aboagye <aaboagye@chromium.org>
Tested-by: Aseda Aboagye <aaboagye@chromium.org>
Reviewed-by: Aseda Aboagye <aaboagye@chromium.org>
Reviewed-by: Shawn N <shawnn@chromium.org>
l--------- | board/meowth | 1 | ||||
-rw-r--r-- | board/zoombini/board.c | 53 | ||||
-rw-r--r-- | board/zoombini/board.h | 37 | ||||
-rw-r--r-- | board/zoombini/ec.tasklist | 13 | ||||
-rw-r--r-- | board/zoombini/gpio.inc | 111 | ||||
-rw-r--r-- | board/zoombini/usb_pd_policy.c | 12 | ||||
-rw-r--r-- | power/cannonlake.h | 2 |
7 files changed, 216 insertions, 13 deletions
diff --git a/board/meowth b/board/meowth new file mode 120000 index 0000000000..69cccffc63 --- /dev/null +++ b/board/meowth @@ -0,0 +1 @@ +zoombini/
\ No newline at end of file diff --git a/board/zoombini/board.c b/board/zoombini/board.c index 61aabdb543..a9ad3a1ea8 100644 --- a/board/zoombini/board.c +++ b/board/zoombini/board.c @@ -57,6 +57,7 @@ const enum gpio_signal hibernate_wake_pins[] = { }; const int hibernate_wake_pins_used = ARRAY_SIZE(hibernate_wake_pins); +/* TODO(aaboagye): Add the additional Mewoth temps sensors */ const struct adc_t adc_channels[] = { [ADC_TEMP_SENSOR_SOC] = { "SOC", NPCX_ADC_CH0, ADC_MAX_VOLT, ADC_READ_MAX+1, 0 @@ -68,6 +69,7 @@ const struct adc_t adc_channels[] = { }; /* PWM channels. Must be in the exactly same order as in enum pwm_channel. */ +/* TODO(aaboagye): Add the additional Meowth LEDs */ const struct pwm_t pwm_channels[] = { [PWM_CH_LED_GREEN] = { 0, PWM_CONFIG_DSLEEP, 100 }, [PWM_CH_LED_RED] = { 2, PWM_CONFIG_DSLEEP, 100 }, @@ -81,8 +83,8 @@ const struct power_signal_info power_signal_list[] = { POWER_SIGNAL_ACTIVE_HIGH | POWER_SIGNAL_DISABLE_AT_BOOT, "SLP_S0_DEASSERTED"}, #ifdef CONFIG_ESPI_VW_SIGNALS - {VW_SLP_S3_L, POWER_SIGNAL_ACTIVE_HIGH, "SLP_S3_DEASSERTED"}, - {VW_SLP_S4_L, POWER_SIGNAL_ACTIVE_HIGH, "SLP_S4_DEASSERTED"}, + {VW_SLP_S3_L, POWER_SIGNAL_ACTIVE_HIGH, "SLP_S3_DEASSERTED"}, + {VW_SLP_S4_L, POWER_SIGNAL_ACTIVE_HIGH, "SLP_S4_DEASSERTED"}, #else {GPIO_PCH_SLP_S3_L, POWER_SIGNAL_ACTIVE_HIGH, "SLP_S3_DEASSERTED"}, {GPIO_PCH_SLP_S4_L, POWER_SIGNAL_ACTIVE_HIGH, "SLP_S4_DEASSERTED"}, @@ -90,11 +92,14 @@ const struct power_signal_info power_signal_list[] = { {GPIO_PCH_SLP_SUS_L, POWER_SIGNAL_ACTIVE_HIGH, "SLP_SUS_DEASSERTED"}, {GPIO_RSMRST_L_PGOOD, POWER_SIGNAL_ACTIVE_HIGH, "RSMRST_L_PGOOD"}, {GPIO_PMIC_DPWROK, POWER_SIGNAL_ACTIVE_HIGH, "PMIC_DPWROK"}, +#ifdef BOARD_ZOOMBINI {GPIO_PP5000_PGOOD, POWER_SIGNAL_ACTIVE_HIGH, "PP5000_A_PGOOD"}, +#endif }; BUILD_ASSERT(ARRAY_SIZE(power_signal_list) == POWER_SIGNAL_COUNT); /* I2C port map. */ +#ifdef BOARD_ZOOMBINI const struct i2c_port_t i2c_ports[] = { {"power", I2C_PORT_POWER, 100, GPIO_I2C0_SCL, GPIO_I2C0_SDA}, {"pmic", I2C_PORT_PMIC, 400, GPIO_I2C3_SCL, GPIO_I2C3_SDA}, @@ -103,20 +108,33 @@ const struct i2c_port_t i2c_ports[] = { {"tcpc1", I2C_PORT_TCPC1, 1000, GPIO_TCPC1_SCL, GPIO_TCPC1_SDA}, {"tcpc2", I2C_PORT_TCPC2, 1000, GPIO_TCPC2_SCL, GPIO_TCPC2_SDA}, }; +#else +const struct i2c_port_t i2c_ports[] = { + {"battery", I2C_PORT_BATTERY, 100, GPIO_I2C0_SCL, GPIO_I2C0_SDA}, + {"charger", I2C_PORT_CHARGER, 100, GPIO_I2C4_SCL, GPIO_I2C4_SDA}, + {"pmic", I2C_PORT_PMIC, 400, GPIO_I2C3_SCL, GPIO_I2C3_SDA}, + {"sensor", I2C_PORT_SENSOR, 400, GPIO_I2C7_SCL, GPIO_I2C7_SDA}, + {"tcpc0", I2C_PORT_TCPC0, 1000, GPIO_TCPC0_SCL, GPIO_TCPC0_SDA}, + {"tcpc1", I2C_PORT_TCPC1, 1000, GPIO_TCPC1_SCL, GPIO_TCPC1_SDA}, +}; +#endif + const unsigned int i2c_ports_used = ARRAY_SIZE(i2c_ports); -/* TODO(aaboagye): Add the other ports. */ +/* TODO(aaboagye): Add the other ports. 3 for Zoombini, 2 for Meowth */ const struct sn5s330_config sn5s330_chips[] = { {I2C_PORT_TCPC0, SN5S330_ADDR0}, }; const unsigned int sn5s330_cnt = ARRAY_SIZE(sn5s330_chips); - +#ifdef BOARD_ZOOMBINI /* GPIO to enable/disable the USB Type-A port. */ const int usb_port_enable[CONFIG_USB_PORT_POWER_SMART_PORT_COUNT] = { GPIO_USB_A_5V_EN, }; +#endif +#ifdef BOARD_ZOOMBINI /* Keyboard scan setting */ struct keyboard_scan_config keyscan_config = { /* Extra delay when KSO2 is tied to Cr50. */ @@ -131,6 +149,7 @@ struct keyboard_scan_config keyscan_config = { 0xa4, 0xff, 0xfe, 0x55, 0xfa, 0xca /* full set */ }, }; +#endif const struct tcpc_config_t tcpc_config[CONFIG_USB_PD_PORT_COUNT] = { { @@ -147,12 +166,14 @@ const struct tcpc_config_t tcpc_config[CONFIG_USB_PD_PORT_COUNT] = { .pol = TCPC_ALERT_ACTIVE_LOW, }, +#ifdef BOARD_ZOOMBINI { .i2c_host_port = I2C_PORT_TCPC2, .i2c_slave_addr = 0x16, .drv = &tcpci_tcpm_drv, .pol = TCPC_ALERT_ACTIVE_LOW, }, +#endif }; /* The port_addr members are PD port numbers, not I2C port numbers. */ @@ -169,37 +190,50 @@ struct usb_mux usb_muxes[CONFIG_USB_PD_PORT_COUNT] = { .hpd_update = &ps8xxx_tcpc_update_hpd_status, }, +#ifdef BOARD_ZOOMBINI { .port_addr = 2, .driver = &tcpci_tcpm_usb_mux_driver, .hpd_update = &ps8xxx_tcpc_update_hpd_status, }, +#endif }; static void board_chipset_startup(void) { +#ifdef BOARD_ZOOMBINI /* Enable trackpad. */ gpio_set_level(GPIO_EN_PP3300_TRACKPAD, 1); +#endif + /* TODO(aaboagye): Remove Trackpad function in P1 - moved to AP */ } DECLARE_HOOK(HOOK_CHIPSET_STARTUP, board_chipset_startup, HOOK_PRIO_DEFAULT); static void board_chipset_shutdown(void) { +#ifdef BOARD_ZOOMBINI /* Disable trackpad. */ gpio_set_level(GPIO_EN_PP3300_TRACKPAD, 0); +#endif + /* TODO(aaboagye): Remove Trackpad function in P1 - moved to AP */ } DECLARE_HOOK(HOOK_CHIPSET_SHUTDOWN, board_chipset_shutdown, HOOK_PRIO_DEFAULT); static void board_init(void) { +#ifdef BOARD_ZOOMBINI struct charge_port_info chg; int i; +#endif /* Enable TCPC interrupts. */ gpio_enable_interrupt(GPIO_USB_C0_PD_INT_L); gpio_enable_interrupt(GPIO_USB_C1_PD_INT_L); +#ifdef BOARD_ZOOMBINI gpio_enable_interrupt(GPIO_USB_C2_PD_INT_L); +#endif +#ifdef BOARD_ZOOMBINI /* Initialize VBUS suppliers. */ for (i = 0; i < CONFIG_USB_PD_PORT_COUNT; i++) { if (tcpm_get_vbus_level(i)) { @@ -211,6 +245,7 @@ static void board_init(void) } charge_manager_update_charge(CHARGE_SUPPLIER_VBUS, i, &chg); } +#endif } DECLARE_HOOK(HOOK_INIT, board_init, HOOK_PRIO_DEFAULT); @@ -263,6 +298,7 @@ int board_set_active_charge_port(int port) CPRINTS("New chg p%d", port); +#ifdef BOARD_ZOOMBINI if (port == CHARGE_PORT_NONE) { /* Disable all ports. */ gpio_set_level(GPIO_USB_C0_CHARGE_EN_L, 1); @@ -284,6 +320,13 @@ int board_set_active_charge_port(int port) gpio_set_level(GPIO_USB_C1_CHARGE_EN_L, port != 1); gpio_set_level(GPIO_USB_C2_CHARGE_EN_L, port != 2); +#endif + /* + * TODO(aaboagye): Remove manual charge enabling on P1 - + * switched to sn5s330 + */ + + /* * Turn on the PP2 FET such that power actually flows and turn off the * non-charge ports' PP2 FETs. @@ -320,8 +363,10 @@ uint16_t tcpc_get_alert_status(void) status |= PD_STATUS_TCPC_ALERT_0; if (!gpio_get_level(GPIO_USB_C1_PD_INT_L)) status |= PD_STATUS_TCPC_ALERT_1; +#ifdef BOARD_ZOOMBINI if (!gpio_get_level(GPIO_USB_C2_PD_INT_L)) status |= PD_STATUS_TCPC_ALERT_2; +#endif return status; } diff --git a/board/zoombini/board.h b/board/zoombini/board.h index 97bf6ba8e4..742bcede9b 100644 --- a/board/zoombini/board.h +++ b/board/zoombini/board.h @@ -36,7 +36,9 @@ #define CONFIG_BOARD_VERSION +#ifdef BOARD_ZOOMBINI #define CONFIG_BC12_DETECT_BQ24392 +#endif #define CONFIG_CHARGER #define CONFIG_CHARGER_V2 #define CONFIG_CHARGE_MANAGER @@ -45,8 +47,10 @@ #define CONFIG_CHARGER_MIN_BAT_PCT_FOR_POWER_ON 1 #define CONFIG_CHARGER_SENSE_RESISTOR 10 #define CONFIG_CHARGER_SENSE_RESISTOR_AC 20 +#ifdef BOARD_ZOOMBINI #define CONFIG_CHARGE_RAMP_HW #define CONFIG_USB_CHARGER +#endif #define CONFIG_CHIPSET_CANNONLAKE #define CONFIG_CHIPSET_RESET_HOOK @@ -61,16 +65,22 @@ #define CONFIG_I2C_MASTER +#ifdef BOARD_ZOOMBINI #define CONFIG_KEYBOARD_BOARD_CONFIG #define CONFIG_KEYBOARD_COL2_INVERTED #define CONFIG_KEYBOARD_PROTOCOL_8042 #define CONFIG_PWM_KBLIGHT #define CONFIG_SWITCH +#endif #define CONFIG_USB_POWER_DELIVERY #define CONFIG_USB_PD_ALT_MODE #define CONFIG_USB_PD_ALT_MODE_DFP +#ifdef BOARD_ZOOMBINI #define CONFIG_USB_PD_PORT_COUNT 3 +#else +#define CONFIG_USB_PD_PORT_COUNT 2 +#endif #define CONFIG_USB_PD_DUAL_ROLE #define CONFIG_USB_PD_LOGGING /* TODO(aaboagye): What about CONFIG_USB_PD_MAX_SINGLE_SOURCE_CURRENT? */ @@ -83,12 +93,14 @@ #define CONFIG_USBC_VCONN #define CONFIG_USBC_VCONN_SWAP +#ifdef BOARD_ZOOMBINI /* USB Type-A Port BC1.2 support */ #define CONFIG_USB_PORT_POWER_SMART #undef CONFIG_USB_PORT_POWER_SMART_PORT_COUNT #define CONFIG_USB_PORT_POWER_SMART_PORT_COUNT 1 #define CONFIG_USB_PORT_POWER_SMART_CDP_SDP_ONLY #define GPIO_USB1_ILIM_SEL GPIO_USB_A_HIGH_POWER_EN +#endif /* Define typical operating power and max power. */ #define PD_MAX_VOLTAGE_MV 20000 @@ -106,6 +118,8 @@ #define PD_POWER_SUPPLY_TURN_OFF_DELAY 250000 /* us */ /* I2C Ports */ +/* Zoombini I2C config */ +#ifdef BOARD_ZOOMBINI #define I2C_PORT_BATTERY I2C_PORT_POWER #define I2C_PORT_CHARGER I2C_PORT_POWER #define I2C_PORT_POWER NPCX_I2C_PORT0_0 @@ -122,8 +136,29 @@ #define GPIO_TCPC2_SCL GPIO_I2C5_SCL #define GPIO_TCPC2_SDA GPIO_I2C5_SDA +#else /* Meowth I2C config */ +#define I2C_PORT_CHARGER NPCX_I2C_PORT4_1 +#define I2C_PORT_BATTERY NPCX_I2C_PORT0_0 +#define I2C_PORT_PMIC NPCX_I2C_PORT3_0 +#define I2C_PORT_SENSOR NPCX_I2C_PORT7_0 +#define I2C_PORT_TCPC0 NPCX_I2C_PORT5_0 +#define I2C_PORT_TCPC1 NPCX_I2C_PORT1_0 + +#define GPIO_TCPC0_SCL GPIO_I2C5_SCL +#define GPIO_TCPC0_SDA GPIO_I2C5_SDA +#define GPIO_TCPC1_SCL GPIO_I2C1_SCL +#define GPIO_TCPC1_SDA GPIO_I2C1_SDA +#endif + #define PMIC_I2C_ADDR TPS650X30_I2C_ADDR1 +#ifdef BOARD_MEOWTH +#define PP5000_PGOOD_POWER_SIGNAL_MASK 0 +#else +#define PP5000_PGOOD_POWER_SIGNAL_MASK \ +POWER_SIGNAL_MASK(PP5000_PGOOD) +#endif + #ifndef __ASSEMBLER__ #include "gpio_signal.h" @@ -151,7 +186,9 @@ enum power_signal { X86_SLP_SUS_DEASSERTED, X86_RSMRST_L_PGOOD, X86_PMIC_DPWROK, +#ifdef BOARD_ZOOMBINI PP5000_PGOOD, +#endif POWER_SIGNAL_COUNT }; diff --git a/board/zoombini/ec.tasklist b/board/zoombini/ec.tasklist index dec8342612..024c0fbb52 100644 --- a/board/zoombini/ec.tasklist +++ b/board/zoombini/ec.tasklist @@ -20,6 +20,7 @@ * the port which they are for. See TASK_ID_TO_PD_PORT() macro. */ +#ifdef BOARD_ZOOMBINI #define CONFIG_TASK_LIST \ TASK_ALWAYS(HOOKS, hook_task, NULL, LARGER_TASK_STACK_SIZE) \ TASK_ALWAYS(USB_CHG_P0, usb_charger_task, 0, TASK_STACK_SIZE) \ @@ -36,3 +37,15 @@ TASK_ALWAYS(PD_C0, pd_task, NULL, LARGER_TASK_STACK_SIZE) \ TASK_ALWAYS(PD_C1, pd_task, NULL, LARGER_TASK_STACK_SIZE) \ TASK_ALWAYS(PD_C2, pd_task, NULL, LARGER_TASK_STACK_SIZE) +#else +#define CONFIG_TASK_LIST \ + TASK_ALWAYS(HOOKS, hook_task, NULL, LARGER_TASK_STACK_SIZE) \ + TASK_ALWAYS(CHARGER, charger_task, NULL, LARGER_TASK_STACK_SIZE) \ + TASK_NOTEST(CHIPSET, chipset_task, NULL, LARGER_TASK_STACK_SIZE) \ + TASK_NOTEST(PDCMD, pd_command_task, NULL, LARGER_TASK_STACK_SIZE) \ + TASK_ALWAYS(HOSTCMD, host_command_task, NULL, LARGER_TASK_STACK_SIZE) \ + TASK_ALWAYS(CONSOLE, console_task, NULL, LARGER_TASK_STACK_SIZE) \ + TASK_ALWAYS(POWERBTN, power_button_task, NULL, LARGER_TASK_STACK_SIZE) \ + TASK_ALWAYS(PD_C0, pd_task, NULL, LARGER_TASK_STACK_SIZE) \ + TASK_ALWAYS(PD_C1, pd_task, NULL, LARGER_TASK_STACK_SIZE) +#endif diff --git a/board/zoombini/gpio.inc b/board/zoombini/gpio.inc index ce8349008c..e181170371 100644 --- a/board/zoombini/gpio.inc +++ b/board/zoombini/gpio.inc @@ -8,6 +8,8 @@ /* Declare symbolic names for all the GPIOs that we care about. * Note: Those with interrupt handlers must be declared first. */ +/* Zoombini GPIOs */ +#ifdef BOARD_ZOOMBINI GPIO_INT(USB_C0_PD_INT_L, PIN(6, 1), GPIO_INT_FALLING, tcpc_alert_event) GPIO_INT(USB_C1_PD_INT_L, PIN(F, 5), GPIO_INT_FALLING, tcpc_alert_event) GPIO_INT(USB_C2_PD_INT_L, PIN(9, 5), GPIO_INT_FALLING, tcpc_alert_event) @@ -56,6 +58,8 @@ GPIO(I2C2_SCL, PIN(9, 2), GPIO_INPUT) GPIO(I2C2_SDA, PIN(9, 1), GPIO_INPUT) GPIO(I2C3_SCL, PIN(D, 1), GPIO_INPUT) GPIO(I2C3_SDA, PIN(D, 0), GPIO_INPUT) +GPIO(I2C4_SCL, PIN(F, 3), GPIO_INPUT) +GPIO(I2C4_SDA, PIN(F, 2), GPIO_INPUT) GPIO(I2C5_SCL, PIN(3, 3), GPIO_INPUT) GPIO(I2C5_SDA, PIN(3, 6), GPIO_INPUT) GPIO(I2C7_SCL, PIN(B, 3), GPIO_INPUT) @@ -89,12 +93,14 @@ GPIO(BOARD_VERSION3, PIN(F, 0), GPIO_INPUT) /* UART Pins */ ALTERNATE(PIN_MASK(6, 0x30), 0, MODULE_UART, GPIO_PULL_UP) /* I2C Ports */ -ALTERNATE(PIN_MASK(B, 0x30), 1, MODULE_I2C, GPIO_PULL_UP) /* I2C0 */ -ALTERNATE(PIN_MASK(9, 0x07), 1, MODULE_I2C, GPIO_PULL_UP) /* I2C1 SDA / I2C2 */ -ALTERNATE(PIN_MASK(8, 0x80), 1, MODULE_I2C, GPIO_PULL_UP) /* I2C1 SCL */ -ALTERNATE(PIN_MASK(D, 0x03), 1, MODULE_I2C, GPIO_PULL_UP) /* I2C3 */ -ALTERNATE(PIN_MASK(3, 0x48), 1, MODULE_I2C, GPIO_PULL_UP) /* I2C5 */ -ALTERNATE(PIN_MASK(B, 0x0C), 1, MODULE_I2C, GPIO_PULL_UP) /* I2C7 */ +ALTERNATE(PIN_MASK(B, 0x30), 1, MODULE_I2C, 0) /* I2C0 */ +ALTERNATE(PIN_MASK(9, 0x06), 1, MODULE_I2C, 0) /* I2C2 */ +ALTERNATE(PIN_MASK(9, 0x01), 1, MODULE_I2C, 0) /* I2C1 SDA */ +ALTERNATE(PIN_MASK(8, 0x80), 1, MODULE_I2C, 0) /* I2C1 SCL */ +ALTERNATE(PIN_MASK(D, 0x03), 1, MODULE_I2C, 0) /* I2C3 */ +ALTERNATE(PIN_MASK(3, 0x48), 1, MODULE_I2C, 0) /* I2C5 */ +ALTERNATE(PIN_MASK(B, 0x0C), 1, MODULE_I2C, 0) /* I2C7 */ +ALTERNATE(PIN_MASK(F, 0x0C), 1, MODULE_I2C, 0) /* I2C4 */ /* Keyboard Pins */ /* KSI_00-01 */ @@ -113,9 +119,102 @@ ALTERNATE(PIN_MASK(0, 0xE0), 0, MODULE_KEYBOARD_SCAN, GPIO_ODR_HIGH) /* PWMs. */ ALTERNATE(PIN_MASK(C, 0x18), 1, MODULE_PWM, 0) /* LED 1 & 2 */ ALTERNATE(PIN_MASK(8, 0x01), 1, MODULE_PWM, 0) /* KB Backlight */ + /* ADC */ ALTERNATE(PIN_MASK(4, 0x30), 1, MODULE_ADC, 0) /* ADC0-1 */ /* Power Switch Logic (PSL) inputs */ ALTERNATE(PIN_MASK(0, 0x03), 1, MODULE_PMU, 0) /* GPIO00, GPIO01 */ ALTERNATE(PIN_MASK(D, 0x04), 1, MODULE_PMU, 0) /* GPIOD2 */ + +/* Meowth GPIOs */ +#else + +GPIO_INT(USB_C0_PD_INT_L, PIN(6, 1), GPIO_INT_FALLING, tcpc_alert_event) +GPIO_INT(USB_C1_PD_INT_L, PIN(F, 5), GPIO_INT_FALLING, tcpc_alert_event) + +GPIO_INT(POWER_BUTTON_L, PIN(0, 1), GPIO_INT_BOTH | GPIO_PULL_UP, power_button_interrupt) +GPIO_INT(WP_L, PIN(A, 1), GPIO_INT_BOTH, switch_interrupt) +GPIO_INT(LID_OPEN, PIN(D, 2), GPIO_INT_BOTH | GPIO_HIB_WAKE_HIGH, lid_interrupt) +GPIO_INT(AC_PRESENT, PIN(0, 0), GPIO_INT_BOTH | GPIO_HIB_WAKE_HIGH, extpower_interrupt) + +/* Power Signals. */ +GPIO_INT(PCH_SLP_S0_L, PIN(A, 4), GPIO_INT_BOTH | GPIO_PULL_DOWN, power_signal_interrupt) +#ifndef CONFIG_ESPI_VW_SIGNALS +GPIO_INT(PCH_SLP_S3_L, PIN(A, 6), GPIO_INT_BOTH | GPIO_PULL_DOWN, power_signal_interrupt) +GPIO_INT(PCH_SLP_S4_L, PIN(A, 3), GPIO_INT_BOTH | GPIO_PULL_DOWN, power_signal_interrupt) +#endif /* defined(CONFIG_ESPI_VW_SIGNALS) */ +GPIO_INT(PCH_SLP_SUS_L, PIN(D, 4), GPIO_INT_BOTH | GPIO_PULL_DOWN, power_signal_interrupt) +/* TODO(aaboagye): Internal PU may be needed later on... */ +GPIO_INT(RSMRST_L_PGOOD, PIN(E, 2), GPIO_INT_BOTH, power_signal_interrupt) +GPIO_INT(PMIC_DPWROK, PIN(F, 4), GPIO_INT_BOTH, power_signal_interrupt) +GPIO_INT(PMIC_INT_L, PIN(D, 5), GPIO_INT_FALLING | GPIO_PULL_UP, power_signal_interrupt) + +/* Power Enables. */ +GPIO(EN_PP3300_DSW, PIN(8, 2), GPIO_OUT_HIGH) +GPIO(EN_PP5000, PIN(7, 3), GPIO_OUT_LOW) +GPIO(EN_PP1800_U, PIN(A, 0), GPIO_OUT_LOW) +GPIO(EN_PP3300_WLAN, PIN(8, 3), GPIO_INPUT) + +GPIO(ENTERING_RW, PIN(E, 1), GPIO_OUT_LOW) +GPIO(CCD_MODE_ODL, PIN(E, 3), GPIO_INPUT) /* Case Closed Debug mode. */ +GPIO(PMIC_EN, PIN(8, 6), GPIO_ODR_LOW) + +GPIO(PCH_DSW_PWROK, PIN(3, 7), GPIO_OUT_LOW) /* EC_PCH_DSW_PWROK */ +GPIO(PCH_RSMRST_L, PIN(C, 2), GPIO_OUT_LOW) /* EC_PCH_RSMRST_L */ +GPIO(PCH_RTCRST, PIN(7, 6), GPIO_OUT_LOW) /* EC_PCH_RTCRST */ +GPIO(PCH_PWRBTN_L, PIN(C, 1), GPIO_ODR_HIGH) /* EC_PCH_PWR_BTN_ODL */ +GPIO(PCH_WAKE_L, PIN(7, 4), GPIO_ODR_HIGH) /* EC_PCH_WAKE_ODL */ +GPIO(CPU_PROCHOT, PIN(3, 4), GPIO_INPUT) /* PCH_PROCHOT_ODL */ +GPIO(SYS_RESET_L, PIN(0, 2), GPIO_ODR_HIGH) /* SYS_RST_ODL */ + +GPIO(I2C0_SCL, PIN(B, 5), GPIO_INPUT) +GPIO(I2C0_SDA, PIN(B, 4), GPIO_INPUT) +GPIO(I2C1_SCL, PIN(9, 0), GPIO_INPUT) +GPIO(I2C1_SDA, PIN(8, 7), GPIO_INPUT) +GPIO(I2C3_SCL, PIN(D, 1), GPIO_INPUT) +GPIO(I2C3_SDA, PIN(D, 0), GPIO_INPUT) +GPIO(I2C4_SCL, PIN(F, 3), GPIO_INPUT) +GPIO(I2C4_SDA, PIN(F, 2), GPIO_INPUT) +GPIO(I2C5_SCL, PIN(3, 3), GPIO_INPUT) +GPIO(I2C5_SDA, PIN(3, 6), GPIO_INPUT) +GPIO(I2C7_SCL, PIN(B, 3), GPIO_INPUT) +GPIO(I2C7_SDA, PIN(B, 2), GPIO_INPUT) + +GPIO(BAT_PRESENT_L, PIN(E, 5), GPIO_INPUT) +GPIO(USB_PD_RST_L, PIN(6, 2), GPIO_INPUT) + +GPIO(USB_C0_5V_EN, PIN(6, 7), GPIO_OUT_LOW) +GPIO(USB_C1_5V_EN, PIN(7, 0), GPIO_OUT_LOW) + +GPIO(BOARD_VERSION1, PIN(9, 6), GPIO_INPUT) +GPIO(BOARD_VERSION2, PIN(9, 3), GPIO_INPUT) +GPIO(BOARD_VERSION3, PIN(A, 2), GPIO_INPUT) + +/* UART Pins */ +ALTERNATE(PIN_MASK(6, 0x30), 0, MODULE_UART, GPIO_PULL_UP) +/* I2C Ports */ +ALTERNATE(PIN_MASK(B, 0x30), 1, MODULE_I2C, 0) /* I2C0 */ +ALTERNATE(PIN_MASK(9, 0x01), 1, MODULE_I2C, 0) /* I2C1 SDA */ +ALTERNATE(PIN_MASK(8, 0x80), 1, MODULE_I2C, 0) /* I2C1 SCL */ +ALTERNATE(PIN_MASK(D, 0x03), 1, MODULE_I2C, 0) /* I2C3 */ +ALTERNATE(PIN_MASK(3, 0x48), 1, MODULE_I2C, 0) /* I2C5 */ +ALTERNATE(PIN_MASK(B, 0x0C), 1, MODULE_I2C, 0) /* I2C7 */ +ALTERNATE(PIN_MASK(F, 0x0C), 1, MODULE_I2C, 0) /* I2C4 */ + +/* PWMs. */ +ALTERNATE(PIN_MASK(C, 0x18), 1, MODULE_PWM, 0) /* DB0 Green/Blue LED (M) */ +ALTERNATE(PIN_MASK(8, 0x01), 1, MODULE_PWM, 0) /* DB0 Red LED (M) */ +ALTERNATE(PIN_MASK(6, 0x01), 1, MODULE_PWM, 0) /* DB1 Red LED (M) */ +ALTERNATE(PIN_MASK(B, 0x80), 1, MODULE_PWM, 0) /* DB1 Green LED (M) */ +ALTERNATE(PIN_MASK(C, 0x01), 1, MODULE_PWM, 0) /* DB1 Blue LED (M) */ + +/* ADC */ +ALTERNATE(PIN_MASK(4, 0x32), 1, MODULE_ADC, 0) /* ADC0-1,4 */ +ALTERNATE(PIN_MASK(F, 0x02), 1, MODULE_ADC, 0) /* ADC8 */ + +/* Power Switch Logic (PSL) inputs */ +ALTERNATE(PIN_MASK(0, 0x03), 1, MODULE_PMU, 0) /* GPIO00, GPIO01 */ +ALTERNATE(PIN_MASK(D, 0x04), 1, MODULE_PMU, 0) /* GPIOD2 */ + +#endif diff --git a/board/zoombini/usb_pd_policy.c b/board/zoombini/usb_pd_policy.c index fe072875f2..db7a321957 100644 --- a/board/zoombini/usb_pd_policy.c +++ b/board/zoombini/usb_pd_policy.c @@ -104,6 +104,7 @@ int pd_is_valid_input_voltage(int mv) void pd_power_supply_reset(int port) { +#ifdef BOARD_ZOOMBINI /* Disable VBUS. */ switch (port) { case 0: @@ -121,6 +122,9 @@ void pd_power_supply_reset(int port) default: return; }; +#else + /*TODO(aaboagye): Implement sn5s330 PPC for both Zoombini and Meowth */ +#endif /* Notify host of power info change. */ pd_send_host_event(PD_EVENT_POWER_CHANGE); @@ -128,6 +132,7 @@ void pd_power_supply_reset(int port) int pd_set_power_supply_ready(int port) { +#ifdef BOARD_ZOOMBINI switch (port) { case 0: /* Disable charging. */ @@ -159,6 +164,9 @@ int pd_set_power_supply_ready(int port) default: break; }; +#else + /*TODO(aaboagye): Implement sn5s330 PPC for both Zoombini and Meowth */ +#endif /* Notify host of power info change. */ pd_send_host_event(PD_EVENT_POWER_CHANGE); @@ -299,8 +307,8 @@ static int svdm_dp_config(int port, uint32_t *payload) payload[0] = VDO(USB_SID_DISPLAYPORT, 1, CMD_DP_CONFIG | VDO_OPOS(opos)); payload[1] = VDO_DP_CFG(pin_mode, /* pin mode */ - 1, /* DPv1.3 signaling */ - 2); /* UFP connected */ + 1, /* DPv1.3 signaling */ + 2); /* UFP connected */ return 2; }; diff --git a/power/cannonlake.h b/power/cannonlake.h index 735f91a2b5..a056a96ec8 100644 --- a/power/cannonlake.h +++ b/power/cannonlake.h @@ -20,7 +20,7 @@ #define IN_PGOOD_ALL_CORE POWER_SIGNAL_MASK(X86_PMIC_DPWROK) #define IN_ALL_S0 (IN_PGOOD_ALL_CORE | IN_ALL_PM_SLP_DEASSERTED | \ - POWER_SIGNAL_MASK(PP5000_PGOOD)) + PP5000_PGOOD_POWER_SIGNAL_MASK) #define CHIPSET_G3S5_POWERUP_SIGNAL IN_PCH_SLP_SUS_DEASSERTED |