summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRob Barnes <robbarnes@google.com>2021-03-01 14:01:24 -0700
committerCommit Bot <commit-bot@chromium.org>2021-03-11 17:14:47 +0000
commit662ed9081b2f197e4f58aa175c28914fe2952dcc (patch)
treeaefeebb57a2b5da4e0733045f97ca5a5de578217
parent066a44c9feda71a941c8cdc96b29b5327269ba2d (diff)
downloadchrome-ec-662ed9081b2f197e4f58aa175c28914fe2952dcc.tar.gz
mancomb: Update mancomb compared to guybrush
Remove gpio not used by mancomb. Remove non required tasks. Remove keyboard functionality. Remove battery functionality. Add recovery buttons and BJ signals. Add DP and HDMI fault signals. Remove most charger functionality. Add USB hub signals. Remove hibernate support. BUG=b:174424094, b:181510382 TEST=Build BRANCH=None Change-Id: If956524a57db104abd399e25978298a828885dc2 Signed-off-by: Rob Barnes <robbarnes@google.com> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2727967 Reviewed-by: Diana Z <dzigterman@chromium.org>
-rw-r--r--baseboard/mancomb/base_ec.tasklist4
-rw-r--r--baseboard/mancomb/base_gpio.inc98
-rw-r--r--baseboard/mancomb/baseboard.c435
-rw-r--r--baseboard/mancomb/baseboard.h123
4 files changed, 204 insertions, 456 deletions
diff --git a/baseboard/mancomb/base_ec.tasklist b/baseboard/mancomb/base_ec.tasklist
index 5226e071a5..f6870b1ebd 100644
--- a/baseboard/mancomb/base_ec.tasklist
+++ b/baseboard/mancomb/base_ec.tasklist
@@ -9,15 +9,11 @@
#define BASEBOARD_CONFIG_TASK_LIST \
TASK_ALWAYS(HOOKS, hook_task, NULL, LARGER_TASK_STACK_SIZE) \
- TASK_ALWAYS(CHG_RAMP, chg_ramp_task, NULL, TASK_STACK_SIZE) \
TASK_ALWAYS(USB_CHG_P0, usb_charger_task, 0, TASK_STACK_SIZE) \
TASK_ALWAYS(USB_CHG_P1, usb_charger_task, 1, TASK_STACK_SIZE) \
- TASK_ALWAYS(CHARGER, charger_task, NULL, VENTI_TASK_STACK_SIZE) \
TASK_NOTEST(CHIPSET, chipset_task, NULL, VENTI_TASK_STACK_SIZE) \
- TASK_NOTEST(KEYPROTO, keyboard_protocol_task, NULL, TASK_STACK_SIZE) \
TASK_ALWAYS(HOSTCMD, host_command_task, NULL, LARGER_TASK_STACK_SIZE) \
TASK_ALWAYS(POWERBTN, power_button_task, NULL, VENTI_TASK_STACK_SIZE) \
- TASK_NOTEST(KEYSCAN, keyboard_scan_task, NULL, LARGER_TASK_STACK_SIZE) \
TASK_ALWAYS(CONSOLE, console_task, NULL, VENTI_TASK_STACK_SIZE) \
TASK_ALWAYS(PD_C0, pd_task, NULL, VENTI_TASK_STACK_SIZE) \
TASK_ALWAYS(PD_C1, pd_task, NULL, VENTI_TASK_STACK_SIZE) \
diff --git a/baseboard/mancomb/base_gpio.inc b/baseboard/mancomb/base_gpio.inc
index 935c34511b..f5de862a7c 100644
--- a/baseboard/mancomb/base_gpio.inc
+++ b/baseboard/mancomb/base_gpio.inc
@@ -9,27 +9,29 @@
GPIO_INT(EC_WP_L, PIN(5, 0), GPIO_INT_BOTH, switch_interrupt) /* Write Protect Enabled */
GPIO(CCD_MODE_ODL, PIN(C, 6), GPIO_INPUT) /* Case Closed Debug Mode */
GPIO(EC_GSC_PACKET_MODE, PIN(B, 1), GPIO_OUT_LOW) /* GSC Packet Mode */
+GPIO(GSC_EC_RECOVERY_BTN_ODL, PIN(2, 7), GPIO_INT_BOTH)
ALTERNATE( PIN_MASK(6, BIT(4) | BIT(5)), 0, MODULE_UART, 0) /* UART_EC_TX_GSC_DBG_RX_R, UART_GSC_DBG_TX_EC_RX_R */
/* Power Signals */
GPIO_INT(MECH_PWR_BTN_ODL, PIN(D, 2), GPIO_INT_BOTH | GPIO_HIB_WAKE_LOW, power_button_interrupt) /* Mechanical Power Button */
+GPIO_INT(EC_I2C_EXT_INT_ODL, PIN(2, 4), GPIO_INT_BOTH, ext_charger_interrupt)
GPIO_INT(EC_PWR_BTN_ODL, PIN(0, 1), GPIO_INT_BOTH, power_button_interrupt) /* Power Button */
GPIO_INT(SLP_S3_L, PIN(6, 1), GPIO_INT_BOTH, baseboard_en_pwr_s0) /* Sleep S3 */
GPIO_INT(SLP_S5_L, PIN(7, 2), GPIO_INT_BOTH, power_signal_interrupt) /* Sleep S5 */
GPIO_INT(SLP_S3_S0I3_L, PIN(7, 4), GPIO_INT_BOTH, power_signal_interrupt) /* Sleep S0ix */
GPIO_INT(PG_PWR_S5, PIN(C, 0), GPIO_INT_BOTH, baseboard_en_pwr_s0) /* S5 Power OK */
-GPIO_INT(PG_PCORE_S0_R_OD, PIN(B, 6), GPIO_INT_BOTH, power_signal_interrupt) /* S0 Power OK */
-GPIO_INT(ACOK_OD, PIN(0, 0), GPIO_INT_BOTH | GPIO_HIB_WAKE_HIGH, extpower_interrupt) /* AC Power Present */
+GPIO_INT(PG_PCORE_S0_R_OD, PIN(B, 6), GPIO_INT_BOTH, power_signal_interrupt) /* S0 Power OK */
GPIO_INT(EC_PCORE_INT_ODL, PIN(F, 0), GPIO_INT_BOTH | GPIO_PULL_UP, power_signal_interrupt) /* Power Core Interrupt */
GPIO_INT(PG_GROUPC_S0_OD, PIN(A, 3), GPIO_INT_BOTH, baseboard_en_pwr_pcore_s0) /* Power Group C S0 */
-GPIO_INT(PG_LPDDR4X_S3_OD, PIN(9, 5), GPIO_INT_BOTH, baseboard_en_pwr_pcore_s0) /* Power Group LPDDR4 S3 */
+GPIO_INT(PG_DDR4_S3_OD, PIN(9, 5), GPIO_INT_BOTH, baseboard_en_pwr_pcore_s0) /* Power Group LPDDR4 S3 */
+GPIO(BJ_ADP_PRESENT_L, PIN(3, 0), GPIO_INPUT) /* Barrel Jack Adapter Present */
+GPIO(EC_RECOVERY_BTN_ODL, PIN(3, 1), GPIO_INT_BOTH)
GPIO(EN_PWR_S5, PIN(B, 7), GPIO_OUT_LOW) /* Enable S5 Power */
GPIO(EN_PWR_S0_R, PIN(F, 1), GPIO_OUT_LOW)
GPIO(EN_PWR_Z1, PIN(8, 5), GPIO_OUT_LOW) /* Enable Z1 Power */
GPIO(EN_PWR_PCORE_S0_R, PIN(E, 1), GPIO_OUT_LOW)
+GPIO(EN_PPVAR_BJ_ADP_L, PIN(2, 1), GPIO_OUT_HIGH) /* Enable Barrel Jack Adapter Power */
ALTERNATE(/*MECH_PWR_BTN_ODL*/ PIN_MASK(D, BIT(2)), 0, MODULE_PMU, 0) /* PSL - Mechanical Power Button */
-ALTERNATE(/*LID_OPEN*/ PIN_MASK(0, BIT(2)), 0, MODULE_PMU, 0) /* PSL - Lid Open */
-ALTERNATE(/*ACOK_OD*/ PIN_MASK(0, BIT(0)), 0, MODULE_PMU, 0) /* PSL - AC Power Present */
/* SOC Signals */
UNIMPLEMENTED(ENTERING_RW) /* GPIO_ENTERING_RW */
@@ -38,7 +40,7 @@ GPIO(EC_SOC_RSMRST_L, PIN(C, 5), GPIO_OUT_LOW) /* Resume Reset SOC */
GPIO(EC_CLR_CMOS, PIN(A, 1), GPIO_OUT_LOW) /* Clear SOC CMOS */
GPIO(EC_MEM_EVENT, PIN(A, 5), GPIO_OUT_LOW) /* Memory Thermal Event to SOC*/
GPIO(EC_SOC_PWR_BTN_L, PIN(6, 3), GPIO_OUT_HIGH) /* Power Button to SOC */
-GPIO(EC_SOC_PWR_GOOD, PIN(D, 3), GPIO_OUT_LOW) /* Power Good to SOC */
+GPIO(EC_SOC_PWR_GOOD, PIN(1, 3), GPIO_OUT_LOW) /* Power Good to SOC */
GPIO(EC_SOC_WAKE_L, PIN(0, 3), GPIO_OUT_HIGH) /* Wake SOC */
GPIO(EC_SOC_INT_L, PIN(8, 3), GPIO_OUT_HIGH) /* Matrix Keyboard Protocol Event to SOC */
GPIO(PROCHOT_ODL, PIN(D, 5), GPIO_ODR_HIGH) /* Force SOC into HTC-active state */
@@ -52,23 +54,17 @@ GPIO_INT(USB_C0_PPC_INT_ODL, PIN(7, 5), GPIO_INT_FALLING, ppc_interrupt)
GPIO_INT(USB_C1_PPC_INT_ODL, PIN(D, 4), GPIO_INT_FALLING, ppc_interrupt)
GPIO_INT(USB_C0_BC12_INT_ODL, PIN(A, 4), GPIO_INT_FALLING | GPIO_PULL_UP, bc12_interrupt)
GPIO_INT(USB_C1_BC12_INT_ODL, PIN(9, 6), GPIO_INT_FALLING | GPIO_PULL_UP, bc12_interrupt)
-GPIO(USB_C0_C1_FAULT_ODL, PIN(7, 3), GPIO_ODR_HIGH) /* C0/C1 Fault to SOC */
-GPIO(USB_C0_TCPC_RST_L, PIN(3, 4), GPIO_OUT_HIGH) /* C0 TCPC Reset */
-GPIO(USB_C1_TCPC_RST_L, PIN(3, 7), GPIO_OUT_HIGH) /* C1 TCPC Reset */
+GPIO(USB_C0_C1_FAULT_ODL, PIN(1, 4), GPIO_OUT_HIGH) /* C0/C1 Fault to SOC */
+GPIO(USB_C0_TCPC_RST_L, PIN(1, 5), GPIO_OUT_HIGH) /* C0 TCPC Reset */
+GPIO(USB_C1_TCPC_RST_L, PIN(1, 6), GPIO_OUT_HIGH) /* C1 TCPC Reset */
GPIO(USB_C0_HPD, PIN(F, 5), GPIO_OUT_LOW) /* C0 DP Hotplug Detect */
GPIO(USB_C1_HPD, PIN(F, 4), GPIO_OUT_LOW) /* C1 DP Hotplug Detect */
/* Sensor Signals */
-/* TODO: Make 6AXIS_INT_L an interrupt */
-GPIO(6AXIS_INT_L, PIN(A, 0), GPIO_INT_FALLING | GPIO_PULL_UP) /* 6 Axis IMU */
-GPIO(3AXIS_INT_L, PIN(A, 2), GPIO_INPUT | GPIO_PULL_DOWN) /* 3 Axis Accel */
-GPIO_INT(LID_OPEN, PIN(0, 2), GPIO_INT_BOTH | GPIO_HIB_WAKE_HIGH, lid_interrupt) /* Lid Open */
-GPIO_INT(TABLET_MODE, PIN(C, 1), GPIO_INT_BOTH, gmr_tablet_switch_isr) /* 360 Tablet Mode */
-GPIO_INT(VOLDN_BTN_ODL, PIN(A, 7), GPIO_INT_BOTH | GPIO_PULL_UP, button_interrupt) /* Volume Down */
-GPIO_INT(VOLUP_BTN_ODL, PIN(9, 3), GPIO_INT_BOTH | GPIO_PULL_UP, button_interrupt) /* Volume Up */
-GPIO(EC_BATT_PRES_ODL, PIN(9, 4), GPIO_INPUT | GPIO_PULL_UP) /* Battery Present */
-ALTERNATE(/*TEMP_SOC|CHRG|MEM*/ PIN_MASK(4, BIT(3) | BIT(4) | BIT(5)), 0, MODULE_PWM, 0) /* SOC, Charger and Memory Temperature */
+ALTERNATE(/*TEMP_SOC|MEM*/ PIN_MASK(4, BIT(3) | BIT(5)), 0, MODULE_PWM, 0) /* SOC and Memory Temperature */
+ALTERNATE( PIN_MASK(4, BIT(4)), 0, MODULE_PWM, 0) /* ANALOG_PPVAR_PWR_IN_IMON */
ALTERNATE( PIN_MASK(4, BIT(1) | BIT(2)), 0, MODULE_PWM, 0) /* EC_ADC_CORE_IMON1, EC_ADC_SOC_IMON2 */
+ALTERNATE( PIN_MASK(3, BIT(7)), 0, MODULE_PWM, 0) /* SNS_PPVAR_PWR_IN */
/* LED Signals */
GPIO(EC_DISABLE_DISP_BL, PIN(A, 6), GPIO_OUT_HIGH) /* Disable Display Backlight */
@@ -80,20 +76,20 @@ ALTERNATE( PIN_MASK(C, BIT(3)), 0, MODULE_PWM, 0) /* EC_FAN_PWM - Fan PWM
ALTERNATE( PIN_MASK(4, BIT(0)), 0, MODULE_PWM, 0) /* EC_FAN_SPEED - Fan Speed */
/* I2C Signals -- i2c pins need to be exposed as GPIO for bit banging, even though set to alternate mode below */
-GPIO(EC_I2C_USB_A0_C0_SCL, PIN(B, 5), GPIO_INPUT)
-GPIO(EC_I2C_USB_A0_C0_SDA, PIN(B, 4), GPIO_INPUT)
-GPIO(EC_I2C_USB_A1_C1_SCL, PIN(9, 0), GPIO_INPUT)
-GPIO(EC_I2C_USB_A1_C1_SDA, PIN(8, 7), GPIO_INPUT)
-GPIO(EC_I2C_BATT_SCL, PIN(9, 2), GPIO_INPUT)
-GPIO(EC_I2C_BATT_SDA, PIN(9, 1), GPIO_INPUT)
+GPIO(EC_I2C_USB_HUB_SCL, PIN(9, 2), GPIO_INPUT)
+GPIO(EC_I2C_USB_HUB_SDA, PIN(9, 1), GPIO_INPUT)
+GPIO(EC_I2C_USB_C0_SCL, PIN(B, 5), GPIO_INPUT)
+GPIO(EC_I2C_USB_C0_SDA, PIN(B, 4), GPIO_INPUT)
+GPIO(EC_I2C_USB_C1_SCL, PIN(9, 0), GPIO_INPUT)
+GPIO(EC_I2C_USB_C1_SDA, PIN(8, 7), GPIO_INPUT)
GPIO(EC_I2C_USBC_MUX_SCL, PIN(D, 1), GPIO_INPUT)
GPIO(EC_I2C_USBC_MUX_SDA, PIN(D, 0), GPIO_INPUT)
GPIO(EC_I2C_POWER_SCL, PIN(F, 3), GPIO_INPUT)
GPIO(EC_I2C_POWER_SDA, PIN(F, 2), GPIO_INPUT)
GPIO(EC_I2C_CBI_SCL, PIN(3, 3), GPIO_INPUT)
GPIO(EC_I2C_CBI_SDA, PIN(3, 6), GPIO_INPUT)
-GPIO(EC_I2C_SENSOR_SCL, PIN(E, 4), GPIO_INPUT | GPIO_SEL_1P8V)
-GPIO(EC_I2C_SENSOR_SDA, PIN(E, 3), GPIO_INPUT | GPIO_SEL_1P8V)
+GPIO(EC_I2C_SENSOR_SCL, PIN(E, 4), GPIO_INPUT)
+GPIO(EC_I2C_SENSOR_SDA, PIN(E, 3), GPIO_INPUT)
GPIO(EC_I2C_SOC_SIC, PIN(B, 3), GPIO_INPUT)
GPIO(EC_I2C_SOC_SID, PIN(B, 2), GPIO_INPUT)
@@ -106,16 +102,10 @@ ALTERNATE( PIN_MASK(3, BIT(3) | BIT(6)), 0, MODULE_I2C, 0) /* I2C5 */
ALTERNATE( PIN_MASK(E, BIT(3) | BIT(4)), 0, MODULE_I2C, 0) /* I2C6 */
ALTERNATE( PIN_MASK(B, BIT(2) | BIT(3)), 0, MODULE_I2C, 0) /* I2C7 */
-/* Keyboard Signals */
-GPIO(EN_KB_BL, PIN(9, 7), GPIO_OUT_HIGH) /* Enable Keyboard Backlight */
-ALTERNATE(/*PWM_KB_BL*/ PIN_MASK(C, BIT(2)), 0, MODULE_PWM, 0) /* Keyboard Backlight Level */
-ALTERNATE(/*KSI_00-01*/ PIN_MASK(3, BIT(0) | BIT(1)), 0, MODULE_KEYBOARD_SCAN, GPIO_INPUT)
-ALTERNATE(/*KSI_02-07*/ PIN_MASK(2, GENMASK(7, 2)), 0, MODULE_KEYBOARD_SCAN, GPIO_INPUT)
-ALTERNATE(/*KSO_00-01*/ PIN_MASK(2, BIT(0) | BIT(1)), 0, MODULE_KEYBOARD_SCAN, GPIO_ODR_HIGH)
-GPIO(EC_KSO_02_INV, PIN(1, 7), GPIO_OUT_LOW) /* KSO_02 inverted */
-ALTERNATE(/*KSO_03-09*/ PIN_MASK(1, GENMASK(6, 0)), 0, MODULE_KEYBOARD_SCAN, GPIO_ODR_HIGH)
-ALTERNATE(/*KSO_10-13*/ PIN_MASK(0, GENMASK(7, 4)), 0, MODULE_KEYBOARD_SCAN, GPIO_ODR_HIGH)
-ALTERNATE(/*KSO_14*/ PIN_MASK(8, BIT(2)), 0, MODULE_KEYBOARD_SCAN, GPIO_ODR_HIGH)
+/* HDMI/DP Signals */
+GPIO(HDMI_1_CEC, PIN(1, 7), GPIO_OUT_LOW)
+GPIO_INT(FAULT_HDMI_1_L, PIN(2, 5), GPIO_INT_FALLING, hdmi_fault_interrupt)
+GPIO_INT(FAULT_DP_L, PIN(2, 6), GPIO_INT_FALLING, dp_fault_interrupt)
/* SOC eSPI Bus */
GPIO(ESPI_SOC_CLK, PIN(5, 5), GPIO_DEFAULT)
@@ -128,28 +118,50 @@ GPIO(EC_ESPI_RST_L, PIN(5, 4), GPIO_DEFAULT)
GPIO(ESPI_EC_ALERT_SOC_L, PIN(5, 7), GPIO_DEFAULT)
/* TCPC C0 */
+IOEX(EN_PP5000_USB_A0_VBUS, EXPIN(USBC_PORT_C0, 1, 5), GPIO_OUT_LOW)
+IOEX(USB_A0_LIMIT_SDP, EXPIN(USBC_PORT_C0, 1, 6), GPIO_OUT_LOW)
IOEX(USB_C0_PPC_EN_L, EXPIN(USBC_PORT_C0, 1, 0), GPIO_OUT_HIGH)
IOEX(USB_C0_PPC_ILIM_3A_EN, EXPIN(USBC_PORT_C0, 1, 1), GPIO_OUT_LOW)
IOEX_INT(USB_C0_SBU_FAULT_ODL, EXPIN(USBC_PORT_C0, 1, 2), GPIO_INT_FALLING, sbu_fault_interrupt)
-IOEX(EN_PP5000_USB_A0_VBUS, EXPIN(USBC_PORT_C0, 1, 5), GPIO_OUT_LOW)
-IOEX(USB_A0_LIMIT_SDP, EXPIN(USBC_PORT_C0, 1, 6), GPIO_OUT_LOW)
IOEX(USB_C0_SBU_FLIP, EXPIN(USBC_PORT_C0, 1, 7), GPIO_OUT_LOW)
/* TCPC C1 */
+IOEX(USB_A1_LIMIT_SDP, EXPIN(USBC_PORT_C1, 1, 6), GPIO_OUT_LOW)
IOEX(USB_C1_IN_HPD, EXPIN(USBC_PORT_C1, 0, 3), GPIO_OUT_LOW)
IOEX(USB_C1_PPC_EN_L, EXPIN(USBC_PORT_C1, 1, 0), GPIO_OUT_HIGH)
IOEX(USB_C1_PPC_ILIM_3A_EN, EXPIN(USBC_PORT_C1, 1, 1), GPIO_OUT_LOW)
IOEX_INT(USB_C1_SBU_FAULT_ODL, EXPIN(USBC_PORT_C1, 1, 2), GPIO_INT_FALLING, sbu_fault_interrupt)
-IOEX(EN_PP5000_USB_A1_VBUS_DB, EXPIN(USBC_PORT_C1, 1, 5), GPIO_OUT_LOW)
-IOEX(USB_A1_LIMIT_SDP_DB, EXPIN(USBC_PORT_C1, 1, 6), GPIO_OUT_LOW)
+IOEX(USB_C1_SBU_FLIP, EXPIN(USBC_PORT_C1, 1, 7), GPIO_OUT_LOW)
/* Test Points */
+GPIO(EC_ADC_6, PIN(3, 4), GPIO_INPUT | GPIO_PULL_UP)
+GPIO(EC_FLPRG2, PIN(8, 6), GPIO_INPUT | GPIO_PULL_UP)
+GPIO(EC_GPIO04, PIN(0, 4), GPIO_INPUT | GPIO_PULL_UP)
+GPIO(EC_GPIO05, PIN(0, 5), GPIO_INPUT | GPIO_PULL_UP)
+GPIO(EC_GPIO06, PIN(0, 6), GPIO_INPUT | GPIO_PULL_UP)
+GPIO(EC_GPIO07, PIN(0, 7), GPIO_INPUT | GPIO_PULL_UP)
+GPIO(EC_GPIO10, PIN(1, 0), GPIO_INPUT | GPIO_PULL_UP)
+GPIO(EC_GPIO11, PIN(1, 1), GPIO_INPUT | GPIO_PULL_UP)
+GPIO(EC_GPIO20, PIN(2, 0), GPIO_INPUT | GPIO_PULL_UP)
+GPIO(EC_GPIO22, PIN(2, 2), GPIO_INPUT | GPIO_PULL_UP)
+GPIO(EC_GPIO23, PIN(2, 3), GPIO_INPUT | GPIO_PULL_UP)
GPIO(EC_GPIO56, PIN(5, 6), GPIO_INPUT | GPIO_PULL_UP)
+GPIO(EC_GPIO73, PIN(7, 3), GPIO_INPUT | GPIO_PULL_UP)
+GPIO(EC_GPIO81, PIN(8, 1), GPIO_INPUT | GPIO_PULL_UP)
+GPIO(EC_GPIO82, PIN(8, 2), GPIO_INPUT | GPIO_PULL_UP)
+GPIO(EC_GPIO94, PIN(9, 4), GPIO_INPUT | GPIO_PULL_UP)
+GPIO(EC_GPIO97, PIN(9, 7), GPIO_INPUT | GPIO_PULL_UP)
+GPIO(EC_GPIOA0, PIN(A, 0), GPIO_INPUT | GPIO_PULL_UP)
+GPIO(EC_GPIOA2, PIN(A, 2), GPIO_INPUT | GPIO_PULL_UP)
+GPIO(EC_GPIOB0, PIN(B, 0), GPIO_INPUT | GPIO_PULL_UP)
+GPIO(EC_GPIOC1, PIN(C, 1), GPIO_INPUT | GPIO_PULL_UP)
+GPIO(EC_GPIOC2, PIN(C, 2), GPIO_INPUT | GPIO_PULL_UP)
GPIO(EC_PS2_CLK, PIN(6, 7), GPIO_INPUT | GPIO_PULL_UP)
GPIO(EC_PS2_DAT, PIN(7, 0), GPIO_INPUT | GPIO_PULL_UP)
GPIO(EC_PS2_RST, PIN(6, 2), GPIO_INPUT | GPIO_PULL_UP)
-GPIO(EC_GPIOB0, PIN(B, 0), GPIO_INPUT | GPIO_PULL_UP)
-GPIO(EC_GPIO81, PIN(8, 1), GPIO_INPUT | GPIO_PULL_UP)
-GPIO(EC_FLPRG2, PIN(8, 6), GPIO_INPUT | GPIO_PULL_UP)
GPIO(EC_PSL_GPO, PIN(D, 7), GPIO_INPUT | GPIO_PULL_UP)
+GPIO(EC_PSL_IN2, PIN(0, 0), GPIO_INPUT | GPIO_PULL_UP)
+GPIO(EC_PSL_IN4, PIN(0, 2), GPIO_INPUT | GPIO_PULL_UP)
GPIO(EC_PWM7, PIN(6, 0), GPIO_INPUT | GPIO_PULL_UP)
+GPIO(VOLDN_BTN_ODL, PIN(A, 7), GPIO_INPUT | GPIO_PULL_UP)
+GPIO(VOLUP_BTN_ODL, PIN(9, 3), GPIO_INPUT | GPIO_PULL_UP)
diff --git a/baseboard/mancomb/baseboard.c b/baseboard/mancomb/baseboard.c
index 7151157ae4..170753ed37 100644
--- a/baseboard/mancomb/baseboard.c
+++ b/baseboard/mancomb/baseboard.c
@@ -7,7 +7,6 @@
#include "adc.h"
#include "adc_chip.h"
-#include "battery_fuel_gauge.h"
#include "charge_manager.h"
#include "charge_ramp.h"
#include "charge_state_v2.h"
@@ -26,7 +25,6 @@
#include "hooks.h"
#include "i2c.h"
#include "ioexpander.h"
-#include "isl9241.h"
#include "keyboard_scan.h"
#include "nct38xx.h"
#include "pi3usb9201.h"
@@ -42,14 +40,6 @@
#define CPRINTSUSB(format, args...) cprints(CC_USBCHARGE, format, ## args)
#define CPRINTFUSB(format, args...) cprintf(CC_USBCHARGE, format, ## args)
-/* Wake Sources */
-const enum gpio_signal hibernate_wake_pins[] = {
- GPIO_LID_OPEN,
- GPIO_AC_PRESENT,
- GPIO_POWER_BUTTON_L,
-};
-const int hibernate_wake_pins_used = ARRAY_SIZE(hibernate_wake_pins);
-
/* Power Signal Input List */
const struct power_signal_info power_signal_list[] = {
[X86_SLP_S0_N] = {
@@ -85,22 +75,22 @@ const struct i2c_port_t i2c_ports[] = {
.name = "tcpc0",
.port = I2C_PORT_TCPC0,
.kbps = 400,
- .scl = GPIO_EC_I2C_USB_A0_C0_SCL,
- .sda = GPIO_EC_I2C_USB_A0_C0_SDA,
+ .scl = GPIO_EC_I2C_USB_C0_SCL,
+ .sda = GPIO_EC_I2C_USB_C0_SDA,
},
{
.name = "tcpc1",
.port = I2C_PORT_TCPC1,
.kbps = 400,
- .scl = GPIO_EC_I2C_USB_A1_C1_SCL,
- .sda = GPIO_EC_I2C_USB_A1_C1_SDA,
+ .scl = GPIO_EC_I2C_USB_C1_SCL,
+ .sda = GPIO_EC_I2C_USB_C1_SDA,
},
{
- .name = "battery",
- .port = I2C_PORT_BATTERY,
+ .name = "usb_hub",
+ .port = I2C_PORT_USB_HUB,
.kbps = 100,
- .scl = GPIO_EC_I2C_BATT_SCL,
- .sda = GPIO_EC_I2C_BATT_SDA,
+ .scl = GPIO_EC_I2C_USBC_MUX_SCL,
+ .sda = GPIO_EC_I2C_USBC_MUX_SDA,
},
{
.name = "usb_mux",
@@ -110,13 +100,6 @@ const struct i2c_port_t i2c_ports[] = {
.sda = GPIO_EC_I2C_USBC_MUX_SDA,
},
{
- .name = "charger",
- .port = I2C_PORT_CHARGER,
- .kbps = 400,
- .scl = GPIO_EC_I2C_POWER_SCL,
- .sda = GPIO_EC_I2C_POWER_SDA,
- },
- {
.name = "eeprom",
.port = I2C_PORT_EEPROM,
.kbps = 400,
@@ -149,8 +132,8 @@ const struct adc_t adc_channels[] = {
.factor_div = ADC_READ_MAX + 1,
.shift = 0,
},
- [ADC_TEMP_SENSOR_CHARGER] = {
- .name = "CHARGER",
+ [ANALOG_PPVAR_PWR_IN_IMON] = {
+ .name = "POWER_I",
.input_ch = NPCX_ADC_CH1,
.factor_mul = ADC_MAX_VOLT,
.factor_div = ADC_READ_MAX + 1,
@@ -163,6 +146,13 @@ const struct adc_t adc_channels[] = {
.factor_div = ADC_READ_MAX + 1,
.shift = 0,
},
+ [SNS_PPVAR_PWR_IN] = {
+ .name = "POWER_V",
+ .input_ch = NPCX_ADC_CH5,
+ .factor_mul = ADC_MAX_VOLT,
+ .factor_div = ADC_READ_MAX + 1,
+ .shift = 0,
+ },
};
BUILD_ASSERT(ARRAY_SIZE(adc_channels) == ADC_CH_COUNT);
@@ -177,12 +167,6 @@ const struct temp_sensor_t temp_sensors[] = {
.read = board_get_soc_temp,
.idx = TEMP_SENSOR_SOC,
},
- [TEMP_SENSOR_CHARGER] = {
- .name = "Charger",
- .type = TEMP_SENSOR_TYPE_BOARD,
- .read = get_temp_3v3_30k9_47k_4050b,
- .idx = TEMP_SENSOR_CHARGER,
- },
[TEMP_SENSOR_MEMORY] = {
.name = "Memory",
.type = TEMP_SENSOR_TYPE_BOARD,
@@ -210,17 +194,6 @@ struct ec_thermal_config thermal_params[TEMP_SENSOR_COUNT] = {
.temp_fan_off = C_TO_K(32),
.temp_fan_max = C_TO_K(75),
},
- [TEMP_SENSOR_CHARGER] = {
- .temp_host = {
- [EC_TEMP_THRESH_HIGH] = C_TO_K(90),
- [EC_TEMP_THRESH_HALT] = C_TO_K(92),
- },
- .temp_host_release = {
- [EC_TEMP_THRESH_HIGH] = C_TO_K(80),
- },
- .temp_fan_off = 0,
- .temp_fan_max = 0,
- },
[TEMP_SENSOR_MEMORY] = {
.temp_host = {
[EC_TEMP_THRESH_HIGH] = C_TO_K(90),
@@ -246,68 +219,6 @@ struct ec_thermal_config thermal_params[TEMP_SENSOR_COUNT] = {
};
BUILD_ASSERT(ARRAY_SIZE(thermal_params) == TEMP_SENSOR_COUNT);
-/*
- * Battery info for all Mancomb battery types. Note that the fields
- * start_charging_min/max and charging_min/max are not used for the charger.
- * The effective temperature limits are given by discharging_min/max_c.
- *
- * Fuel Gauge (FG) parameters which are used for determining if the battery
- * is connected, the appropriate ship mode (battery cutoff) command, and the
- * charge/discharge FETs status.
- *
- * Ship mode (battery cutoff) requires 2 writes to the appropriate smart battery
- * register. For some batteries, the charge/discharge FET bits are set when
- * charging/discharging is active, in other types, these bits set mean that
- * charging/discharging is disabled. Therefore, in addition to the mask for
- * these bits, a disconnect value must be specified. Note that for TI fuel
- * gauge, the charge/discharge FET status is found in Operation Status (0x54),
- * but a read of Manufacturer Access (0x00) will return the lower 16 bits of
- * Operation status which contains the FET status bits.
- *
- * The assumption for battery types supported is that the charge/discharge FET
- * status can be read with a sb_read() command and therefore, only the register
- * address, mask, and disconnect value need to be provided.
- */
-const struct board_batt_params board_battery_info[] = {
- /* AP18F4M / LIS4163ACPC */
- [BATTERY_AP18F4M] = {
- .fuel_gauge = {
- .manuf_name = "Murata KT00404001",
- .ship_mode = {
- .reg_addr = 0x3A,
- .reg_data = { 0xC574, 0xC574 },
- },
- .fet = {
- .reg_addr = 0x0,
- .reg_mask = 0x2000,
- .disconnect_val = 0x2000,
- }
- },
- .batt_info = {
- .voltage_max = 8700,
- .voltage_normal = 7600,
- .voltage_min = 5500,
- .precharge_current = 256,
- .start_charging_min_c = 0,
- .start_charging_max_c = 50,
- .charging_min_c = 0,
- .charging_max_c = 60,
- .discharging_min_c = -20,
- .discharging_max_c = 75,
- },
- },
-};
-BUILD_ASSERT(ARRAY_SIZE(board_battery_info) == BATTERY_TYPE_COUNT);
-const enum battery_type DEFAULT_BATTERY_TYPE = BATTERY_AP18F4M;
-
-const struct charger_config_t chg_chips[] = {
- {
- .i2c_port = I2C_PORT_CHARGER,
- .i2c_addr_flags = ISL9241_ADDR_FLAGS,
- .drv = &isl9241_drv,
- },
-};
-
const struct tcpc_config_t tcpc_config[] = {
[USBC_PORT_C0] = {
.bus_type = EC_BUS_TYPE_I2C,
@@ -331,9 +242,9 @@ const struct tcpc_config_t tcpc_config[] = {
BUILD_ASSERT(ARRAY_SIZE(tcpc_config) == USBC_PORT_COUNT);
BUILD_ASSERT(CONFIG_USB_PD_PORT_MAX_COUNT == USBC_PORT_COUNT);
-const int usb_port_enable[USBA_PORT_COUNT] = {
+/* A1-A4 are controlled by USB MUX */
+const int usb_port_enable[] = {
IOEX_EN_PP5000_USB_A0_VBUS,
- IOEX_EN_PP5000_USB_A1_VBUS_DB,
};
static void baseboard_interrupt_init(void)
@@ -391,7 +302,7 @@ BUILD_ASSERT(ARRAY_SIZE(pi3usb9201_bc12_chips) == USBC_PORT_COUNT);
* properly.
*/
static int fsusb42umx_set_mux(const struct usb_mux*, mux_state_t);
-const struct usb_mux_driver usbc0_sbu_mux_driver = {
+const struct usb_mux_driver usbc_sbu_mux_driver = {
.set = fsusb42umx_set_mux,
};
@@ -401,19 +312,15 @@ const struct usb_mux_driver usbc0_sbu_mux_driver = {
*/
const struct usb_mux usbc0_sbu_mux = {
.usb_port = USBC_PORT_C0,
- .driver = &usbc0_sbu_mux_driver,
+ .driver = &usbc_sbu_mux_driver,
};
-static int board_ps8818_mux_set(const struct usb_mux*, mux_state_t);
-const struct usb_mux usbc1_ps8818 = {
+const struct usb_mux usbc1_sbu_mux = {
.usb_port = USBC_PORT_C1,
- .i2c_port = I2C_PORT_TCPC1,
- .i2c_addr_flags = PS8818_I2C_ADDR_FLAGS,
- .driver = &ps8818_usb_retimer_driver,
- .board_set = &board_ps8818_mux_set,
+ .driver = &usbc_sbu_mux_driver,
};
-struct usb_mux usb_muxes[] = {
+const struct usb_mux usb_muxes[] = {
[USBC_PORT_C0] = {
.usb_port = USBC_PORT_C0,
.i2c_port = I2C_PORT_USB_MUX,
@@ -426,7 +333,7 @@ struct usb_mux usb_muxes[] = {
.i2c_port = I2C_PORT_USB_MUX,
.i2c_addr_flags = AMD_FP6_C4_MUX_I2C_ADDR,
.driver = &amd_fp6_usb_mux_driver,
- .next_mux = &usbc1_ps8818,
+ .next_mux = &usbc1_sbu_mux,
}
};
BUILD_ASSERT(ARRAY_SIZE(usb_muxes) == USBC_PORT_COUNT);
@@ -446,37 +353,12 @@ struct ioexpander_config_t ioex_config[] = {
BUILD_ASSERT(ARRAY_SIZE(ioex_config) == USBC_PORT_COUNT);
BUILD_ASSERT(CONFIG_IO_EXPANDER_PORT_COUNT == USBC_PORT_COUNT);
-/* Keyboard scan setting */
-struct keyboard_scan_config keyscan_config = {
- /*
- * F3 key scan cycle completed but scan input is not
- * charging to logic high when EC start scan next
- * column for "T" key, so we set .output_settle_us
- * to 80us
- */
- .output_settle_us = 80,
- .debounce_down_us = 6 * MSEC,
- .debounce_up_us = 30 * MSEC,
- .scan_period_us = 1500,
- .min_post_scan_delay_us = 1000,
- .poll_timeout_us = SECOND,
- .actual_key_mask = {
- 0x3c, 0xff, 0xff, 0xff, 0xff, 0xf5, 0xff,
- 0xa4, 0xff, 0xfe, 0x55, 0xfa, 0xca /* full set */
- },
-};
-
const struct pwm_t pwm_channels[] = {
[PWM_CH_FAN] = {
.channel = 0,
.flags = PWM_CONFIG_OPEN_DRAIN,
.freq = 25000,
},
- [PWM_CH_KBLIGHT] = {
- .channel = 1,
- .flags = PWM_CONFIG_DSLEEP,
- .freq = 100,
- },
[PWM_CH_LED_CHRG] = {
.channel = 2,
.flags = PWM_CONFIG_DSLEEP,
@@ -491,145 +373,80 @@ const struct pwm_t pwm_channels[] = {
BUILD_ASSERT(ARRAY_SIZE(pwm_channels) == PWM_CH_COUNT);
/*
- * USB C0 port SBU mux use standalone FSUSB42UMX
+ * USB C0/C1 port SBU mux use standalone FSUSB42UMX
* chip and it needs a board specific driver.
* Overall, it will use chained mux framework.
*/
static int fsusb42umx_set_mux(const struct usb_mux *me, mux_state_t mux_state)
{
- if (mux_state & USB_PD_MUX_POLARITY_INVERTED)
- ioex_set_level(IOEX_USB_C0_SBU_FLIP, 1);
- else
- ioex_set_level(IOEX_USB_C0_SBU_FLIP, 0);
+ bool inverted = mux_state & USB_PD_MUX_POLARITY_INVERTED;
- return EC_SUCCESS;
-}
+ if (me->usb_port == USBC_PORT_C0)
+ RETURN_ERROR(ioex_set_level(IOEX_USB_C0_SBU_FLIP, inverted));
+ else if (me->usb_port == USBC_PORT_C1)
+ RETURN_ERROR(ioex_set_level(IOEX_USB_C1_SBU_FLIP, inverted));
-/*
- * PS8818 set mux board tuning.
- * Adds in board specific gain and DP lane count configuration
- * TODO(b/179036200): Adjust PS8818 tuning for mancomb and variants
- */
-static int board_ps8818_mux_set(const struct usb_mux *me,
- mux_state_t mux_state)
-{
- int rv = EC_SUCCESS;
-
- /* USB specific config */
- if (mux_state & USB_PD_MUX_USB_ENABLED) {
- /* Boost the USB gain */
- rv = ps8818_i2c_field_update8(me,
- PS8818_REG_PAGE1,
- PS8818_REG1_APTX1EQ_10G_LEVEL,
- PS8818_EQ_LEVEL_UP_MASK,
- PS8818_EQ_LEVEL_UP_19DB);
- if (rv)
- return rv;
-
- rv = ps8818_i2c_field_update8(me,
- PS8818_REG_PAGE1,
- PS8818_REG1_APTX2EQ_10G_LEVEL,
- PS8818_EQ_LEVEL_UP_MASK,
- PS8818_EQ_LEVEL_UP_19DB);
- if (rv)
- return rv;
-
- rv = ps8818_i2c_field_update8(me,
- PS8818_REG_PAGE1,
- PS8818_REG1_APTX1EQ_5G_LEVEL,
- PS8818_EQ_LEVEL_UP_MASK,
- PS8818_EQ_LEVEL_UP_19DB);
- if (rv)
- return rv;
-
- rv = ps8818_i2c_field_update8(me,
- PS8818_REG_PAGE1,
- PS8818_REG1_APTX2EQ_5G_LEVEL,
- PS8818_EQ_LEVEL_UP_MASK,
- PS8818_EQ_LEVEL_UP_19DB);
- if (rv)
- return rv;
-
- /* Set the RX input termination */
- rv = ps8818_i2c_field_update8(me,
- PS8818_REG_PAGE1,
- PS8818_REG1_RX_PHY,
- PS8818_RX_INPUT_TERM_MASK,
- PS8818_RX_INPUT_TERM_112_OHM);
- if (rv)
- return rv;
- }
-
- /* DP specific config */
- if (mux_state & USB_PD_MUX_DP_ENABLED) {
- /* Boost the DP gain */
- rv = ps8818_i2c_field_update8(me,
- PS8818_REG_PAGE1,
- PS8818_REG1_DPEQ_LEVEL,
- PS8818_DPEQ_LEVEL_UP_MASK,
- PS8818_DPEQ_LEVEL_UP_19DB);
- if (rv)
- return rv;
-
- /* Enable HPD on the DB */
- gpio_set_level(GPIO_USB_C1_HPD, 1);
- } else {
- /* Disable HPD on the DB */
- gpio_set_level(GPIO_USB_C1_HPD, 0);
- }
-
- return rv;
+ return EC_SUCCESS;
}
int board_set_active_charge_port(int port)
{
- int is_valid_port = (port >= 0 &&
- port < CONFIG_USB_PD_PORT_MAX_COUNT);
- int i;
-
- if (port == CHARGE_PORT_NONE) {
- CPRINTSUSB("Disabling all charger ports");
-
- /* Disable all ports. */
- for (i = 0; i < ppc_cnt; i++) {
- /*
- * Do not return early if one fails otherwise we can
- * get into a boot loop assertion failure.
- */
- if (ppc_vbus_sink_enable(i, 0))
- CPRINTSUSB("Disabling C%d as sink failed.", i);
- }
+ CPRINTSUSB("Requested charge port change to %d", port);
+ /*
+ * The charge manager may ask us to switch to no charger if we're
+ * running off USB-C only but upstream doesn't support PD. It requires
+ * that we accept this switch otherwise it triggers an assert and EC
+ * reset; it's not possible to boot the AP anyway, but we want to avoid
+ * resetting the EC so we can continue to do the "low power" LED blink.
+ */
+ if (port == CHARGE_PORT_NONE)
return EC_SUCCESS;
- } else if (!is_valid_port) {
+
+ if (port < 0 || CHARGE_PORT_COUNT <= port)
return EC_ERROR_INVAL;
- }
+ if (port == charge_manager_get_active_charge_port())
+ return EC_SUCCESS;
- /* Check if the port is sourcing VBUS. */
- if (ppc_is_sourcing_vbus(port)) {
- CPRINTFUSB("Skip enable C%d", port);
+ /* Don't charge from a source port */
+ if (board_vbus_source_enabled(port))
return EC_ERROR_INVAL;
- }
- CPRINTSUSB("New charge port: C%d", port);
+ if (!chipset_in_state(CHIPSET_STATE_ANY_OFF)) {
+ int bj_active, bj_requested;
- /*
- * Turn off the other ports' sink path FETs, before enabling the
- * requested charge port.
- */
- for (i = 0; i < ppc_cnt; i++) {
- if (i == port)
- continue;
+ if (charge_manager_get_active_charge_port() != CHARGE_PORT_NONE)
+ /* Change is only permitted while the system is off */
+ return EC_ERROR_INVAL;
- if (ppc_vbus_sink_enable(i, 0))
- CPRINTSUSB("C%d: sink path disable failed.", i);
+ /*
+ * Current setting is no charge port but the AP is on, so the
+ * charge manager is out of sync (probably because we're
+ * reinitializing after sysjump). Reject requests that aren't
+ * in sync with our outputs.
+ */
+ bj_active = !gpio_get_level(GPIO_EN_PPVAR_BJ_ADP_L);
+ bj_requested = port == CHARGE_PORT_BARRELJACK;
+ if (bj_active != bj_requested)
+ return EC_ERROR_INVAL;
}
- /* Enable requested charge port. */
- if (ppc_vbus_sink_enable(port, 1)) {
- CPRINTSUSB("C%d: sink path enable failed.", port);
- return EC_ERROR_UNKNOWN;
+ CPRINTSUSB("New charger p%d", port);
+
+ switch (port) {
+ case CHARGE_PORT_TYPEC0:
+ case CHARGE_PORT_TYPEC1:
+ gpio_set_level(GPIO_EN_PPVAR_BJ_ADP_L, 1);
+ break;
+ case CHARGE_PORT_BARRELJACK:
+ /* Make sure BJ adapter is sourcing power */
+ if (gpio_get_level(GPIO_BJ_ADP_PRESENT_L))
+ return EC_ERROR_INVAL;
+ gpio_set_level(GPIO_EN_PPVAR_BJ_ADP_L, 0);
+ break;
+ default:
+ return EC_ERROR_INVAL;
}
return EC_SUCCESS;
@@ -637,18 +454,12 @@ int board_set_active_charge_port(int port)
int board_is_i2c_port_powered(int port)
{
- switch (port) {
- case I2C_PORT_USB_MUX:
- case I2C_PORT_SENSOR:
- /* USB mux and sensor i2c bus is unpowered in Z1 */
- return chipset_in_state(CHIPSET_STATE_HARD_OFF) ? 0 : 1;
- case I2C_PORT_THERMAL_AP:
+ if (port == I2C_PORT_THERMAL_AP)
/* SOC thermal i2c bus is unpowered in S0i3/S3/S5/Z1 */
return chipset_in_state(CHIPSET_STATE_ANY_OFF |
CHIPSET_STATE_ANY_SUSPEND) ? 0 : 1;
- default:
- return 1;
- }
+ /* All other i2c ports are always powered when EC is powered */
+ return 1;
}
/*
@@ -668,12 +479,16 @@ int board_aoz1380_set_vbus_source_current_limit(int port,
return rv;
}
+/* Called when the charge manager has switched to a new port. */
void board_set_charge_limit(int port, int supplier, int charge_ma,
int max_ma, int charge_mv)
{
- charge_set_input_current_limit(MAX(charge_ma,
- CONFIG_CHARGER_INPUT_CURRENT),
- charge_mv);
+ /* TODO: blink led if power insufficient */
+}
+
+int extpower_is_present(void)
+{
+ return 1;
}
void sbu_fault_interrupt(enum ioex_signal signal)
@@ -683,11 +498,20 @@ void sbu_fault_interrupt(enum ioex_signal signal)
pd_handle_overcurrent(port);
}
-static void set_ac_prochot(void)
+void hdmi_fault_interrupt(enum gpio_signal signal)
+{
+ /* TODO: Report HDMI fault */
+}
+
+void dp_fault_interrupt(enum gpio_signal signal)
+{
+ /* TODO: Report DP fault */
+}
+
+void ext_charger_interrupt(enum gpio_signal signal)
{
- isl9241_set_ac_prochot(CHARGER_SOLO, MANCOMB_AC_PROCHOT_CURRENT_MA);
+ /* TODO: Handle ext charger interrupt */
}
-DECLARE_HOOK(HOOK_INIT, set_ac_prochot, HOOK_PRIO_DEFAULT);
void tcpc_alert_event(enum gpio_signal signal)
{
@@ -799,38 +623,6 @@ static int board_get_soc_temp(int idx, int *temp_k)
}
/**
- * Return if VBUS is sagging too low
- */
-int board_is_vbus_too_low(int port, enum chg_ramp_vbus_state ramp_state)
-{
- int voltage = 0;
- int rv;
-
- rv = charger_get_vbus_voltage(port, &voltage);
-
- if (rv) {
- CPRINTSUSB("%s rv=%d", __func__, rv);
- return 0;
- }
-
- /*
- * b/168569046: The ISL9241 sometimes incorrectly reports 0 for unknown
- * reason, causing ramp to stop at 0.5A. Workaround this by ignoring 0.
- * This partly defeats the point of ramping, but will still catch
- * VBUS below 4.5V and above 0V.
- */
- if (voltage == 0) {
- CPRINTSUSB("%s vbus=0", __func__);
- return 0;
- }
-
- if (voltage < BC12_MIN_VOLTAGE)
- CPRINTSUSB("%s vbus=%d", __func__, voltage);
-
- return voltage < BC12_MIN_VOLTAGE;
-}
-
-/**
* b/175324615: On G3->S5, wait for RSMRST_L to be deasserted before asserting
* PCH_PWRBTN_L.
*/
@@ -850,39 +642,16 @@ void board_pwrbtn_to_pch(int level)
gpio_set_level(GPIO_PCH_PWRBTN_L, level);
}
-void board_hibernate(void)
-{
- int port;
-
- /*
- * If we are charging, then drop the Vbus level down to 5V to ensure
- * that we don't get locked out of the 6.8V OVLO for our PPCs in
- * dead-battery mode. This is needed when the TCPC/PPC rails go away.
- * (b/79218851, b/143778351, b/147007265)
- */
- port = charge_manager_get_active_charge_port();
- if (port != CHARGE_PORT_NONE) {
- pd_request_source_voltage(port, SAFE_RESET_VBUS_MV);
-
- /* Give PD task and PPC chip time to get to 5V */
- msleep(SAFE_RESET_VBUS_DELAY_MS);
- }
-}
-
static void baseboard_chipset_suspend(void)
{
- /* Disable display and keyboard backlights. */
- gpio_set_level(GPIO_EC_DISABLE_DISP_BL, 1);
- ioex_set_level(GPIO_EN_KB_BL, 0);
+ /* TODO: Handle baseboard chipset suspend */
}
DECLARE_HOOK(HOOK_CHIPSET_SUSPEND, baseboard_chipset_suspend,
HOOK_PRIO_DEFAULT);
static void baseboard_chipset_resume(void)
{
- /* Enable display and keyboard backlights. */
- gpio_set_level(GPIO_EC_DISABLE_DISP_BL, 0);
- ioex_set_level(GPIO_EN_KB_BL, 1);
+ /* TODO: Handle baseboard chipset resume */
}
DECLARE_HOOK(HOOK_CHIPSET_RESUME, baseboard_chipset_resume, HOOK_PRIO_DEFAULT);
@@ -904,7 +673,7 @@ void baseboard_en_pwr_pcore_s0(enum gpio_signal signal)
/* EC must AND signals PG_LPDDR4X_S3_OD and PG_GROUPC_S0_OD */
gpio_set_level(GPIO_EN_PWR_PCORE_S0_R,
- gpio_get_level(GPIO_PG_LPDDR4X_S3_OD) &&
+ gpio_get_level(GPIO_PG_DDR4_S3_OD) &&
gpio_get_level(GPIO_PG_GROUPC_S0_OD));
}
diff --git a/baseboard/mancomb/baseboard.h b/baseboard/mancomb/baseboard.h
index d357e6675b..a1fe9e4c2f 100644
--- a/baseboard/mancomb/baseboard.h
+++ b/baseboard/mancomb/baseboard.h
@@ -17,27 +17,33 @@
#define CONFIG_LTO /* Link-Time Optimizations to reduce code size */
#define CONFIG_BRINGUP /* EC will not automatically power on the AP */
#define CONFIG_I2C_DEBUG /* Print i2c traces */
-#define CONFIG_KEYBOARD_DEBUG /* Print keyboard debug messages */
#undef CONFIG_UART_TX_BUF_SIZE
#define CONFIG_UART_TX_BUF_SIZE 4096
+/* Undefs because Box */
+#undef CONFIG_LID_SWITCH
+#undef CONFIG_HIBERNATE
+#undef CONFIG_KEYBOARD_BOOT_KEYS
+#undef CONFIG_KEYBOARD_PRINT_SCAN_TIMES
+
/* Power Config */
+#define CONFIG_DEDICATED_RECOVERY_BUTTON
+#define CONFIG_DEDICATED_RECOVERY_BUTTON_2
#undef CONFIG_EXTPOWER_DEBOUNCE_MS
#define CONFIG_EXTPOWER_DEBOUNCE_MS 200
-#define CONFIG_EXTPOWER_GPIO
-#define CONFIG_HIBERNATE_PSL
#define CONFIG_LOW_POWER_IDLE
#define CONFIG_POWER_BUTTON
+#define CONFIG_POWER_BUTTON_IGNORE_LID
+#define CONFIG_POWER_BUTTON_INIT_IDLE
#define CONFIG_POWER_BUTTON_TO_PCH_CUSTOM
#define CONFIG_POWER_BUTTON_X86
#define CONFIG_POWER_COMMON
#define CONFIG_POWER_S0IX
-#define CONFIG_POWER_SLEEP_FAILURE_DETECTION
#define CONFIG_POWER_SHUTDOWN_PAUSE_IN_S5
+#define CONFIG_POWER_SLEEP_FAILURE_DETECTION
#define CONFIG_POWER_TRACK_HOST_SLEEP_STATE
#define G3_TO_PWRBTN_DELAY_MS 80
-#define GPIO_AC_PRESENT GPIO_ACOK_OD
#define GPIO_EN_PWR_A GPIO_EN_PWR_Z1
#define GPIO_PCH_PWRBTN_L GPIO_EC_SOC_PWR_BTN_L
#define GPIO_PCH_RSMRST_L GPIO_EC_SOC_RSMRST_L
@@ -47,11 +53,14 @@
#define GPIO_PCH_SYS_PWROK GPIO_EC_SOC_PWR_GOOD
#define GPIO_PCH_WAKE_L GPIO_EC_SOC_WAKE_L
#define GPIO_POWER_BUTTON_L GPIO_MECH_PWR_BTN_ODL
+#define GPIO_RECOVERY_L GPIO_EC_RECOVERY_BTN_ODL
+#define GPIO_RECOVERY_L_2 GPIO_GSC_EC_RECOVERY_BTN_ODL
#define GPIO_S0_PGOOD GPIO_PG_PCORE_S0_R_OD
#define GPIO_S5_PGOOD GPIO_PG_PWR_S5
#define GPIO_SYS_RESET_L GPIO_EC_SYS_RST_L
#define SAFE_RESET_VBUS_DELAY_MS 900
#define SAFE_RESET_VBUS_MV 5000
+
/*
* On power-on, H1 releases the EC from reset but then quickly asserts and
* releases the reset a second time. This means the EC sees 2 resets:
@@ -86,53 +95,16 @@
#define CONFIG_CHIPSET_CAN_THROTTLE
#define CONFIG_CHIPSET_RESET_HOOK
-/* Keyboard Config */
-#define CONFIG_KEYBOARD_BACKLIGHT
-#define CONFIG_KEYBOARD_BOARD_CONFIG
-#define CONFIG_KEYBOARD_COL2_INVERTED
-#define CONFIG_KEYBOARD_PROTOCOL_8042
-#define CONFIG_KEYBOARD_VIVALDI
-#define GPIO_KBD_KSO2 GPIO_EC_KSO_02_INV
-
-/* Sensors */
-#define CONFIG_TABLET_MODE
-#define CONFIG_GMR_TABLET_MODE
-#define GMR_TABLET_MODE_GPIO_L GPIO_TABLET_MODE
-
-/* Battery Config */
-#define CONFIG_BATTERY_PRESENT_GPIO GPIO_EC_BATT_PRES_ODL
-#define CONFIG_BATTERY_CUT_OFF
-#define CONFIG_BATTERY_FUEL_GAUGE
-#define CONFIG_BATTERY_REVIVE_DISCONNECT
-#define CONFIG_BATTERY_SMART
-#define CONFIG_BATTERY_V2
-#define CONFIG_BATTERY_COUNT 1
-#define CONFIG_HOSTCMD_BATTERY_V2
-#define CONFIG_BC12_DETECT_PI3USB9201
-
/* Charger Config */
-#define CONFIG_CHARGER
#define CONFIG_CHARGE_MANAGER
-#define CONFIG_CHARGER_DISCHARGE_ON_AC
-#define CONFIG_CHARGER_INPUT_CURRENT 512
-#define CONFIG_CHARGER_ISL9241
-#define CONFIG_CHARGER_SENSE_RESISTOR 10
-#define CONFIG_CHARGER_SENSE_RESISTOR_AC 20
+#undef CONFIG_CHARGE_MANAGER_SAFE_MODE
+#define CONFIG_CHARGER_MIN_POWER_MW_FOR_POWER_ON 50000
+#define ADC_VBUS SNS_PPVAR_PWR_IN
-/*
- * EC will boot AP to depthcharge if: (BAT >= 4%) || (AC >= 50W)
- * CONFIG_CHARGER_LIMIT_* is not set, so there is no additional restriction on
- * Depthcharge to boot OS.
- */
-#define CONFIG_CHARGER_MIN_BAT_PCT_FOR_POWER_ON 4
-#define CONFIG_CHARGER_MIN_POWER_MW_FOR_POWER_ON 50000
-
-/*
- * We would prefer to use CONFIG_CHARGE_RAMP_HW to enable legacy BC1.2 charging
- * but that feature of ISL9241 is broken (b/160287056) so we have to use
- * CONFIG_CHARGE_RAMP_SW instead.
- */
-#define CONFIG_CHARGE_RAMP_SW
+/* Dedicated barreljack charger port */
+#undef CONFIG_DEDICATED_CHARGE_PORT_COUNT
+#define CONFIG_DEDICATED_CHARGE_PORT_COUNT 1
+#define DEDICATED_CHARGE_PORT CONFIG_USB_PD_PORT_MAX_COUNT
/* USB Type C and USB PD config */
#define CONFIG_USB_PD_REV30
@@ -165,11 +137,9 @@
#define CONFIG_USBC_SS_MUX_DFP_ONLY
#define CONFIG_USBC_VCONN
#define CONFIG_USBC_VCONN_SWAP
-#define CONFIG_USB_MUX_ANX7451
#define CONFIG_USB_PD_PORT_MAX_COUNT 2
#define CONFIG_USBC_PPC_NX20P3483
#define CONFIG_USBC_RETIMER_PS8818
-#define CONFIG_USB_MUX_RUNTIME_CONFIG
#define CONFIG_USB_MUX_AMD_FP6
#define GPIO_USB_C0_DP_HPD GPIO_USB_C0_HPD
@@ -196,7 +166,7 @@
#define CONFIG_USB_PORT_POWER_SMART_INVERTED
#define GPIO_USB1_ILIM_SEL IOEX_USB_A0_LIMIT_SDP
-#define GPIO_USB2_ILIM_SEL IOEX_USB_A1_LIMIT_SDP_DB
+#define GPIO_USB2_ILIM_SEL IOEX_USB_A1_LIMIT_SDP
/* Round up 3250 max current to multiple of 128mA for ISL9241 AC prochot. */
#define MANCOMB_AC_PROCHOT_CURRENT_MA 3328
@@ -213,33 +183,26 @@
* charger (see b/67964166).
*/
#define BC12_MIN_VOLTAGE 4500
+#define CONFIG_BC12_DETECT_PI3USB9201
/* I2C Bus Configuration */
#define CONFIG_I2C
-#define CONFIG_I2C_BUS_MAY_BE_UNPOWERED
#define CONFIG_I2C_CONTROLLER
#define CONFIG_I2C_UPDATE_IF_CHANGED
#define I2C_PORT_TCPC0 NPCX_I2C_PORT0_0
#define I2C_PORT_TCPC1 NPCX_I2C_PORT1_0
-#define I2C_PORT_BATTERY NPCX_I2C_PORT2_0
+#define I2C_PORT_USB_HUB NPCX_I2C_PORT2_0
#define I2C_PORT_USB_MUX NPCX_I2C_PORT3_0
#define I2C_PORT_POWER NPCX_I2C_PORT4_1
-#define I2C_PORT_CHARGER I2C_PORT_POWER
#define I2C_PORT_EEPROM NPCX_I2C_PORT5_0
#define I2C_PORT_SENSOR NPCX_I2C_PORT6_1
#define I2C_PORT_THERMAL_AP NPCX_I2C_PORT7_0
#define I2C_ADDR_EEPROM_FLAGS 0x50
-/* Volume Button Config */
-#define CONFIG_VOLUME_BUTTONS
-#define GPIO_VOLUME_UP_L GPIO_VOLUP_BTN_ODL
-#define GPIO_VOLUME_DOWN_L GPIO_VOLDN_BTN_ODL
-
/* Fan features */
/* LED Config */
#define CONFIG_PWM
-#define CONFIG_PWM_KBLIGHT
#ifndef __ASSEMBLER__
@@ -266,53 +229,61 @@ enum usbc_port {
USBC_PORT_COUNT
};
-/* USB-A ports */
+enum charge_port {
+ CHARGE_PORT_TYPEC0,
+ CHARGE_PORT_TYPEC1,
+ CHARGE_PORT_BARRELJACK,
+ CHARGE_PORT_COUNT
+};
+
+/*
+ * USB-A ports
+ * Port A1-A4 are controlled by the USB HUB
+ */
enum usba_port {
USBA_PORT_A0 = 0,
USBA_PORT_A1,
+ USBA_PORT_A2,
+ USBA_PORT_A3,
+ USBA_PORT_A4,
USBA_PORT_COUNT
};
/* ADC Channels */
enum adc_channel {
ADC_TEMP_SENSOR_SOC = 0,
- ADC_TEMP_SENSOR_CHARGER,
+ ANALOG_PPVAR_PWR_IN_IMON,
ADC_TEMP_SENSOR_MEMORY,
+ SNS_PPVAR_PWR_IN,
ADC_CH_COUNT
};
/* Temp Sensors */
enum temp_sensor_id {
TEMP_SENSOR_SOC = 0,
- TEMP_SENSOR_CHARGER,
TEMP_SENSOR_MEMORY,
TEMP_SENSOR_CPU,
TEMP_SENSOR_COUNT
};
-/* Battery Types */
-enum battery_type {
- BATTERY_AP18F4M,
- BATTERY_TYPE_COUNT,
-};
-
/* PWM Channels */
enum pwm_channel {
PWM_CH_FAN = 0,
- PWM_CH_KBLIGHT,
PWM_CH_LED_CHRG,
PWM_CH_LED_FULL,
PWM_CH_COUNT
};
-/* Common definition for the USB PD interrupt handlers. */
-void tcpc_alert_event(enum gpio_signal signal);
+/* Baseboard Interrupt handlers. */
+void baseboard_en_pwr_pcore_s0(enum gpio_signal signal);
+void baseboard_en_pwr_s0(enum gpio_signal signal);
void bc12_interrupt(enum gpio_signal signal);
+void ext_charger_interrupt(enum gpio_signal signal);
+void dp_fault_interrupt(enum gpio_signal signal);
+void hdmi_fault_interrupt(enum gpio_signal signal);
void ppc_interrupt(enum gpio_signal signal);
void sbu_fault_interrupt(enum ioex_signal signal);
-
-void baseboard_en_pwr_pcore_s0(enum gpio_signal signal);
-void baseboard_en_pwr_s0(enum gpio_signal signal);
+void tcpc_alert_event(enum gpio_signal signal);
#endif /* !__ASSEMBLER__ */