summaryrefslogtreecommitdiff
path: root/board/felwinter
diff options
context:
space:
mode:
authorAseda Aboagye <aaboagye@google.com>2022-01-10 17:26:56 -0600
committerAseda Aboagye <aaboagye@google.com>2022-01-10 17:26:56 -0600
commitdc11829e169a9c425860ec5cca949ef80df9e0b7 (patch)
tree0517b0831c6e52b347926a1b727741df380e908c /board/felwinter
parentc5bd23a4b204565dab616f7fa4ee8a0b7b433d4c (diff)
parentb44d10f8f79cadb259cc7ab79714a0919fc0c4c8 (diff)
downloadchrome-ec-dc11829e169a9c425860ec5cca949ef80df9e0b7.tar.gz
Merge remote-tracking branch cros/main into firmware-keeby-14119.B-mainfirmware-keeby-14119.B-main
Relevant changes: git log --oneline c5bd23a4b..b44d10f8f -- baseboard/dedede board/cappy2 board/corori board/driblee board/gooey board/haboki board/lalala board/waddledoo2 common/charge_state_v2.c common/mkbp_* common/ocpc.c common/usbc/usb_tc_drp_acc_trysrc_sm.c common/usbc/usb_sm.c common/usbc/*_pd_* common/usbc/dp_alt_mode.c common/usbc/usb_prl_sm.c common/usbc/usb_pe_drp_sm.c common/usb_charger.c common/usb_common.c common/usbc_ocp.c driver/charger/sm5803.* driver/charger/isl923x.* driver/tcpm/raa489000.* driver/tcpm/it83* include/power/icelake.h include/intel_x86.h power/icelake.c power/intel_x86.c util/getversion.sh 42d03a001 config: change temp_sensor_power from config to gpio e296efb28 usb_common: Fix CONFIG_USB_PD_DISCHARGE_TCPC typo c346481f4 atomic: cast to unsigned when shifting 9b972a0f2 driver/tcpm/it83xx, it8xxx2: ITE inactive port return from HOOK a499d8fd4 driver/tcpm/it83xx, it8xxx2: set sleep mask for mixed TCPC case ed62e2583 TCPMv2: don't set the sleep mask for TCPC embedded in EC c962696e8 motion_sensor: Remove |int_signal| field 86b216794 ocpc: modify pre-charge target condition 6f8336eb4 dedede: Set MKBP event wake mask to 0 02d034df0 dedede: add stylus fw_config 4f7cd7509 atomic: use atomic_t where it is possible e3ffa0519 mkbp: change the type fifo_entries to atomic_t bb4c47af0 usb: use atomic_t where possible c6e513ee2 power/icelake: Add SLP_S5 as a watched power signal d89e49b20 power: Introduce S4 as a real power state ba8a3c9c0 chgstv2: Use chipset_in_state instead of naming states 23a975d12 i2c: Use declared initializers for i2c_ports: boards a-l 35865dbec TCPMv2: Guard DATA_RESET using CONFIG_USB_PD_DATA_RESET_MSG d4d8243ed i2c: Use declared initializers for i2c_ports: baseboards eba8d0305 RAA489000: Fixed RAA489000 max charging current e78b83e0f TCPMv2: Delay Data Reset until mode entry request 6230e60fc TCPMv2: Support Data Reset as DFP, initiator 412246836 intel_x86: Apply chipset resume init and suspend complete hooks f2809b72c config: rename CONFIG_HOSTCMD_ESPI to CONFIG_HOST_INTERFACE_ESPI BRANCH=None BUG=b:202796060 b:207805856 b:167983049 b:208318528 b:181983966 BUG=b:207328258 b:195416058 b:205285137 b:199919093 b:207055975 BUG=b:129159505 b:204947672 b:141363146 b:207082842 b:205675485 TEST=`make -j buildall` Signed-off-by: Aseda Aboagye <aaboagye@google.com> Change-Id: I980351977e11088a130e478df0701be4715f049b
Diffstat (limited to 'board/felwinter')
-rw-r--r--board/felwinter/board.c52
-rw-r--r--board/felwinter/board.h15
-rw-r--r--board/felwinter/ec.tasklist1
-rw-r--r--board/felwinter/fans.c12
-rw-r--r--board/felwinter/fw_config.c5
-rw-r--r--board/felwinter/fw_config.h14
-rw-r--r--board/felwinter/gpio.inc7
-rw-r--r--board/felwinter/i2c.c1
-rw-r--r--board/felwinter/pwm.c4
-rw-r--r--board/felwinter/sensors.c6
-rw-r--r--board/felwinter/usbc_config.c5
11 files changed, 94 insertions, 28 deletions
diff --git a/board/felwinter/board.c b/board/felwinter/board.c
index cd7768d0ea..8eac363159 100644
--- a/board/felwinter/board.c
+++ b/board/felwinter/board.c
@@ -63,6 +63,13 @@ static void board_chipset_suspend(void)
}
DECLARE_HOOK(HOOK_CHIPSET_SUSPEND, board_chipset_suspend, HOOK_PRIO_DEFAULT);
+/* Called on AP S5 -> S3 transition */
+static void board_chipset_startup(void)
+{
+ pen_config();
+}
+DECLARE_HOOK(HOOK_CHIPSET_STARTUP, board_chipset_startup, HOOK_PRIO_DEFAULT);
+
#ifdef CONFIG_CHARGE_RAMP_SW
/*
@@ -114,5 +121,50 @@ static void board_init(void)
if (ec_cfg_usb_mb_type() == MB_USB4_TBT)
mb_update_usb4_tbt_config_from_config();
+ if (ec_cfg_stylus() == STYLUS_PRSENT)
+ gpio_enable_interrupt(GPIO_PEN_DET_ODL);
}
DECLARE_HOOK(HOOK_INIT, board_init, HOOK_PRIO_DEFAULT);
+
+
+/**
+ * Deferred function to handle pen detect change
+ */
+static void pendetect_deferred(void)
+{
+ static int debounced_pen_detect;
+ int pen_detect = !gpio_get_level(GPIO_PEN_DET_ODL);
+
+ if (pen_detect == debounced_pen_detect)
+ return;
+
+ debounced_pen_detect = pen_detect;
+
+ if (!chipset_in_state(CHIPSET_STATE_ANY_OFF))
+ gpio_set_level(GPIO_EN_PP5000_PEN, debounced_pen_detect);
+}
+DECLARE_DEFERRED(pendetect_deferred);
+
+void pen_detect_interrupt(enum gpio_signal s)
+{
+ /* Trigger deferred notification of pen detect change */
+ hook_call_deferred(&pendetect_deferred_data,
+ 500 * MSEC);
+}
+
+void pen_config(void)
+{
+ if (ec_cfg_stylus() == STYLUS_PRSENT) {
+ /* Make sure pen detection is triggered or not at resume */
+ if (!gpio_get_level(GPIO_PEN_DET_ODL))
+ gpio_set_level(GPIO_EN_PP5000_PEN, 1);
+ else
+ gpio_set_level(GPIO_EN_PP5000_PEN, 0);
+ }
+}
+
+static void board_chipset_shutdown(void)
+{
+ gpio_set_level(GPIO_EN_PP5000_PEN, 0);
+}
+DECLARE_HOOK(HOOK_CHIPSET_SHUTDOWN, board_chipset_shutdown, HOOK_PRIO_DEFAULT);
diff --git a/board/felwinter/board.h b/board/felwinter/board.h
index 8f7c03dfb7..064ce51e54 100644
--- a/board/felwinter/board.h
+++ b/board/felwinter/board.h
@@ -10,11 +10,6 @@
#include "compile_time_macros.h"
-/*
- * Early brya boards are not set up for vivaldi
- */
-#undef CONFIG_KEYBOARD_VIVALDI
-
/* Baseboard features */
#include "baseboard.h"
@@ -77,6 +72,9 @@
#define CONFIG_USB_PD_TCPM_PS8815
#define CONFIG_USBC_RETIMER_INTEL_BB
+/* I2C control host command */
+#define CONFIG_HOSTCMD_I2C_CONTROL
+
#define CONFIG_USBC_PPC_SYV682X
#define CONFIG_USBC_PPC_NX20P3483
@@ -111,6 +109,7 @@
#define GPIO_PCH_RTCRST GPIO_EC_PCH_RTCRST
#define GPIO_PCH_SLP_S0_L GPIO_SYS_SLP_S0IX_L
#define GPIO_PCH_SLP_S3_L GPIO_SLP_S3_L
+#define GPIO_TEMP_SENSOR_POWER GPIO_SEQ_EC_DSW_PWROK
#define GMR_TABLET_MODE_GPIO_L GPIO_TABLET_MODE_L
/*
@@ -173,7 +172,7 @@
/* Thermal features */
#define CONFIG_THERMISTOR
#define CONFIG_TEMP_SENSOR
-#define CONFIG_TEMP_SENSOR_POWER_GPIO GPIO_SEQ_EC_DSW_PWROK
+#define CONFIG_TEMP_SENSOR_POWER
#define CONFIG_STEINHART_HART_3V3_30K9_47K_4050B
#define CONFIG_FANS FAN_CH_COUNT
@@ -239,6 +238,10 @@ enum mft_channel {
MFT_CH_COUNT
};
+void pen_detect_interrupt(enum gpio_signal s);
+
+void pen_config(void);
+
#endif /* !__ASSEMBLER__ */
#endif /* __CROS_EC_BOARD_H */
diff --git a/board/felwinter/ec.tasklist b/board/felwinter/ec.tasklist
index 41d86da3d6..6d995d6b44 100644
--- a/board/felwinter/ec.tasklist
+++ b/board/felwinter/ec.tasklist
@@ -19,6 +19,7 @@
TASK_ALWAYS(MOTIONSENSE, motion_sense_task, NULL, VENTI_TASK_STACK_SIZE) \
TASK_NOTEST(KEYPROTO, keyboard_protocol_task, NULL, LARGER_TASK_STACK_SIZE) \
TASK_NOTEST(CHIPSET, chipset_task, NULL, BASEBOARD_CHIPSET_TASK_STACK_SIZE) \
+ TASK_ALWAYS(USB_MUX, usb_mux_task, NULL, VENTI_TASK_STACK_SIZE) \
TASK_ALWAYS(HOSTCMD, host_command_task, NULL, LARGER_TASK_STACK_SIZE) \
TASK_ALWAYS(CONSOLE, console_task, NULL, CONSOLE_TASK_STACK_SIZE) \
TASK_ALWAYS(POWERBTN, power_button_task, NULL, BASEBOARD_POWERBTN_TASK_STACK_SIZE) \
diff --git a/board/felwinter/fans.c b/board/felwinter/fans.c
index d966056331..9a29f0f1d1 100644
--- a/board/felwinter/fans.c
+++ b/board/felwinter/fans.c
@@ -30,16 +30,10 @@ static const struct fan_conf fan_conf_0 = {
.enable_gpio = GPIO_EN_PP5000_FAN,
};
-/*
- * TOOD(b/180681346): need to update for real fan
- *
- * Prototype fan spins at about 7200 RPM at 100% PWM.
- * Set minimum at around 30% PWM.
- */
static const struct fan_rpm fan_rpm_0 = {
- .rpm_min = 2200,
- .rpm_start = 2200,
- .rpm_max = 7200,
+ .rpm_min = 2000,
+ .rpm_start = 2000,
+ .rpm_max = 5200,
};
const struct fan_t fans[FAN_CH_COUNT] = {
diff --git a/board/felwinter/fw_config.c b/board/felwinter/fw_config.c
index d733df3208..4228394d5b 100644
--- a/board/felwinter/fw_config.c
+++ b/board/felwinter/fw_config.c
@@ -48,3 +48,8 @@ enum ec_cfg_usb_mb_type ec_cfg_usb_mb_type(void)
{
return fw_config.usb_mb;
}
+
+enum ec_cfg_stylus_type ec_cfg_stylus(void)
+{
+ return fw_config.stylus;
+}
diff --git a/board/felwinter/fw_config.h b/board/felwinter/fw_config.h
index fb5c374b5d..5f5f956b61 100644
--- a/board/felwinter/fw_config.h
+++ b/board/felwinter/fw_config.h
@@ -29,11 +29,16 @@ enum ec_cfg_usb_mb_type {
MB_USB3_NON_TBT = 1
};
+enum ec_cfg_stylus_type {
+ STYLUS_ABSENT = 0,
+ STYLUS_PRSENT = 1
+};
+
union brya_cbi_fw_config {
struct {
enum ec_cfg_usb_db_type usb_db : 3;
uint32_t wifi : 2;
- uint32_t stylus : 1;
+ enum ec_cfg_stylus_type stylus : 1;
enum ec_cfg_keyboard_backlight_type kb_bl : 1;
uint32_t audio : 3;
uint32_t thermal : 2;
@@ -66,3 +71,10 @@ enum ec_cfg_usb_db_type ec_cfg_usb_db_type(void);
enum ec_cfg_usb_mb_type ec_cfg_usb_mb_type(void);
#endif /* __BOARD_BRYA_FW_CONFIG_H_ */
+
+/**
+ * Get the stylus type from FW_CONFIG.
+ *
+ * @return the stylus type.
+ */
+enum ec_cfg_stylus_type ec_cfg_stylus(void);
diff --git a/board/felwinter/gpio.inc b/board/felwinter/gpio.inc
index ba7116847a..86f71a9ea3 100644
--- a/board/felwinter/gpio.inc
+++ b/board/felwinter/gpio.inc
@@ -31,6 +31,7 @@ GPIO_INT(USB_C1_TCPC_INT_ODL, PIN(A, 2), GPIO_INT_FALLING, tcpc_alert
GPIO_INT(USB_C2_BC12_INT_ODL, PIN(8, 3), GPIO_INT_FALLING, bc12_interrupt)
GPIO_INT(USB_C2_PPC_INT_ODL, PIN(7, 0), GPIO_INT_FALLING, ppc_interrupt)
GPIO_INT(USB_C2_RT_INT_ODL, PIN(4, 1), GPIO_INT_FALLING, retimer_interrupt)
+GPIO_INT(PEN_DET_ODL, PIN(D, 4), GPIO_INT_BOTH, pen_detect_interrupt)
/* USED GPIOs: */
GPIO(CCD_MODE_ODL, PIN(E, 5), GPIO_INPUT)
@@ -67,6 +68,7 @@ GPIO(EC_PCH_WAKE_R_ODL, PIN(C, 0), GPIO_ODR_HIGH)
GPIO(EC_PROCHOT_ODL, PIN(6, 3), GPIO_ODR_HIGH)
GPIO(EN_PP5000_FAN, PIN(6, 1), GPIO_OUT_HIGH)
GPIO(EN_PP5000_USBA_R, PIN(D, 7), GPIO_OUT_LOW)
+GPIO(EN_PP5000_PEN, PIN(E, 1), GPIO_OUT_LOW)
GPIO(EN_S5_RAILS, PIN(B, 6), GPIO_OUT_LOW)
GPIO(IMVP9_VRRDY_OD, PIN(4, 3), GPIO_INPUT)
GPIO(PCH_PWROK, PIN(7, 2), GPIO_OUT_LOW)
@@ -124,11 +126,10 @@ UNUSED(PIN(3, 2)) /* GPO32/TRIS_L */
UNUSED(PIN(3, 5)) /* GPO35/CR_SOUT4/TEST_L */
UNUSED(PIN(6, 6)) /* GPIO66 */
UNUSED(PIN(C, 3)) /* GPIOC3 */
-UNUSED(PIN(E, 1)) /* GPIOE1 */
-UNUSED(PIN(D, 4)) /* GPIOD4 */
UNUSED(PIN(C, 6)) /* GPIOC6 */
UNUSED(PIN(6, 2)) /* GPIO62 */
UNUSED(PIN(B, 1)) /* GPIOB1 */
+UNUSED(PIN(5, 7)) /* GPIO57/SER_IRQ/ESPI_ALERT_L */
/* Pre-configured PSL balls: J8 K6 */
@@ -143,7 +144,9 @@ GPIO(EC_KSO_02_INV, PIN(1, 7), GPIO_OUT_LOW)
/* GPIO02_P2 to PU */
/* GPIO03_P2 to PU */
+IOEX(USB_C1_RT_RST_ODL, EXPIN(IOEX_C1_NCT38XX, 0, 2), GPIO_ODR_LOW)
IOEX(USB_C1_OC_ODL, EXPIN(IOEX_C1_NCT38XX, 0, 4), GPIO_ODR_HIGH)
+IOEX(USB_C1_FRS_EN, EXPIN(IOEX_C1_NCT38XX, 0, 6), GPIO_LOW)
IOEX(USB_C2_RT_RST_ODL, EXPIN(IOEX_C2_NCT38XX, 0, 2), GPIO_ODR_LOW)
IOEX(USB_C2_OC_ODL, EXPIN(IOEX_C2_NCT38XX, 0, 4), GPIO_ODR_HIGH)
diff --git a/board/felwinter/i2c.c b/board/felwinter/i2c.c
index b54cc98de8..a850c12544 100644
--- a/board/felwinter/i2c.c
+++ b/board/felwinter/i2c.c
@@ -49,6 +49,7 @@ const struct i2c_port_t i2c_ports[] = {
.kbps = 400,
.scl = GPIO_EC_I2C_USB_C1_TCPC_SCL,
.sda = GPIO_EC_I2C_USB_C1_TCPC_SDA,
+ .flags = I2C_PORT_FLAG_DYNAMIC_SPEED,
},
{
/* I2C5 */
diff --git a/board/felwinter/pwm.c b/board/felwinter/pwm.c
index 985305449b..1312135a2c 100644
--- a/board/felwinter/pwm.c
+++ b/board/felwinter/pwm.c
@@ -24,8 +24,8 @@ const struct pwm_t pwm_channels[] = {
},
[PWM_CH_FAN] = {
.channel = 5,
- .flags = PWM_CONFIG_OPEN_DRAIN,
- .freq = 25000
+ .flags = PWM_CONFIG_OPEN_DRAIN | PWM_CONFIG_DSLEEP,
+ .freq = 1000
},
};
BUILD_ASSERT(ARRAY_SIZE(pwm_channels) == PWM_CH_COUNT);
diff --git a/board/felwinter/sensors.c b/board/felwinter/sensors.c
index b25d39f136..437fc8bcde 100644
--- a/board/felwinter/sensors.c
+++ b/board/felwinter/sensors.c
@@ -68,10 +68,8 @@ struct motion_sensor_t motion_sensors[] = {
.drv = &lis2dw12_drv,
.mutex = &g_lid_accel_mutex,
.drv_data = &g_lis2dw12_data,
- .int_signal = GPIO_EC_ACCEL_INT_R_L,
.port = I2C_PORT_SENSOR,
.i2c_spi_addr_flags = LIS2DW12_ADDR0,
- .flags = MOTIONSENSE_FLAG_INT_SIGNAL,
.rot_standard_ref = &lid_standard_ref, /* identity matrix */
.default_range = 2, /* g */
.min_frequency = LIS2DW12_ODR_MIN_VAL,
@@ -98,8 +96,6 @@ struct motion_sensor_t motion_sensors[] = {
.mutex = &g_base_accel_mutex,
.drv_data = LSM6DSO_ST_DATA(lsm6dso_data,
MOTIONSENSE_TYPE_ACCEL),
- .int_signal = GPIO_EC_IMU_INT_R_L,
- .flags = MOTIONSENSE_FLAG_INT_SIGNAL,
.port = I2C_PORT_SENSOR,
.i2c_spi_addr_flags = LSM6DSO_ADDR0_FLAGS,
.rot_standard_ref = &base_standard_ref,
@@ -128,8 +124,6 @@ struct motion_sensor_t motion_sensors[] = {
.mutex = &g_base_accel_mutex,
.drv_data = LSM6DSO_ST_DATA(lsm6dso_data,
MOTIONSENSE_TYPE_GYRO),
- .int_signal = GPIO_EC_IMU_INT_R_L,
- .flags = MOTIONSENSE_FLAG_INT_SIGNAL,
.port = I2C_PORT_SENSOR,
.i2c_spi_addr_flags = LSM6DSO_ADDR0_FLAGS,
.default_range = 1000 | ROUND_UP_FLAG, /* dps */
diff --git a/board/felwinter/usbc_config.c b/board/felwinter/usbc_config.c
index bb2e6c2218..5fa144e364 100644
--- a/board/felwinter/usbc_config.c
+++ b/board/felwinter/usbc_config.c
@@ -56,7 +56,8 @@ struct tcpc_config_t tcpc_config[] = {
},
.drv = &ps8xxx_tcpm_drv,
.flags = TCPC_FLAGS_TCPCI_REV2_0 |
- TCPC_FLAGS_TCPCI_REV2_0_NO_VSAFE0V,
+ TCPC_FLAGS_TCPCI_REV2_0_NO_VSAFE0V |
+ TCPC_FLAGS_CONTROL_VCONN,
},
};
BUILD_ASSERT(ARRAY_SIZE(tcpc_config) == USBC_PORT_COUNT);
@@ -210,7 +211,7 @@ __override int bb_retimer_power_enable(const struct usb_mux *me, bool enable)
int rst_signal;
if (me->usb_port == USBC_PORT_C1)
- rst_signal = GPIO_USB_C1_RT_RST_R_ODL;
+ rst_signal = IOEX_USB_C1_RT_RST_ODL;
else if (me->usb_port == USBC_PORT_C2)
rst_signal = IOEX_USB_C2_RT_RST_ODL;
else