diff options
-rw-r--r-- | board/kukui/board.c | 6 | ||||
-rw-r--r-- | board/kukui/board.h | 8 | ||||
-rw-r--r-- | board/kukui/gpio.inc | 28 | ||||
-rw-r--r-- | power/mt8183.c | 12 |
4 files changed, 50 insertions, 4 deletions
diff --git a/board/kukui/board.c b/board/kukui/board.c index 2b285fb2ef..dd6e3d9337 100644 --- a/board/kukui/board.c +++ b/board/kukui/board.c @@ -68,6 +68,12 @@ static void gauge_interrupt(enum gpio_signal signal) /* ADC channels. Must be in the exactly same order as in enum adc_channel. */ const struct adc_t adc_channels[] = { [ADC_BOARD_ID] = {"BOARD_ID", 3300, 4096, 0, STM32_AIN(10)}, +#if BOARD_REV >= 2 + [ADC_EC_SKU_ID] = {"EC_SKU_ID", 3300, 4096, 0, STM32_AIN(8)}, + [ADC_BATT_ID] = {"BATT_ID", 3300, 4096, 0, STM32_AIN(7)}, + [ADC_USBC_THERM] = {"USBC_THERM", 3300, 4096, 0, STM32_AIN(14)}, + [ADC_POGO_ADC_INT_L] = {"POGO_ADC_INT_L", 3300, 4096, 0, STM32_AIN(6)}, +#endif }; BUILD_ASSERT(ARRAY_SIZE(adc_channels) == ADC_CH_COUNT); diff --git a/board/kukui/board.h b/board/kukui/board.h index 9af682589c..c4d099de51 100644 --- a/board/kukui/board.h +++ b/board/kukui/board.h @@ -11,7 +11,7 @@ /* board revision */ #define BOARD_REV 1 -#if BOARD_REV < 1 || BOARD_REV > 1 +#if BOARD_REV < 1 || BOARD_REV > 2 #error "Board revision out of range" #endif @@ -202,6 +202,12 @@ enum adc_channel { /* Real ADC channels begin here */ ADC_BOARD_ID = 0, +#if BOARD_REV >= 2 + ADC_EC_SKU_ID, + ADC_BATT_ID, + ADC_POGO_ADC_INT_L, + ADC_USBC_THERM, +#endif ADC_CH_COUNT }; diff --git a/board/kukui/gpio.inc b/board/kukui/gpio.inc index 367c69e9a5..1c090eea42 100644 --- a/board/kukui/gpio.inc +++ b/board/kukui/gpio.inc @@ -45,12 +45,19 @@ GPIO_INT(GAUGE_INT_ODL, PIN(C, 9), GPIO_INT_FALLING | GPIO_PULL_UP, gauge_interrupt) /* Interrupts not implemented yet */ +#if BOARD_REV < 2 GPIO(ALS_INT_ODL, PIN(A, 6), GPIO_INPUT) +#elif BOARD_REV >= 2 +/* TODO(b:122993147): It's also an analog input. */ +GPIO(POGO_ADC_INT_L, PIN(A, 6), GPIO_INPUT) +#endif /* Voltage rails control pins */ +#if BOARD_REV < 2 GPIO(PP3300_S0_EN, PIN(B, 6), GPIO_OUT_LOW) GPIO(PP1800_S3_EN, PIN(C, 7), GPIO_OUT_LOW) GPIO(PP3300_S3_EN, PIN(D, 2), GPIO_OUT_LOW) +#endif /* Reset pins */ GPIO(AP_SYS_RST_L, PIN(C, 11), GPIO_OUT_LOW) @@ -69,25 +76,40 @@ GPIO(I2C2_SCL, PIN(A, 11), GPIO_INPUT) GPIO(I2C2_SDA, PIN(A, 12), GPIO_INPUT) /* Analog pins */ +GPIO(BATT_ID, PIN(A, 7), GPIO_ANALOG) GPIO(BOARD_ID, PIN(C, 0), GPIO_ANALOG) +#if BOARD_REV >= 2 +GPIO(EC_SKU_ID, PIN(B, 0), GPIO_ANALOG) +GPIO(USBC_THERM, PIN(C, 4), GPIO_ANALOG) +#endif /* Other input pins */ GPIO(WP_L, PIN(C, 8), GPIO_INPUT) /* EC_FLASH_WP_ODL */ GPIO(BOOT0, PIN(F, 11), GPIO_INPUT) GPIO(CCD_MODE_ODL, PIN(A, 1), GPIO_INPUT) -GPIO(BATT_ID, PIN(A, 7), GPIO_INPUT) +#if BOARD_REV >= 2 +GPIO(POGO_VBUS_PRESENT, PIN(A, 14), GPIO_INPUT) +#endif /* Other output pins */ GPIO(ENTERING_RW, PIN(C, 6), GPIO_ODR_HIGH) /* EC_ENTERING_RW_ODL */ GPIO(EC_INT_L, PIN(B, 12), GPIO_ODR_HIGH) /* EC_AP_INT_ODL */ GPIO(EC_BOARD_ID_EN_L, PIN(C, 15), GPIO_ODR_HIGH) /* EC_BOARD_ID_EN_ODL */ -GPIO(USB_C0_DISCHARGE, PIN(B, 0), GPIO_OUT_LOW) GPIO(USB_C0_DP_POLARITY, PIN(C, 14), GPIO_OUT_LOW) GPIO(USB_C0_HPD_OD, PIN(F, 1), GPIO_ODR_LOW) -GPIO(BOOTBLOCK_MUX_OE, PIN(C, 4), GPIO_ODR_HIGH) GPIO(BOOTBLOCK_EN_L, PIN(C, 1), GPIO_ODR_HIGH) GPIO(USB_C0_DP_OE_L, PIN(A, 5), GPIO_OUT_HIGH) +#if BOARD_REV < 2 +GPIO(USB_C0_DISCHARGE, PIN(B, 0), GPIO_OUT_LOW) +GPIO(BOOTBLOCK_MUX_OE, PIN(C, 4), GPIO_ODR_HIGH) GPIO(USB_ID, PIN(A, 13), GPIO_ODR_HIGH) +#elif BOARD_REV >= 2 +GPIO(EN_PP3300_POGO, PIN(A, 13), GPIO_OUT_LOW) +GPIO(EN_POGO_CHARGE_L, PIN(B, 6), GPIO_OUT_LOW) +GPIO(EN_USBC_CHARGE_L, PIN(C, 7), GPIO_OUT_LOW) +GPIO(EN_PP5000_USBC, PIN(D, 2), GPIO_OUT_LOW) +#endif + /* USART1: PA9/PA10 */ ALTERNATE(PIN_MASK(A, 0x0600), 1, MODULE_UART, 0) diff --git a/power/mt8183.c b/power/mt8183.c index 7d228a679a..fa9b31271c 100644 --- a/power/mt8183.c +++ b/power/mt8183.c @@ -52,6 +52,10 @@ */ #define PMIC_FORCE_RESET_TIME (10 * SECOND) +#if defined(BOARD_KUKUI) && BOARD_REV < 2 +#define BOARD_KUKUI_REV_LT_2 +#endif + /* Data structure for a GPIO operation for power sequencing */ struct power_seq_op { /* enum gpio_signal in 8 bits */ @@ -71,28 +75,36 @@ BUILD_ASSERT(GPIO_COUNT < 256); static const struct power_seq_op s5s3_power_seq[] = { /* Release PMIC watchdog. */ { GPIO_PMIC_WATCHDOG_L, 1, 0 }, +#ifdef BOARD_KUKUI_REV_LT_2 { GPIO_PP3300_S3_EN, 1, 2 }, { GPIO_PP1800_S3_EN, 1, 2 }, +#endif /* Turn on AP. */ { GPIO_AP_SYS_RST_L, 1, 2 }, }; /* The power sequence for POWER_S3S0 */ static const struct power_seq_op s3s0_power_seq[] = { +#ifdef BOARD_KUKUI_REV_LT_2 { GPIO_PP3300_S0_EN, 1, 0 }, +#endif }; /* The power sequence for POWER_S0S3 */ static const struct power_seq_op s0s3_power_seq[] = { +#ifdef BOARD_KUKUI_REV_LT_2 { GPIO_PP3300_S0_EN, 0, 0 }, +#endif }; /* The power sequence for POWER_S3S5 */ static const struct power_seq_op s3s5_power_seq[] = { /* Turn off AP. */ { GPIO_AP_SYS_RST_L, 0, 0 }, +#ifdef BOARD_KUKUI_REV_LT_2 { GPIO_PP1800_S3_EN, 0, 2 }, { GPIO_PP3300_S3_EN, 0, 2 }, +#endif /* Assert watchdog to PMIC (there may be a 1.6ms debounce) */ { GPIO_PMIC_WATCHDOG_L, 0, 3 }, }; |