summaryrefslogtreecommitdiff
path: root/board
diff options
context:
space:
mode:
Diffstat (limited to 'board')
-rw-r--r--board/adlrvpp_mchp1521/board.h3
-rw-r--r--board/agah/charger_isl9241.c7
-rw-r--r--board/agah/usbc_config.c2
-rw-r--r--board/ambassador/board.c4
-rw-r--r--board/anahera/board.c12
-rw-r--r--board/anahera/board.h2
-rw-r--r--board/anahera/charger.c7
-rw-r--r--board/atlas/board.c32
-rw-r--r--board/atlas/board.h4
-rw-r--r--board/banshee/charger.c7
-rw-r--r--board/beadrix/board.c13
-rw-r--r--board/beetley/board.c13
-rw-r--r--board/beetley/board.h5
-rw-r--r--board/bellis/board.c8
-rw-r--r--board/bellis/board.h1
-rw-r--r--board/blipper/board.c13
-rw-r--r--board/blipper/board.h5
-rw-r--r--board/boten/board.c13
-rw-r--r--board/boten/board.h5
-rw-r--r--board/brask/led.c4
-rw-r--r--board/brya/charger.c7
-rw-r--r--board/bugzzy/board.c13
-rw-r--r--board/bugzzy/board.h13
-rw-r--r--board/burnet/board.c8
-rw-r--r--board/burnet/board.h4
-rw-r--r--board/c2d2/board.h1
-rw-r--r--board/cappy2/board.c13
-rw-r--r--board/cappy2/board.h5
-rw-r--r--board/casta/board.c3
-rw-r--r--board/cerise/board.c8
-rw-r--r--board/cerise/board.h1
-rw-r--r--board/cherry/board.c7
-rw-r--r--board/chocodile_vpdmcu/board.h2
-rw-r--r--board/coachz/board.c9
-rw-r--r--board/coachz/board.h2
-rw-r--r--board/coffeecake/board.h1
-rw-r--r--board/coral/board.c8
-rw-r--r--board/coral/board.h4
-rw-r--r--board/corori/board.c13
-rw-r--r--board/corori/board.h5
-rw-r--r--board/corori2/board.c13
-rw-r--r--board/corori2/board.h8
-rw-r--r--board/cret/board.c13
-rw-r--r--board/cret/board.h5
-rw-r--r--board/crota/board.c2
-rw-r--r--board/crota/board.h2
-rw-r--r--board/crota/charger.c7
-rw-r--r--board/crota/sensors.c21
-rw-r--r--board/damu/board.c8
-rw-r--r--board/damu/board.h1
-rw-r--r--board/dibbi/board.c374
-rw-r--r--board/dibbi/board.h145
-rw-r--r--board/dibbi/build.mk14
-rw-r--r--board/dibbi/ec.tasklist16
-rw-r--r--board/dibbi/gpio.inc142
-rw-r--r--board/dibbi/led.c38
-rw-r--r--board/dibbi/usb_pd_policy.c69
-rw-r--r--board/dibbi/vif_override.xml3
-rw-r--r--board/dingdong/board.h1
-rw-r--r--board/discovery-stm32f072/board.h1
-rw-r--r--board/discovery/board.h11
-rw-r--r--board/dojo/board.c7
-rw-r--r--board/dooly/board.c4
-rw-r--r--board/drawcia/board.c10
-rw-r--r--board/drawcia_riscv/board.c10
-rw-r--r--board/driblee/board.c13
-rw-r--r--board/driblee/board.h5
-rw-r--r--board/drobit/board.c14
-rw-r--r--board/drobit/board.h1
-rw-r--r--board/eldrid/board.c9
-rw-r--r--board/eldrid/board.h2
-rw-r--r--board/elm/board.c9
-rw-r--r--board/elm/board.h5
-rw-r--r--board/eve/board.c8
-rw-r--r--board/eve/board.h4
-rw-r--r--board/ezkinil/board.c13
-rw-r--r--board/ezkinil/board.h3
-rw-r--r--board/felwinter/board.h1
-rw-r--r--board/felwinter/charger_isl9241.c8
-rw-r--r--board/fennel/board.c8
-rw-r--r--board/fennel/board.h1
-rw-r--r--board/fizz/board.c4
-rw-r--r--board/fluffy/board.h1
-rw-r--r--board/fusb307bgevb/board.h1
-rw-r--r--board/gaelin/board.c50
-rw-r--r--board/gaelin/board.h61
-rw-r--r--board/gaelin/build.mk1
-rw-r--r--board/gaelin/ec.tasklist5
-rw-r--r--board/gaelin/fans.c12
-rw-r--r--board/gaelin/gpio.inc91
-rw-r--r--board/gaelin/i2c.c52
-rw-r--r--board/gaelin/led.c4
-rw-r--r--board/gaelin/pwm.c4
-rw-r--r--board/gaelin/thermal.c140
-rw-r--r--board/gaelin/usbc_config.c289
-rw-r--r--board/gaelin/usbc_config.h9
-rw-r--r--board/galtic/board.c12
-rw-r--r--board/gelarshie/board.c9
-rw-r--r--board/gelarshie/board.h4
-rw-r--r--board/gimble/board.c13
-rw-r--r--board/gimble/board.h2
-rw-r--r--board/gimble/charger.c7
-rw-r--r--board/gooey/board.c13
-rw-r--r--board/gooey/board.h5
-rw-r--r--board/haboki/board.c10
-rw-r--r--board/hammer/board.h3
-rw-r--r--board/hatch_fp/board.h1
-rw-r--r--board/hatch_fp/build.mk4
-rw-r--r--board/herobrine/usbc_config.c8
-rw-r--r--board/hoho/board.h1
-rw-r--r--board/homestar/board.c9
-rw-r--r--board/homestar/board.h3
-rw-r--r--board/host/charger.c3
-rw-r--r--board/hyperdebug/board.c22
-rw-r--r--board/hyperdebug/board.h1
-rw-r--r--board/icarus/board.c8
-rw-r--r--board/icarus/board.h1
-rw-r--r--board/jacuzzi/board.c8
-rw-r--r--board/jacuzzi/board.h1
-rw-r--r--board/kano/charger.c7
-rw-r--r--board/kappa/board.c8
-rw-r--r--board/kappa/board.h1
-rw-r--r--board/kappa/led.c1
-rw-r--r--board/kingoftown/usbc_config.c8
-rw-r--r--board/kinox/board.c4
-rw-r--r--board/kracko/board.c10
-rw-r--r--board/kuldax/led.c4
-rw-r--r--board/kuldax/sensors.c6
-rw-r--r--board/lalala/board.c13
-rw-r--r--board/lalala/board.h5
-rw-r--r--board/lantis/board.c12
-rw-r--r--board/lazor/usbc_config.c8
-rw-r--r--board/lisbon/led.c4
-rw-r--r--board/madoo/board.c14
-rw-r--r--board/madoo/board.h5
-rw-r--r--board/magolor/board.c15
-rw-r--r--board/magolor/board.h5
-rw-r--r--board/makomo/board.c8
-rw-r--r--board/makomo/board.h1
-rw-r--r--board/marasov/battery.c77
-rw-r--r--board/marasov/board.c52
-rw-r--r--board/marasov/board.h217
-rw-r--r--board/marasov/build.mk25
-rw-r--r--board/marasov/charger.c83
-rw-r--r--board/marasov/ec.tasklist26
-rw-r--r--board/marasov/fans.c89
-rw-r--r--board/marasov/fw_config.c46
-rw-r--r--board/marasov/fw_config.h52
-rw-r--r--board/marasov/generated-gpio.inc127
-rw-r--r--board/marasov/gpio.inc38
-rw-r--r--board/marasov/i2c.c81
-rw-r--r--board/marasov/keyboard.c25
-rw-r--r--board/marasov/led.c101
-rw-r--r--board/marasov/pwm.c38
-rw-r--r--board/marasov/sensors.c187
-rw-r--r--board/marasov/usbc_config.c348
-rw-r--r--board/marasov/usbc_config.h17
-rw-r--r--board/marasov/vif_override.xml148
-rw-r--r--board/marzipan/board.c8
-rw-r--r--board/mchpevb1/board.c15
-rw-r--r--board/mchpevb1/board.h3
-rw-r--r--board/metaknight/board.c13
-rw-r--r--board/metaknight/board.h5
-rw-r--r--board/mithrax/board.h1
-rw-r--r--board/mithrax/charger_isl9241.c8
-rw-r--r--board/moli/board.c149
-rw-r--r--board/moli/board.h18
-rw-r--r--board/moli/build.mk1
-rw-r--r--board/moli/fw_config.c73
-rw-r--r--board/moli/fw_config.h53
-rw-r--r--board/moli/gpio.inc12
-rw-r--r--board/moli/led.c4
-rw-r--r--board/mrbland/board.c8
-rw-r--r--board/mrbland/board.h2
-rw-r--r--board/munna/board.c8
-rw-r--r--board/munna/board.h1
-rw-r--r--board/nami/board.c7
-rw-r--r--board/nami/board.h3
-rw-r--r--board/nautilus/board.c20
-rw-r--r--board/nautilus/board.h4
-rw-r--r--board/nocturne/board.c13
-rw-r--r--board/nocturne/board.h11
-rw-r--r--board/nocturne_fp/board.h1
-rw-r--r--board/nocturne_fp/build.mk4
-rw-r--r--board/nucleo-dartmonkey/build.mk2
-rw-r--r--board/nucleo-f072rb/board.h1
-rw-r--r--board/nucleo-f411re/board.h1
-rw-r--r--board/nucleo-f412zg/build.mk2
-rw-r--r--board/nucleo-g431rb/board.h1
-rw-r--r--board/nucleo-h743zi/build.mk2
-rw-r--r--board/oak/board.c7
-rw-r--r--board/oak/board.h5
-rw-r--r--board/osiris/charger.c7
-rw-r--r--board/pazquel/board.c8
-rw-r--r--board/pdeval-stm32f072/board.h1
-rw-r--r--board/pico/board.c8
-rw-r--r--board/pico/board.h1
-rw-r--r--board/pirika/board.c14
-rw-r--r--board/plankton/board.h1
-rw-r--r--board/polyberry/board.h1
-rw-r--r--board/pompom/board.c51
-rw-r--r--board/pompom/board.h3
-rw-r--r--board/poppy/board.c9
-rw-r--r--board/poppy/board.h3
-rw-r--r--board/primus/board.c7
-rw-r--r--board/primus/charger.c7
-rw-r--r--board/prism/board.h1
-rw-r--r--board/puff/board.c4
-rw-r--r--board/quackingstick/board.c8
-rw-r--r--board/quackingstick/board.h2
-rw-r--r--board/rainier/board.c4
-rw-r--r--board/rainier/board.h1
-rw-r--r--board/rammus/board.c20
-rw-r--r--board/rammus/board.h4
-rw-r--r--board/redrix/charger.c7
-rw-r--r--board/reef/board.c8
-rw-r--r--board/reef/board.h4
-rw-r--r--board/reef_it8320/board.c8
-rw-r--r--board/reef_it8320/board.h4
-rw-r--r--board/reef_mchp/board.c8
-rw-r--r--board/reef_mchp/board.h4
-rw-r--r--board/sasuke/board.c13
-rw-r--r--board/sasuke/board.h5
-rw-r--r--board/sasukette/board.c13
-rw-r--r--board/sasukette/board.h5
-rw-r--r--board/scarlet/board.c7
-rw-r--r--board/scarlet/board.h4
-rw-r--r--board/servo_micro/board.h1
-rw-r--r--board/servo_v4/board.h3
-rw-r--r--board/servo_v4/usb_pd_policy.c4
-rw-r--r--board/servo_v4p1/board.h1
-rw-r--r--board/servo_v4p1/usb_pd_policy.c4
-rw-r--r--board/shotzo/board.c4
-rw-r--r--board/stern/board.c8
-rw-r--r--board/stern/board.h1
-rw-r--r--board/stm32f446e-eval/board.h1
-rw-r--r--board/stm32l476g-eval/board.h1
-rw-r--r--board/storo/board.c13
-rw-r--r--board/storo/board.h5
-rw-r--r--board/sweetberry/board.h1
-rw-r--r--board/taeko/board.c13
-rw-r--r--board/taeko/board.h3
-rw-r--r--board/taeko/charger.c7
-rw-r--r--board/taniks/board.c13
-rw-r--r--board/taniks/board.h3
-rw-r--r--board/taniks/charger.c7
-rw-r--r--board/terrador/board.c1
-rw-r--r--board/tglrvp_ish/board.h5
-rw-r--r--board/tigertail/board.h1
-rw-r--r--board/trogdor/usbc_config.c8
-rw-r--r--board/twinkie/board.h3
-rw-r--r--board/vell/board.h2
-rw-r--r--board/vell/charger.c12
-rw-r--r--board/vilboz/board.c13
-rw-r--r--board/vilboz/board.h1
-rw-r--r--board/volmar/charger.c7
-rw-r--r--board/waddledee/board.c12
-rw-r--r--board/waddledoo/board.c13
-rw-r--r--board/waddledoo/board.h9
-rw-r--r--board/waddledoo2/board.c13
-rw-r--r--board/waddledoo2/board.h5
-rw-r--r--board/wheelie/board.c12
-rw-r--r--board/willow/board.c8
-rw-r--r--board/willow/board.h1
-rw-r--r--board/woomax/board.c2
-rw-r--r--board/wormdingler/board.c9
-rw-r--r--board/wormdingler/board.h2
267 files changed, 1479 insertions, 3578 deletions
diff --git a/board/adlrvpp_mchp1521/board.h b/board/adlrvpp_mchp1521/board.h
index 645bfc0598..bcd46acf25 100644
--- a/board/adlrvpp_mchp1521/board.h
+++ b/board/adlrvpp_mchp1521/board.h
@@ -140,9 +140,6 @@
/* Use internal silicon 32KHz oscillator */
#undef CONFIG_CLOCK_SRC_EXTERNAL
-/* Free up flash space. */
-#undef CONFIG_CONSOLE_CMDHELP
-
#ifndef __ASSEMBLER__
enum adlrvp_i2c_channel {
diff --git a/board/agah/charger_isl9241.c b/board/agah/charger_isl9241.c
index d5f3d1a0b4..47e8261f78 100644
--- a/board/agah/charger_isl9241.c
+++ b/board/agah/charger_isl9241.c
@@ -196,6 +196,13 @@ int board_set_active_charge_port(int port)
return EC_SUCCESS;
}
+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);
+}
+
static const struct charge_port_info bj_power = {
/* 150W (also default) */
.voltage = 19500,
diff --git a/board/agah/usbc_config.c b/board/agah/usbc_config.c
index d078ef59ac..a8bad0f121 100644
--- a/board/agah/usbc_config.c
+++ b/board/agah/usbc_config.c
@@ -149,7 +149,7 @@ const static struct usb_mux_chain usbc2_ps8818 = {
&(const struct usb_mux){
.usb_port = USBC_PORT_C2,
.i2c_port = I2C_PORT_USB_C2_TCPC,
- .i2c_addr_flags = PS8818_I2C_ADDR0_FLAGS,
+ .i2c_addr_flags = PS8818_I2C_ADDR_FLAGS,
.driver = &ps8818_usb_retimer_driver,
.board_set = &board_ps8818_mux_set,
},
diff --git a/board/ambassador/board.c b/board/ambassador/board.c
index 3eff9215bc..f2bc7557ec 100644
--- a/board/ambassador/board.c
+++ b/board/ambassador/board.c
@@ -88,8 +88,8 @@ uint16_t tcpc_get_alert_status(void)
}
/* Called when the charge manager has switched to a new port. */
-__override void board_set_charge_limit(int port, int supplier, int charge_ma,
- int max_ma, int charge_mv)
+void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
+ int charge_mv)
{
/* Blink alert if insufficient power per system_can_boot_ap(). */
int insufficient_power =
diff --git a/board/anahera/board.c b/board/anahera/board.c
index cd9eb30870..e087d629a7 100644
--- a/board/anahera/board.c
+++ b/board/anahera/board.c
@@ -64,3 +64,15 @@ enum battery_present battery_hw_present(void)
/* The GPIO is low when the battery is physically present */
return gpio_get_level(GPIO_EC_BATT_PRES_ODL) ? BP_NO : BP_YES;
}
+
+__override void board_set_charge_limit(int port, int supplier, int charge_ma,
+ int max_ma, int charge_mv)
+{
+ /*
+ * Limit the input current to 95% negotiated limit,
+ * to account for the charger chip margin.
+ */
+ charge_ma = charge_ma * 95 / 100;
+ charge_set_input_current_limit(
+ MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
+}
diff --git a/board/anahera/board.h b/board/anahera/board.h
index 82ba5a4e1c..18360171e3 100644
--- a/board/anahera/board.h
+++ b/board/anahera/board.h
@@ -33,8 +33,6 @@
#define CONFIG_USB_PORT_POWER_DUMB
#define CONFIG_USBC_RETIMER_PS8811
-#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 5
-
/* USB Type C and USB PD defines */
#define CONFIG_USB_PD_REQUIRE_AP_MODE_ENTRY
diff --git a/board/anahera/charger.c b/board/anahera/charger.c
index 7fabd2082e..a4fa209246 100644
--- a/board/anahera/charger.c
+++ b/board/anahera/charger.c
@@ -81,3 +81,10 @@ int board_set_active_charge_port(int port)
return EC_SUCCESS;
}
+
+__overridable 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);
+}
diff --git a/board/atlas/board.c b/board/atlas/board.c
index d2562d43d3..6fbbb64b16 100644
--- a/board/atlas/board.c
+++ b/board/atlas/board.c
@@ -531,15 +531,39 @@ int board_set_active_charge_port(int charge_port)
return EC_SUCCESS;
}
+/*
+ * Limit the input current to 95% negotiated limit,
+ * to account for the charger chip margin.
+ */
+
+static int charger_derate(int current)
+{
+ return current * 95 / 100;
+}
+
static void board_charger_init(void)
{
- charger_set_input_current_limit(
- CHARGER_SOLO,
- PD_MAX_CURRENT_MA *
- (100 - CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT) / 100);
+ charger_set_input_current_limit(CHARGER_SOLO,
+ charger_derate(PD_MAX_CURRENT_MA));
}
DECLARE_HOOK(HOOK_INIT, board_charger_init, HOOK_PRIO_DEFAULT);
+/**
+ * Set the charge limit based upon desired maximum.
+ *
+ * @param port Port number.
+ * @param supplier Charge supplier type.
+ * @param charge_ma Desired charge limit (mA).
+ * @param charge_mv Negotiated charge voltage (mV).
+ */
+void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
+ int charge_mv)
+{
+ charge_ma = charger_derate(charge_ma);
+ charge_set_input_current_limit(
+ MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
+}
+
static void board_chipset_suspend(void)
{
gpio_set_level(GPIO_KBD_BL_EN, 0);
diff --git a/board/atlas/board.h b/board/atlas/board.h
index 3dbce640bb..9718ab7cdd 100644
--- a/board/atlas/board.h
+++ b/board/atlas/board.h
@@ -77,9 +77,7 @@
#define CONFIG_CHARGER
#define CONFIG_CHARGER_ISL9238
#define CONFIG_CHARGER_DISCHARGE_ON_AC
-#define CONFIG_CHARGER_DEFAULT_CURRENT_LIMIT 512
-#define CONFIG_CHARGER_MIN_INPUT_CURRENT_LIMIT 512
-#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 5
+#define CONFIG_CHARGER_INPUT_CURRENT 512
#define CONFIG_CHARGER_PROFILE_OVERRIDE
#define CONFIG_CHARGER_PSYS
#define CONFIG_CHARGER_PSYS_READ
diff --git a/board/banshee/charger.c b/board/banshee/charger.c
index 7a16fcd5cb..88f5b85a41 100644
--- a/board/banshee/charger.c
+++ b/board/banshee/charger.c
@@ -79,3 +79,10 @@ int board_set_active_charge_port(int port)
return EC_SUCCESS;
}
+
+__overridable 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);
+}
diff --git a/board/beadrix/board.c b/board/beadrix/board.c
index 24c6cb960e..5cea32f90c 100644
--- a/board/beadrix/board.c
+++ b/board/beadrix/board.c
@@ -474,6 +474,19 @@ int board_set_active_charge_port(int port)
return EC_SUCCESS;
}
+/* Vconn control for integrated ITE TCPC */
+void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
+ int charge_mv)
+{
+ int icl = MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT);
+
+ /*
+ * TODO(b/151955431): Characterize the input current limit in case a
+ * scaling needs to be applied here
+ */
+ charge_set_input_current_limit(icl, charge_mv);
+}
+
__override void typec_set_source_current_limit(int port, enum tcpc_rp_value rp)
{
if (port < 0 || port > CONFIG_USB_PD_PORT_MAX_COUNT)
diff --git a/board/beetley/board.c b/board/beetley/board.c
index 89a1d6b13f..f6b1f1008c 100644
--- a/board/beetley/board.c
+++ b/board/beetley/board.c
@@ -384,6 +384,19 @@ uint16_t tcpc_get_alert_status(void)
return status;
}
+void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
+ int charge_mv)
+{
+ int icl = MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT);
+
+ /*
+ * b/147463641: The charger IC seems to overdraw ~4%, therefore we
+ * reduce our target accordingly.
+ */
+ icl = icl * 96 / 100;
+ charge_set_input_current_limit(icl, charge_mv);
+}
+
__override void typec_set_source_current_limit(int port, enum tcpc_rp_value rp)
{
if (port < 0 || port > board_get_usb_pd_port_count())
diff --git a/board/beetley/board.h b/board/beetley/board.h
index b05b8e2eb5..a70ee73ebb 100644
--- a/board/beetley/board.h
+++ b/board/beetley/board.h
@@ -27,11 +27,6 @@
/* Charger */
#define CONFIG_CHARGE_RAMP_HW
#define CONFIG_CHARGER_RAA489000
-/*
- * b/147463641: The charger IC seems to overdraw ~4%, therefore we
- * reduce our target accordingly.
- */
-#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 4
#define PD_MAX_VOLTAGE_MV 20000
#define CONFIG_CHARGER_SENSE_RESISTOR_AC 10
#define CONFIG_CHARGER_SENSE_RESISTOR 10
diff --git a/board/bellis/board.c b/board/bellis/board.c
index 3acdb66e4f..e03ae1c36c 100644
--- a/board/bellis/board.c
+++ b/board/bellis/board.c
@@ -236,6 +236,14 @@ int board_set_active_charge_port(int charge_port)
return EC_SUCCESS;
}
+void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
+ int charge_mv)
+{
+ charge_ma = (charge_ma * 95) / 100;
+ charge_set_input_current_limit(
+ MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
+}
+
int board_discharge_on_ac(int enable)
{
int ret, port;
diff --git a/board/bellis/board.h b/board/bellis/board.h
index 0741de5dc7..d502c4c5ef 100644
--- a/board/bellis/board.h
+++ b/board/bellis/board.h
@@ -40,7 +40,6 @@
#define CONFIG_BATTERY_HW_PRESENT_CUSTOM
#define CONFIG_CHARGER_PSYS
-#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 5
#define CONFIG_CHARGER_RUNTIME_CONFIG
diff --git a/board/blipper/board.c b/board/blipper/board.c
index ce1bc27700..766f55579c 100644
--- a/board/blipper/board.c
+++ b/board/blipper/board.c
@@ -536,6 +536,19 @@ uint16_t tcpc_get_alert_status(void)
return status;
}
+void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
+ int charge_mv)
+{
+ int icl = MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT);
+
+ /*
+ * b/147463641: The charger IC seems to overdraw ~4%, therefore we
+ * reduce our target accordingly.
+ */
+ icl = icl * 96 / 100;
+ charge_set_input_current_limit(icl, charge_mv);
+}
+
__override void typec_set_source_current_limit(int port, enum tcpc_rp_value rp)
{
if (port < 0 || port > board_get_usb_pd_port_count())
diff --git a/board/blipper/board.h b/board/blipper/board.h
index 896ebec76a..379a92a007 100644
--- a/board/blipper/board.h
+++ b/board/blipper/board.h
@@ -29,11 +29,6 @@
#define CONFIG_CHARGER_SENSE_RESISTOR 10
#undef CONFIG_USB_PD_TCPC_LPM_EXIT_DEBOUNCE
#define CONFIG_USB_PD_TCPC_LPM_EXIT_DEBOUNCE (100 * MSEC)
-/*
- * b/147463641: The charger IC seems to overdraw ~4%, therefore we
- * reduce our target accordingly.
- */
-#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 4
/* DAC for PSYS */
#define CONFIG_DAC
diff --git a/board/boten/board.c b/board/boten/board.c
index fc70b11ada..c47b9e46f0 100644
--- a/board/boten/board.c
+++ b/board/boten/board.c
@@ -244,6 +244,19 @@ uint16_t tcpc_get_alert_status(void)
return status;
}
+void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
+ int charge_mv)
+{
+ int icl = MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT);
+
+ /*
+ * b/147463641: The charger IC seems to overdraw ~4%, therefore we
+ * reduce our target accordingly.
+ */
+ icl = icl * 96 / 100;
+ charge_set_input_current_limit(icl, charge_mv);
+}
+
__override void typec_set_source_current_limit(int port, enum tcpc_rp_value rp)
{
if (port < 0 || port > board_get_usb_pd_port_count())
diff --git a/board/boten/board.h b/board/boten/board.h
index 2e607f73c1..ec5d25ff9f 100644
--- a/board/boten/board.h
+++ b/board/boten/board.h
@@ -32,11 +32,6 @@
*/
#undef CONFIG_USB_PD_TCPC_LPM_EXIT_DEBOUNCE
#define CONFIG_USB_PD_TCPC_LPM_EXIT_DEBOUNCE (100 * MSEC)
-/*
- * b/147463641: The charger IC seems to overdraw ~4%, therefore we
- * reduce our target accordingly.
- */
-#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 4
/* DAC for PSYS */
#define CONFIG_DAC
diff --git a/board/brask/led.c b/board/brask/led.c
index b86a291625..0a57994ca0 100644
--- a/board/brask/led.c
+++ b/board/brask/led.c
@@ -249,8 +249,8 @@ int led_set_brightness(enum ec_led_id id, const uint8_t *brightness)
else
return set_color(id, LED_OFF, 0);
}
-__override void board_set_charge_limit(int port, int supplier, int charge_ma,
- int max_ma, int charge_mv)
+void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
+ int charge_mv)
{
/* Blink alert if insufficient power per system_can_boot_ap(). */
int insufficient_power =
diff --git a/board/brya/charger.c b/board/brya/charger.c
index 7fabd2082e..a4fa209246 100644
--- a/board/brya/charger.c
+++ b/board/brya/charger.c
@@ -81,3 +81,10 @@ int board_set_active_charge_port(int port)
return EC_SUCCESS;
}
+
+__overridable 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);
+}
diff --git a/board/bugzzy/board.c b/board/bugzzy/board.c
index 443f5f6d2f..5a28fb2c25 100644
--- a/board/bugzzy/board.c
+++ b/board/bugzzy/board.c
@@ -393,6 +393,19 @@ int board_set_active_charge_port(int port)
return EC_SUCCESS;
}
+void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
+ int charge_mv)
+{
+ int icl = MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT);
+
+ /*
+ * b/147463641: The charger IC seems to overdraw ~4%, therefore we
+ * reduce our target accordingly.
+ */
+ icl = icl * 96 / 100;
+ charge_set_input_current_limit(icl, charge_mv);
+}
+
__override void typec_set_source_current_limit(int port, enum tcpc_rp_value rp)
{
if (port < 0 || port > board_get_usb_pd_port_count())
diff --git a/board/bugzzy/board.h b/board/bugzzy/board.h
index 45bdfdc9f3..707314d02a 100644
--- a/board/bugzzy/board.h
+++ b/board/bugzzy/board.h
@@ -43,11 +43,6 @@
#undef CONFIG_CHARGER_SINGLE_CHIP
#undef CONFIG_USB_PD_TCPC_LPM_EXIT_DEBOUNCE
#define CONFIG_USB_PD_TCPC_LPM_EXIT_DEBOUNCE (100 * MSEC)
-/*
- * b/147463641: The charger IC seems to overdraw ~4%, therefore we
- * reduce our target accordingly.
- */
-#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 4
#define CONFIG_BATTERY_CHECK_CHARGE_TEMP_LIMITS
#define CONFIG_CHARGER_PROFILE_OVERRIDE
@@ -188,14 +183,6 @@
#define CONFIG_TABLET_MODE
#define CONFIG_TABLET_MODE_SWITCH
-/* On-body detection */
-#define CONFIG_BODY_DETECTION
-#define CONFIG_BODY_DETECTION_SENSOR BASE_ACCEL
-#define CONFIG_BODY_DETECTION_VAR_NOISE_FACTOR 150 /* % */
-#define CONFIG_GESTURE_DETECTION
-#define CONFIG_GESTURE_DETECTION_MASK BIT(CONFIG_BODY_DETECTION_SENSOR)
-#define CONFIG_GESTURE_HOST_DETECTION
-
/* LIS2DS Lid accel */
#define CONFIG_ACCEL_LIS2DS
diff --git a/board/burnet/board.c b/board/burnet/board.c
index a89250ae34..aa378ca289 100644
--- a/board/burnet/board.c
+++ b/board/burnet/board.c
@@ -222,6 +222,14 @@ int board_set_active_charge_port(int charge_port)
return EC_SUCCESS;
}
+void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
+ int charge_mv)
+{
+ charge_ma = (charge_ma * 95) / 100;
+ charge_set_input_current_limit(
+ MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
+}
+
int board_discharge_on_ac(int enable)
{
int ret, port;
diff --git a/board/burnet/board.h b/board/burnet/board.h
index 5199ae4aaf..6870ccc2d2 100644
--- a/board/burnet/board.h
+++ b/board/burnet/board.h
@@ -8,9 +8,6 @@
#ifndef __CROS_EC_BOARD_H
#define __CROS_EC_BOARD_H
-/* Free up flash space. */
-#undef CONFIG_CMD_KEYBOARD
-
#define VARIANT_KUKUI_JACUZZI
#define VARIANT_KUKUI_BATTERY_SMART
#define VARIANT_KUKUI_CHARGER_ISL9238
@@ -31,7 +28,6 @@
#define CONFIG_BATTERY_COUNT 1
#define CONFIG_CHARGER_PSYS
-#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 5
#define CONFIG_BC12_DETECT_PI3USB9201
diff --git a/board/c2d2/board.h b/board/c2d2/board.h
index c1b450f482..6b1ac69efd 100644
--- a/board/c2d2/board.h
+++ b/board/c2d2/board.h
@@ -34,6 +34,7 @@
#undef CONFIG_UART_RX_DMA
/* Optional features */
+#define CONFIG_STM_HWTIMER32
#define CONFIG_HW_CRC
/* USB Configuration */
diff --git a/board/cappy2/board.c b/board/cappy2/board.c
index 7956ae77f5..de651ac874 100644
--- a/board/cappy2/board.c
+++ b/board/cappy2/board.c
@@ -229,6 +229,19 @@ int board_set_active_charge_port(int port)
return EC_SUCCESS;
}
+void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
+ int charge_mv)
+{
+ int icl = MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT);
+
+ /*
+ * b/147463641: The charger IC seems to overdraw ~4%, therefore we
+ * reduce our target accordingly.
+ */
+ icl = icl * 96 / 100;
+ charge_set_input_current_limit(icl, charge_mv);
+}
+
__override void typec_set_source_current_limit(int port, enum tcpc_rp_value rp)
{
if (port < 0 || port > board_get_usb_pd_port_count())
diff --git a/board/cappy2/board.h b/board/cappy2/board.h
index 8f503b1bcc..b21a20d6e5 100644
--- a/board/cappy2/board.h
+++ b/board/cappy2/board.h
@@ -39,11 +39,6 @@
#define CONFIG_CHARGER_PROFILE_OVERRIDE
#undef CONFIG_USB_PD_TCPC_LPM_EXIT_DEBOUNCE
#define CONFIG_USB_PD_TCPC_LPM_EXIT_DEBOUNCE (100 * MSEC)
-/*
- * b/147463641: The charger IC seems to overdraw ~4%, therefore we
- * reduce our target accordingly.
- */
-#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 4
/* Keyboard */
#undef CONFIG_PWM_KBLIGHT
diff --git a/board/casta/board.c b/board/casta/board.c
index 2ae65c7d86..512a7c224b 100644
--- a/board/casta/board.c
+++ b/board/casta/board.c
@@ -172,8 +172,7 @@ static void set_input_limit_on_ac_removal(void)
if (get_cbi_ssfc_charger() != SSFC_CHARGER_BQ25710)
return;
- charger_set_input_current_limit(0,
- CONFIG_CHARGER_DEFAULT_CURRENT_LIMIT);
+ charger_set_input_current_limit(0, CONFIG_CHARGER_INPUT_CURRENT);
}
DECLARE_HOOK(HOOK_AC_CHANGE, set_input_limit_on_ac_removal, HOOK_PRIO_DEFAULT);
diff --git a/board/cerise/board.c b/board/cerise/board.c
index 9b214f2dae..e3fa60c76a 100644
--- a/board/cerise/board.c
+++ b/board/cerise/board.c
@@ -236,6 +236,14 @@ int board_set_active_charge_port(int charge_port)
return EC_SUCCESS;
}
+void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
+ int charge_mv)
+{
+ charge_ma = (charge_ma * 95) / 100;
+ charge_set_input_current_limit(
+ MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
+}
+
int board_discharge_on_ac(int enable)
{
int ret, port;
diff --git a/board/cerise/board.h b/board/cerise/board.h
index d2c58e9f6e..41d86b956d 100644
--- a/board/cerise/board.h
+++ b/board/cerise/board.h
@@ -28,7 +28,6 @@
#define CONFIG_BATTERY_HW_PRESENT_CUSTOM
#define CONFIG_CHARGER_PSYS
-#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 5
#define CONFIG_CHARGER_RUNTIME_CONFIG
diff --git a/board/cherry/board.c b/board/cherry/board.c
index f8700404ed..c2ad54acb2 100644
--- a/board/cherry/board.c
+++ b/board/cherry/board.c
@@ -262,6 +262,13 @@ const struct usb_mux_chain usb_muxes[CONFIG_USB_PD_PORT_MAX_COUNT] = {
},
};
+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);
+}
+
/* Initialize board. */
static void board_init(void)
{
diff --git a/board/chocodile_vpdmcu/board.h b/board/chocodile_vpdmcu/board.h
index 0e0ff70ab8..ede07dd9a0 100644
--- a/board/chocodile_vpdmcu/board.h
+++ b/board/chocodile_vpdmcu/board.h
@@ -55,6 +55,7 @@
#undef CONFIG_LID_SWITCH
#define CONFIG_LOW_POWER_IDLE
#define CONFIG_LTO
+#define CONFIG_STM_HWTIMER32
#undef CONFIG_TASK_PROFILING
#undef CONFIG_UART_TX_BUF_SIZE
#undef CONFIG_UART_TX_DMA
@@ -71,7 +72,6 @@
#define CONFIG_USB_PD_DECODE_SOP
#define CONFIG_USB_PD_DUAL_ROLE
#define CONFIG_USB_PD_INTERNAL_COMP
-#undef CONFIG_USB_DPM_SM
#define CONFIG_VBOOT_HASH
#define CONFIG_WATCHDOG
#undef CONFIG_WATCHDOG_HELP
diff --git a/board/coachz/board.c b/board/coachz/board.c
index 4863cd94c9..1e1ed2ab71 100644
--- a/board/coachz/board.c
+++ b/board/coachz/board.c
@@ -513,7 +513,6 @@ void board_tcpc_init(void)
/* Enable PPC interrupts */
gpio_enable_interrupt(GPIO_USB_C0_SWCTL_INT_ODL);
- gpio_enable_interrupt(GPIO_USB_C1_SWCTL_INT_ODL);
/* Enable TCPC interrupts */
gpio_enable_interrupt(GPIO_USB_C0_PD_INT_ODL);
@@ -684,8 +683,8 @@ int board_set_active_charge_port(int port)
return EC_SUCCESS;
}
-__override void board_set_charge_limit(int port, int supplier, int charge_ma,
- int max_ma, int charge_mv)
+void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
+ int charge_mv)
{
/*
* Ignore lower charge ceiling on PD transition if our battery is
@@ -697,7 +696,9 @@ __override void board_set_charge_limit(int port, int supplier, int charge_ma,
charge_ma = max_ma;
}
- charge_set_input_current_limit(charge_ma, charge_mv);
+ charge_ma = charge_ma * 95 / 100;
+ charge_set_input_current_limit(
+ MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
}
uint16_t tcpc_get_alert_status(void)
diff --git a/board/coachz/board.h b/board/coachz/board.h
index 70594d3efa..c332b98c34 100644
--- a/board/coachz/board.h
+++ b/board/coachz/board.h
@@ -40,8 +40,6 @@
#define CONFIG_BATTERY_FUEL_GAUGE
#define CONFIG_BATTERY_VENDOR_PARAM
-#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 5
-
/* BC 1.2 Charger */
#define CONFIG_BC12_DETECT_PI3USB9201
diff --git a/board/coffeecake/board.h b/board/coffeecake/board.h
index 9c7a2643d0..966a5b2516 100644
--- a/board/coffeecake/board.h
+++ b/board/coffeecake/board.h
@@ -18,6 +18,7 @@
#define CONFIG_UART_CONSOLE 1
/* Optional features */
+#define CONFIG_STM_HWTIMER32
#define CONFIG_ADC
#define CONFIG_BOARD_PRE_INIT
#define CONFIG_CMD_CHARGER
diff --git a/board/coral/board.c b/board/coral/board.c
index a2a99ed42b..c63a2f6ddc 100644
--- a/board/coral/board.c
+++ b/board/coral/board.c
@@ -554,8 +554,8 @@ int board_set_active_charge_port(int charge_port)
* @param charge_ma Desired charge limit (mA).
* @param charge_mv Negotiated charge voltage (mV).
*/
-__override void board_set_charge_limit(int port, int supplier, int charge_ma,
- int max_ma, int charge_mv)
+void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
+ int charge_mv)
{
/* Enable charging trigger by BC1.2 detection */
int bc12_enable = (supplier == CHARGE_SUPPLIER_BC12_CDP ||
@@ -566,7 +566,9 @@ __override void board_set_charge_limit(int port, int supplier, int charge_ma,
if (bd9995x_bc12_enable_charging(port, bc12_enable))
return;
- charge_set_input_current_limit(charge_ma, charge_mv);
+ charge_ma = (charge_ma * 95) / 100;
+ charge_set_input_current_limit(
+ MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
}
/**
diff --git a/board/coral/board.h b/board/coral/board.h
index cea83ef4a5..bc6226152c 100644
--- a/board/coral/board.h
+++ b/board/coral/board.h
@@ -25,7 +25,6 @@
#define CONFIG_CMD_CHARGER_ADC_AMON_BMON
#define CONFIG_CHARGER_SENSE_RESISTOR 10
#define CONFIG_CHARGER_SENSE_RESISTOR_AC 10
-#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 5
#define BD9995X_IOUT_GAIN_SELECT \
BD9995X_CMD_PMON_IOUT_CTRL_SET_IOUT_GAIN_SET_20V
@@ -60,8 +59,7 @@
#define CONFIG_CHARGER_BD9995X
#define CONFIG_CHARGER_BD9995X_CHGEN
#define CONFIG_CHARGER_DISCHARGE_ON_AC
-#define CONFIG_CHARGER_DEFAULT_CURRENT_LIMIT 512
-#define CONFIG_CHARGER_MIN_INPUT_CURRENT_LIMIT 512
+#define CONFIG_CHARGER_INPUT_CURRENT 512
#define CONFIG_CHARGER_MAINTAIN_VBAT
#undef CONFIG_CHARGER_MIN_BAT_PCT_FOR_POWER_ON
#define CONFIG_CHARGER_MIN_BAT_PCT_FOR_POWER_ON 1
diff --git a/board/corori/board.c b/board/corori/board.c
index 52ef76a19c..4fe1e01fec 100644
--- a/board/corori/board.c
+++ b/board/corori/board.c
@@ -311,6 +311,19 @@ int board_set_active_charge_port(int port)
return EC_SUCCESS;
}
+void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
+ int charge_mv)
+{
+ int icl = MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT);
+
+ /*
+ * b/147463641: The charger IC seems to overdraw ~4%, therefore we
+ * reduce our target accordingly.
+ */
+ icl = icl * 96 / 100;
+ charge_set_input_current_limit(icl, charge_mv);
+}
+
__override void typec_set_source_current_limit(int port, enum tcpc_rp_value rp)
{
if (port < 0 || port > board_get_usb_pd_port_count())
diff --git a/board/corori/board.h b/board/corori/board.h
index 646b14227d..75e0e4eec6 100644
--- a/board/corori/board.h
+++ b/board/corori/board.h
@@ -28,11 +28,6 @@
#undef CONFIG_CMD_CHARGER_DUMP
#undef CONFIG_USB_PD_TCPC_LPM_EXIT_DEBOUNCE
#define CONFIG_USB_PD_TCPC_LPM_EXIT_DEBOUNCE (100 * MSEC)
-/*
- * b/147463641: The charger IC seems to overdraw ~4%, therefore we
- * reduce our target accordingly.
- */
-#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 4
/* LED defines */
#define CONFIG_LED_COMMON
diff --git a/board/corori2/board.c b/board/corori2/board.c
index e3103f65ff..efebc3af2e 100644
--- a/board/corori2/board.c
+++ b/board/corori2/board.c
@@ -454,6 +454,19 @@ int board_set_active_charge_port(int port)
return EC_SUCCESS;
}
+void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
+ int charge_mv)
+{
+ int icl = MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT);
+
+ /*
+ * b/147463641: The charger IC seems to overdraw ~4%, therefore we
+ * reduce our target accordingly.
+ */
+ icl = icl * 96 / 100;
+ charge_set_input_current_limit(icl, charge_mv);
+}
+
__override void typec_set_source_current_limit(int port, enum tcpc_rp_value rp)
{
if (port < 0 || port > board_get_usb_pd_port_count())
diff --git a/board/corori2/board.h b/board/corori2/board.h
index c62cade1c3..3483d96f88 100644
--- a/board/corori2/board.h
+++ b/board/corori2/board.h
@@ -20,7 +20,6 @@
/* Save some flash space */
#define CONFIG_CHIP_INIT_ROM_REGION
#undef CONFIG_CONSOLE_CMDHELP
-#undef CONFIG_CONSOLE_HISTORY
#define CONFIG_DEBUG_ASSERT_BRIEF
#define CONFIG_USB_PD_DEBUG_LEVEL 0
@@ -31,8 +30,6 @@
#undef CONFIG_CMD_ACCELSPOOF
#undef CONFIG_CMD_BATTFAKE
#undef CONFIG_CMD_GETTIME
-#undef CONFIG_CMD_I2C_SCAN
-#undef CONFIG_CMD_I2C_XFER
#undef CONFIG_CMD_MEM
/* Battery */
@@ -50,11 +47,6 @@
#undef CONFIG_CHARGER_SINGLE_CHIP
#undef CONFIG_USB_PD_TCPC_LPM_EXIT_DEBOUNCE
#define CONFIG_USB_PD_TCPC_LPM_EXIT_DEBOUNCE (100 * MSEC)
-/*
- * b/147463641: The charger IC seems to overdraw ~4%, therefore we
- * reduce our target accordingly.
- */
-#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 4
/*
* GPIO for C1 interrupts, for baseboard use
diff --git a/board/cret/board.c b/board/cret/board.c
index 3c56757ef7..c9c34d6d32 100644
--- a/board/cret/board.c
+++ b/board/cret/board.c
@@ -304,6 +304,19 @@ int board_set_active_charge_port(int port)
return EC_SUCCESS;
}
+void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
+ int charge_mv)
+{
+ int icl = MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT);
+
+ /*
+ * b/147463641: The charger IC seems to overdraw ~4%, therefore we
+ * reduce our target accordingly.
+ */
+ icl = icl * 96 / 100;
+ charge_set_input_current_limit(icl, charge_mv);
+}
+
__override void typec_set_source_current_limit(int port, enum tcpc_rp_value rp)
{
if (port < 0 || port > board_get_usb_pd_port_count())
diff --git a/board/cret/board.h b/board/cret/board.h
index eb6b261cdf..2080185c7c 100644
--- a/board/cret/board.h
+++ b/board/cret/board.h
@@ -34,11 +34,6 @@
#define CONFIG_CHARGER_SENSE_RESISTOR 10
#undef CONFIG_USB_PD_TCPC_LPM_EXIT_DEBOUNCE
#define CONFIG_USB_PD_TCPC_LPM_EXIT_DEBOUNCE (100 * MSEC)
-/*
- * b/147463641: The charger IC seems to overdraw ~4%, therefore we
- * reduce our target accordingly.
- */
-#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 4
#define CONFIG_CHARGER_PROFILE_OVERRIDE
#define CHARGING_CURRENT_1100MA 1100
diff --git a/board/crota/board.c b/board/crota/board.c
index a12ef75d30..cb3e79ee56 100644
--- a/board/crota/board.c
+++ b/board/crota/board.c
@@ -51,7 +51,7 @@ static void board_chipset_suspend(void)
}
DECLARE_HOOK(HOOK_CHIPSET_SUSPEND, board_chipset_suspend, HOOK_PRIO_DEFAULT);
-bool board_is_convertible(void)
+static bool board_is_convertible(void)
{
/*
* convertible = 0
diff --git a/board/crota/board.h b/board/crota/board.h
index d652a93ad0..3d79e190bd 100644
--- a/board/crota/board.h
+++ b/board/crota/board.h
@@ -288,8 +288,6 @@ enum thermal_cfg_table { LAPTOP_MODE, TABLET_MODE, THERMAL_CFG_TABLE_COUNT };
void motion_interrupt(enum gpio_signal signal);
-bool board_is_convertible(void);
-
#endif /* !__ASSEMBLER__ */
#endif /* __CROS_EC_BOARD_H */
diff --git a/board/crota/charger.c b/board/crota/charger.c
index 9f044790e0..c7dcf7b0c1 100644
--- a/board/crota/charger.c
+++ b/board/crota/charger.c
@@ -79,3 +79,10 @@ int board_set_active_charge_port(int port)
return EC_SUCCESS;
}
+
+__overridable 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);
+}
diff --git a/board/crota/sensors.c b/board/crota/sensors.c
index 7d60234dc3..79d2492060 100644
--- a/board/crota/sensors.c
+++ b/board/crota/sensors.c
@@ -10,11 +10,9 @@
#include "driver/accel_lis2dw12.h"
#include "driver/accelgyro_bmi_common.h"
#include "driver/accelgyro_lsm6dso.h"
-#include "fw_config.h"
#include "gpio.h"
#include "hooks.h"
#include "motion_sense.h"
-#include "tablet_mode.h"
#include "temp_sensor.h"
#include "thermal.h"
#include "temp_sensor/thermistor.h"
@@ -211,29 +209,10 @@ static void board_update_motion_sensor_config(void)
} else {
ccprints("BASE IMU is LSM6DSO");
}
-
- if (!board_is_convertible()) {
- tablet_set_mode(0, TABLET_TRIGGER_LID);
- gmr_tablet_switch_disable();
- /* Make sure tablet mode detection is not trigger by mistake. */
- gpio_set_flags(GPIO_TABLET_MODE_L, GPIO_INPUT | GPIO_PULL_UP);
- /*
- * Make sure we don't even try to initialize the lid accel, it
- * is not present.
- */
- motion_sensors[LID_ACCEL].active_mask = 0;
- gpio_set_flags(GPIO_EC_ACCEL_INT_R_L,
- GPIO_INPUT | GPIO_PULL_UP);
- }
}
DECLARE_HOOK(HOOK_CHIPSET_STARTUP, board_update_motion_sensor_config,
HOOK_PRIO_INIT_I2C + 1);
-__override int sensor_board_is_lid_angle_available(void)
-{
- return board_is_convertible();
-}
-
static void baseboard_sensors_init(void)
{
/* Enable gpio interrupt for lid accel sensor */
diff --git a/board/damu/board.c b/board/damu/board.c
index 717276e768..ddc8885e22 100644
--- a/board/damu/board.c
+++ b/board/damu/board.c
@@ -236,6 +236,14 @@ int board_set_active_charge_port(int charge_port)
return EC_SUCCESS;
}
+void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
+ int charge_mv)
+{
+ charge_ma = (charge_ma * 95) / 100;
+ charge_set_input_current_limit(
+ MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
+}
+
int board_discharge_on_ac(int enable)
{
int ret, port;
diff --git a/board/damu/board.h b/board/damu/board.h
index 16e03cf45c..49875e6883 100644
--- a/board/damu/board.h
+++ b/board/damu/board.h
@@ -28,7 +28,6 @@
#define CONFIG_BATTERY_HW_PRESENT_CUSTOM
#define CONFIG_CHARGER_PSYS
-#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 5
#define CONFIG_CHARGER_RUNTIME_CONFIG
diff --git a/board/dibbi/board.c b/board/dibbi/board.c
deleted file mode 100644
index 9b3207859a..0000000000
--- a/board/dibbi/board.c
+++ /dev/null
@@ -1,374 +0,0 @@
-/* Copyright 2022 The ChromiumOS Authors
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-/* Dibbi board-specific configuration */
-
-#include "adc_chip.h"
-#include "button.h"
-#include "charge_manager.h"
-#include "charge_state_v2.h"
-#include "charger.h"
-#include "driver/temp_sensor/thermistor.h"
-#include "driver/tcpm/it83xx_pd.h"
-#include "driver/usb_mux/it5205.h"
-#include "gpio.h"
-#include "hooks.h"
-#include "intc.h"
-#include "power.h"
-#include "power_button.h"
-#include "pwm.h"
-#include "pwm_chip.h"
-#include "switch.h"
-#include "system.h"
-#include "tablet_mode.h"
-#include "task.h"
-#include "tcpm/tcpci.h"
-#include "temp_sensor.h"
-#include "uart.h"
-#include "usb_charge.h"
-#include "usb_mux.h"
-#include "usb_pd.h"
-#include "usb_pd_tcpm.h"
-
-#define CPRINTUSB(format, args...) cprints(CC_USBCHARGE, format, ##args)
-
-/* ADC channels */
-const struct adc_t adc_channels[] = {
- [ADC_VSNS_PP3300_A] = { .name = "PP3300_A_PGOOD",
- .factor_mul = ADC_MAX_MVOLT,
- .factor_div = ADC_READ_MAX + 1,
- .shift = 0,
- .channel = CHIP_ADC_CH0 },
- [ADC_TEMP_SENSOR_1] = { .name = "TEMP_SENSOR1",
- .factor_mul = ADC_MAX_MVOLT,
- .factor_div = ADC_READ_MAX + 1,
- .shift = 0,
- .channel = CHIP_ADC_CH2 },
- [ADC_TEMP_SENSOR_2] = { .name = "TEMP_SENSOR2",
- .factor_mul = ADC_MAX_MVOLT,
- .factor_div = ADC_READ_MAX + 1,
- .shift = 0,
- .channel = CHIP_ADC_CH3 },
- [ADC_PPVAR_PWR_IN_IMON] = { .name = "ADC_PPVAR_PWR_IN_IMON",
- .factor_mul = ADC_MAX_MVOLT,
- .factor_div = ADC_READ_MAX + 1,
- .shift = 0,
- .channel = CHIP_ADC_CH15 },
- [ADC_SNS_PPVAR_PWR_IN] = { .name = "ADC_SNS_PPVAR_PWR_IN",
- .factor_mul = ADC_MAX_MVOLT,
- .factor_div = ADC_READ_MAX + 1,
- .shift = 0,
- .channel = CHIP_ADC_CH16 },
-};
-BUILD_ASSERT(ARRAY_SIZE(adc_channels) == ADC_CH_COUNT);
-
-/* TCPCs */
-const struct tcpc_config_t tcpc_config[CONFIG_USB_PD_PORT_MAX_COUNT] = {
- {
- .bus_type = EC_BUS_TYPE_EMBEDDED,
- .drv = &it83xx_tcpm_drv,
- },
-};
-
-/* USB Muxes */
-const struct usb_mux_chain usb_muxes[CONFIG_USB_PD_PORT_MAX_COUNT] = {
- {
- .mux =
- &(const struct usb_mux){
- .usb_port = 0,
- .i2c_port = I2C_PORT_USB_C0,
- .i2c_addr_flags = IT5205_I2C_ADDR1_FLAGS,
- .driver = &it5205_usb_mux_driver,
- },
- },
-};
-
-/* USB-A ports */
-const int usb_port_enable[USB_PORT_COUNT] = {
- GPIO_EN_USB_A0_VBUS,
- GPIO_EN_USB_A1_VBUS,
- GPIO_EN_USB_A2_VBUS,
-};
-
-/* PWM channels. Must be in the exactly same order as in enum pwm_channel. */
-const struct pwm_t pwm_channels[] = {
- [PWM_CH_LED_RED] = {
- .channel = 1,
- .flags = PWM_CONFIG_DSLEEP | PWM_CONFIG_ACTIVE_LOW,
- .freq_hz = 2400,
- },
-
- [PWM_CH_LED_GREEN] = {
- .channel = 2,
- .flags = PWM_CONFIG_DSLEEP | PWM_CONFIG_ACTIVE_LOW,
- .freq_hz = 2400,
- },
-
- [PWM_CH_LED_BLUE] = {
- .channel = 3,
- .flags = PWM_CONFIG_DSLEEP | PWM_CONFIG_ACTIVE_LOW,
- .freq_hz = 2400,
- }
-
-};
-BUILD_ASSERT(ARRAY_SIZE(pwm_channels) == PWM_CH_COUNT);
-
-/* Thermistors */
-const struct temp_sensor_t temp_sensors[] = {
- [TEMP_SENSOR_1] = { .name = "Memory",
- .type = TEMP_SENSOR_TYPE_BOARD,
- .read = get_temp_3v3_51k1_47k_4050b,
- .idx = ADC_TEMP_SENSOR_1 },
- [TEMP_SENSOR_2] = { .name = "Ambient",
- .type = TEMP_SENSOR_TYPE_BOARD,
- .read = get_temp_3v3_51k1_47k_4050b,
- .idx = ADC_TEMP_SENSOR_2 },
-};
-BUILD_ASSERT(ARRAY_SIZE(temp_sensors) == TEMP_SENSOR_COUNT);
-
-static void c0_ccsbu_ovp_interrupt(enum gpio_signal s)
-{
- cprints(CC_USBPD, "C0: CC OVP, SBU OVP, or thermal event");
- pd_handle_cc_overvoltage(0);
-}
-
-void board_init(void)
-{
- int on;
-
- gpio_enable_interrupt(GPIO_USB_C0_CCSBU_OVP_ODL);
- gpio_enable_interrupt(GPIO_BJ_ADP_PRESENT_L);
- gpio_enable_interrupt(GPIO_USBC_ADP_PRESENT_L);
-
- /* Turn on 5V if the system is on, otherwise turn it off */
- on = chipset_in_state(CHIPSET_STATE_ON | CHIPSET_STATE_ANY_SUSPEND |
- CHIPSET_STATE_SOFT_OFF);
- board_power_5v_enable(on);
-}
-DECLARE_HOOK(HOOK_INIT, board_init, HOOK_PRIO_DEFAULT);
-
-void board_reset_pd_mcu(void)
-{
- /*
- * Nothing to do. TCPC C0 is internal.
- */
-}
-
-__override void board_power_5v_enable(int enable)
-{
- /*
- * Mainboard 5V regulator activated by GPIO.
- * USB-A ports are activated by usb_port_power_dumb.
- */
- gpio_set_level(GPIO_EN_PP5000, !!enable);
-}
-
-void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
- int charge_mv)
-{
- int insufficient_power =
- (charge_ma * charge_mv) <
- (CONFIG_CHARGER_MIN_POWER_MW_FOR_POWER_ON * 1000);
- /* TODO(b/259467280) blink LED on error */
- (void)insufficient_power;
-}
-
-int board_vbus_source_enabled(int port)
-{
- if (port != CHARGE_PORT_TYPEC0)
- return 0;
- return gpio_get_level(GPIO_EN_USB_C0_VBUS);
-}
-
-/* Vconn control for integrated ITE TCPC */
-void board_pd_vconn_ctrl(int port, enum usbpd_cc_pin cc_pin, int enabled)
-{
- /* Vconn control is only for port 0 */
- if (port)
- return;
-
- if (cc_pin == USBPD_CC_PIN_1)
- gpio_set_level(GPIO_EN_USB_C0_CC1_VCONN, !!enabled);
- else
- gpio_set_level(GPIO_EN_USB_C0_CC2_VCONN, !!enabled);
-}
-
-__override void typec_set_source_current_limit(int port, enum tcpc_rp_value rp)
-{
- int ilim3A;
-
- if (port < 0 || port > CONFIG_USB_PD_PORT_MAX_COUNT)
- return;
-
- /* Switch between 1.5A and 3A ILIM values */
- ilim3A = (rp == TYPEC_RP_3A0);
- gpio_set_level(GPIO_USB_C0_VBUS_ILIM, ilim3A);
-}
-
-/******************************************************************************/
-/*
- * Since dibbi has no battery, it must source all of its power from either
- * USB-C or the barrel jack (preferred). Fizz operates in continuous safe
- * mode (charge_manager_leave_safe_mode() will never be called), which
- * modifies port selection as follows:
- *
- * - Dual-role / dedicated capability of the port partner is ignored.
- * - Charge ceiling on PD voltage transition is ignored.
- * - CHARGE_PORT_NONE will never be selected.
- */
-
-/* List of BJ adapters */
-enum bj_adapter {
- BJ_NONE,
- BJ_65W_19V,
-};
-
-/* Barrel-jack power adapter ratings. */
-static const struct charge_port_info bj_adapters[] = {
- [BJ_NONE] = { .current = 0, .voltage = 0 },
- [BJ_65W_19V] = { .current = 3420, .voltage = 19000 },
-};
-#define BJ_ADP_RATING_DEFAULT BJ_65W_19V /* BJ power ratings default */
-#define ADP_DEBOUNCE_MS 1000 /* Debounce time for BJ plug/unplug */
-
-/* Debounced connection state of the barrel jack */
-static int8_t bj_adp_connected = -1;
-static void adp_connect_deferred(void)
-{
- const struct charge_port_info *pi;
- int connected = !gpio_get_level(GPIO_BJ_ADP_PRESENT_L);
-
- /* Debounce */
- if (connected == bj_adp_connected)
- return;
-
- if (connected) {
- pi = &bj_adapters[BJ_ADP_RATING_DEFAULT];
- } else {
- /* No barrel-jack, zero out this power supply */
- pi = &bj_adapters[BJ_NONE];
- }
- /* This will result in a call to board_set_active_charge_port */
- charge_manager_update_charge(CHARGE_SUPPLIER_DEDICATED,
- DEDICATED_CHARGE_PORT, pi);
- bj_adp_connected = connected;
-}
-DECLARE_DEFERRED(adp_connect_deferred);
-
-/* IRQ for BJ plug/unplug. It shouldn't be called if BJ is the power source. */
-void adp_connect_interrupt(enum gpio_signal signal)
-{
- hook_call_deferred(&adp_connect_deferred_data, ADP_DEBOUNCE_MS * MSEC);
-}
-
-/* IRQ for USB-C plug/unplug. */
-void usbc_connect_interrupt(enum gpio_signal signal)
-{
- task_wake(TASK_ID_PD_C0);
-}
-
-int board_set_active_charge_port(int port)
-{
- const int active_port = charge_manager_get_active_charge_port();
-
- CPRINTUSB("Requested charge port change to %d", port);
-
- if (port < 0 || CHARGE_PORT_COUNT <= port)
- return EC_ERROR_INVAL;
-
- if (port == active_port)
- return EC_SUCCESS;
-
- /* Don't sink from a source port */
- if (board_vbus_source_enabled(port))
- return EC_ERROR_INVAL;
-
- if (!chipset_in_state(CHIPSET_STATE_ANY_OFF)) {
- int bj_requested;
-
- if (charge_manager_get_active_charge_port() != CHARGE_PORT_NONE)
- /* Change is only permitted while the system is off */
- return EC_ERROR_INVAL;
-
- /*
- * 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_requested = port == CHARGE_PORT_BARRELJACK;
- if (bj_adp_connected != bj_requested)
- return EC_ERROR_INVAL;
- }
-
- CPRINTUSB("New charger p%d", port);
-
- switch (port) {
- case CHARGE_PORT_TYPEC0:
- gpio_set_level(GPIO_EN_PPVAR_USBC_ADP_L, 0);
- gpio_set_level(GPIO_EN_PPVAR_BJ_ADP_L, 1);
- gpio_enable_interrupt(GPIO_BJ_ADP_PRESENT_L);
- 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);
- gpio_set_level(GPIO_EN_PPVAR_USBC_ADP_L, 1);
- gpio_disable_interrupt(GPIO_BJ_ADP_PRESENT_L);
- break;
- default:
- return EC_ERROR_INVAL;
- }
-
- return EC_SUCCESS;
-}
-
-static void board_charge_manager_init(void)
-{
- enum charge_port port;
-
- /*
- * Initialize all charge suppliers to 0. The charge manager waits until
- * all ports have reported in before doing anything.
- */
- for (int i = 0; i < CHARGE_PORT_COUNT; i++) {
- for (int j = 0; j < CHARGE_SUPPLIER_COUNT; j++)
- charge_manager_update_charge(j, i, NULL);
- }
-
- port = gpio_get_level(GPIO_BJ_ADP_PRESENT_L) ? CHARGE_PORT_TYPEC0 :
- CHARGE_PORT_BARRELJACK;
- CPRINTUSB("Power source is p%d (%s)", port,
- port == CHARGE_PORT_TYPEC0 ? "USB-C" : "BJ");
-
- /* Initialize the power source supplier */
- switch (port) {
- case CHARGE_PORT_TYPEC0:
- typec_set_input_current_limit(port, 3000, 5000);
- break;
- case CHARGE_PORT_BARRELJACK:
- charge_manager_update_charge(
- CHARGE_SUPPLIER_DEDICATED, DEDICATED_CHARGE_PORT,
- &bj_adapters[BJ_ADP_RATING_DEFAULT]);
- break;
- }
-
- /* Report charge state from the barrel jack. */
- adp_connect_deferred();
-}
-DECLARE_HOOK(HOOK_INIT, board_charge_manager_init,
- HOOK_PRIO_INIT_CHARGE_MANAGER + 1);
-
-__override int extpower_is_present(void)
-{
- /*
- * There's no battery, so running this method implies we have power.
- */
- return 1;
-}
-
-/* Must come after other header files and interrupt handler declarations */
-#include "gpio_list.h"
diff --git a/board/dibbi/board.h b/board/dibbi/board.h
deleted file mode 100644
index c59a540b5d..0000000000
--- a/board/dibbi/board.h
+++ /dev/null
@@ -1,145 +0,0 @@
-/* Copyright 2022 The ChromiumOS Authors
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-/* Dibbi board configuration */
-
-#ifndef __CROS_EC_BOARD_H
-#define __CROS_EC_BOARD_H
-
-/* Select Baseboard features */
-#define VARIANT_DEDEDE_EC_IT8320
-#include "baseboard.h"
-
-/* System unlocked in early development */
-#define CONFIG_SYSTEM_UNLOCKED
-
-#define CONFIG_CMD_CHARGER_DUMP
-
-/* Power */
-#undef CONFIG_CHARGER
-#undef CONFIG_CHARGER_DISCHARGE_ON_AC
-#undef CONFIG_USB_PD_VBUS_MEASURE_CHARGER
-#define CONFIG_CHARGER_MIN_POWER_MW_FOR_POWER_ON 16000
-#define PD_MAX_VOLTAGE_MV 15000
-#define CONFIG_USB_PD_VBUS_DETECT_GPIO
-/* ADC sensors could measure VBUS on this board, but components are DNS */
-#define CONFIG_USB_PD_VBUS_MEASURE_NOT_PRESENT
-
-/* Override macro for C0 only */
-#define PORT_TO_HPD(port) (GPIO_USB_C0_DP_HPD)
-
-/* Power: Dedicated barreljack charger port */
-#undef CONFIG_DEDICATED_CHARGE_PORT_COUNT
-#define CONFIG_DEDICATED_CHARGE_PORT_COUNT 1
-#define DEDICATED_CHARGE_PORT 1
-
-/* USB Type-C */
-#undef CONFIG_USB_CHARGER
-#undef CONFIG_USB_MUX_PI3USB31532
-
-/* TCPC */
-#define CONFIG_USB_PD_PORT_MAX_COUNT 1
-#define CONFIG_USB_PD_TCPM_ITE_ON_CHIP /* C0: ITE EC TCPC */
-#define CONFIG_USB_PD_ITE_ACTIVE_PORT_COUNT 1
-
-/* USB Mux and Retimer */
-#define CONFIG_USB_MUX_IT5205 /* C0: ITE Mux */
-#define I2C_PORT_USB_MUX I2C_PORT_USB_C0 /* Required for ITE Mux */
-
-/* USB Type A Features */
-#define CONFIG_USB_PORT_POWER_DUMB
-#define USB_PORT_COUNT 3 /* Type A ports */
-
-/* No battery */
-#undef CONFIG_BATTERY_CUT_OFF
-#undef CONFIG_BATTERY_PRESENT_GPIO
-#undef CONFIG_BATTERY_REQUESTS_NIL_WHEN_DEAD
-#undef CONFIG_BATTERY_REVIVE_DISCONNECT
-#undef CONFIG_BATTERY_SMART
-
-/* LED */
-/* TODO(b/259467280) Determine what LED/PWM impl is needed*/
-/* #define CONFIG_LED_PWM */
-/* #define CONFIG_LED_PWM_COUNT 1 */
-
-/* PWM */
-#define CONFIG_PWM
-
-/* Thermistors */
-#define CONFIG_TEMP_SENSOR
-#define CONFIG_THERMISTOR
-#define CONFIG_STEINHART_HART_3V3_51K1_47K_4050B
-
-/* Buttons */
-#define CONFIG_DEDICATED_RECOVERY_BUTTON
-#define CONFIG_DEDICATED_RECOVERY_BUTTON_2
-#define CONFIG_POWER_BUTTON
-#define CONFIG_POWER_BUTTON_IGNORE_LID
-#define CONFIG_POWER_BUTTON_X86
-
-/* No Keyboard */
-#undef CONFIG_MKBP_EVENT
-#undef CONFIG_MKBP_EVENT_WAKEUP_MASK
-#undef CONFIG_MKBP_USE_GPIO_AND_HOST_EVENT
-#undef CONFIG_KEYBOARD_COL2_INVERTED
-#undef CONFIG_KEYBOARD_PROTOCOL_8042
-#undef CONFIG_MKBP_INPUT_DEVICES
-#undef CONFIG_CMD_KEYBOARD
-#undef CONFIG_KEYBOARD_BOOT_KEYS
-#undef CONFIG_KEYBOARD_RUNTIME_KEYS
-
-/* No backlight */
-#undef CONFIG_BACKLIGHT_LID
-#undef GPIO_ENABLE_BACKLIGHT
-
-/* Unused features - Misc */
-#undef CONFIG_HIBERNATE
-#undef CONFIG_VOLUME_BUTTONS
-#undef CONFIG_LID_SWITCH
-#undef CONFIG_TABLET_MODE
-#undef CONFIG_TABLET_MODE_SWITCH
-#undef CONFIG_GMR_TABLET_MODE
-#undef GPIO_TABLET_MODE_L
-
-/* Unused GPIOs */
-#undef GPIO_USB_C1_DP_HPD
-
-/* Pin renaming */
-#define GPIO_RECOVERY_L GPIO_EC_RECOVERY_BTN_ODL
-#define GPIO_RECOVERY_L_2 GPIO_H1_EC_RECOVERY_BTN_ODL
-#define GPIO_POWER_BUTTON_L GPIO_H1_EC_PWR_BTN_ODL
-
-#ifndef __ASSEMBLER__
-
-#include "gpio_signal.h"
-#include "registers.h"
-
-enum charge_port {
- CHARGE_PORT_TYPEC0,
- CHARGE_PORT_BARRELJACK,
-};
-
-enum pwm_channel {
- PWM_CH_LED_RED,
- PWM_CH_LED_GREEN,
- PWM_CH_LED_BLUE,
- PWM_CH_COUNT,
-};
-
-/* ADC channels */
-enum adc_channel {
- ADC_VSNS_PP3300_A, /* ADC0 */
- ADC_TEMP_SENSOR_1, /* ADC2 */
- ADC_TEMP_SENSOR_2, /* ADC3 */
- ADC_PPVAR_PWR_IN_IMON, /* ADC15 */
- ADC_SNS_PPVAR_PWR_IN, /* ADC16 */
- ADC_CH_COUNT
-};
-
-enum temp_sensor_id { TEMP_SENSOR_1, TEMP_SENSOR_2, TEMP_SENSOR_COUNT };
-
-#endif /* !__ASSEMBLER__ */
-
-#endif /* __CROS_EC_BOARD_H */
diff --git a/board/dibbi/build.mk b/board/dibbi/build.mk
deleted file mode 100644
index 07ea50c392..0000000000
--- a/board/dibbi/build.mk
+++ /dev/null
@@ -1,14 +0,0 @@
-# -*- makefile -*-
-# Copyright 2022 The ChromiumOS Authors
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-#
-# Board specific files build
-#
-
-CHIP:=it83xx
-CHIP_FAMILY:=it8320
-CHIP_VARIANT:=it8320dx
-BASEBOARD:=dedede
-
-board-y=board.o led.o usb_pd_policy.o
diff --git a/board/dibbi/ec.tasklist b/board/dibbi/ec.tasklist
deleted file mode 100644
index 768c31112a..0000000000
--- a/board/dibbi/ec.tasklist
+++ /dev/null
@@ -1,16 +0,0 @@
-/* Copyright 2022 The ChromiumOS Authors
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-/*
- * See CONFIG_TASK_LIST in config.h for details.
- */
-
-#define CONFIG_TASK_LIST \
- TASK_ALWAYS(HOOKS, hook_task, NULL, VENTI_TASK_STACK_SIZE) \
- TASK_NOTEST(CHIPSET, chipset_task, NULL, VENTI_TASK_STACK_SIZE) \
- TASK_ALWAYS(HOSTCMD, host_command_task, NULL, VENTI_TASK_STACK_SIZE) \
- TASK_ALWAYS(CONSOLE, console_task, NULL, VENTI_TASK_STACK_SIZE) \
- TASK_ALWAYS(POWERBTN, power_button_task, NULL, ULTRA_TASK_STACK_SIZE) \
- TASK_ALWAYS(PD_C0, pd_task, NULL, ULTRA_TASK_STACK_SIZE)
diff --git a/board/dibbi/gpio.inc b/board/dibbi/gpio.inc
deleted file mode 100644
index a5c0c02a72..0000000000
--- a/board/dibbi/gpio.inc
+++ /dev/null
@@ -1,142 +0,0 @@
-/* -*- mode:c -*-
- *
- * Copyright 2022 The ChromiumOS Authors
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-/* Declare symbolic names for all the GPIOs that we care about.
- * Note: Those with interrupt handlers must be declared first. */
-
-/* Power State interrupts */
-GPIO_INT(SLP_S4_L, PIN(I, 5), GPIO_INT_BOTH, power_signal_interrupt)
-GPIO_INT(SLP_S3_L, PIN(H, 3), GPIO_INT_BOTH, baseboard_all_sys_pgood_interrupt)
-GPIO_INT(SLP_S0_L, PIN(E, 4), GPIO_INT_BOTH, power_signal_interrupt)
-GPIO_INT(SLP_SUS_L, PIN(G, 2), GPIO_INT_BOTH, power_signal_interrupt)
-GPIO_INT(VCCIN_AUX_VID0, PIN(D, 0), GPIO_INT_BOTH, power_signal_interrupt)
-GPIO_INT(RSMRST_PWRGD_L, PIN(E, 1), GPIO_INT_BOTH, power_signal_interrupt)
-GPIO_INT(CPU_C10_GATE_L, PIN(G, 1), GPIO_INT_BOTH, power_signal_interrupt)
-GPIO_INT(PG_DRAM_OD, PIN(D, 3), GPIO_INT_BOTH, baseboard_all_sys_pgood_interrupt)
-GPIO_INT(PG_PP1050_ST_OD, PIN(L, 1), GPIO_INT_BOTH, power_signal_interrupt)
-GPIO_INT(VCCIN_AUX_VID1, PIN(K, 1), GPIO_INT_BOTH, power_signal_interrupt)
-GPIO_INT(PG_VCCIO_EXT_OD, PIN(D, 7), GPIO_INT_BOTH, baseboard_all_sys_pgood_interrupt)
-GPIO_INT(ESPI_RESET_L, PIN(D, 2), GPIO_INT_FALLING | GPIO_SEL_1P8V, espi_reset_pin_asserted_interrupt)
-
-GPIO_INT(H1_EC_PWR_BTN_ODL, PIN(E, 2), GPIO_INT_BOTH | GPIO_PULL_UP, power_button_interrupt)
-#ifdef CONFIG_LOW_POWER_IDLE
-/* Used to wake up the EC from Deep Doze mode when writing to console */
-GPIO_INT(UART1_RX, PIN(B, 0), GPIO_INT_BOTH, uart_deepsleep_interrupt) /* UART_DBG_TX_EC_RX */
-#endif
-
-/* USB-C interrupts */
-GPIO_INT(USB_C0_CCSBU_OVP_ODL, PIN(K, 6), GPIO_INT_FALLING | GPIO_PULL_UP, c0_ccsbu_ovp_interrupt) /* Fault protection */
-
-/* Other interrupts */
-GPIO_INT(EC_WP_OD, PIN(A, 6), GPIO_INT_BOTH, switch_interrupt)
-/* Directly connected recovery button */
-GPIO_INT(EC_RECOVERY_BTN_ODL, PIN(K, 7), GPIO_INT_BOTH, button_interrupt)
-/* Recovery button input from H1 */
-GPIO_INT(H1_EC_RECOVERY_BTN_ODL, PIN(K, 4), GPIO_INT_BOTH, button_interrupt)
-GPIO_INT(BJ_ADP_PRESENT_L, PIN(A, 7), GPIO_INT_BOTH | GPIO_PULL_UP, adp_connect_interrupt)
-GPIO_INT(USBC_ADP_PRESENT_L, PIN(K, 3), GPIO_INT_BOTH | GPIO_PULL_UP, usbc_connect_interrupt)
-
-/* Power sequence GPIOs */
-GPIO(EC_AP_RTCRST, PIN(K, 2), GPIO_OUT_LOW)
-GPIO(EC_AP_PWR_BTN_ODL, PIN(B, 6), GPIO_ODR_HIGH)
-GPIO(EC_AP_DPWROK, PIN(L, 7), GPIO_OUT_LOW)
-GPIO(EC_AP_RSMRST_L, PIN(H, 0), GPIO_OUT_LOW)
-GPIO(EC_AP_WAKE_ODL, PIN(D, 5), GPIO_ODR_HIGH)
-GPIO(SYS_RST_ODL, PIN(D, 1), GPIO_ODR_HIGH)
-GPIO(EC_AP_SYS_PWROK, PIN(F, 2), GPIO_OUT_LOW)
-GPIO(PG_PP5000_U_OD, PIN(E, 3), GPIO_INPUT)
-GPIO(EN_PP3300_A, PIN(C, 5), GPIO_OUT_LOW)
-GPIO(EC_AP_PCH_PWROK_OD, PIN(D, 6), GPIO_ODR_LOW)
-GPIO(EN_PP5000_U, PIN(K, 5), GPIO_OUT_LOW)
-/* TODO(b:149775160) - Modify if needed if we ever use this signal. */
-GPIO(EN_VCCST, PIN(D, 4), GPIO_INPUT)
-GPIO(EN_VCCIO_EXT, PIN(B, 2), GPIO_OUT_LOW)
-GPIO(EC_PROCHOT_ODL, PIN(I, 1), GPIO_ODR_HIGH | GPIO_SEL_1P8V)
-GPIO(EC_AP_VCCST_PWRGD_OD, PIN(E, 5), GPIO_ODR_LOW)
-GPIO(ALL_SYS_PWRGD, PIN(B, 7), GPIO_OUT_LOW)
-GPIO(EN_PPVAR_BJ_ADP_L, PIN(J, 0), GPIO_OUT_LOW)
-GPIO(EN_PPVAR_USBC_ADP_L, PIN(J, 1), GPIO_OUT_LOW)
-GPIO(EN_USB_C0_VBUS, PIN(I, 7), GPIO_OUT_LOW)
-GPIO(USB_C0_VBUS_ILIM, PIN(I, 6), GPIO_OUT_LOW)
-
-/* Required for icelake chipset code, but implemented through other means for dedede */
-UNIMPLEMENTED(AC_PRESENT)
-UNIMPLEMENTED(PG_EC_DSW_PWROK)
-UNIMPLEMENTED(PG_EC_ALL_SYS_PWRGD)
-
-/* Required for dedede baseboard but not used in dibbi */
-UNIMPLEMENTED(USB_C0_INT_ODL)
-UNIMPLEMENTED(EN_SLP_Z)
-
-/* I2C pins - Alternate function below configures I2C module on these pins */
-GPIO(EC_I2C_EEPROM_SCL, PIN(B, 3), GPIO_INPUT)
-GPIO(EC_I2C_EEPROM_SDA, PIN(B, 4), GPIO_INPUT)
-GPIO(EC_I2C_BATTERY_SCL, PIN(C, 1), GPIO_INPUT)
-GPIO(EC_I2C_BATTERY_SDA, PIN(C, 2), GPIO_INPUT)
-GPIO(EC_I2C_SENSOR_SCL, PIN(F, 6), GPIO_INPUT | GPIO_SEL_1P8V)
-GPIO(EC_I2C_SENSOR_SDA, PIN(F, 7), GPIO_INPUT | GPIO_SEL_1P8V)
-GPIO(EC_I2C_USB_C0_SCL, PIN(A, 4), GPIO_INPUT)
-GPIO(EC_I2C_USB_C0_SDA, PIN(A, 5), GPIO_INPUT)
-
-/* USB pins */
-GPIO(EN_USB_C0_CC1_VCONN, PIN(H, 4), GPIO_OUT_LOW)
-GPIO(EN_USB_C0_CC2_VCONN, PIN(H, 6), GPIO_OUT_LOW)
-GPIO(EC_AP_USB_C0_HPD, PIN(L, 4), GPIO_OUT_LOW)
-GPIO(EN_USB_A0_VBUS, PIN(L, 6), GPIO_OUT_LOW)
-GPIO(EN_USB_A1_VBUS, PIN(C, 6), GPIO_OUT_LOW)
-GPIO(EN_USB_A2_VBUS, PIN(C, 4), GPIO_OUT_LOW)
-
-/* MKBP event synchronization */
-/* TODO(b/257833880) Check whether this pin is needed */
-GPIO(EC_AP_MKBP_INT_L, PIN(L, 5), GPIO_ODR_HIGH)
-
-/* Misc pins which will run to the I/O board */
-GPIO(EC_SUB_IO_1_1, PIN(L, 3), GPIO_INPUT)
-GPIO(EC_SUB_IO_1_2, PIN(F, 0), GPIO_INPUT)
-GPIO(EC_SUB_IO_2_1, PIN(F, 1), GPIO_INPUT)
-GPIO(EC_SUB_IO_2_2, PIN(L, 2), GPIO_INPUT)
-
-/* Misc */
-GPIO(EC_ENTERING_RW, PIN(G, 0), GPIO_OUT_LOW)
-GPIO(CCD_MODE_ODL, PIN(H, 5), GPIO_ODR_HIGH)
-GPIO(EC_BATTERY_PRES_ODL, PIN(I, 4), GPIO_INPUT)
-GPIO(ECH1_PACKET_MODE, PIN(H, 1), GPIO_OUT_LOW)
-
-
-/* NC pins, enable internal pull-down to avoid floating state. */
-GPIO(GPIOC0_NC, PIN(C, 0), GPIO_INPUT | GPIO_PULL_DOWN)
-GPIO(GPIOC3_NC, PIN(C, 3), GPIO_INPUT | GPIO_PULL_DOWN)
-GPIO(GPIOG3_NC, PIN(G, 3), GPIO_INPUT | GPIO_PULL_DOWN)
-GPIO(GPIOG4_NC, PIN(G, 4), GPIO_INPUT | GPIO_PULL_DOWN)
-GPIO(GPIOG5_NC, PIN(G, 5), GPIO_INPUT | GPIO_PULL_DOWN)
-GPIO(GPIOG6_NC, PIN(G, 6), GPIO_INPUT | GPIO_PULL_DOWN)
-GPIO(GPIOG7_NC, PIN(G, 7), GPIO_INPUT | GPIO_PULL_DOWN)
-GPIO(GPIOJ4_NC, PIN(J, 4), GPIO_INPUT | GPIO_PULL_DOWN)
-GPIO(GPIOJ5_NC, PIN(J, 5), GPIO_INPUT | GPIO_PULL_DOWN)
-GPIO(GPIOJ6_NC, PIN(J, 6), GPIO_INPUT | GPIO_PULL_DOWN)
-GPIO(GPIOK0_NC, PIN(K, 0), GPIO_INPUT | GPIO_PULL_DOWN)
-GPIO(GPIOL0_NC, PIN(L, 0), GPIO_INPUT | GPIO_PULL_DOWN)
-GPIO(GPIOM6_NC, PIN(M, 6), GPIO_INPUT | GPIO_PULL_DOWN)
-/* TODO(b/257833880) add any new unused pins */
-
-/* Alternate functions GPIO definitions */
-/* UART */
-ALTERNATE(PIN_MASK(B, BIT(0) | BIT(1)), 0, MODULE_UART, 0) /* UART for debug */
-
-/* I2C */
-ALTERNATE(PIN_MASK(B, BIT(3) | BIT(4)), 0, MODULE_I2C, 0) /* I2C0 */
-ALTERNATE(PIN_MASK(C, BIT(1) | BIT(2)), 0, MODULE_I2C, 0) /* I2C1 */
-ALTERNATE(PIN_MASK(F, BIT(6) | BIT(7)), 0, MODULE_I2C, GPIO_SEL_1P8V) /* I2C2 - 1.8V */
-ALTERNATE(PIN_MASK(E, BIT(0) | BIT(7)), 0, MODULE_I2C, 0) /* I2C4 */
-ALTERNATE(PIN_MASK(A, BIT(4) | BIT(5)), 0, MODULE_I2C, 0) /* I2C5 */
-
-/* ADC */
-ALTERNATE(PIN_MASK(I, BIT(0) | BIT(2) | BIT(3)), 0, MODULE_ADC, 0) /* ADC0: EC_VSNS_PP3300_A, ADC2: TEMP_SENSOR_1, ADC3: TEMP_SENSOR_2 */
-ALTERNATE(PIN_MASK(L, BIT(2) | BIT(3)), 0, MODULE_ADC, 0) /* ADC15: PPVAR_PWR_IN_IMON, ADC16: SNS_PPVAR_PWR_IN */
-
-/* PWM */
-ALTERNATE(PIN_MASK(A, BIT(1) | BIT(2) | BIT(3)), 0, MODULE_PWM, 0) /* LED_[R,G,B]_ODL */
diff --git a/board/dibbi/led.c b/board/dibbi/led.c
deleted file mode 100644
index 44cfc0b457..0000000000
--- a/board/dibbi/led.c
+++ /dev/null
@@ -1,38 +0,0 @@
-/* Copyright 2022 The ChromiumOS Authors
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-/* Dibbi specific PWM LED settings. */
-
-#include "common.h"
-#include "ec_commands.h"
-#include "pwm.h"
-#include "util.h"
-
-/* TODO(b/259467280) Implement LED logic */
-
-const enum ec_led_id supported_led_ids[] = {
- EC_LED_ID_POWER_LED,
-};
-const int supported_led_ids_count = ARRAY_SIZE(supported_led_ids);
-
-void led_get_brightness_range(enum ec_led_id led_id, uint8_t *brightness_range)
-{
- /* TODO(b/259467280) check this implementation */
- memset(brightness_range, '\0',
- sizeof(*brightness_range) * EC_LED_COLOR_COUNT);
- brightness_range[EC_LED_COLOR_RED] = 100;
- brightness_range[EC_LED_COLOR_GREEN] = 100;
- brightness_range[EC_LED_COLOR_BLUE] = 100;
- brightness_range[EC_LED_COLOR_YELLOW] = 100;
- brightness_range[EC_LED_COLOR_WHITE] = 100;
- brightness_range[EC_LED_COLOR_AMBER] = 100;
-}
-
-int led_set_brightness(enum ec_led_id led_id, const uint8_t *brightness)
-{
- /* TODO(b/259467280) fix this implementation */
-
- return EC_SUCCESS;
-}
diff --git a/board/dibbi/usb_pd_policy.c b/board/dibbi/usb_pd_policy.c
deleted file mode 100644
index 9d573b9c61..0000000000
--- a/board/dibbi/usb_pd_policy.c
+++ /dev/null
@@ -1,69 +0,0 @@
-/* Copyright 2022 The ChromiumOS Authors
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-#include "charge_manager.h"
-#include "charger.h"
-#include "chipset.h"
-#include "common.h"
-#include "console.h"
-#include "driver/tcpm/tcpci.h"
-#include "gpio.h"
-#include "usb_pd.h"
-
-#define CPRINTF(format, args...) cprintf(CC_USBPD, format, ##args)
-#define CPRINTS(format, args...) cprints(CC_USBPD, format, ##args)
-
-__override int pd_check_power_swap(int port)
-{
- /* If type-c port is supplying power, we never swap PR (to source) */
- if (port == charge_manager_get_active_charge_port())
- return 0;
- /*
- * Allow power swap as long as we are acting as a dual role device,
- * otherwise assume our role is fixed (not in S0 or console command
- * to fix our role).
- */
- return (pd_get_dual_role(port) == PD_DRP_TOGGLE_ON ? 1 : 0);
-}
-
-int pd_check_vconn_swap(int port)
-{
- /* Allow VCONN swaps if the AP is on */
- return gpio_get_level(GPIO_EN_PP5000_U);
-}
-
-void pd_power_supply_reset(int port)
-{
- if (port < 0 || port >= board_get_usb_pd_port_count())
- return;
-
- /* Disable VBUS source */
- gpio_set_level(GPIO_EN_USB_C0_VBUS, 0);
-
- /* Notify host of power info change. */
- pd_send_host_event(PD_EVENT_POWER_CHANGE);
-}
-
-int pd_set_power_supply_ready(int port)
-{
- /* Disable charging */
- gpio_set_level(GPIO_EN_PPVAR_USBC_ADP_L, 1);
-
- /* Enable VBUS source */
- gpio_set_level(GPIO_EN_USB_C0_VBUS, 1);
-
- /* Notify host of power info change. */
- pd_send_host_event(PD_EVENT_POWER_CHANGE);
-
- return EC_SUCCESS;
-}
-
-__override int pd_snk_is_vbus_provided(int port)
-{
- if (port != CHARGE_PORT_TYPEC0)
- return 0;
-
- return gpio_get_level(GPIO_USBC_ADP_PRESENT_L);
-}
diff --git a/board/dibbi/vif_override.xml b/board/dibbi/vif_override.xml
deleted file mode 100644
index 32736caf64..0000000000
--- a/board/dibbi/vif_override.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<!-- Add VIF field overrides here. See genvif.c and the Vendor Info File
- Definition from the USB-IF.
--->
diff --git a/board/dingdong/board.h b/board/dingdong/board.h
index 52c3b740e4..c0372c9322 100644
--- a/board/dingdong/board.h
+++ b/board/dingdong/board.h
@@ -15,6 +15,7 @@
#define CONFIG_UART_CONSOLE 1
/* Optional features */
+#define CONFIG_STM_HWTIMER32
#define CONFIG_ADC
#define CONFIG_BOARD_PRE_INIT
#define CONFIG_HW_CRC
diff --git a/board/discovery-stm32f072/board.h b/board/discovery-stm32f072/board.h
index b112f14f9f..d5db803b65 100644
--- a/board/discovery-stm32f072/board.h
+++ b/board/discovery-stm32f072/board.h
@@ -23,6 +23,7 @@
#define CONFIG_UART_CONSOLE 2
/* Optional features */
+#define CONFIG_STM_HWTIMER32
#define CONFIG_HW_CRC
/* USB Configuration */
diff --git a/board/discovery/board.h b/board/discovery/board.h
index a722408e81..e348454af1 100644
--- a/board/discovery/board.h
+++ b/board/discovery/board.h
@@ -25,14 +25,9 @@
#ifndef __ASSEMBLER__
-/* Timer selection
- *
- * "discovery" is an STM32L152RC, which is a "Category 3" product that
- * has the 32-bit timer TIM5. See Section 17 "General-purpose Timers" and
- * "Table 3. STM32L15xxx product categories":
- * https://www.st.com/resource/en/reference_manual/cd00240193-stm32l100xx-stm32l151xx-stm32l152xx-and-stm32l162xx-advanced-arm-based-32-bit-mcus-stmicroelectronics.pdf
- */
-#define TIM_CLOCK32 5
+/* Timer selection */
+#define TIM_CLOCK_MSB 3
+#define TIM_CLOCK_LSB 4
#include "gpio_signal.h"
diff --git a/board/dojo/board.c b/board/dojo/board.c
index 5c7db8b443..62f2e6ac09 100644
--- a/board/dojo/board.c
+++ b/board/dojo/board.c
@@ -467,13 +467,14 @@ const struct usb_mux_chain usb_muxes[CONFIG_USB_PD_PORT_MAX_COUNT] = {
},
};
-__override void board_set_charge_limit(int port, int supplier, int charge_ma,
- int max_ma, int charge_mv)
+void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
+ int charge_mv)
{
/* Limit input current lower than 2944 mA for safety */
charge_ma = MIN(charge_ma, 2944);
- charge_set_input_current_limit(charge_ma, charge_mv);
+ charge_set_input_current_limit(
+ MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
}
/* NVME */
diff --git a/board/dooly/board.c b/board/dooly/board.c
index 9652de72c0..6e1f6ebbeb 100644
--- a/board/dooly/board.c
+++ b/board/dooly/board.c
@@ -323,8 +323,8 @@ uint16_t tcpc_get_alert_status(void)
}
/* Called when the charge manager has switched to a new port. */
-__override void board_set_charge_limit(int port, int supplier, int charge_ma,
- int max_ma, int charge_mv)
+void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
+ int charge_mv)
{
/* Blink alert if insufficient power per system_can_boot_ap(). */
int insufficient_power =
diff --git a/board/drawcia/board.c b/board/drawcia/board.c
index 58def569be..118b3178be 100644
--- a/board/drawcia/board.c
+++ b/board/drawcia/board.c
@@ -610,17 +610,19 @@ uint16_t tcpc_get_alert_status(void)
return status;
}
-__override void board_set_charge_limit(int port, int supplier, int charge_ma,
- int max_ma, int charge_mv)
+void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
+ int charge_mv)
{
+ int icl = MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT);
+
/* Limit C1 on board version 0 to 2.0 A */
if ((board_version == 0) && (port == 1))
- charge_ma = MIN(charge_ma, 2000);
+ icl = MIN(icl, 2000);
/*
* TODO(b/151955431): Characterize the input current limit in case a
* scaling needs to be applied here
*/
- charge_set_input_current_limit(charge_ma, charge_mv);
+ charge_set_input_current_limit(icl, charge_mv);
}
int board_set_active_charge_port(int port)
diff --git a/board/drawcia_riscv/board.c b/board/drawcia_riscv/board.c
index ba325aedc6..cbc977d64b 100644
--- a/board/drawcia_riscv/board.c
+++ b/board/drawcia_riscv/board.c
@@ -542,17 +542,19 @@ uint16_t tcpc_get_alert_status(void)
return status;
}
-__override void board_set_charge_limit(int port, int supplier, int charge_ma,
- int max_ma, int charge_mv)
+void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
+ int charge_mv)
{
+ int icl = MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT);
+
/* Limit C1 on board version 0 to 2.0 A */
if ((board_version == 0) && (port == 1))
- charge_ma = MIN(charge_ma, 2000);
+ icl = MIN(icl, 2000);
/*
* TODO(b/151955431): Characterize the input current limit in case a
* scaling needs to be applied here
*/
- charge_set_input_current_limit(charge_ma, charge_mv);
+ charge_set_input_current_limit(icl, charge_mv);
}
int board_set_active_charge_port(int port)
diff --git a/board/driblee/board.c b/board/driblee/board.c
index 05ec708ac5..30075e683e 100644
--- a/board/driblee/board.c
+++ b/board/driblee/board.c
@@ -338,6 +338,19 @@ int board_set_active_charge_port(int port)
return EC_SUCCESS;
}
+void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
+ int charge_mv)
+{
+ int icl = MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT);
+
+ /*
+ * b/147463641: The charger IC seems to overdraw ~4%, therefore we
+ * reduce our target accordingly.
+ */
+ icl = icl * 96 / 100;
+ charge_set_input_current_limit(icl, charge_mv);
+}
+
__override void typec_set_source_current_limit(int port, enum tcpc_rp_value rp)
{
if (port < 0 || port > board_get_usb_pd_port_count())
diff --git a/board/driblee/board.h b/board/driblee/board.h
index 514fe584ff..f6a3ac9130 100644
--- a/board/driblee/board.h
+++ b/board/driblee/board.h
@@ -31,11 +31,6 @@
#undef CONFIG_CMD_CHARGER_DUMP
#undef CONFIG_USB_PD_TCPC_LPM_EXIT_DEBOUNCE
#define CONFIG_USB_PD_TCPC_LPM_EXIT_DEBOUNCE (100 * MSEC)
-/*
- * b/147463641: The charger IC seems to overdraw ~4%, therefore we
- * reduce our target accordingly.
- */
-#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 4
#define CONFIG_MATH_UTIL
#define CONFIG_CHARGER_PROFILE_OVERRIDE
#define CHARGING_CURRENT_1100MA 1100
diff --git a/board/drobit/board.c b/board/drobit/board.c
index 1d881d9a2c..1a20870d1f 100644
--- a/board/drobit/board.c
+++ b/board/drobit/board.c
@@ -475,3 +475,17 @@ static void board_chipset_suspend(void)
gpio_set_level(GPIO_EC_KB_BL_EN, 0);
}
DECLARE_HOOK(HOOK_CHIPSET_SUSPEND, board_chipset_suspend, HOOK_PRIO_DEFAULT);
+
+/******************************************************************************/
+/* Set the charge limit based upon desired maximum. */
+void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
+ int charge_mv)
+{
+ /*
+ * Limit the input current to 98% negotiated limit,
+ * to account for the charger chip margin.
+ */
+ charge_ma = charge_ma * 98 / 100;
+ charge_set_input_current_limit(
+ MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
+}
diff --git a/board/drobit/board.h b/board/drobit/board.h
index bf3e64ae5a..d6fda98f3d 100644
--- a/board/drobit/board.h
+++ b/board/drobit/board.h
@@ -89,7 +89,6 @@
/* charger defines */
#define CONFIG_CHARGER_SENSE_RESISTOR 10
#define CONFIG_CHARGER_SENSE_RESISTOR_AC 10
-#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 2
/*
* Macros for GPIO signals used in common code that don't match the
diff --git a/board/eldrid/board.c b/board/eldrid/board.c
index 1abf9c6acd..81fdf22ffc 100644
--- a/board/eldrid/board.c
+++ b/board/eldrid/board.c
@@ -182,7 +182,14 @@ __override void board_set_charge_limit(int port, int supplier, int charge_ma,
else
isl9241_set_ac_prochot(0, 3328);
- charge_set_input_current_limit(charge_ma, charge_mv);
+ /*
+ * Follow OEM request to limit the input current to
+ * 90% negotiated limit.
+ */
+ charge_ma = charge_ma * 90 / 100;
+
+ charge_set_input_current_limit(
+ MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
}
/******************************************************************************/
diff --git a/board/eldrid/board.h b/board/eldrid/board.h
index 8cfac4d8bc..1bbe183425 100644
--- a/board/eldrid/board.h
+++ b/board/eldrid/board.h
@@ -93,8 +93,6 @@
/* charger defines */
#define CONFIG_CHARGER_SENSE_RESISTOR 10
#define CONFIG_CHARGER_SENSE_RESISTOR_AC 10
-/* OEM requested 10% derating */
-#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 10
/* Retimer */
#undef CONFIG_USBC_RETIMER_INTEL_BB
diff --git a/board/elm/board.c b/board/elm/board.c
index f8621d086e..4007d34379 100644
--- a/board/elm/board.c
+++ b/board/elm/board.c
@@ -337,10 +337,13 @@ int board_set_active_charge_port(int charge_port)
* @param charge_ma Desired charge limit (mA).
* @param charge_mv Negotiated charge voltage (mV).
*/
-__override void board_set_charge_limit(int port, int supplier, int charge_ma,
- int max_ma, int charge_mv)
+void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
+ int charge_mv)
{
- charge_set_input_current_limit(charge_ma, charge_mv);
+ /* Limit input current 95% ratio on elm board for safety */
+ charge_ma = (charge_ma * 95) / 100;
+ charge_set_input_current_limit(
+ MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
pd_send_host_event(PD_EVENT_POWER_CHANGE);
}
diff --git a/board/elm/board.h b/board/elm/board.h
index 6e4e705604..10cb6bb75d 100644
--- a/board/elm/board.h
+++ b/board/elm/board.h
@@ -37,15 +37,13 @@
#define CONFIG_BATTERY_SMART
#define CONFIG_CHARGE_MANAGER
#define CONFIG_CHARGER
-#define CONFIG_CHARGER_DEFAULT_CURRENT_LIMIT 512
-#define CONFIG_CHARGER_MIN_INPUT_CURRENT_LIMIT 512
+#define CONFIG_CHARGER_INPUT_CURRENT 512
#define CONFIG_CHARGE_RAMP_HW
#define CONFIG_CHARGER_ISL9237
#define CONFIG_CHARGER_MAX_INPUT_CURRENT 3000
#define CONFIG_CHARGER_SENSE_RESISTOR 10
#define CONFIG_CHARGER_SENSE_RESISTOR_AC 20
#define CONFIG_CHARGER_DISCHARGE_ON_AC
-#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 5
#define CONFIG_CHIPSET_MT817X
#define CONFIG_CMD_TYPEC
#define CONFIG_EXTPOWER_GPIO
@@ -75,6 +73,7 @@
#define CONFIG_USB_CHARGER
#define CONFIG_SPI
#define CONFIG_SPI_CONTROLLER
+#define CONFIG_STM_HWTIMER32
#define CONFIG_VBOOT_HASH
#undef CONFIG_WATCHDOG_HELP
#define CONFIG_SWITCH
diff --git a/board/eve/board.c b/board/eve/board.c
index 96534f62c7..3f5da1a83a 100644
--- a/board/eve/board.c
+++ b/board/eve/board.c
@@ -634,8 +634,8 @@ int board_set_active_charge_port(int charge_port)
* @param charge_ma Desired charge limit (mA).
* @param charge_mv Negotiated charge voltage (mV).
*/
-__override void board_set_charge_limit(int port, int supplier, int charge_ma,
- int max_ma, int charge_mv)
+void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
+ int charge_mv)
{
/* Enable charging trigger by BC1.2 detection */
int bc12_enable = (supplier == CHARGE_SUPPLIER_BC12_CDP ||
@@ -646,7 +646,9 @@ __override void board_set_charge_limit(int port, int supplier, int charge_ma,
if (bd9995x_bc12_enable_charging(port, bc12_enable))
return;
- charge_set_input_current_limit(charge_ma, charge_mv);
+ charge_ma = (charge_ma * 95) / 100;
+ charge_set_input_current_limit(
+ MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
}
/**
diff --git a/board/eve/board.h b/board/eve/board.h
index e3623979c3..064bce4b60 100644
--- a/board/eve/board.h
+++ b/board/eve/board.h
@@ -100,9 +100,7 @@
#define CONFIG_CHARGER_BD9995X
#define CONFIG_CHARGER_BD9995X_CHGEN
#define CONFIG_CHARGER_DISCHARGE_ON_AC
-#define CONFIG_CHARGER_DEFAULT_CURRENT_LIMIT 512
-#define CONFIG_CHARGER_MIN_INPUT_CURRENT_LIMIT 512
-#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 5
+#define CONFIG_CHARGER_INPUT_CURRENT 512
#define CONFIG_CHARGER_MAINTAIN_VBAT
#define CONFIG_CHARGER_PROFILE_OVERRIDE
#define CONFIG_CHARGER_PSYS_READ
diff --git a/board/ezkinil/board.c b/board/ezkinil/board.c
index 5e15b458cc..c9e1aca267 100644
--- a/board/ezkinil/board.c
+++ b/board/ezkinil/board.c
@@ -865,3 +865,16 @@ int fan_percent_to_rpm(int fan, int pct)
return fan_table[current_level].rpm;
}
+
+__override void board_set_charge_limit(int port, int supplier, int charge_ma,
+ int max_ma, int charge_mv)
+{
+ /*
+ * Limit the input current to 95% negotiated limit,
+ * to account for the charger chip margin.
+ */
+ charge_ma = charge_ma * 95 / 100;
+
+ charge_set_input_current_limit(
+ MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
+}
diff --git a/board/ezkinil/board.h b/board/ezkinil/board.h
index c5e6ce1771..aa1fe065f4 100644
--- a/board/ezkinil/board.h
+++ b/board/ezkinil/board.h
@@ -15,9 +15,6 @@
#define CONFIG_KEYBOARD_FACTORY_TEST
-/* charger margin */
-#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 5
-
/* Motion sensing drivers */
#define CONFIG_ACCELGYRO_ICM426XX
#define CONFIG_ACCELGYRO_ICM426XX_INT_EVENT \
diff --git a/board/felwinter/board.h b/board/felwinter/board.h
index 0ca6a59b9c..17e1cf9246 100644
--- a/board/felwinter/board.h
+++ b/board/felwinter/board.h
@@ -179,7 +179,6 @@
#define CONFIG_CHARGE_RAMP_SW
#define CONFIG_CHARGER_SENSE_RESISTOR 10
#define CONFIG_CHARGER_SENSE_RESISTOR_AC 10
-#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 10
#define CONFIG_KEYBOARD_REFRESH_ROW3
diff --git a/board/felwinter/charger_isl9241.c b/board/felwinter/charger_isl9241.c
index 95227f753a..dd2535ea7c 100644
--- a/board/felwinter/charger_isl9241.c
+++ b/board/felwinter/charger_isl9241.c
@@ -79,3 +79,11 @@ int board_set_active_charge_port(int port)
return EC_SUCCESS;
}
+
+__overridable void board_set_charge_limit(int port, int supplier, int charge_ma,
+ int max_ma, int charge_mv)
+{
+ charge_ma = (charge_ma * 90) / 100;
+ charge_set_input_current_limit(
+ MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
+}
diff --git a/board/fennel/board.c b/board/fennel/board.c
index 6d864252b6..563f680dee 100644
--- a/board/fennel/board.c
+++ b/board/fennel/board.c
@@ -237,6 +237,14 @@ int board_set_active_charge_port(int charge_port)
return EC_SUCCESS;
}
+void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
+ int charge_mv)
+{
+ charge_ma = (charge_ma * 95) / 100;
+ charge_set_input_current_limit(
+ MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
+}
+
int board_discharge_on_ac(int enable)
{
int ret, port;
diff --git a/board/fennel/board.h b/board/fennel/board.h
index 42e1fcd451..6bb90ef0f3 100644
--- a/board/fennel/board.h
+++ b/board/fennel/board.h
@@ -26,7 +26,6 @@
#define CONFIG_BATTERY_HW_PRESENT_CUSTOM
#define CONFIG_CHARGER_PSYS
-#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 5
#define CONFIG_CHARGER_RUNTIME_CONFIG
diff --git a/board/fizz/board.c b/board/fizz/board.c
index 296ddca5a7..f58083c6ed 100644
--- a/board/fizz/board.c
+++ b/board/fizz/board.c
@@ -512,8 +512,8 @@ static void set_charge_limit(int charge_ma)
}
}
-__override void board_set_charge_limit(int port, int supplier, int charge_ma,
- int max_ma, int charge_mv)
+void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
+ int charge_mv)
{
int p87w = 0, p65w = 0, p60w = 0;
diff --git a/board/fluffy/board.h b/board/fluffy/board.h
index 604e67d9b8..1309c41901 100644
--- a/board/fluffy/board.h
+++ b/board/fluffy/board.h
@@ -38,6 +38,7 @@
#define USB_EP_COUNT 2
/* Optional features */
+#define CONFIG_STM_HWTIMER32
#define CONFIG_ADC
#define CONFIG_I2C
diff --git a/board/fusb307bgevb/board.h b/board/fusb307bgevb/board.h
index 8d2fdfcfed..5e45b346b7 100644
--- a/board/fusb307bgevb/board.h
+++ b/board/fusb307bgevb/board.h
@@ -29,6 +29,7 @@
#define CONFIG_UART_CONSOLE 2
/* Optional features */
+#define CONFIG_STM_HWTIMER32
#define CONFIG_HW_CRC
#define CONFIG_I2C
#define CONFIG_I2C_CONTROLLER
diff --git a/board/gaelin/board.c b/board/gaelin/board.c
index 7228c9e2f2..6fad328a76 100644
--- a/board/gaelin/board.c
+++ b/board/gaelin/board.c
@@ -17,6 +17,7 @@
#include "gpio_signal.h"
#include "power_button.h"
#include "hooks.h"
+#include "peripheral_charger.h"
#include "power.h"
#include "switch.h"
#include "throttle_ap.h"
@@ -40,6 +41,33 @@ const int usb_port_enable[USB_PORT_COUNT] = {
};
BUILD_ASSERT(ARRAY_SIZE(usb_port_enable) == USB_PORT_COUNT);
+extern struct pchg_drv cps8100_drv;
+struct pchg pchgs[] = {
+ [0] = {
+ .cfg = &(const struct pchg_config) {
+ .drv = &cps8100_drv,
+ .i2c_port = I2C_PORT_QI,
+ .irq_pin = GPIO_QI_INT_ODL,
+ .full_percent = 96,
+ .block_size = 128,
+ },
+ .policy = {
+ [PCHG_CHIPSET_STATE_ON] = &pchg_policy_on,
+ [PCHG_CHIPSET_STATE_SUSPEND] = &pchg_policy_suspend,
+ },
+ .events = QUEUE_NULL(PCHG_EVENT_QUEUE_SIZE, enum pchg_event),
+ },
+};
+const int pchg_count = ARRAY_SIZE(pchgs);
+
+__override void board_pchg_power_on(int port, bool on)
+{
+ if (port == 0)
+ gpio_set_level(GPIO_EC_QI_PWR, on);
+ else
+ CPRINTS("%s: Invalid port=%d", __func__, port);
+}
+
/******************************************************************************/
int board_set_active_charge_port(int port)
@@ -90,6 +118,7 @@ int board_set_active_charge_port(int port)
switch (port) {
case CHARGE_PORT_TYPEC0:
case CHARGE_PORT_TYPEC1:
+ case CHARGE_PORT_TYPEC2:
gpio_set_level(GPIO_EN_PPVAR_BJ_ADP_L, 1);
break;
case CHARGE_PORT_BARRELJACK:
@@ -264,7 +293,6 @@ void board_overcurrent_event(int port, int is_overcurrented)
usbc_overcurrent = is_overcurrented;
update_5v_usage();
}
-
/*
* Power monitoring and management.
*
@@ -308,6 +336,7 @@ void board_overcurrent_event(int port, int is_overcurrented)
#define THROT_TYPE_A_REAR BIT(1)
#define THROT_TYPE_C0 BIT(2)
#define THROT_TYPE_C1 BIT(3)
+#define THROT_TYPE_C2 BIT(4)
#define THROT_PROCHOT BIT(5)
/*
@@ -442,6 +471,16 @@ static void power_monitor(void)
gap += POWER_GAIN_TYPE_C;
}
/*
+ * If the type-C port is sourcing power,
+ * check whether it should be throttled.
+ */
+ if (ppc_is_sourcing_vbus(2) && gap <= 0) {
+ new_state |= THROT_TYPE_C2;
+ headroom_5v_z1 += PWR_Z1_C_HIGH - PWR_Z1_C_LOW;
+ if (!(current_state & THROT_TYPE_C2))
+ gap += POWER_GAIN_TYPE_C;
+ }
+ /*
* As a last resort, turn on PROCHOT to
* throttle the CPU.
*/
@@ -531,6 +570,15 @@ static void power_monitor(void)
tcpm_select_rp_value(1, rp);
pd_update_contract(1);
}
+ if (diff & THROT_TYPE_C2) {
+ enum tcpc_rp_value rp = (new_state & THROT_TYPE_C2) ?
+ TYPEC_RP_1A5 :
+ TYPEC_RP_3A0;
+
+ ppc_set_vbus_source_current_limit(2, rp);
+ tcpm_select_rp_value(2, rp);
+ pd_update_contract(2);
+ }
if (diff & THROT_TYPE_A_REAR) {
int typea_bc = (new_state & THROT_TYPE_A_REAR) ? 1 : 0;
diff --git a/board/gaelin/board.h b/board/gaelin/board.h
index 166f0f1432..f113c6cffd 100644
--- a/board/gaelin/board.h
+++ b/board/gaelin/board.h
@@ -16,7 +16,7 @@
#define CONFIG_MP2964
/* Barrel Jack */
-#define DEDICATED_CHARGE_PORT 2
+#define DEDICATED_CHARGE_PORT 3
/* HDMI CEC */
#define CONFIG_CEC
@@ -31,9 +31,19 @@
/* USB Type C and USB PD defines */
#define CONFIG_USB_PD_REQUIRE_AP_MODE_ENTRY
+#define CONFIG_IO_EXPANDER
+#define CONFIG_IO_EXPANDER_NCT38XX
+#define CONFIG_IO_EXPANDER_PORT_COUNT 2
+
#define CONFIG_USB_PD_PPC
-#define CONFIG_USB_PD_TCPM_PS8815
-#define CONFIG_USBC_PPC_NX20P3483 /* Compatible with Silicon Mitus SM5360A */
+#define CONFIG_USB_PD_TCPM_RT1715
+#define CONFIG_USBC_RETIMER_INTEL_BB
+
+#define CONFIG_USBC_RETIMER_KB800X
+#define CONFIG_KB800X_CUSTOM_XBAR
+#define CONFIG_USBC_PPC_SYV682X
+#undef CONFIG_SYV682X_HV_ILIM
+#define CONFIG_SYV682X_HV_ILIM SYV682X_HV_ILIM_5_50
/* TODO: b/177608416 - measure and check these values on brya */
#define PD_POWER_SUPPLY_TURN_ON_DELAY 30000 /* us */
@@ -82,17 +92,22 @@
#define GPIO_RECOVERY_L_2 GPIO_GSC_EC_RECOVERY_BTN_OD
/* I2C Bus Configuration */
-#define I2C_PORT_SCALER NPCX_I2C_PORT5_0
-#define I2C_PORT_USB_C0_TCPC NPCX_I2C_PORT1_0
+#define I2C_PORT_DP_REDRIVER NPCX_I2C_PORT0_0
+
+#define I2C_PORT_USB_C0_C2_TCPC NPCX_I2C_PORT1_0
#define I2C_PORT_USB_C1_TCPC NPCX_I2C_PORT4_1
-#define I2C_PORT_USB_C0_PPC NPCX_I2C_PORT2_0
-#define I2C_PORT_USB_C1_PPC NPCX_I2C_PORT3_0
+#define I2C_PORT_USB_C0_C2_PPC NPCX_I2C_PORT2_0
+#define I2C_PORT_USB_C1_PPC NPCX_I2C_PORT6_1
-#define I2C_PORT_USB_C0_BC12 NPCX_I2C_PORT2_0
-#define I2C_PORT_USB_C1_BC12 NPCX_I2C_PORT3_0
+#define I2C_PORT_USB_C0_C2_BC12 NPCX_I2C_PORT2_0
+#define I2C_PORT_USB_C1_BC12 NPCX_I2C_PORT6_1
+#define I2C_PORT_USB_C0_C2_MUX NPCX_I2C_PORT3_0
+#define I2C_PORT_USB_C1_MUX NPCX_I2C_PORT6_1
+
+#define I2C_PORT_QI NPCX_I2C_PORT5_0
#define I2C_PORT_EEPROM NPCX_I2C_PORT7_0
#define I2C_PORT_MP2964 NPCX_I2C_PORT7_0
@@ -100,7 +115,17 @@
#define I2C_ADDR_MP2964_FLAGS 0x20
-#define I2C_ADDR_SCALER_FLAGS 0x58
+#define USBC_PORT_C0_BB_RETIMER_I2C_ADDR 0x58
+#define USBC_PORT_C2_BB_RETIMER_I2C_ADDR 0x59
+
+/* Enabling Thunderbolt-compatible mode */
+#define CONFIG_USB_PD_TBT_COMPAT_MODE
+
+/* Enabling USB4 mode */
+#define CONFIG_USB_PD_USB4
+
+/* Retimer */
+#define CONFIG_USBC_RETIMER_FW_UPDATE
/* Thermal features */
#define CONFIG_THERMISTOR
@@ -111,14 +136,21 @@
/* ADC */
#define CONFIG_ADC
-/* Fan */
+/*
+ * TODO(b/197478860): Enable the fan control. We need
+ * to check the sensor value and adjust the fan speed.
+ */
#define CONFIG_FANS FAN_CH_COUNT
-#define RPM_DEVIATION 1
-#define CONFIG_CUSTOM_FAN_CONTROL
/* Include math_util for bitmask_uint64 used in pd_timers */
#define CONFIG_MATH_UTIL
+/* WPC/Qi charger */
+#ifdef SECTION_IS_RW
+#define CONFIG_PERIPHERAL_CHARGER
+#define CONFIG_CPS8100
+#endif
+
#ifndef __ASSEMBLER__
#include "gpio_signal.h" /* needed by registers.h */
@@ -128,6 +160,7 @@
enum charge_port {
CHARGE_PORT_TYPEC0,
CHARGE_PORT_TYPEC1,
+ CHARGE_PORT_TYPEC2,
CHARGE_PORT_BARRELJACK,
CHARGE_PORT_ENUM_COUNT
};
@@ -150,6 +183,8 @@ enum temp_sensor_id {
TEMP_SENSOR_COUNT
};
+enum ioex_port { IOEX_C0_NCT38XX = 0, IOEX_C2_NCT38XX, IOEX_PORT_COUNT };
+
enum pwm_channel {
PWM_CH_LED_GREEN, /* PWM0 */
PWM_CH_FAN, /* PWM5 */
diff --git a/board/gaelin/build.mk b/board/gaelin/build.mk
index 6961fb3f60..3de758d1bd 100644
--- a/board/gaelin/build.mk
+++ b/board/gaelin/build.mk
@@ -19,5 +19,4 @@ board-y+=i2c.o
board-y+=led.o
board-y+=pwm.o
board-y+=sensors.o
-board-y+=thermal.o
board-y+=usbc_config.o
diff --git a/board/gaelin/ec.tasklist b/board/gaelin/ec.tasklist
index 4a40f332e8..d16fc35f52 100644
--- a/board/gaelin/ec.tasklist
+++ b/board/gaelin/ec.tasklist
@@ -12,8 +12,10 @@
#define CONFIG_TASK_LIST \
TASK_ALWAYS(HOOKS, hook_task, NULL, LARGER_TASK_STACK_SIZE) \
+ TASK_ALWAYS_RW(PCHG, pchg_task, NULL, LARGER_TASK_STACK_SIZE) \
TASK_ALWAYS(USB_CHG_P0, usb_charger_task, 0, TASK_STACK_SIZE) \
TASK_ALWAYS(USB_CHG_P1, usb_charger_task, 0, TASK_STACK_SIZE) \
+ TASK_ALWAYS(USB_CHG_P2, usb_charger_task, 0, TASK_STACK_SIZE) \
TASK_NOTEST(CHIPSET, chipset_task, NULL, LARGER_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) \
@@ -21,6 +23,7 @@
TASK_ALWAYS(POWERBTN, power_button_task, NULL, LARGER_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) \
- TASK_ALWAYS(PD_INT_C0, pd_interrupt_handler_task, 0, LARGER_TASK_STACK_SIZE) \
+ TASK_ALWAYS(PD_C2, pd_task, NULL, VENTI_TASK_STACK_SIZE) \
+ TASK_ALWAYS(PD_INT_C0, pd_shared_alert_task, (BIT(2) | BIT(0)), LARGER_TASK_STACK_SIZE) \
TASK_ALWAYS(PD_INT_C1, pd_interrupt_handler_task, 1, LARGER_TASK_STACK_SIZE) \
TASK_ALWAYS(CEC, cec_task, NULL, LARGER_TASK_STACK_SIZE)
diff --git a/board/gaelin/fans.c b/board/gaelin/fans.c
index 5f54e6e63c..6828438a10 100644
--- a/board/gaelin/fans.c
+++ b/board/gaelin/fans.c
@@ -30,10 +30,16 @@ static const struct fan_conf fan_conf_0 = {
.enable_gpio = GPIO_EN_PP5000_FAN,
};
+/*
+ * TOOD(b/197478860): 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 = 2350,
- .rpm_start = 2350,
- .rpm_max = 4100,
+ .rpm_min = 2200,
+ .rpm_start = 2200,
+ .rpm_max = 7200,
};
const struct fan_t fans[FAN_CH_COUNT] = {
diff --git a/board/gaelin/gpio.inc b/board/gaelin/gpio.inc
index 6de7003743..51cf0010c6 100644
--- a/board/gaelin/gpio.inc
+++ b/board/gaelin/gpio.inc
@@ -18,11 +18,15 @@ GPIO_INT(SLP_S3_L, PIN(A, 5), GPIO_INT_BOTH, power_signal_inte
GPIO_INT(SLP_SUS_L, PIN(F, 1), GPIO_INT_BOTH, power_signal_interrupt)
GPIO_INT(SYS_SLP_S0IX_L, PIN(D, 5), GPIO_INT_BOTH, power_signal_interrupt)
GPIO_INT(USB_C0_BC12_INT_ODL, PIN(C, 6), GPIO_INT_FALLING, bc12_interrupt)
-GPIO_INT(USB_C0_TCPC_INT_ODL, PIN(E, 0), GPIO_INT_FALLING, tcpc_alert_event)
+GPIO_INT(USB_C0_C2_TCPC_INT_ODL, PIN(E, 0), GPIO_INT_FALLING, tcpc_alert_event)
GPIO_INT(USB_C0_PPC_INT_ODL, PIN(6, 2), GPIO_INT_FALLING, ppc_interrupt)
+GPIO_INT(USB_C0_RT_INT_ODL, PIN(B, 1), GPIO_INT_FALLING, retimer_interrupt)
GPIO_INT(USB_C1_BC12_INT_ODL, PIN(5, 0), GPIO_INT_FALLING, bc12_interrupt)
GPIO_INT(USB_C1_PPC_INT_ODL, PIN(F, 5), GPIO_INT_FALLING, ppc_interrupt)
GPIO_INT(USB_C1_TCPC_INT_ODL, PIN(A, 2), GPIO_INT_FALLING, tcpc_alert_event)
+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(BJ_ADP_PRESENT_ODL, PIN(8, 2), GPIO_INT_BOTH | GPIO_PULL_UP, adp_connect_interrupt)
GPIO_INT(EC_RECOVERY_BTN_OD, PIN(2, 3), GPIO_INT_BOTH, button_interrupt)
GPIO_INT(HDMI_CONN_OC_ODL, PIN(2, 4), GPIO_INPUT | GPIO_INT_BOTH, port_ocp_interrupt)
@@ -30,6 +34,11 @@ GPIO_INT(USB_A0_OC_ODL, PIN(3, 1), GPIO_INPUT | GPIO_PULL_UP | GPIO
GPIO_INT(USB_A1_OC_ODL, PIN(3, 0), GPIO_INPUT | GPIO_PULL_UP | GPIO_INT_BOTH, port_ocp_interrupt)
GPIO_INT(USB_A2_OC_ODL, PIN(2, 7), GPIO_INPUT | GPIO_PULL_UP | GPIO_INT_BOTH, port_ocp_interrupt)
GPIO_INT(USB_A3_OC_ODL, PIN(2, 6), GPIO_INPUT | GPIO_PULL_UP | GPIO_INT_BOTH, port_ocp_interrupt)
+#ifdef SECTION_IS_RW
+GPIO_INT(QI_INT_ODL, PIN(9, 6), GPIO_INT_FALLING, pchg_irq)
+#else
+UNIMPLEMENTED(QI_INT_ODL)
+#endif
/* CCD */
GPIO(CCD_MODE_ODL, PIN(E, 5), GPIO_INPUT)
@@ -45,25 +54,8 @@ GPIO(EN_PP5000_FAN, PIN(6, 1), GPIO_OUT_HIGH)
GPIO(ANALOG_PPVAR_PWR_IN_IMON_EC, PIN(4, 2), GPIO_INPUT)
/* Display */
-GPIO(EC_OVERRIDE_SCLR_EN, PIN(D, 4), GPIO_OUT_HIGH)
-
-/* TODO(b/260063632): the gpio pin control is wip, setting to level high
- to enable the backlight by default */
-GPIO(EC_12VSC_EN, PIN(D, 2), GPIO_OUT_HIGH)
-
-GPIO(OSD_STS, PIN(4, 1), GPIO_INPUT)
-GPIO(DISP_MODE, PIN(A, 0), GPIO_INPUT)
-GPIO(PANEL_PWR_STS, PIN(9, 5), GPIO_INPUT)
-GPIO(EN_SCLR_RAILS, PIN(0, 4), GPIO_INPUT)
-GPIO(HDMI_5V_IN, PIN(9, 3), GPIO_INPUT)
-GPIO(HDMI0_CABLE_DET, PIN(9, 6), GPIO_INPUT)
-GPIO(WP_EC, PIN(C, 3), GPIO_INPUT)
-GPIO(OSD_INT, PIN(0, 5), GPIO_INPUT)
-
-/* Audio */
-/* TODO(b/260063632): the gpio pin control is wip, setting to level high
- to enable the speaker by default */
-GPIO(EC_AMP_SD, PIN(5, 6), GPIO_OUT_HIGH)
+GPIO(DP_CONN_OC_ODL, PIN(2, 5), GPIO_INPUT)
+
/* BarrelJack */
GPIO(EN_PPVAR_BJ_ADP_L, PIN(0, 7), GPIO_OUT_LOW)
@@ -87,6 +79,17 @@ GPIO(CPU_C10_GATE_L, PIN(6, 7), GPIO_INPUT)
GPIO(EC_PCH_PWR_BTN_ODL, PIN(C, 1), GPIO_ODR_HIGH)
GPIO(GSC_EC_RECOVERY_BTN_OD, PIN(2, 2), GPIO_INPUT)
+/* NFC */
+/* TODO(b/194068530): Enable NFC */
+GPIO(NFC_COIL_ACT_L, PIN(D, 4), GPIO_INPUT)
+GPIO(NFC_LOW_POWER_MODE, PIN(9, 5), GPIO_OUT_HIGH)
+GPIO(NFC_CARD_DET_L, PIN(A, 3), GPIO_INPUT)
+GPIO(EN_NFC_BUZZER, PIN(0, 5), GPIO_OUT_LOW)
+
+/* Wireless Charger */
+GPIO(EC_QI_PWR, PIN(D, 2), GPIO_OUT_LOW)
+GPIO(QI_RESET_L, PIN(9, 3), GPIO_OUT_HIGH)
+
/* HDMI CEC */
/* TODO(b/197474873): Enable HDMI CEC */
GPIO(HDMI_CEC_IN, PIN(4, 0), GPIO_INPUT)
@@ -94,16 +97,20 @@ GPIO(HDMI_CEC_OUT, PIN(D, 3), GPIO_OUT_HIGH | GPIO_OPEN_DRAIN)
GPIO(HDMI_CEC_PULL_UP, PIN(C, 2), GPIO_OUT_HIGH)
/* I2C SCL/SDA */
-GPIO(SMSCALER_CLK, PIN(3, 3), GPIO_INPUT)
-GPIO(SMSCALER_DATA, PIN(3, 6), GPIO_INPUT)
+GPIO(EC_I2C_QI_SCL, PIN(3, 3), GPIO_INPUT)
+GPIO(EC_I2C_QI_SDA, PIN(3, 6), GPIO_INPUT)
GPIO(EC_I2C_MISC_SCL_R, PIN(B, 3), GPIO_INPUT)
GPIO(EC_I2C_MISC_SDA_R, PIN(B, 2), GPIO_INPUT)
-GPIO(EC_I2C_USB_C0_PPC_BC_SCL, PIN(9, 2), GPIO_INPUT)
-GPIO(EC_I2C_USB_C0_PPC_BC_SDA, PIN(9, 1), GPIO_INPUT)
-GPIO(EC_I2C_USB_C1_PPC_BC_SCL, PIN(D, 1), GPIO_INPUT)
-GPIO(EC_I2C_USB_C1_PPC_BC_SDA, PIN(D, 0), GPIO_INPUT)
-GPIO(EC_I2C_USB_C0_TCPC_SCL, PIN(9, 0), GPIO_INPUT)
-GPIO(EC_I2C_USB_C0_TCPC_SDA, PIN(8, 7), GPIO_INPUT)
+GPIO(EC_I2C_DP_SCL, PIN(B, 5), GPIO_INPUT)
+GPIO(EC_I2C_DP_SDA, PIN(B, 4), GPIO_INPUT)
+GPIO(EC_I2C_USB_C0_C2_PPC_SCL, PIN(9, 2), GPIO_INPUT)
+GPIO(EC_I2C_USB_C0_C2_PPC_SDA, PIN(9, 1), GPIO_INPUT)
+GPIO(EC_I2C_USB_C0_C2_RT_SCL, PIN(D, 1), GPIO_INPUT)
+GPIO(EC_I2C_USB_C0_C2_RT_SDA, PIN(D, 0), GPIO_INPUT)
+GPIO(EC_I2C_USB_C0_C2_TCPC_SCL, PIN(9, 0), GPIO_INPUT)
+GPIO(EC_I2C_USB_C0_C2_TCPC_SDA, PIN(8, 7), GPIO_INPUT)
+GPIO(EC_I2C_USB_C1_MIX_SCL, PIN(E, 4), GPIO_INPUT)
+GPIO(EC_I2C_USB_C1_MIX_SDA, PIN(E, 3), GPIO_INPUT)
GPIO(EC_I2C_USB_C1_TCPC_SCL, PIN(F, 3), GPIO_INPUT)
GPIO(EC_I2C_USB_C1_TCPC_SDA, PIN(F, 2), GPIO_INPUT)
@@ -121,26 +128,36 @@ GPIO(USB_A_OC_SOC_L, PIN(8, 0), GPIO_OUT_HIGH)
/* LED */
/* TODO(b/197471359): LED implementation */
+GPIO(LED_GREEN_L, PIN(C, 3), GPIO_OUT_LOW)
GPIO(LED_RED_L, PIN(C, 4), GPIO_OUT_LOW)
/* USBC */
-GPIO(USB_C0_FRS_EN, PIN(9, 7), GPIO_OUT_LOW)
-GPIO(USB_C0_RT_RST_L, PIN(A, 7), GPIO_OUT_HIGH)
+GPIO(USB_C0_C2_TCPC_RST_ODL, PIN(A, 7), GPIO_ODR_LOW)
GPIO(USB_C1_FRS_EN, PIN(9, 4), GPIO_OUT_LOW)
-GPIO(USB_C1_RT_RST_L, PIN(0, 2), GPIO_OUT_HIGH)
+GPIO(USB_C1_RT_INT_ODL, PIN(A, 0), GPIO_INPUT)
+GPIO(USB_C1_RT_RST_R_L, PIN(0, 2), GPIO_OUT_LOW)
/* GPIO02_P2 to PU */
/* GPIO03_P2 to PU */
+IOEX(USB_C0_OC_ODL, EXPIN(IOEX_C0_NCT38XX, 0, 4), GPIO_ODR_HIGH)
+IOEX(USB_C0_FRS_EN, EXPIN(IOEX_C0_NCT38XX, 0, 6), GPIO_LOW)
+IOEX(USB_C0_RT_RST_ODL, EXPIN(IOEX_C0_NCT38XX, 0, 7), GPIO_ODR_LOW)
+
+IOEX(USB_C2_RT_RST_ODL, EXPIN(IOEX_C2_NCT38XX, 0, 2), GPIO_ODR_LOW)
+IOEX(USB_C1_OC_ODL, EXPIN(IOEX_C2_NCT38XX, 0, 3), GPIO_ODR_HIGH)
+IOEX(USB_C2_OC_ODL, EXPIN(IOEX_C2_NCT38XX, 0, 4), GPIO_ODR_HIGH)
+IOEX(USB_C2_FRS_EN, EXPIN(IOEX_C2_NCT38XX, 0, 6), GPIO_LOW)
/* GPIO07_P2 to PU */
/* UART alternate functions */
ALTERNATE(PIN_MASK(6, 0x30), 0, MODULE_UART, 0) /* GPIO64/CR_SIN1, GPO65/CR_SOUT1/FLPRG1_L */
/* I2C alternate functions */
-ALTERNATE(PIN_MASK(3, 0x48), 0, MODULE_I2C, 0) /* GPIO36/RTS_L/I2C5_SDA0, GPIO33/I2C5_SCL0/CTS_L */
+ALTERNATE(PIN_MASK(3, 0x48), 0, MODULE_I2C, 0) /* GPIO33/I2C5_SCL0/CTS_L, GPIO36/RTS_L/I2C5_SDA0 */
ALTERNATE(PIN_MASK(8, 0x80), 0, MODULE_I2C, 0) /* GPIO87/I2C1_SDA0 */
ALTERNATE(PIN_MASK(9, 0x07), 0, MODULE_I2C, 0) /* GPIO92/I2C2_SCL0, GPIO91/I2C2_SDA0, GPIO90/I2C1_SCL0 */
ALTERNATE(PIN_MASK(B, 0x0c), 0, MODULE_I2C, 0) /* GPIOB3/I2C7_SCL0/DCD_L, GPIOB2/I2C7_SDA0/DSR_L */
+ALTERNATE(PIN_MASK(B, 0x30), 0, MODULE_I2C, 0) /* GPIOB5/I2C0_SCL0, GPIOB4/I2C0_SDA0 */
ALTERNATE(PIN_MASK(D, 0x03), 0, MODULE_I2C, 0) /* GPIOD1/I2C3_SCL0, GPIOD0/I2C3_SDA0 */
ALTERNATE(PIN_MASK(E, 0x18), 0, MODULE_I2C, 0) /* GPIOE4/I2C6_SCL1/I3C_SCL, GPIOE3/I2C6_SDA1/I3C_SDA */
ALTERNATE(PIN_MASK(F, 0x0c), 0, MODULE_I2C, 0) /* GPIOF3/I2C4_SCL1, GPIOF2/I2C4_SDA1 */
@@ -161,14 +178,10 @@ UNUSED(PIN(3, 2)) /* GPO32/TRIS_L */
UNUSED(PIN(3, 5)) /* GPO35/CR_SOUT4/TEST_L */
UNUSED(PIN(6, 6)) /* GPIO66 */
UNUSED(PIN(8, 1)) /* GPIO81/PECI_DATA */
+UNUSED(PIN(5, 6)) /* GPIO56/CLKRUN# */
+UNUSED(PIN(9, 7)) /* GPIO97 */
UNUSED(PIN(8, 6)) /* GPIO86/TXD/CR_SOUT2 */
UNUSED(PIN(1, 3)) /* KSO06/GPO13/GP_SEL# */
UNUSED(PIN(1, 2)) /* KSO07/GPO12/JEN# */
UNUSED(PIN(0, 6)) /* KSO11/GPIO06/P80_CLK */
-UNUSED(PIN(B, 4)) /* GPIOB4/I2C0_SDA0 */
-UNUSED(PIN(2, 5)) /* KSI4/GPIO25/TRACECLK/GP_SCLK */
-UNUSED(PIN(B, 5)) /* GPIOB5/I2C0_SCL0 */
-UNUSED(PIN(8, 3)) /* KSO15/GPIO83 */
-UNUSED(PIN(B, 1)) /* KSO17/GPIOB1/CR_SIN4 */
-UNUSED(PIN(7, 0)) /* GPIO70/PS2_DAT0 */
-UNUSED(PIN(A, 3)) /* SPIP_MOSI/GPIOA3 */
+UNUSED(PIN(0, 4)) /* KSO13/GPIO04 */
diff --git a/board/gaelin/i2c.c b/board/gaelin/i2c.c
index f9bfa11657..0a0b6b69a6 100644
--- a/board/gaelin/i2c.c
+++ b/board/gaelin/i2c.c
@@ -11,44 +11,60 @@
/* I2C port map configuration */
const struct i2c_port_t i2c_ports[] = {
{
+ /* I2C0 */
+ .name = "dp_redriver",
+ .port = I2C_PORT_DP_REDRIVER,
+ .kbps = 400,
+ .scl = GPIO_EC_I2C_DP_SCL,
+ .sda = GPIO_EC_I2C_DP_SDA,
+ },
+ {
/* I2C1 */
- .name = "tcpc0",
- .port = I2C_PORT_USB_C0_TCPC,
+ .name = "tcpc0,2",
+ .port = I2C_PORT_USB_C0_C2_TCPC,
.kbps = 1000,
- .scl = GPIO_EC_I2C_USB_C0_TCPC_SCL,
- .sda = GPIO_EC_I2C_USB_C0_TCPC_SDA,
+ .scl = GPIO_EC_I2C_USB_C0_C2_TCPC_SCL,
+ .sda = GPIO_EC_I2C_USB_C0_C2_TCPC_SDA,
},
{
/* I2C2 */
- .name = "ppc0",
- .port = I2C_PORT_USB_C0_PPC,
+ .name = "ppc0,2",
+ .port = I2C_PORT_USB_C0_C2_PPC,
.kbps = 1000,
- .scl = GPIO_EC_I2C_USB_C0_PPC_BC_SCL,
- .sda = GPIO_EC_I2C_USB_C0_PPC_BC_SDA,
+ .scl = GPIO_EC_I2C_USB_C0_C2_PPC_SCL,
+ .sda = GPIO_EC_I2C_USB_C0_C2_PPC_SDA,
},
{
/* I2C3 */
- .name = "ppc1",
- .port = I2C_PORT_USB_C1_PPC,
+ .name = "retimer0,2",
+ .port = I2C_PORT_USB_C0_C2_MUX,
.kbps = 1000,
- .scl = GPIO_EC_I2C_USB_C1_PPC_BC_SCL,
- .sda = GPIO_EC_I2C_USB_C1_PPC_BC_SDA,
+ .scl = GPIO_EC_I2C_USB_C0_C2_RT_SCL,
+ .sda = GPIO_EC_I2C_USB_C0_C2_RT_SDA,
},
{
- /* I2C4 */
+ /* I2C4 C1 TCPC */
.name = "tcpc1",
.port = I2C_PORT_USB_C1_TCPC,
- .kbps = 1000,
+ .kbps = 400,
.scl = GPIO_EC_I2C_USB_C1_TCPC_SCL,
.sda = GPIO_EC_I2C_USB_C1_TCPC_SDA,
},
{
/* I2C5 */
- .name = "scaler",
- .port = I2C_PORT_SCALER,
+ .name = "wireless_charger",
+ .port = I2C_PORT_QI,
.kbps = 400,
- .scl = GPIO_SMSCALER_CLK,
- .sda = GPIO_SMSCALER_DATA,
+ .scl = GPIO_EC_I2C_QI_SCL,
+ .sda = GPIO_EC_I2C_QI_SDA,
+ },
+ {
+ /* I2C6 */
+ .name = "ppc1",
+ .port = I2C_PORT_USB_C1_PPC,
+ .kbps = 1000,
+ .scl = GPIO_EC_I2C_USB_C1_MIX_SCL,
+ .sda = GPIO_EC_I2C_USB_C1_MIX_SDA,
},
{
/* I2C7 */
diff --git a/board/gaelin/led.c b/board/gaelin/led.c
index a4b9a0d094..842cee0530 100644
--- a/board/gaelin/led.c
+++ b/board/gaelin/led.c
@@ -249,8 +249,8 @@ int led_set_brightness(enum ec_led_id id, const uint8_t *brightness)
else
return set_color(id, LED_OFF, 0);
}
-__override void board_set_charge_limit(int port, int supplier, int charge_ma,
- int max_ma, int charge_mv)
+void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
+ int charge_mv)
{
/* Blink alert if insufficient power per system_can_boot_ap(). */
int insufficient_power =
diff --git a/board/gaelin/pwm.c b/board/gaelin/pwm.c
index fe7e82894a..3d4335f453 100644
--- a/board/gaelin/pwm.c
+++ b/board/gaelin/pwm.c
@@ -16,8 +16,8 @@ const struct pwm_t pwm_channels[] = {
PWM_CONFIG_DSLEEP,
.freq = 2000 },
[PWM_CH_FAN] = { .channel = 5,
- .flags = PWM_CONFIG_OPEN_DRAIN,
- .freq = 25000 },
+ .flags = PWM_CONFIG_OPEN_DRAIN | PWM_CONFIG_DSLEEP,
+ .freq = 1000 },
[PWM_CH_LED_RED] = { .channel = 2,
.flags = PWM_CONFIG_ACTIVE_LOW | PWM_CONFIG_DSLEEP,
.freq = 2000 },
diff --git a/board/gaelin/thermal.c b/board/gaelin/thermal.c
deleted file mode 100644
index e15e0043e1..0000000000
--- a/board/gaelin/thermal.c
+++ /dev/null
@@ -1,140 +0,0 @@
-/* Copyright 2022 The ChromiumOS Authors
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-#include "chipset.h"
-#include "common.h"
-#include "console.h"
-#include "fan.h"
-#include "hooks.h"
-#include "host_command.h"
-#include "temp_sensor.h"
-#include "thermal.h"
-#include "util.h"
-
-/* Console output macros */
-#define CPUTS(outstr) cputs(CC_THERMAL, outstr)
-#define CPRINTS(format, args...) cprints(CC_THERMAL, format, ##args)
-
-struct fan_step {
- /*
- * Sensor 1~4 trigger point, set -1 if we're not using this
- * sensor to determine fan speed.
- */
- int8_t on[TEMP_SENSOR_COUNT];
- /*
- * Sensor 1~4 trigger point, set -1 if we're not using this
- * sensor to determine fan speed.
- */
- int8_t off[TEMP_SENSOR_COUNT];
- /* Fan rpm */
- int16_t rpm[FAN_CH_COUNT];
-};
-
-static const struct fan_step fan_table[] = {
- {
- /* level 0 */
- .on = { 65, -1, -1, -1 },
- .off = { 0, -1, -1, -1 },
- .rpm = { 2350 },
- },
- {
- /* level 1 */
- .on = { 80, -1, -1, -1 },
- .off = { 60, -1, -1, -1 },
- .rpm = { 2350 },
- },
- {
- /* level 2 */
- .on = { 87, -1, -1, -1 },
- .off = { 75, -1, -1, -1 },
- .rpm = { 3250 },
- },
- {
- /* level 3 */
- .on = { 91, -1, -1, -1 },
- .off = { 82, -1, -1, -1 },
- .rpm = { 3750 },
- },
- {
- /* level 4 */
- .on = { 100, -1, -1, -1 },
- .off = { 86, -1, -1, -1 },
- .rpm = { 4100 },
- },
-};
-const int num_fan_levels = ARRAY_SIZE(fan_table);
-
-int fan_table_to_rpm(int fan, int *temp, enum temp_sensor_id temp_sensor)
-{
- /* current fan level */
- static int current_level;
- /* previous fan level */
- static int prev_current_level;
- /* previous sensor temperature */
- static int prev_temp[TEMP_SENSOR_COUNT];
- int i;
- int new_rpm = 0;
-
- /*
- * Compare the current and previous temperature, we have
- * the three paths:
- * 1. decreasing path. (check the release point)
- * 2. increasing path. (check the trigger point)
- * 3. invariant path. (return the current RPM)
- */
- if (temp[temp_sensor] < prev_temp[temp_sensor]) {
- for (i = current_level; i > 0; i--) {
- if (temp[temp_sensor] < fan_table[i].off[temp_sensor])
- current_level = i - 1;
- else
- break;
- }
- } else if (temp[temp_sensor] > prev_temp[temp_sensor]) {
- for (i = current_level; i < num_fan_levels; i++) {
- if (temp[temp_sensor] > fan_table[i].on[temp_sensor])
- current_level = i + 1;
- else
- break;
- }
- }
-
- if (current_level < 0)
- current_level = 0;
- if (current_level >= num_fan_levels)
- current_level = num_fan_levels - 1;
-
- if (current_level != prev_current_level) {
- CPRINTS("temp: %d, prev_temp: %d", temp[temp_sensor],
- prev_temp[temp_sensor]);
- CPRINTS("current_level: %d", current_level);
- }
-
- prev_temp[temp_sensor] = temp[temp_sensor];
- prev_current_level = current_level;
-
- switch (fan) {
- case FAN_CH_0:
- new_rpm = fan_table[current_level].rpm[FAN_CH_0];
- break;
- default:
- break;
- }
-
- return new_rpm;
-}
-
-void board_override_fan_control(int fan, int *temp)
-{
- if (chipset_in_state(CHIPSET_STATE_ON)) {
- fan_set_rpm_mode(FAN_CH(fan), 1);
- fan_set_rpm_target(FAN_CH(fan),
- fan_table_to_rpm(FAN_CH(fan), temp,
- TEMP_SENSOR_1_CPU));
- } else if (chipset_in_state(CHIPSET_STATE_ANY_SUSPEND)) {
- /* Stop fan when enter S0ix */
- fan_set_rpm_mode(FAN_CH(fan), 1);
- fan_set_rpm_target(FAN_CH(fan), 0);
- }
-}
diff --git a/board/gaelin/usbc_config.c b/board/gaelin/usbc_config.c
index 98595fc607..806ff2c4ee 100644
--- a/board/gaelin/usbc_config.c
+++ b/board/gaelin/usbc_config.c
@@ -10,13 +10,17 @@
#include "compile_time_macros.h"
#include "console.h"
#include "driver/bc12/pi3usb9201_public.h"
-#include "driver/ppc/nx20p348x.h"
-#include "driver/tcpm/ps8xxx_public.h"
+#include "driver/ppc/syv682x_public.h"
+#include "driver/retimer/bb_retimer_public.h"
+#include "driver/retimer/kb800x.h"
+#include "driver/tcpm/nct38xx.h"
+#include "driver/tcpm/rt1715.h"
#include "driver/tcpm/tcpci.h"
#include "ec_commands.h"
#include "gpio.h"
#include "gpio_signal.h"
#include "hooks.h"
+#include "ioexpander.h"
#include "system.h"
#include "task.h"
#include "task_id.h"
@@ -36,22 +40,29 @@ const struct tcpc_config_t tcpc_config[] = {
[USBC_PORT_C0] = {
.bus_type = EC_BUS_TYPE_I2C,
.i2c_info = {
- .port = I2C_PORT_USB_C0_TCPC,
- .addr_flags = PS8XXX_I2C_ADDR1_FLAGS,
+ .port = I2C_PORT_USB_C0_C2_TCPC,
+ .addr_flags = NCT38XX_I2C_ADDR1_1_FLAGS,
},
- .drv = &ps8xxx_tcpm_drv,
+ .drv = &nct38xx_tcpm_drv,
.flags = TCPC_FLAGS_TCPCI_REV2_0 |
- TCPC_FLAGS_TCPCI_REV2_0_NO_VSAFE0V,
+ TCPC_FLAGS_NO_DEBUG_ACC_CONTROL,
},
[USBC_PORT_C1] = {
.bus_type = EC_BUS_TYPE_I2C,
.i2c_info = {
.port = I2C_PORT_USB_C1_TCPC,
- .addr_flags = PS8XXX_I2C_ADDR2_FLAGS,
+ .addr_flags = RT1715_I2C_ADDR_FLAGS,
},
- .drv = &ps8xxx_tcpm_drv,
- .flags = TCPC_FLAGS_TCPCI_REV2_0 |
- TCPC_FLAGS_TCPCI_REV2_0_NO_VSAFE0V,
+ .drv = &rt1715_tcpm_drv,
+ },
+ [USBC_PORT_C2] = {
+ .bus_type = EC_BUS_TYPE_I2C,
+ .i2c_info = {
+ .port = I2C_PORT_USB_C0_C2_TCPC,
+ .addr_flags = NCT38XX_I2C_ADDR2_1_FLAGS,
+ },
+ .drv = &nct38xx_tcpm_drv,
+ .flags = TCPC_FLAGS_TCPCI_REV2_0,
},
};
BUILD_ASSERT(ARRAY_SIZE(tcpc_config) == USBC_PORT_COUNT);
@@ -60,16 +71,19 @@ BUILD_ASSERT(CONFIG_USB_PD_PORT_MAX_COUNT == USBC_PORT_COUNT);
/* USBC PPC configuration */
struct ppc_config_t ppc_chips[] = {
[USBC_PORT_C0] = {
- /* Compatible with Silicon Mitus SM5360A */
- .i2c_port = I2C_PORT_USB_C0_PPC,
- .i2c_addr_flags = NX20P3483_ADDR2_FLAGS,
- .drv = &nx20p348x_drv,
+ .i2c_port = I2C_PORT_USB_C0_C2_PPC,
+ .i2c_addr_flags = SYV682X_ADDR0_FLAGS,
+ .drv = &syv682x_drv,
},
[USBC_PORT_C1] = {
- /* Compatible with Silicon Mitus SM5360A */
.i2c_port = I2C_PORT_USB_C1_PPC,
- .i2c_addr_flags = NX20P3483_ADDR3_FLAGS,
- .drv = &nx20p348x_drv,
+ .i2c_addr_flags = SYV682X_ADDR0_FLAGS,
+ .drv = &syv682x_drv,
+ },
+ [USBC_PORT_C2] = {
+ .i2c_port = I2C_PORT_USB_C0_C2_PPC,
+ .i2c_addr_flags = SYV682X_ADDR2_FLAGS,
+ .drv = &syv682x_drv,
},
};
BUILD_ASSERT(ARRAY_SIZE(ppc_chips) == USBC_PORT_COUNT);
@@ -81,100 +95,200 @@ static const struct usb_mux_chain usbc0_tcss_usb_mux = {
.mux =
&(const struct usb_mux){
.usb_port = USBC_PORT_C0,
- .driver = &tcpci_tcpm_usb_mux_driver,
- .hpd_update = &ps8xxx_tcpc_update_hpd_status,
+ .driver = &virtual_usb_mux_driver,
+ .hpd_update = &virtual_hpd_update,
},
};
static const struct usb_mux_chain usbc1_tcss_usb_mux = {
.mux =
&(const struct usb_mux){
.usb_port = USBC_PORT_C1,
- .driver = &tcpci_tcpm_usb_mux_driver,
- .hpd_update = &ps8xxx_tcpc_update_hpd_status,
+ .driver = &virtual_usb_mux_driver,
+ .hpd_update = &virtual_hpd_update,
},
};
+static const struct usb_mux_chain usbc2_tcss_usb_mux = {
+ .mux =
+ &(const struct usb_mux){
+ .usb_port = USBC_PORT_C2,
+ .driver = &virtual_usb_mux_driver,
+ .hpd_update = &virtual_hpd_update,
+ },
+};
+
+struct kb800x_control_t kb800x_control[] = {
+ [USBC_PORT_C0] = {
+ },
+ [USBC_PORT_C1] = {
+ .retimer_rst_gpio = GPIO_USB_C1_RT_RST_R_L,
+ .ss_lanes = {
+ [KB800X_A0] = KB800X_TX0, [KB800X_A1] = KB800X_RX0,
+ [KB800X_B0] = KB800X_RX1, [KB800X_B1] = KB800X_TX1,
+ [KB800X_C0] = KB800X_RX0, [KB800X_C1] = KB800X_TX0,
+ [KB800X_D0] = KB800X_TX1, [KB800X_D1] = KB800X_RX1,
+ }
+ },
+ [USBC_PORT_C2] = {
+ },
+};
+BUILD_ASSERT(ARRAY_SIZE(kb800x_control) == USBC_PORT_COUNT);
const struct usb_mux_chain usb_muxes[] = {
[USBC_PORT_C0] = {
.mux = &(const struct usb_mux) {
.usb_port = USBC_PORT_C0,
- .driver = &virtual_usb_mux_driver,
- .hpd_update = &virtual_hpd_update,
+ .driver = &bb_usb_retimer,
+ .hpd_update = bb_retimer_hpd_update,
+ .i2c_port = I2C_PORT_USB_C0_C2_MUX,
+ .i2c_addr_flags = USBC_PORT_C0_BB_RETIMER_I2C_ADDR,
},
.next = &usbc0_tcss_usb_mux,
},
[USBC_PORT_C1] = {
.mux = &(const struct usb_mux) {
.usb_port = USBC_PORT_C1,
- .driver = &virtual_usb_mux_driver,
- .hpd_update = &virtual_hpd_update,
+ .driver = &kb800x_usb_mux_driver,
+ .i2c_port = I2C_PORT_USB_C1_MUX,
+ .i2c_addr_flags = KB800X_I2C_ADDR0_FLAGS,
},
.next = &usbc1_tcss_usb_mux,
},
+ [USBC_PORT_C2] = {
+ .mux = &(const struct usb_mux) {
+ .usb_port = USBC_PORT_C2,
+ .driver = &bb_usb_retimer,
+ .hpd_update = bb_retimer_hpd_update,
+ .i2c_port = I2C_PORT_USB_C0_C2_MUX,
+ .i2c_addr_flags = USBC_PORT_C2_BB_RETIMER_I2C_ADDR,
+ },
+ .next = &usbc2_tcss_usb_mux,
+ },
};
BUILD_ASSERT(ARRAY_SIZE(usb_muxes) == USBC_PORT_COUNT);
/* BC1.2 charger detect configuration */
const struct pi3usb9201_config_t pi3usb9201_bc12_chips[] = {
[USBC_PORT_C0] = {
- .i2c_port = I2C_PORT_USB_C0_BC12,
+ .i2c_port = I2C_PORT_USB_C0_C2_BC12,
.i2c_addr_flags = PI3USB9201_I2C_ADDR_3_FLAGS,
},
[USBC_PORT_C1] = {
.i2c_port = I2C_PORT_USB_C1_BC12,
- .i2c_addr_flags = PI3USB9201_I2C_ADDR_2_FLAGS,
+ .i2c_addr_flags = PI3USB9201_I2C_ADDR_3_FLAGS,
+ },
+ [USBC_PORT_C2] = {
+ .i2c_port = I2C_PORT_USB_C0_C2_BC12,
+ .i2c_addr_flags = PI3USB9201_I2C_ADDR_1_FLAGS,
},
};
BUILD_ASSERT(ARRAY_SIZE(pi3usb9201_bc12_chips) == USBC_PORT_COUNT);
-static void ps8815_reset(int port)
+/*
+ * USB C0 and C2 uses burnside bridge chips and have their reset
+ * controlled by their respective TCPC chips acting as GPIO expanders.
+ *
+ * ioex_init() is normally called before we take the TCPCs out of
+ * reset, so we need to start in disabled mode, then explicitly
+ * call ioex_init().
+ */
+
+struct ioexpander_config_t ioex_config[] = {
+ [IOEX_C0_NCT38XX] = {
+ .i2c_host_port = I2C_PORT_USB_C0_C2_TCPC,
+ .i2c_addr_flags = NCT38XX_I2C_ADDR1_1_FLAGS,
+ .drv = &nct38xx_ioexpander_drv,
+ .flags = IOEX_FLAGS_DEFAULT_INIT_DISABLED,
+ },
+ [IOEX_C2_NCT38XX] = {
+ .i2c_host_port = I2C_PORT_USB_C0_C2_TCPC,
+ .i2c_addr_flags = NCT38XX_I2C_ADDR2_1_FLAGS,
+ .drv = &nct38xx_ioexpander_drv,
+ .flags = IOEX_FLAGS_DEFAULT_INIT_DISABLED,
+ },
+};
+BUILD_ASSERT(ARRAY_SIZE(ioex_config) == CONFIG_IO_EXPANDER_PORT_COUNT);
+
+__override int bb_retimer_power_enable(const struct usb_mux *me, bool enable)
{
- int val;
- int i2c_port;
- uint16_t i2c_addr_flags;
- enum gpio_signal ps8xxx_rst_odl;
-
- if (port == USBC_PORT_C0) {
- ps8xxx_rst_odl = GPIO_USB_C0_RT_RST_L;
- i2c_port = I2C_PORT_USB_C0_TCPC;
- i2c_addr_flags = PS8XXX_I2C_ADDR1_FLAGS;
- } else if (port == USBC_PORT_C1) {
- ps8xxx_rst_odl = GPIO_USB_C1_RT_RST_L;
- i2c_port = I2C_PORT_USB_C1_TCPC;
- i2c_addr_flags = PS8XXX_I2C_ADDR2_FLAGS;
+ enum ioex_signal rst_signal;
+
+ if (me->usb_port == USBC_PORT_C0) {
+ rst_signal = IOEX_USB_C0_RT_RST_ODL;
+ } else if (me->usb_port == USBC_PORT_C2) {
+ rst_signal = IOEX_USB_C2_RT_RST_ODL;
} else {
- return;
+ return EC_ERROR_INVAL;
}
- gpio_set_level(ps8xxx_rst_odl, 0);
- msleep(GENERIC_MAX(PS8XXX_RESET_DELAY_MS, PS8815_PWR_H_RST_H_DELAY_MS));
- gpio_set_level(ps8xxx_rst_odl, 1);
- msleep(PS8815_FW_INIT_DELAY_MS);
-
- CPRINTS("[C%d] %s: patching ps8815 registers", port, __func__);
+ /*
+ * We do not have a load switch for the burnside bridge chips,
+ * so we only need to sequence reset.
+ */
- if (i2c_read8(i2c_port, i2c_addr_flags, 0x0f, &val) == EC_SUCCESS)
- CPRINTS("ps8815: reg 0x0f was %02x", val);
- else {
- CPRINTS("delay 10ms to make sure ps8815 is waken from idle");
- msleep(10);
+ if (enable) {
+ /*
+ * Tpw, minimum time from VCC to RESET_N de-assertion is 100us.
+ * For boards that don't provide a load switch control, the
+ * retimer_init() function ensures power is up before calling
+ * this function.
+ */
+ ioex_set_level(rst_signal, 1);
+ /*
+ * Allow 1ms time for the retimer to power up lc_domain
+ * which powers I2C controller within retimer
+ */
+ msleep(1);
+ } else {
+ ioex_set_level(rst_signal, 0);
+ msleep(1);
}
+ return EC_SUCCESS;
+}
- if (i2c_write8(i2c_port, i2c_addr_flags, 0x0f, 0x31) == EC_SUCCESS)
- CPRINTS("ps8815: reg 0x0f set to 0x31");
+__override int bb_retimer_reset(const struct usb_mux *me)
+{
+ /*
+ * TODO(b/193402306, b/195375738): Remove this once transition to
+ * QS Silicon is complete
+ */
+ bb_retimer_power_enable(me, false);
+ msleep(5);
+ bb_retimer_power_enable(me, true);
+ msleep(25);
- if (i2c_read8(i2c_port, i2c_addr_flags, 0x0f, &val) == EC_SUCCESS)
- CPRINTS("ps8815: reg 0x0f now %02x", val);
+ return EC_SUCCESS;
}
void board_reset_pd_mcu(void)
{
- ps8815_reset(USBC_PORT_C0);
- usb_mux_hpd_update(USBC_PORT_C0, USB_PD_MUX_HPD_LVL_DEASSERTED |
- USB_PD_MUX_HPD_IRQ_DEASSERTED);
- ps8815_reset(USBC_PORT_C1);
- usb_mux_hpd_update(USBC_PORT_C1, USB_PD_MUX_HPD_LVL_DEASSERTED |
- USB_PD_MUX_HPD_IRQ_DEASSERTED);
+ enum gpio_signal tcpc_rst;
+
+ tcpc_rst = GPIO_USB_C0_C2_TCPC_RST_ODL;
+
+ /*
+ * TODO(b/179648104): figure out correct timing
+ */
+
+ gpio_set_level(tcpc_rst, 0);
+ gpio_set_level(GPIO_USB_C1_RT_RST_R_L, 0);
+
+ /*
+ * delay for power-on to reset-off and min. assertion time
+ */
+
+ msleep(20);
+
+ gpio_set_level(tcpc_rst, 1);
+ gpio_set_level(GPIO_USB_C1_RT_RST_R_L, 1);
+
+ /* wait for chips to come up */
+
+ msleep(50);
+}
+
+static void enable_ioex(int ioex)
+{
+ ioex_init(ioex);
}
static void board_tcpc_init(void)
@@ -182,19 +296,25 @@ static void board_tcpc_init(void)
/* Don't reset TCPCs after initial reset */
if (!system_jumped_late()) {
board_reset_pd_mcu();
+
+ /*
+ * These IO expander pins are implemented using the
+ * C0/C2 TCPC, so they must be set up after the TCPC has
+ * been taken out of reset.
+ */
+ enable_ioex(IOEX_C0_NCT38XX);
+ enable_ioex(IOEX_C2_NCT38XX);
}
/* Enable PPC interrupts. */
gpio_enable_interrupt(GPIO_USB_C0_PPC_INT_ODL);
- gpio_enable_interrupt(GPIO_USB_C1_PPC_INT_ODL);
+ gpio_enable_interrupt(GPIO_USB_C2_PPC_INT_ODL);
/* Enable TCPC interrupts. */
- gpio_enable_interrupt(GPIO_USB_C0_TCPC_INT_ODL);
- gpio_enable_interrupt(GPIO_USB_C1_TCPC_INT_ODL);
+ gpio_enable_interrupt(GPIO_USB_C0_C2_TCPC_INT_ODL);
- /* Enable BC1.2 interrupts. */
- gpio_enable_interrupt(GPIO_USB_C0_BC12_INT_ODL);
- gpio_enable_interrupt(GPIO_USB_C1_BC12_INT_ODL);
+ gpio_enable_interrupt(GPIO_USB_C1_PPC_INT_ODL);
+ gpio_enable_interrupt(GPIO_USB_C1_TCPC_INT_ODL);
}
DECLARE_HOOK(HOOK_INIT, board_tcpc_init, HOOK_PRIO_INIT_CHIPSET);
@@ -202,8 +322,8 @@ uint16_t tcpc_get_alert_status(void)
{
uint16_t status = 0;
- if (gpio_get_level(GPIO_USB_C0_TCPC_INT_ODL) == 0)
- status |= PD_STATUS_TCPC_ALERT_0;
+ if (gpio_get_level(GPIO_USB_C0_C2_TCPC_INT_ODL) == 0)
+ status |= PD_STATUS_TCPC_ALERT_0 | PD_STATUS_TCPC_ALERT_2;
if (gpio_get_level(GPIO_USB_C1_TCPC_INT_ODL) == 0)
status |= PD_STATUS_TCPC_ALERT_1;
@@ -217,13 +337,15 @@ int ppc_get_alert_status(int port)
return gpio_get_level(GPIO_USB_C0_PPC_INT_ODL) == 0;
else if (port == USBC_PORT_C1)
return gpio_get_level(GPIO_USB_C1_PPC_INT_ODL) == 0;
+ else if (port == USBC_PORT_C2)
+ return gpio_get_level(GPIO_USB_C2_PPC_INT_ODL) == 0;
return 0;
}
void tcpc_alert_event(enum gpio_signal signal)
{
switch (signal) {
- case GPIO_USB_C0_TCPC_INT_ODL:
+ case GPIO_USB_C0_C2_TCPC_INT_ODL:
schedule_deferred_pd_interrupt(USBC_PORT_C0);
break;
case GPIO_USB_C1_TCPC_INT_ODL:
@@ -243,6 +365,9 @@ void bc12_interrupt(enum gpio_signal signal)
case GPIO_USB_C1_BC12_INT_ODL:
usb_charger_task_set_event(1, USB_CHG_EVENT_BC12);
break;
+ case GPIO_USB_C2_BC12_INT_ODL:
+ usb_charger_task_set_event(2, USB_CHG_EVENT_BC12);
+ break;
default:
break;
}
@@ -252,10 +377,13 @@ void ppc_interrupt(enum gpio_signal signal)
{
switch (signal) {
case GPIO_USB_C0_PPC_INT_ODL:
- nx20p348x_interrupt(USBC_PORT_C0);
+ syv682x_interrupt(USBC_PORT_C0);
break;
case GPIO_USB_C1_PPC_INT_ODL:
- nx20p348x_interrupt(USBC_PORT_C1);
+ syv682x_interrupt(USBC_PORT_C1);
+ break;
+ case GPIO_USB_C2_PPC_INT_ODL:
+ syv682x_interrupt(USBC_PORT_C2);
break;
default:
break;
@@ -273,3 +401,16 @@ __override bool board_is_dts_port(int port)
{
return port == USBC_PORT_C0;
}
+
+__override bool board_is_tbt_usb4_port(int port)
+{
+ return true;
+}
+
+__override enum tbt_compat_cable_speed board_get_max_tbt_speed(int port)
+{
+ if (!board_is_tbt_usb4_port(port))
+ return TBT_SS_RES_0;
+
+ return TBT_SS_TBT_GEN3;
+}
diff --git a/board/gaelin/usbc_config.h b/board/gaelin/usbc_config.h
index 219ad9a745..5e7beae21a 100644
--- a/board/gaelin/usbc_config.h
+++ b/board/gaelin/usbc_config.h
@@ -8,8 +8,13 @@
#ifndef __CROS_EC_USBC_CONFIG_H
#define __CROS_EC_USBC_CONFIG_H
-#define CONFIG_USB_PD_PORT_MAX_COUNT 2
+#define CONFIG_USB_PD_PORT_MAX_COUNT 3
-enum usbc_port { USBC_PORT_C0 = 0, USBC_PORT_C1, USBC_PORT_COUNT };
+enum usbc_port {
+ USBC_PORT_C0 = 0,
+ USBC_PORT_C1,
+ USBC_PORT_C2,
+ USBC_PORT_COUNT
+};
#endif /* __CROS_EC_USBC_CONFIG_H */
diff --git a/board/galtic/board.c b/board/galtic/board.c
index 9800c1150c..af0638be20 100644
--- a/board/galtic/board.c
+++ b/board/galtic/board.c
@@ -502,6 +502,18 @@ uint16_t tcpc_get_alert_status(void)
return status;
}
+void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
+ int charge_mv)
+{
+ int icl = MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT);
+
+ /*
+ * TODO(b/151955431): Characterize the input current limit in case a
+ * scaling needs to be applied here
+ */
+ charge_set_input_current_limit(icl, charge_mv);
+}
+
int board_is_sourcing_vbus(int port)
{
int regval;
diff --git a/board/gelarshie/board.c b/board/gelarshie/board.c
index 174e4b0764..11346a3c7d 100644
--- a/board/gelarshie/board.c
+++ b/board/gelarshie/board.c
@@ -511,7 +511,6 @@ void board_tcpc_init(void)
/* Enable PPC interrupts */
gpio_enable_interrupt(GPIO_USB_C0_SWCTL_INT_ODL);
- gpio_enable_interrupt(GPIO_USB_C1_SWCTL_INT_ODL);
/* Enable TCPC interrupts */
gpio_enable_interrupt(GPIO_USB_C0_PD_INT_ODL);
@@ -683,8 +682,8 @@ int board_set_active_charge_port(int port)
return EC_SUCCESS;
}
-__override void board_set_charge_limit(int port, int supplier, int charge_ma,
- int max_ma, int charge_mv)
+void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
+ int charge_mv)
{
/*
* Ignore lower charge ceiling on PD transition if our battery is
@@ -696,7 +695,9 @@ __override void board_set_charge_limit(int port, int supplier, int charge_ma,
charge_ma = max_ma;
}
- charge_set_input_current_limit(charge_ma, charge_mv);
+ charge_ma = charge_ma * 95 / 100;
+ charge_set_input_current_limit(
+ MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
}
uint16_t tcpc_get_alert_status(void)
diff --git a/board/gelarshie/board.h b/board/gelarshie/board.h
index 737f005639..7e27c7a62f 100644
--- a/board/gelarshie/board.h
+++ b/board/gelarshie/board.h
@@ -35,7 +35,6 @@
#undef CONFIG_CMD_ACCEL_FIFO
#undef CONFIG_CMD_ACCEL_INFO
#undef CONFIG_CMD_TASK_RESET
-#undef CONFIG_CONSOLE_CMDHELP
/* Battery */
#define CONFIG_BATTERY_DEVICE_CHEMISTRY "LION"
@@ -43,9 +42,6 @@
#define CONFIG_BATTERY_FUEL_GAUGE
#define CONFIG_BATTERY_VENDOR_PARAM
-/* charger margin */
-#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 5
-
/* Enable PD3.0 */
#define CONFIG_USB_PD_REV30
/* BC 1.2 Charger */
diff --git a/board/gimble/board.c b/board/gimble/board.c
index 5373eb2bff..0ca135b9fd 100644
--- a/board/gimble/board.c
+++ b/board/gimble/board.c
@@ -185,3 +185,16 @@ __overridable void board_ps8xxx_tcpc_init(int port)
CPRINTS("ps8815: fail to write reg 0x%02x",
PS8815_REG_RX_EQ_AT_5G);
}
+
+__override void board_set_charge_limit(int port, int supplier, int charge_ma,
+ int max_ma, int charge_mv)
+{
+ /*
+ * Follow OEM request to limit the input current to
+ * 90% negotiated limit.
+ */
+ charge_ma = charge_ma * 90 / 100;
+
+ charge_set_input_current_limit(
+ MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
+}
diff --git a/board/gimble/board.h b/board/gimble/board.h
index 1d4099e7eb..015f3f78e6 100644
--- a/board/gimble/board.h
+++ b/board/gimble/board.h
@@ -196,8 +196,6 @@
#define CONFIG_CHARGER_BQ25710_SENSE_RESISTOR 10
#define CONFIG_CHARGER_BQ25710_SENSE_RESISTOR_AC 10
#define CONFIG_CHARGER_BQ25710_PSYS_SENSING
-/* OEM requested 10% derating */
-#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 10
/* PROCHOT defines */
#define BATT_MAX_CONTINUE_DISCHARGE_WATT 45
diff --git a/board/gimble/charger.c b/board/gimble/charger.c
index 7fabd2082e..a4fa209246 100644
--- a/board/gimble/charger.c
+++ b/board/gimble/charger.c
@@ -81,3 +81,10 @@ int board_set_active_charge_port(int port)
return EC_SUCCESS;
}
+
+__overridable 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);
+}
diff --git a/board/gooey/board.c b/board/gooey/board.c
index 544117f9c6..250f6afd61 100644
--- a/board/gooey/board.c
+++ b/board/gooey/board.c
@@ -259,6 +259,19 @@ uint16_t tcpc_get_alert_status(void)
return status;
}
+void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
+ int charge_mv)
+{
+ int icl = MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT);
+
+ /*
+ * b/147463641: The charger IC seems to overdraw ~4%, therefore we
+ * reduce our target accordingly.
+ */
+ icl = icl * 96 / 100;
+ charge_set_input_current_limit(icl, charge_mv);
+}
+
__override void typec_set_source_current_limit(int port, enum tcpc_rp_value rp)
{
if (port < 0 || port > board_get_usb_pd_port_count())
diff --git a/board/gooey/board.h b/board/gooey/board.h
index fde32f8866..b586c0f334 100644
--- a/board/gooey/board.h
+++ b/board/gooey/board.h
@@ -32,11 +32,6 @@
*/
#undef CONFIG_USB_PD_TCPC_LPM_EXIT_DEBOUNCE
#define CONFIG_USB_PD_TCPC_LPM_EXIT_DEBOUNCE (100 * MSEC)
-/*
- * b/147463641: The charger IC seems to overdraw ~4%, therefore we
- * reduce our target accordingly.
- */
-#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 4
/* DAC for PSYS */
#define CONFIG_DAC
diff --git a/board/haboki/board.c b/board/haboki/board.c
index 8814871ed7..d7509115b5 100644
--- a/board/haboki/board.c
+++ b/board/haboki/board.c
@@ -526,17 +526,19 @@ uint16_t tcpc_get_alert_status(void)
return status;
}
-__override void board_set_charge_limit(int port, int supplier, int charge_ma,
- int max_ma, int charge_mv)
+void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
+ int charge_mv)
{
+ int icl = MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT);
+
/* Limit C1 on board version 0 to 2.0 A */
if ((board_version == 0) && (port == 1))
- charge_ma = MIN(charge_ma, 2000);
+ icl = MIN(icl, 2000);
/*
* TODO(b/151955431): Characterize the input current limit in case a
* scaling needs to be applied here
*/
- charge_set_input_current_limit(charge_ma, charge_mv);
+ charge_set_input_current_limit(icl, charge_mv);
}
int board_set_active_charge_port(int port)
diff --git a/board/hammer/board.h b/board/hammer/board.h
index dd4b337c66..bce7dc39f4 100644
--- a/board/hammer/board.h
+++ b/board/hammer/board.h
@@ -83,6 +83,7 @@
#define CONFIG_LTO
#define CONFIG_FORCE_CONSOLE_RESUME
#define CONFIG_MATH_UTIL
+#define CONFIG_STM_HWTIMER32
/* USB Configuration */
#define CONFIG_USB
@@ -269,7 +270,7 @@
#ifdef BOARD_WAND
/* Battery and charger options. */
#define CONFIG_CHARGER
-#define CONFIG_CHARGER_DEFAULT_CURRENT_LIMIT 128
+#define CONFIG_CHARGER_INPUT_CURRENT 128
#define CONFIG_CHARGER_ISL9238
#define CONFIG_CHARGER_SENSE_RESISTOR 10
#define CONFIG_CHARGER_SENSE_RESISTOR_AC 20
diff --git a/board/hatch_fp/board.h b/board/hatch_fp/board.h
index 9e900a126a..d36a9228c1 100644
--- a/board/hatch_fp/board.h
+++ b/board/hatch_fp/board.h
@@ -235,6 +235,7 @@
#define CONFIG_SHA256
#define CONFIG_SHA256_UNROLLED
#define CONFIG_SPI
+#define CONFIG_STM_HWTIMER32
#define CONFIG_WP_ACTIVE_HIGH
#define CONFIG_PANIC_STRIP_GPR
diff --git a/board/hatch_fp/build.mk b/board/hatch_fp/build.mk
index 894c907ab9..828e7523b3 100644
--- a/board/hatch_fp/build.mk
+++ b/board/hatch_fp/build.mk
@@ -29,7 +29,6 @@ test-list-y=\
abort \
aes \
always_memset \
- benchmark \
cec \
compile_time_macros \
cortexm_fpu \
@@ -40,8 +39,6 @@ test-list-y=\
flash_write_protect \
fpsensor \
fpsensor_hw \
- ftrapv \
- libc_printf \
mpu \
mutex \
panic \
@@ -49,7 +46,6 @@ test-list-y=\
pingpong \
printf \
queue \
- rng_benchmark \
rollback \
rollback_entropy \
rsa3 \
diff --git a/board/herobrine/usbc_config.c b/board/herobrine/usbc_config.c
index c80b00f0de..98d1b70bac 100644
--- a/board/herobrine/usbc_config.c
+++ b/board/herobrine/usbc_config.c
@@ -177,7 +177,6 @@ void board_tcpc_init(void)
/* Enable PPC interrupts */
gpio_enable_interrupt(GPIO_USB_C0_SWCTL_INT_ODL);
- gpio_enable_interrupt(GPIO_USB_C1_SWCTL_INT_ODL);
/* Enable TCPC interrupts */
gpio_enable_interrupt(GPIO_USB_C0_PD_INT_ODL);
@@ -286,8 +285,8 @@ int board_set_active_charge_port(int port)
return EC_SUCCESS;
}
-__override void board_set_charge_limit(int port, int supplier, int charge_ma,
- int max_ma, int charge_mv)
+void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
+ int charge_mv)
{
/*
* Ignore lower charge ceiling on PD transition if our battery is
@@ -299,7 +298,8 @@ __override void board_set_charge_limit(int port, int supplier, int charge_ma,
charge_ma = max_ma;
}
- charge_set_input_current_limit(charge_ma, charge_mv);
+ charge_set_input_current_limit(
+ MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
}
uint16_t tcpc_get_alert_status(void)
diff --git a/board/hoho/board.h b/board/hoho/board.h
index f6421fdaf0..7768ab7293 100644
--- a/board/hoho/board.h
+++ b/board/hoho/board.h
@@ -15,6 +15,7 @@
#define CONFIG_UART_CONSOLE 1
/* Optional features */
+#define CONFIG_STM_HWTIMER32
#define CONFIG_ADC
#define CONFIG_BOARD_PRE_INIT
#define CONFIG_CMD_SPI_FLASH
diff --git a/board/homestar/board.c b/board/homestar/board.c
index 11035d2034..ab4b95b625 100644
--- a/board/homestar/board.c
+++ b/board/homestar/board.c
@@ -459,7 +459,6 @@ void board_tcpc_init(void)
/* Enable PPC interrupts */
gpio_enable_interrupt(GPIO_USB_C0_SWCTL_INT_ODL);
- gpio_enable_interrupt(GPIO_USB_C1_SWCTL_INT_ODL);
/* Enable TCPC interrupts */
gpio_enable_interrupt(GPIO_USB_C0_PD_INT_ODL);
@@ -631,8 +630,8 @@ int board_set_active_charge_port(int port)
return EC_SUCCESS;
}
-__override void board_set_charge_limit(int port, int supplier, int charge_ma,
- int max_ma, int charge_mv)
+void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
+ int charge_mv)
{
/*
* Ignore lower charge ceiling on PD transition if our battery is
@@ -644,7 +643,9 @@ __override void board_set_charge_limit(int port, int supplier, int charge_ma,
charge_ma = max_ma;
}
- charge_set_input_current_limit(charge_ma, charge_mv);
+ charge_ma = charge_ma * 95 / 100;
+ charge_set_input_current_limit(
+ MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
}
uint16_t tcpc_get_alert_status(void)
diff --git a/board/homestar/board.h b/board/homestar/board.h
index 60d943b300..230aa6e7d3 100644
--- a/board/homestar/board.h
+++ b/board/homestar/board.h
@@ -27,9 +27,6 @@
#define CONFIG_BATTERY_FUEL_GAUGE
#define CONFIG_BATTERY_VENDOR_PARAM
-/* charger margin */
-#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 5
-
/* Enable PD3.0 */
#define CONFIG_USB_PD_REV30
diff --git a/board/host/charger.c b/board/host/charger.c
index 0580ddcb41..fddadf245d 100644
--- a/board/host/charger.c
+++ b/board/host/charger.c
@@ -136,8 +136,7 @@ static enum ec_error_list mock_set_input_current_limit(int chgnum, int current)
static enum ec_error_list mock_post_init(int chgnum)
{
- mock_current = mock_input_current =
- CONFIG_CHARGER_DEFAULT_CURRENT_LIMIT;
+ mock_current = mock_input_current = CONFIG_CHARGER_INPUT_CURRENT;
return EC_SUCCESS;
}
diff --git a/board/hyperdebug/board.c b/board/hyperdebug/board.c
index 66cd981dca..37e41f66a9 100644
--- a/board/hyperdebug/board.c
+++ b/board/hyperdebug/board.c
@@ -20,8 +20,6 @@
#include "usb-stream.h"
#include "gpio_list.h"
-#include <stdio.h>
-
void board_config_pre_init(void)
{
/* enable SYSCFG clock */
@@ -238,26 +236,6 @@ static void board_init(void)
}
DECLARE_HOOK(HOOK_INIT, board_init, HOOK_PRIO_DEFAULT);
-const char *board_read_serial(void)
-{
- const uint32_t *stm32_unique_id =
- (const uint32_t *)STM32_UNIQUE_ID_BASE;
- static char serial[13];
-
- // Compute 12 hex digits from three factory programmed 32-bit "Unique
- // ID" words in a manner that has been observed to be consistent with
- // how the STM DFU ROM bootloader presents its serial number. This
- // means that the serial number of any particular HyperDebug board will
- // remain the same as it enters and leaves DFU mode for software
- // upgrade.
- int rc = snprintf(serial, sizeof(serial), "%08X%04X",
- stm32_unique_id[0] + stm32_unique_id[2],
- stm32_unique_id[1] >> 16);
- if (12 != rc)
- return NULL;
- return serial;
-}
-
/**
* Find a GPIO signal by name.
*
diff --git a/board/hyperdebug/board.h b/board/hyperdebug/board.h
index 86c2c88ad0..9d15311784 100644
--- a/board/hyperdebug/board.h
+++ b/board/hyperdebug/board.h
@@ -36,6 +36,7 @@
#undef CONFIG_UART_RX_DMA
/* Optional features */
+#define CONFIG_STM_HWTIMER32
#define CONFIG_HW_CRC
#undef CONFIG_PVD
/*
diff --git a/board/icarus/board.c b/board/icarus/board.c
index 4d145287a4..be464e3a77 100644
--- a/board/icarus/board.c
+++ b/board/icarus/board.c
@@ -204,6 +204,14 @@ int board_set_active_charge_port(int charge_port)
return EC_SUCCESS;
}
+void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
+ int charge_mv)
+{
+ charge_ma = (charge_ma * 95) / 100;
+ charge_set_input_current_limit(
+ MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
+}
+
int board_discharge_on_ac(int enable)
{
int ret, port;
diff --git a/board/icarus/board.h b/board/icarus/board.h
index ca1a236307..98b6da3fd5 100644
--- a/board/icarus/board.h
+++ b/board/icarus/board.h
@@ -24,7 +24,6 @@
#define CONFIG_BATTERY_HW_PRESENT_CUSTOM
#define CONFIG_CHARGER_PSYS
-#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 5
#define CONFIG_CHARGER_RUNTIME_CONFIG
diff --git a/board/jacuzzi/board.c b/board/jacuzzi/board.c
index d9e88d3f80..129b75f8e2 100644
--- a/board/jacuzzi/board.c
+++ b/board/jacuzzi/board.c
@@ -244,6 +244,14 @@ int board_set_active_charge_port(int charge_port)
return EC_SUCCESS;
}
+void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
+ int charge_mv)
+{
+ charge_ma = (charge_ma * 95) / 100;
+ charge_set_input_current_limit(
+ MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
+}
+
int board_discharge_on_ac(int enable)
{
int ret, port;
diff --git a/board/jacuzzi/board.h b/board/jacuzzi/board.h
index d5d0523790..0fd5f6496d 100644
--- a/board/jacuzzi/board.h
+++ b/board/jacuzzi/board.h
@@ -34,7 +34,6 @@
#define CONFIG_BATTERY_HW_PRESENT_CUSTOM
#define CONFIG_CHARGER_PSYS
-#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 5
#define CONFIG_CHARGER_RUNTIME_CONFIG
diff --git a/board/kano/charger.c b/board/kano/charger.c
index 95227f753a..ab48a7338c 100644
--- a/board/kano/charger.c
+++ b/board/kano/charger.c
@@ -79,3 +79,10 @@ int board_set_active_charge_port(int port)
return EC_SUCCESS;
}
+
+__overridable 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);
+}
diff --git a/board/kappa/board.c b/board/kappa/board.c
index c00e375560..c04b24d3ed 100644
--- a/board/kappa/board.c
+++ b/board/kappa/board.c
@@ -217,6 +217,14 @@ int board_set_active_charge_port(int charge_port)
return EC_SUCCESS;
}
+void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
+ int charge_mv)
+{
+ charge_ma = (charge_ma * 95) / 100;
+ charge_set_input_current_limit(
+ MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
+}
+
int board_discharge_on_ac(int enable)
{
int ret, port;
diff --git a/board/kappa/board.h b/board/kappa/board.h
index 5c49053a7b..6b6461ae83 100644
--- a/board/kappa/board.h
+++ b/board/kappa/board.h
@@ -26,7 +26,6 @@
#define CONFIG_BATTERY_COUNT 1
#define CONFIG_CHARGER_PSYS
-#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 5
#define CONFIG_BC12_DETECT_PI3USB9201
diff --git a/board/kappa/led.c b/board/kappa/led.c
index d9ecb33da0..1dc86013d7 100644
--- a/board/kappa/led.c
+++ b/board/kappa/led.c
@@ -129,7 +129,6 @@ static void led_set_battery(void)
case PWR_STATE_FORCED_IDLE:
led_set_color_battery((battery_ticks & 0x2) ? LED_AMBER :
LED_OFF);
- break;
default:
/* Other states don't alter LED behavior */
break;
diff --git a/board/kingoftown/usbc_config.c b/board/kingoftown/usbc_config.c
index eafd55bcf2..f0f17e93a9 100644
--- a/board/kingoftown/usbc_config.c
+++ b/board/kingoftown/usbc_config.c
@@ -225,7 +225,6 @@ void board_tcpc_init(void)
/* Enable PPC interrupts */
gpio_enable_interrupt(GPIO_USB_C0_SWCTL_INT_ODL);
- gpio_enable_interrupt(GPIO_USB_C1_SWCTL_INT_ODL);
/* Enable TCPC interrupts */
gpio_enable_interrupt(GPIO_USB_C0_PD_INT_ODL);
@@ -334,8 +333,8 @@ int board_set_active_charge_port(int port)
return EC_SUCCESS;
}
-__override void board_set_charge_limit(int port, int supplier, int charge_ma,
- int max_ma, int charge_mv)
+void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
+ int charge_mv)
{
/*
* Ignore lower charge ceiling on PD transition if our battery is
@@ -347,7 +346,8 @@ __override void board_set_charge_limit(int port, int supplier, int charge_ma,
charge_ma = max_ma;
}
- charge_set_input_current_limit(charge_ma, charge_mv);
+ charge_set_input_current_limit(
+ MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
}
uint16_t tcpc_get_alert_status(void)
diff --git a/board/kinox/board.c b/board/kinox/board.c
index 7d9955e05f..7c55fba876 100644
--- a/board/kinox/board.c
+++ b/board/kinox/board.c
@@ -100,8 +100,8 @@ int board_set_active_charge_port(int port)
return EC_SUCCESS;
}
-__override void board_set_charge_limit(int port, int supplier, int charge_ma,
- int max_ma, int charge_mv)
+void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
+ int charge_mv)
{
}
diff --git a/board/kracko/board.c b/board/kracko/board.c
index 47bf6a7687..136b05ea1e 100644
--- a/board/kracko/board.c
+++ b/board/kracko/board.c
@@ -582,17 +582,19 @@ uint16_t tcpc_get_alert_status(void)
return status;
}
-__override void board_set_charge_limit(int port, int supplier, int charge_ma,
- int max_ma, int charge_mv)
+void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
+ int charge_mv)
{
+ int icl = MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT);
+
/* Limit C1 on board version 0 to 2.0 A */
if ((board_version == 0) && (port == 1))
- charge_ma = MIN(charge_ma, 2000);
+ icl = MIN(icl, 2000);
/*
* TODO(b/151955431): Characterize the input current limit in case a
* scaling needs to be applied here
*/
- charge_set_input_current_limit(charge_ma, charge_mv);
+ charge_set_input_current_limit(icl, charge_mv);
}
int board_set_active_charge_port(int port)
diff --git a/board/kuldax/led.c b/board/kuldax/led.c
index 2fabc26a9a..39b79e2196 100644
--- a/board/kuldax/led.c
+++ b/board/kuldax/led.c
@@ -259,8 +259,8 @@ int led_set_brightness(enum ec_led_id id, const uint8_t *brightness)
else
return set_color(id, LED_OFF, 0);
}
-__override void board_set_charge_limit(int port, int supplier, int charge_ma,
- int max_ma, int charge_mv)
+void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
+ int charge_mv)
{
/* Blink alert if insufficient power per system_can_boot_ap(). */
int insufficient_power =
diff --git a/board/kuldax/sensors.c b/board/kuldax/sensors.c
index a41d5be713..96f49de8a3 100644
--- a/board/kuldax/sensors.c
+++ b/board/kuldax/sensors.c
@@ -46,11 +46,11 @@ const struct adc_t adc_channels[] = {
.factor_mul = ADC_MAX_VOLT * 39,
.factor_div = (ADC_READ_MAX + 1) * 5,
},
- [ADC_PPVAR_IMON] = { /* 20/(20+8.66)*50/200 */
+ [ADC_PPVAR_IMON] = { /* 872.3 mV/A */
.name = "PPVAR_IMON",
.input_ch = NPCX_ADC_CH3,
- .factor_mul = ADC_MAX_VOLT * 143,
- .factor_div = (ADC_READ_MAX + 1) * 25,
+ .factor_mul = ADC_MAX_VOLT * 1433,
+ .factor_div = (ADC_READ_MAX + 1) * 1250,
},
};
diff --git a/board/lalala/board.c b/board/lalala/board.c
index f0f354fcf3..78404d6821 100644
--- a/board/lalala/board.c
+++ b/board/lalala/board.c
@@ -397,6 +397,19 @@ int board_set_active_charge_port(int port)
return EC_SUCCESS;
}
+void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
+ int charge_mv)
+{
+ int icl = MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT);
+
+ /*
+ * b/147463641: The charger IC seems to overdraw ~4%, therefore we
+ * reduce our target accordingly.
+ */
+ icl = icl * 96 / 100;
+ charge_set_input_current_limit(icl, charge_mv);
+}
+
__override void typec_set_source_current_limit(int port, enum tcpc_rp_value rp)
{
if (port < 0 || port > board_get_usb_pd_port_count())
diff --git a/board/lalala/board.h b/board/lalala/board.h
index 2996ad3613..4967e49752 100644
--- a/board/lalala/board.h
+++ b/board/lalala/board.h
@@ -33,11 +33,6 @@
#undef CONFIG_CMD_CHARGER_DUMP
#undef CONFIG_USB_PD_TCPC_LPM_EXIT_DEBOUNCE
#define CONFIG_USB_PD_TCPC_LPM_EXIT_DEBOUNCE (100 * MSEC)
-/*
- * b/147463641: The charger IC seems to overdraw ~4%, therefore we
- * reduce our target accordingly.
- */
-#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 4
/* GPIO for C1 interrupts, for baseboard use */
#define GPIO_USB_C1_INT_ODL GPIO_SUB_USB_C1_INT_ODL
diff --git a/board/lantis/board.c b/board/lantis/board.c
index 9917231474..08fc84e222 100644
--- a/board/lantis/board.c
+++ b/board/lantis/board.c
@@ -719,6 +719,18 @@ uint16_t tcpc_get_alert_status(void)
return status;
}
+void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
+ int charge_mv)
+{
+ int icl = MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT);
+
+ /*
+ * TODO(b/151955431): Characterize the input current limit in case a
+ * scaling needs to be applied here
+ */
+ charge_set_input_current_limit(icl, charge_mv);
+}
+
int board_set_active_charge_port(int port)
{
int is_valid_port = (port >= 0 && port < board_get_usb_pd_port_count());
diff --git a/board/lazor/usbc_config.c b/board/lazor/usbc_config.c
index 26a8a5692d..11cc649573 100644
--- a/board/lazor/usbc_config.c
+++ b/board/lazor/usbc_config.c
@@ -263,7 +263,6 @@ void board_tcpc_init(void)
/* Enable PPC interrupts */
gpio_enable_interrupt(GPIO_USB_C0_SWCTL_INT_ODL);
- gpio_enable_interrupt(GPIO_USB_C1_SWCTL_INT_ODL);
/* Enable TCPC interrupts */
gpio_enable_interrupt(GPIO_USB_C0_PD_INT_ODL);
@@ -371,8 +370,8 @@ int board_set_active_charge_port(int port)
return EC_SUCCESS;
}
-__override void board_set_charge_limit(int port, int supplier, int charge_ma,
- int max_ma, int charge_mv)
+void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
+ int charge_mv)
{
/*
* Ignore lower charge ceiling on PD transition if our battery is
@@ -384,7 +383,8 @@ __override void board_set_charge_limit(int port, int supplier, int charge_ma,
charge_ma = max_ma;
}
- charge_set_input_current_limit(charge_ma, charge_mv);
+ charge_set_input_current_limit(
+ MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
}
uint16_t tcpc_get_alert_status(void)
diff --git a/board/lisbon/led.c b/board/lisbon/led.c
index a4b9a0d094..842cee0530 100644
--- a/board/lisbon/led.c
+++ b/board/lisbon/led.c
@@ -249,8 +249,8 @@ int led_set_brightness(enum ec_led_id id, const uint8_t *brightness)
else
return set_color(id, LED_OFF, 0);
}
-__override void board_set_charge_limit(int port, int supplier, int charge_ma,
- int max_ma, int charge_mv)
+void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
+ int charge_mv)
{
/* Blink alert if insufficient power per system_can_boot_ap(). */
int insufficient_power =
diff --git a/board/madoo/board.c b/board/madoo/board.c
index 77c939143a..eedf8e6fdd 100644
--- a/board/madoo/board.c
+++ b/board/madoo/board.c
@@ -312,6 +312,20 @@ int board_set_active_charge_port(int port)
return EC_SUCCESS;
}
+void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
+ int charge_mv)
+{
+ int icl = MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT);
+
+ /*
+ * b/147463641: The charger IC seems to overdraw ~4%, therefore we
+ reduce
+ * our target accordingly.
+ */
+ icl = icl * 96 / 100;
+ charge_set_input_current_limit(icl, charge_mv);
+}
+
__override void typec_set_source_current_limit(int port, enum tcpc_rp_value rp)
{
if (port < 0 || port > board_get_usb_pd_port_count())
diff --git a/board/madoo/board.h b/board/madoo/board.h
index 0d5e24c2a0..82cfa30b0e 100644
--- a/board/madoo/board.h
+++ b/board/madoo/board.h
@@ -19,11 +19,6 @@
#define CONFIG_OCPC_DEF_RBATT_MOHMS \
22 /* R_DS(on) 11.6mOhm + 10mOhm sns rstr \
*/
-/*
- * b/147463641: The charger IC seems to overdraw ~4%, therefore we
- * reduce our target accordingly.
- */
-#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 4
#define CONFIG_OCPC
#undef CONFIG_CHARGER_SINGLE_CHIP
diff --git a/board/magolor/board.c b/board/magolor/board.c
index 3ddc1af3d1..bfa77375e5 100644
--- a/board/magolor/board.c
+++ b/board/magolor/board.c
@@ -415,8 +415,6 @@ void board_hibernate(void)
if (board_get_charger_chip_count() > 1)
raa489000_hibernate(1, true);
raa489000_hibernate(0, true);
-
- msleep(1000); /* Wait for charger to enter low power mode */
}
void board_reset_pd_mcu(void)
@@ -595,6 +593,19 @@ int board_set_active_charge_port(int port)
return EC_SUCCESS;
}
+void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
+ int charge_mv)
+{
+ int icl = MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT);
+
+ /*
+ * b/147463641: The charger IC seems to overdraw ~4%, therefore we
+ * reduce our target accordingly.
+ */
+ icl = icl * 96 / 100;
+ charge_set_input_current_limit(icl, charge_mv);
+}
+
__override void typec_set_source_current_limit(int port, enum tcpc_rp_value rp)
{
if (port < 0 || port > board_get_usb_pd_port_count())
diff --git a/board/magolor/board.h b/board/magolor/board.h
index beb2cc279c..481856323f 100644
--- a/board/magolor/board.h
+++ b/board/magolor/board.h
@@ -45,11 +45,6 @@
#undef CONFIG_CMD_CHARGER_DUMP
#undef CONFIG_USB_PD_TCPC_LPM_EXIT_DEBOUNCE
#define CONFIG_USB_PD_TCPC_LPM_EXIT_DEBOUNCE (100 * MSEC)
-/*
- * b/147463641: The charger IC seems to overdraw ~4%, therefore we
- * reduce our target accordingly.
- */
-#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 4
/* GPIO for C1 interrupts, for baseboard use */
#define GPIO_USB_C1_INT_ODL GPIO_SUB_C1_INT_EN_RAILS_ODL
diff --git a/board/makomo/board.c b/board/makomo/board.c
index 5a7158b58a..24b34d9a75 100644
--- a/board/makomo/board.c
+++ b/board/makomo/board.c
@@ -235,6 +235,14 @@ int board_set_active_charge_port(int charge_port)
return EC_SUCCESS;
}
+void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
+ int charge_mv)
+{
+ charge_ma = (charge_ma * 95) / 100;
+ charge_set_input_current_limit(
+ MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
+}
+
int board_discharge_on_ac(int enable)
{
int ret, port;
diff --git a/board/makomo/board.h b/board/makomo/board.h
index 86e5e78862..bf705e9560 100644
--- a/board/makomo/board.h
+++ b/board/makomo/board.h
@@ -27,7 +27,6 @@
#define CONFIG_BATTERY_HW_PRESENT_CUSTOM
#define CONFIG_CHARGER_PSYS
-#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 5
#define CONFIG_CHARGER_RUNTIME_CONFIG
diff --git a/board/marasov/battery.c b/board/marasov/battery.c
deleted file mode 100644
index b974930d5b..0000000000
--- a/board/marasov/battery.c
+++ /dev/null
@@ -1,77 +0,0 @@
-/* Copyright 2022 The ChromiumOS Authors
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- *
- * Battery pack vendor provided charging profile
- */
-
-#include "battery_fuel_gauge.h"
-#include "cbi.h"
-#include "common.h"
-#include "compile_time_macros.h"
-#include "gpio.h"
-/*
- * Battery info for all Brya 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[] = {
- /* C490-42 Battery Information */
- [BATTERY_C490] = {
- .fuel_gauge = {
- .manuf_name = "AS3GWQd3jB",
- .device_name = "C490-42",
- .ship_mode = {
- .reg_addr = 0x00,
- .reg_data = { 0x0010, 0x0010 },
- },
- .fet = {
- .reg_addr = 0x99,
- .reg_mask = 0x000c,
- .disconnect_val = 0x000c,
- }
- },
- .batt_info = {
- .voltage_max = 13200, /* mV */
- .voltage_normal = 11880, /* mV */
- .voltage_min = 9000, /* mV */
- .precharge_current = 256, /* mA */
- .start_charging_min_c = 0,
- .start_charging_max_c = 45,
- .charging_min_c = 0,
- .charging_max_c = 60,
- .discharging_min_c = -20,
- .discharging_max_c = 60,
- },
- },
-};
-BUILD_ASSERT(ARRAY_SIZE(board_battery_info) == BATTERY_TYPE_COUNT);
-
-const enum battery_type DEFAULT_BATTERY_TYPE = BATTERY_C490;
-
-enum battery_present battery_hw_present(void)
-{
- enum gpio_signal batt_pres;
-
- batt_pres = GPIO_EC_BATT_PRES_ODL;
-
- /* The GPIO is low when the battery is physically present */
- return gpio_get_level(batt_pres) ? BP_NO : BP_YES;
-}
diff --git a/board/marasov/board.c b/board/marasov/board.c
deleted file mode 100644
index e48dfaa163..0000000000
--- a/board/marasov/board.c
+++ /dev/null
@@ -1,52 +0,0 @@
-/* Copyright 2022 The ChromiumOS Authors
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-#include "button.h"
-#include "cbi.h"
-#include "charge_ramp.h"
-#include "charger.h"
-#include "common.h"
-#include "console.h"
-#include "driver/accelgyro_lsm6dso.h"
-#include "driver/accel_lis2dw12.h"
-#include "driver/als_tcs3400.h"
-#include "fw_config.h"
-#include "gpio.h"
-#include "gpio_signal.h"
-#include "hooks.h"
-#include "lid_switch.h"
-#include "power_button.h"
-#include "power.h"
-#include "registers.h"
-#include "switch.h"
-#include "tablet_mode.h"
-#include "throttle_ap.h"
-#include "usbc_config.h"
-
-#include "gpio_list.h" /* Must come after other header files. */
-
-/* Console output macros */
-#define CPRINTF(format, args...) cprintf(CC_CHARGER, format, ##args)
-#define CPRINTS(format, args...) cprints(CC_CHARGER, format, ##args)
-
-/* Called on AP S3 -> S0 transition */
-static void board_chipset_resume(void)
-{
- /* Allow keyboard backlight to be enabled */
-
- if (IS_ENABLED(CONFIG_PWM_KBLIGHT))
- gpio_set_level(GPIO_EC_KB_BL_EN_L, 0);
-}
-DECLARE_HOOK(HOOK_CHIPSET_RESUME, board_chipset_resume, HOOK_PRIO_DEFAULT);
-
-/* Called on AP S0 -> S3 transition */
-static void board_chipset_suspend(void)
-{
- /* Turn off the keyboard backlight if it's on. */
-
- if (IS_ENABLED(CONFIG_PWM_KBLIGHT))
- gpio_set_level(GPIO_EC_KB_BL_EN_L, 1);
-}
-DECLARE_HOOK(HOOK_CHIPSET_SUSPEND, board_chipset_suspend, HOOK_PRIO_DEFAULT);
diff --git a/board/marasov/board.h b/board/marasov/board.h
deleted file mode 100644
index 6cb0225edc..0000000000
--- a/board/marasov/board.h
+++ /dev/null
@@ -1,217 +0,0 @@
-/* Copyright 2022 The ChromiumOS Authors
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-/* Brya board configuration */
-
-#ifndef __CROS_EC_BOARD_H
-#define __CROS_EC_BOARD_H
-
-#include "compile_time_macros.h"
-
-/*
- * Early brya boards are not set up for vivaldi
- */
-#undef CONFIG_KEYBOARD_VIVALDI
-
-/* Baseboard features */
-#include "baseboard.h"
-
-/*
- * This will happen automatically on NPCX9 ES2 and later. Do not remove
- * until we can confirm all earlier chips are out of service.
- */
-#define CONFIG_HIBERNATE_PSL_VCC1_RST_WAKEUP
-
-#define CONFIG_MP2964
-
-/* LED */
-#define CONFIG_LED_ONOFF_STATES
-#define CONFIG_LED_ONOFF_STATES_BAT_LOW 10
-
-#undef CONFIG_TABLET_MODE
-#undef CONFIG_TABLET_MODE_SWITCH
-#undef CONFIG_GMR_TABLET_MODE
-#undef CONFIG_VOLUME_BUTTONS
-
-/* USB Type A Features */
-#define USB_PORT_COUNT 2
-#define CONFIG_USB_PORT_POWER_DUMB
-
-/* USB Type C and USB PD defines */
-#define CONFIG_USB_PD_REQUIRE_AP_MODE_ENTRY
-
-#define CONFIG_IO_EXPANDER
-#define CONFIG_IO_EXPANDER_NCT38XX
-#define CONFIG_IO_EXPANDER_PORT_COUNT 1
-
-#define CONFIG_USB_PD_FRS_PPC
-
-#define CONFIG_USB_PD_TCPM_PS8815
-#define CONFIG_USB_PD_TCPM_PS8815_FORCE_DID
-#define CONFIG_USBC_RETIMER_INTEL_BB
-#undef CONFIG_BC12_DETECT_PI3USB9201
-#undef CONFIG_USB_CHARGER
-
-/* Battery Configuration */
-#define CONFIG_SMBUS_PEC
-#undef CONFIG_BATT_HOST_FULL_FACTOR
-#define CONFIG_BATT_HOST_FULL_FACTOR 99
-
-/* I2C speed console command */
-#define CONFIG_CMD_I2C_SPEED
-
-/* I2C control host command */
-#define CONFIG_HOSTCMD_I2C_CONTROL
-
-#define CONFIG_USBC_PPC_SYV682X
-
-/* TODO: b/177608416 - measure and check these values on brya */
-#define PD_POWER_SUPPLY_TURN_ON_DELAY 30000 /* us */
-#define PD_POWER_SUPPLY_TURN_OFF_DELAY 30000 /* us */
-#define PD_VCONN_SWAP_DELAY 5000 /* us */
-
-/*
- * Passive USB-C cables only support up to 60W.
- */
-#define PD_OPERATING_POWER_MW 15000
-#define PD_MAX_POWER_MW 60000
-#define PD_MAX_CURRENT_MA 3000
-#define PD_MAX_VOLTAGE_MV 20000
-
-/*
- * Macros for GPIO signals used in common code that don't match the
- * schematic names. Signal names in gpio.inc match the schematic and are
- * then redefined here to so it's more clear which signal is being used for
- * which purpose.
- */
-#define GPIO_AC_PRESENT GPIO_ACOK_OD
-#define GPIO_CPU_PROCHOT GPIO_EC_PROCHOT_ODL
-#define GPIO_EC_INT_L GPIO_EC_PCH_INT_ODL
-#define GPIO_ENABLE_BACKLIGHT GPIO_EC_EN_EDP_BL
-#define GPIO_ENTERING_RW GPIO_EC_ENTERING_RW
-#define GPIO_KBD_KSO2 GPIO_EC_KSO_02_INV
-#define GPIO_PACKET_MODE_EN GPIO_EC_GSC_PACKET_MODE
-#define GPIO_PCH_PWRBTN_L GPIO_EC_PCH_PWR_BTN_ODL
-#define GPIO_PCH_RSMRST_L GPIO_EC_PCH_RSMRST_L
-#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
-
-/*
- * GPIO_EC_PCH_INT_ODL is used for MKBP events as well as a PCH wakeup
- * signal.
- */
-#define GPIO_PCH_WAKE_L GPIO_EC_PCH_INT_ODL
-#define GPIO_PG_EC_ALL_SYS_PWRGD GPIO_SEQ_EC_ALL_SYS_PG
-#define GPIO_PG_EC_DSW_PWROK GPIO_SEQ_EC_DSW_PWROK
-#define GPIO_PG_EC_RSMRST_ODL GPIO_SEQ_EC_RSMRST_ODL
-#define GPIO_POWER_BUTTON_L GPIO_GSC_EC_PWR_BTN_ODL
-#define GPIO_SYS_RESET_L GPIO_SYS_RST_ODL
-#define GPIO_VOLUME_DOWN_L GPIO_EC_VOLDN_BTN_ODL
-#define GPIO_VOLUME_UP_L GPIO_EC_VOLUP_BTN_ODL
-#define GPIO_WP_L GPIO_EC_WP_ODL
-
-/* System has back-lit keyboard */
-#define CONFIG_PWM_KBLIGHT
-
-/* I2C Bus Configuration */
-
-#define I2C_PORT_SENSOR NPCX_I2C_PORT0_0
-
-#define I2C_PORT_USB_C0_TCPC NPCX_I2C_PORT1_0
-#define I2C_PORT_USB_C1_TCPC NPCX_I2C_PORT4_1
-
-#define I2C_PORT_USB_C0_PPC NPCX_I2C_PORT2_0
-#define I2C_PORT_USB_C1_PPC NPCX_I2C_PORT6_1
-
-#define I2C_PORT_USB_C0_MUX NPCX_I2C_PORT3_0
-#define I2C_PORT_USB_C1_MUX NPCX_I2C_PORT6_1
-
-#define I2C_PORT_BATTERY NPCX_I2C_PORT5_0
-#define I2C_PORT_CHARGER NPCX_I2C_PORT7_0
-#define I2C_PORT_EEPROM NPCX_I2C_PORT7_0
-#define I2C_PORT_MP2964 NPCX_I2C_PORT7_0
-
-#define I2C_ADDR_EEPROM_FLAGS 0x50
-
-#define I2C_ADDR_MP2964_FLAGS 0x20
-
-/*
- * see b/174768555#comment22
- */
-#define USBC_PORT_C0_BB_RETIMER_I2C_ADDR 0x56
-
-/* Enabling Thunderbolt-compatible mode */
-#define CONFIG_USB_PD_TBT_COMPAT_MODE
-
-/* Enabling USB4 mode */
-#define CONFIG_USB_PD_USB4
-#define CONFIG_USB_PD_DATA_RESET_MSG
-
-/* Retimer */
-#define CONFIG_USBC_RETIMER_FW_UPDATE
-
-/* Thermal features */
-#define CONFIG_THERMISTOR
-#define CONFIG_TEMP_SENSOR
-#define CONFIG_TEMP_SENSOR_POWER
-#define CONFIG_STEINHART_HART_3V3_30K9_47K_4050B
-
-#define CONFIG_FANS FAN_CH_COUNT
-
-/* Charger defines */
-#define CONFIG_CHARGER_BQ25720
-#define CONFIG_CHARGER_BQ25720_VSYS_TH2_CUSTOM
-#define CONFIG_CHARGER_BQ25720_VSYS_TH2_DV 70
-#define CONFIG_CHARGER_BQ25710_SENSE_RESISTOR 10
-#define CONFIG_CHARGER_BQ25710_SENSE_RESISTOR_AC 10
-#define CONFIG_CHARGER_BQ25710_PSYS_SENSING
-
-/*
- * Older boards have a different ADC assignment.
- */
-
-#define CONFIG_ADC_CHANNELS_RUNTIME_CONFIG
-
-#ifndef __ASSEMBLER__
-
-#include "gpio_signal.h" /* needed by registers.h */
-#include "registers.h"
-#include "usbc_config.h"
-
-enum adc_channel {
- ADC_TEMP_SENSOR_1_DDR_SOC,
- ADC_TEMP_SENSOR_2_AMBIENT,
- ADC_TEMP_SENSOR_3_CHARGER,
- ADC_TEMP_SENSOR_4_WWAN,
- ADC_CH_COUNT
-};
-
-enum temp_sensor_id {
- TEMP_SENSOR_1_DDR_SOC,
- TEMP_SENSOR_2_AMBIENT,
- TEMP_SENSOR_3_CHARGER,
- TEMP_SENSOR_4_WWAN,
- TEMP_SENSOR_COUNT
-};
-
-enum ioex_port { IOEX_C0_NCT38XX = 0, IOEX_PORT_COUNT };
-
-enum battery_type { BATTERY_C490, BATTERY_TYPE_COUNT };
-
-enum pwm_channel {
- PWM_CH_KBLIGHT, /* PWM3 */
- PWM_CH_FAN, /* PWM5 */
- PWM_CH_COUNT
-};
-
-enum fan_channel { FAN_CH_0 = 0, FAN_CH_COUNT };
-
-enum mft_channel { MFT_CH_0 = 0, MFT_CH_COUNT };
-
-#endif /* !__ASSEMBLER__ */
-
-#endif /* __CROS_EC_BOARD_H */
diff --git a/board/marasov/build.mk b/board/marasov/build.mk
deleted file mode 100644
index 8b85854cf0..0000000000
--- a/board/marasov/build.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# -*- makefile -*-
-# Copyright 2022 The ChromiumOS Authors
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-#
-# Brya board specific files build
-#
-
-CHIP:=npcx
-CHIP_FAMILY:=npcx9
-CHIP_VARIANT:=npcx9m3f
-BASEBOARD:=brya
-
-board-y=
-board-y+=battery.o
-board-y+=board.o
-board-y+=charger.o
-board-y+=fans.o
-board-y+=fw_config.o
-board-y+=i2c.o
-board-y+=keyboard.o
-board-y+=led.o
-board-y+=pwm.o
-board-y+=sensors.o
-board-y+=usbc_config.o
diff --git a/board/marasov/charger.c b/board/marasov/charger.c
deleted file mode 100644
index 68fff4f283..0000000000
--- a/board/marasov/charger.c
+++ /dev/null
@@ -1,83 +0,0 @@
-/* Copyright 2022 The ChromiumOS Authors
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-#include "common.h"
-
-#include "charge_manager.h"
-#include "charge_state_v2.h"
-#include "charger.h"
-#include "compile_time_macros.h"
-#include "console.h"
-#include "driver/charger/bq25710.h"
-#include "usbc_ppc.h"
-#include "usb_pd.h"
-#include "util.h"
-
-#define CPRINTSUSB(format, args...) cprints(CC_USBCHARGE, format, ##args)
-#define CPRINTFUSB(format, args...) cprintf(CC_USBCHARGE, format, ##args)
-
-#ifndef CONFIG_ZEPHYR
-/* Charger Chip Configuration */
-const struct charger_config_t chg_chips[] = {
- {
- .i2c_port = I2C_PORT_CHARGER,
- .i2c_addr_flags = BQ25710_SMBUS_ADDR1_FLAGS,
- .drv = &bq25710_drv,
- },
-};
-BUILD_ASSERT(ARRAY_SIZE(chg_chips) == CHARGER_NUM);
-#endif
-
-int board_set_active_charge_port(int port)
-{
- int is_valid_port = board_is_usb_pd_port_present(port);
- 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);
- }
-
- return EC_SUCCESS;
- } else if (!is_valid_port) {
- return EC_ERROR_INVAL;
- }
-
- /* Check if the port is sourcing VBUS. */
- if (ppc_is_sourcing_vbus(port)) {
- CPRINTFUSB("Skip enable C%d", port);
- return EC_ERROR_INVAL;
- }
-
- CPRINTSUSB("New charge port: C%d", port);
-
- /*
- * 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 (ppc_vbus_sink_enable(i, 0))
- CPRINTSUSB("C%d: sink path disable failed.", i);
- }
-
- /* Enable requested charge port. */
- if (ppc_vbus_sink_enable(port, 1)) {
- CPRINTSUSB("C%d: sink path enable failed.", port);
- return EC_ERROR_UNKNOWN;
- }
-
- return EC_SUCCESS;
-}
diff --git a/board/marasov/ec.tasklist b/board/marasov/ec.tasklist
deleted file mode 100644
index a4039fc94f..0000000000
--- a/board/marasov/ec.tasklist
+++ /dev/null
@@ -1,26 +0,0 @@
-/* Copyright 2022 The ChromiumOS Authors
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-/*
- * See CONFIG_TASK_LIST in config.h for details.
- *
- * USB_CHG_Px tasks must be contiguous (see USB_CHG_PORT_TO_TASK_ID(x)).
- * PD_Cx tasks must be contiguous (see PD_PORT_TO_TASK_ID(x))
- */
-
-#define CONFIG_TASK_LIST \
- TASK_ALWAYS(HOOKS, hook_task, NULL, HOOKS_TASK_STACK_SIZE) \
- TASK_ALWAYS(CHARGER, charger_task, NULL, BASEBOARD_CHARGER_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) \
- TASK_NOTEST(KEYSCAN, keyboard_scan_task, NULL, VENTI_TASK_STACK_SIZE) \
- TASK_ALWAYS(PD_C0, pd_task, NULL, BASEBOARD_PD_TASK_STACK_SIZE) \
- TASK_ALWAYS(PD_C1, pd_task, NULL, BASEBOARD_PD_TASK_STACK_SIZE) \
- TASK_ALWAYS(PD_INT_C0, pd_interrupt_handler_task, 0, BASEBOARD_PD_INT_TASK_STACK_SIZE) \
- TASK_ALWAYS(PD_INT_C1, pd_interrupt_handler_task, 1, BASEBOARD_PD_INT_TASK_STACK_SIZE)
diff --git a/board/marasov/fans.c b/board/marasov/fans.c
deleted file mode 100644
index 158f4bf704..0000000000
--- a/board/marasov/fans.c
+++ /dev/null
@@ -1,89 +0,0 @@
-/* Copyright 2022 The ChromiumOS Authors
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-/* Physical fans. These are logically separate from pwm_channels. */
-
-#include "common.h"
-#include "compile_time_macros.h"
-#include "console.h"
-#include "fan_chip.h"
-#include "fan.h"
-#include "hooks.h"
-#include "pwm.h"
-
-/* MFT channels. These are logically separate from pwm_channels. */
-const struct mft_t mft_channels[] = {
- [MFT_CH_0] = {
- .module = NPCX_MFT_MODULE_1,
- .clk_src = TCKC_LFCLK,
- .pwm_id = PWM_CH_FAN,
- },
-};
-BUILD_ASSERT(ARRAY_SIZE(mft_channels) == MFT_CH_COUNT);
-
-static const struct fan_conf fan_conf_0 = {
- .flags = FAN_USE_RPM_MODE,
- .ch = MFT_CH_0, /* Use MFT id to control fan */
- .pgood_gpio = -1,
- .enable_gpio = GPIO_EN_PP5000_FAN,
-};
-
-/*
- * TOOD(b/181271666): thermistor placement and calibration
- *
- * Prototype fan spins at about 4200 RPM at 100% PWM, this
- * is specific to board ID 2 and might also apears in later
- * boards as well.
- */
-static const struct fan_rpm fan_rpm_0 = {
- .rpm_min = 2200,
- .rpm_start = 2200,
- .rpm_max = 4200,
-};
-
-const struct fan_t fans[FAN_CH_COUNT] = {
- [FAN_CH_0] = {
- .conf = &fan_conf_0,
- .rpm = &fan_rpm_0,
- },
-};
-
-#ifndef CONFIG_FANS
-
-/*
- * TODO(b/181271666): use static fan speeds until fan and sensors are
- * tuned. for now, use:
- *
- * AP off: 33%
- * AP on: 100%
- */
-
-static void fan_slow(void)
-{
- const int duty_pct = 33;
-
- ccprints("%s: speed %d%%", __func__, duty_pct);
-
- pwm_enable(PWM_CH_FAN, 1);
- pwm_set_duty(PWM_CH_FAN, duty_pct);
-}
-
-static void fan_max(void)
-{
- const int duty_pct = 100;
-
- ccprints("%s: speed %d%%", __func__, duty_pct);
-
- pwm_enable(PWM_CH_FAN, 1);
- pwm_set_duty(PWM_CH_FAN, duty_pct);
-}
-
-DECLARE_HOOK(HOOK_INIT, fan_slow, HOOK_PRIO_DEFAULT);
-DECLARE_HOOK(HOOK_CHIPSET_SUSPEND, fan_slow, HOOK_PRIO_DEFAULT);
-DECLARE_HOOK(HOOK_CHIPSET_SHUTDOWN, fan_slow, HOOK_PRIO_DEFAULT);
-DECLARE_HOOK(HOOK_CHIPSET_RESET, fan_max, HOOK_PRIO_FIRST);
-DECLARE_HOOK(HOOK_CHIPSET_RESUME, fan_max, HOOK_PRIO_DEFAULT);
-
-#endif /* CONFIG_FANS */
diff --git a/board/marasov/fw_config.c b/board/marasov/fw_config.c
deleted file mode 100644
index 375f5e965b..0000000000
--- a/board/marasov/fw_config.c
+++ /dev/null
@@ -1,46 +0,0 @@
-/* Copyright 2022 The ChromiumOS Authors
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-#include "cbi.h"
-#include "common.h"
-#include "compile_time_macros.h"
-#include "console.h"
-#include "cros_board_info.h"
-#include "fw_config.h"
-
-#define CPRINTS(format, args...) cprints(CC_SYSTEM, format, ##args)
-
-static union brya_cbi_fw_config fw_config;
-BUILD_ASSERT(sizeof(fw_config) == sizeof(uint32_t));
-
-/*
- * FW_CONFIG defaults for brya if the CBI.FW_CONFIG data is not
- * initialized.
- */
-static const union brya_cbi_fw_config fw_config_defaults = {
- .usb_db = DB_USB3_PS8815,
- .kb_bl = KEYBOARD_BACKLIGHT_ENABLED,
-};
-
-/****************************************************************************
- * Brya FW_CONFIG access
- */
-void board_init_fw_config(void)
-{
- if (cbi_get_fw_config(&fw_config.raw_value)) {
- CPRINTS("CBI: Read FW_CONFIG failed, using board defaults");
- fw_config = fw_config_defaults;
- }
-}
-
-union brya_cbi_fw_config get_fw_config(void)
-{
- return fw_config;
-}
-
-enum ec_cfg_usb_db_type ec_cfg_usb_db_type(void)
-{
- return fw_config.usb_db;
-}
diff --git a/board/marasov/fw_config.h b/board/marasov/fw_config.h
deleted file mode 100644
index 906e61fe7e..0000000000
--- a/board/marasov/fw_config.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/* Copyright 2022 The ChromiumOS Authors
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-#ifndef __BOARD_BRYA_FW_CONFIG_H_
-#define __BOARD_BRYA_FW_CONFIG_H_
-
-#include <stdint.h>
-
-/****************************************************************************
- * CBI FW_CONFIG layout for Brya board.
- *
- * Source of truth is the project/brya/brya/config.star configuration file.
- */
-
-enum ec_cfg_usb_db_type {
- DB_USB3_PS8815 = 0,
-};
-
-enum ec_cfg_keyboard_backlight_type {
- KEYBOARD_BACKLIGHT_DISABLED = 0,
- KEYBOARD_BACKLIGHT_ENABLED = 1
-};
-
-union brya_cbi_fw_config {
- struct {
- enum ec_cfg_usb_db_type usb_db : 4;
- uint32_t sd_db : 2;
- uint32_t lte_db : 1;
- enum ec_cfg_keyboard_backlight_type kb_bl : 1;
- uint32_t audio : 3;
- uint32_t reserved_1 : 21;
- };
- uint32_t raw_value;
-};
-
-/**
- * Read the cached FW_CONFIG. Guaranteed to have valid values.
- *
- * @return the FW_CONFIG for the board.
- */
-union brya_cbi_fw_config get_fw_config(void);
-
-/**
- * Get the USB daughter board type from FW_CONFIG.
- *
- * @return the USB daughter board type.
- */
-enum ec_cfg_usb_db_type ec_cfg_usb_db_type(void);
-
-#endif /* __BOARD_BRYA_FW_CONFIG_H_ */
diff --git a/board/marasov/generated-gpio.inc b/board/marasov/generated-gpio.inc
deleted file mode 100644
index f01f5b790b..0000000000
--- a/board/marasov/generated-gpio.inc
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- * This file was auto-generated.
- */
-
-/* INTERRUPT GPIOs: */
-GPIO_INT(ACOK_OD, PIN(0, 0), GPIO_INT_BOTH | GPIO_HIB_WAKE_HIGH, extpower_interrupt)
-GPIO_INT(EC_PROCHOT_IN_L, PIN(F, 0), GPIO_INT_BOTH, throttle_ap_prochot_input_interrupt)
-GPIO_INT(EC_WP_ODL, PIN(A, 1), GPIO_INT_BOTH, switch_interrupt)
-GPIO_INT(GSC_EC_PWR_BTN_ODL, PIN(0, 1), GPIO_INT_BOTH | GPIO_HIB_WAKE_LOW, power_button_interrupt)
-GPIO_INT(LID_OPEN, PIN(D, 2), GPIO_INT_BOTH | GPIO_HIB_WAKE_HIGH, lid_interrupt)
-GPIO_INT(SEQ_EC_ALL_SYS_PG, PIN(F, 4), GPIO_INT_BOTH, power_signal_interrupt)
-GPIO_INT(SEQ_EC_DSW_PWROK, PIN(C, 7), GPIO_INT_BOTH, power_signal_interrupt)
-GPIO_INT(SEQ_EC_RSMRST_ODL, PIN(E, 2), GPIO_INT_BOTH, power_signal_interrupt)
-GPIO_INT(SLP_S3_L, PIN(A, 5), GPIO_INT_BOTH, power_signal_interrupt)
-GPIO_INT(SLP_SUS_L, PIN(F, 1), GPIO_INT_BOTH, power_signal_interrupt)
-GPIO_INT(SYS_SLP_S0IX_L, PIN(D, 5), GPIO_INT_BOTH, power_signal_interrupt)
-GPIO_INT(USB_C0_TCPC_INT_ODL, PIN(E, 0), GPIO_INT_FALLING, tcpc_alert_event)
-GPIO_INT(USB_C0_PPC_INT_ODL, PIN(6, 2), GPIO_INT_FALLING, ppc_interrupt)
-GPIO_INT(USB_C0_RT_INT_ODL, PIN(B, 1), GPIO_INT_FALLING, retimer_interrupt)
-GPIO_INT(USB_C1_PPC_INT_ODL, PIN(F, 5), GPIO_INT_FALLING, ppc_interrupt)
-GPIO_INT(USB_C1_TCPC_INT_ODL, PIN(A, 2), GPIO_INT_FALLING, tcpc_alert_event)
-
-/* USED GPIOs: */
-GPIO(CCD_MODE_ODL, PIN(E, 5), GPIO_INPUT)
-GPIO(CHARGER_VAP_OTG_EN, PIN(7, 3), GPIO_OUT_LOW)
-GPIO(CPU_C10_GATE_L, PIN(6, 7), GPIO_INPUT)
-GPIO(EC_BATT_PRES_ODL, PIN(A, 3), GPIO_INPUT)
-GPIO(EC_ENTERING_RW, PIN(0, 3), GPIO_OUT_LOW)
-GPIO(EC_EN_EDP_BL, PIN(D, 3), GPIO_OUT_HIGH)
-GPIO(EC_GSC_PACKET_MODE, PIN(7, 5), GPIO_OUT_LOW)
-GPIO(EC_I2C_BAT_SCL, PIN(3, 3), GPIO_INPUT)
-GPIO(EC_I2C_BAT_SDA, PIN(3, 6), GPIO_INPUT)
-GPIO(EC_I2C_MISC_SCL_R, PIN(B, 3), GPIO_INPUT)
-GPIO(EC_I2C_MISC_SDA_R, PIN(B, 2), GPIO_INPUT)
-GPIO(EC_I2C_SENSOR_SCL, PIN(B, 5), GPIO_INPUT | GPIO_SEL_1P8V)
-GPIO(EC_I2C_SENSOR_SDA, PIN(B, 4), GPIO_INPUT | GPIO_SEL_1P8V)
-GPIO(EC_I2C_USB_C0_PPC_BC_SCL, PIN(9, 2), GPIO_INPUT)
-GPIO(EC_I2C_USB_C0_PPC_BC_SDA, PIN(9, 1), GPIO_INPUT)
-GPIO(EC_I2C_USB_C0_RT_SCL, PIN(D, 1), GPIO_INPUT)
-GPIO(EC_I2C_USB_C0_RT_SDA, PIN(D, 0), GPIO_INPUT)
-GPIO(EC_I2C_USB_C0_TCPC_SCL, PIN(9, 0), GPIO_INPUT)
-GPIO(EC_I2C_USB_C0_TCPC_SDA, PIN(8, 7), GPIO_INPUT)
-GPIO(EC_I2C_USB_C1_MIX_SCL, PIN(E, 4), GPIO_INPUT)
-GPIO(EC_I2C_USB_C1_MIX_SDA, PIN(E, 3), GPIO_INPUT)
-GPIO(EC_I2C_USB_C1_TCPC_SCL, PIN(F, 3), GPIO_INPUT)
-GPIO(EC_I2C_USB_C1_TCPC_SDA, PIN(F, 2), GPIO_INPUT)
-GPIO(EC_KB_BL_EN_L, PIN(8, 6), GPIO_OUT_HIGH)
-GPIO(EC_PCHHOT_ODL, PIN(7, 4), GPIO_INPUT)
-GPIO(EC_PCH_INT_ODL, PIN(B, 0), GPIO_ODR_HIGH)
-GPIO(EC_PCH_PWR_BTN_ODL, PIN(C, 1), GPIO_ODR_HIGH)
-GPIO(EC_PCH_RSMRST_L, PIN(A, 6), GPIO_OUT_LOW)
-GPIO(EC_PCH_RTCRST, PIN(7, 6), GPIO_OUT_LOW)
-GPIO(EC_PCH_SYS_PWROK, PIN(3, 7), GPIO_OUT_LOW)
-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_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)
-GPIO(SYS_RST_ODL, PIN(C, 5), GPIO_ODR_HIGH)
-GPIO(USB_C0_TCPC_RST_ODL, PIN(A, 7), GPIO_ODR_LOW)
-GPIO(USB_C1_FRS_EN, PIN(9, 4), GPIO_OUT_LOW)
-GPIO(USB_C1_OC_ODL, PIN(9, 6), GPIO_ODR_HIGH)
-GPIO(USB_C1_RT_INT_ODL, PIN(A, 0), GPIO_INPUT)
-GPIO(USB_C1_RT_RST_R_ODL, PIN(0, 2), GPIO_ODR_LOW)
-GPIO(VCCST_PWRGD_OD, PIN(A, 4), GPIO_ODR_LOW)
-GPIO(PWR_LED_W_ODL, PIN(6, 0), GPIO_OUT_HIGH)
-GPIO(PWR_LED_A_ODL, PIN(C, 2), GPIO_OUT_HIGH)
-
-/* UART alternate functions */
-ALTERNATE(PIN_MASK(6, 0x30), 0, MODULE_UART, 0) /* GPIO64/CR_SIN1, GPO65/CR_SOUT1/FLPRG1_L */
-
-/* I2C alternate functions */
-ALTERNATE(PIN_MASK(3, 0x48), 0, MODULE_I2C, 0) /* GPIO33/I2C5_SCL0/CTS_L, GPIO36/RTS_L/I2C5_SDA0 */
-ALTERNATE(PIN_MASK(8, 0x80), 0, MODULE_I2C, 0) /* GPIO87/I2C1_SDA0 */
-ALTERNATE(PIN_MASK(9, 0x07), 0, MODULE_I2C, 0) /* GPIO92/I2C2_SCL0, GPIO91/I2C2_SDA0, GPIO90/I2C1_SCL0 */
-ALTERNATE(PIN_MASK(B, 0x0c), 0, MODULE_I2C, 0) /* GPIOB3/I2C7_SCL0/DCD_L, GPIOB2/I2C7_SDA0/DSR_L */
-ALTERNATE(PIN_MASK(B, 0x30), 0, MODULE_I2C, GPIO_SEL_1P8V) /* GPIOB5/I2C0_SCL0, GPIOB4/I2C0_SDA0 */
-ALTERNATE(PIN_MASK(D, 0x03), 0, MODULE_I2C, 0) /* GPIOD1/I2C3_SCL0, GPIOD0/I2C3_SDA0 */
-ALTERNATE(PIN_MASK(E, 0x18), 0, MODULE_I2C, 0) /* GPIOE4/I2C6_SCL1/I3C_SCL, GPIOE3/I2C6_SDA1/I3C_SDA */
-ALTERNATE(PIN_MASK(F, 0x0c), 0, MODULE_I2C, 0) /* GPIOF3/I2C4_SCL1, GPIOF2/I2C4_SDA1 */
-
-/* PWM alternate functions */
-ALTERNATE(PIN_MASK(4, 0x01), 0, MODULE_PWM, 0) /* GPIO40/TA1 */
-ALTERNATE(PIN_MASK(8, 0x01), 0, MODULE_PWM, 0) /* GPIO80/PWM3 */
-ALTERNATE(PIN_MASK(B, 0x80), 0, MODULE_PWM, 0) /* GPIOB7/PWM5 */
-
-/* ADC alternate functions */
-ALTERNATE(PIN_MASK(3, 0x10), 0, MODULE_ADC, 0) /* GPIO34/PS2_DAT2/ADC6 */
-ALTERNATE(PIN_MASK(4, 0x34), 0, MODULE_ADC, 0) /* GPIO42/ADC3/RI_L, GPIO45/ADC0, GPIO44/ADC1 */
-ALTERNATE(PIN_MASK(E, 0x02), 0, MODULE_ADC, 0) /* GPIOE1/ADC7 */
-
-/* KB alternate functions */
-ALTERNATE(PIN_MASK(0, 0xf0), 0, MODULE_KB, GPIO_ODR_HIGH) /* KSO10&P80_CLK/GPIO07, KSO11&P80_DAT/GPIO06, KSO12/GPIO05, KSO13/GPIO04 */
-ALTERNATE(PIN_MASK(1, 0x7f), 0, MODULE_KB, GPIO_ODR_HIGH) /* KSO06/GPO13/GP_SEL_L, KSO07/GPO12/JEN_L, KSO03/GPIO16/JTAG_TDO0_SWO, KSO04/GPIO15/XNOR, KSO05/GPIO14, KSO08/GPIO11/CR_SOUT1, KSO09/GPIO10/CR_SIN1 */
-ALTERNATE(PIN_MASK(2, 0xfc), 0, MODULE_KB, GPIO_INPUT | GPIO_PULL_UP) /* KSI2/GPIO27/TRACEDATA1, KSI3/GPIO26/TRACEDATA0, KSI4/GPIO25/TRACECLK/GP_SCLK, KSI5/GPIO24/GP_MISO, KSI6/GPIO23/S_SBUB, KSI7/GPIO22/S_SBUA */
-ALTERNATE(PIN_MASK(2, 0x03), 0, MODULE_KB, GPIO_ODR_HIGH) /* KSO00/GPIO21/JTAG_TCK_SWCLK, KSO01/GPIO20/JTAG_TMS_SWIO */
-ALTERNATE(PIN_MASK(3, 0x03), 0, MODULE_KB, GPIO_INPUT | GPIO_PULL_UP) /* KSI0/GPIO31/TRACEDATA3/GP_MOSI, KSI1/GPIO30/TRACEDATA2/GP_CS_L */
-ALTERNATE(PIN_MASK(8, 0x04), 0, MODULE_KB, GPIO_ODR_HIGH) /* KSO14/GPIO82 */
-
-/* PMU alternate functions */
-ALTERNATE(PIN_MASK(0, 0x01), 0, MODULE_PMU, GPIO_INT_BOTH | GPIO_HIB_WAKE_HIGH) /* PSL_IN2_L&GPI00/GPIO00 */
-ALTERNATE(PIN_MASK(0, 0x02), 0, MODULE_PMU, GPIO_INT_BOTH | GPIO_HIB_WAKE_LOW) /* GPIO01/PSL_IN3_L&GPI01 */
-ALTERNATE(PIN_MASK(D, 0x04), 0, MODULE_PMU, GPIO_INT_BOTH | GPIO_HIB_WAKE_HIGH) /* PSL_IN1_L&GPID2/GPIOD2 */
-
-/* Unused Pins */
-UNUSED(PIN(D, 6)) /* GPOD6/CR_SOUT3/SHDF_ESPI_L */
-UNUSED(PIN(3, 2)) /* GPO32/TRIS_L */
-UNUSED(PIN(3, 5)) /* GPO35/CR_SOUT4/TEST_L */
-UNUSED(PIN(6, 6)) /* GPIO66 */
-UNUSED(PIN(5, 7)) /* GPIO57/SER_IRQ/ESPI_ALERT_L */
-UNUSED(PIN(9, 5)) /* GPIO95 */
-UNUSED(PIN(8, 1)) /* GPIO81 */
-UNUSED(PIN(5, 6)) /* GPIO56 */
-UNUSED(PIN(D, 4)) /* GPIOD4 */
-UNUSED(PIN(9, 3)) /* GPIO93 */
-UNUSED(PIN(9, 7)) /* GPIO97 */
-UNUSED(PIN(C, 3)) /* GPIOC3 */
-UNUSED(PIN(C, 4)) /* GPIOC4 */
-UNUSED(PIN(C, 6)) /* GPIOC6 */
-UNUSED(PIN(5, 0)) /* GPIO50 */
-UNUSED(PIN(8, 3)) /* GPIO83 */
-UNUSED(PIN(7, 0)) /* GPIO70 */
-UNUSED(PIN(4, 1)) /* GPIO41 */
-
-/* Pre-configured PSL balls: J8 K6 */
diff --git a/board/marasov/gpio.inc b/board/marasov/gpio.inc
deleted file mode 100644
index d4a2ff2d67..0000000000
--- a/board/marasov/gpio.inc
+++ /dev/null
@@ -1,38 +0,0 @@
-/* -*- mode:c -*-
- *
- * Copyright 2022 The ChromiumOS Authors
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-#define MODULE_KB MODULE_KEYBOARD_SCAN
-
-/*
- * Generated-gpio.inc is produced using a Brya specific tool that
- * parses the GPIO definitions derived from the board schematics and
- * EC pinout descriptions derived form the chip datasheets to generate
- * the Chrome EC GPIO pinout definitions. Due to the confidential
- * nature of schematics and datasheets, they are not provided here.
- *
- * Variants that do not auto-generate their GPIO definitions should
- * combine the Brya gpio.inc and generated-gpio.inc into their
- * gpio.inc and customize as appropriate.
- */
-
-#include "generated-gpio.inc"
-
-/*
- * The NPCX keyboard driver does not use named GPIOs to access
- * keyboard scan pins, so we do not list them in *gpio.inc. However, when
- * KEYBOARD_COL2_INVERTED is defined, this name is required.
- */
-GPIO(EC_KSO_02_INV, PIN(1, 7), GPIO_OUT_LOW)
-
-/* IO expander configuration */
-
-/* GPIO02_P2 to PU */
-/* GPIO03_P2 to PU */
-IOEX(USB_C0_OC_ODL, EXPIN(IOEX_C0_NCT38XX, 0, 4), GPIO_ODR_HIGH)
-IOEX(USB_C0_FRS_EN, EXPIN(IOEX_C0_NCT38XX, 0, 6), GPIO_OUT_LOW)
-IOEX(USB_C0_RT_RST_ODL, EXPIN(IOEX_C0_NCT38XX, 0, 7), GPIO_ODR_LOW)
-/* GPIO07_P2 to PU */
diff --git a/board/marasov/i2c.c b/board/marasov/i2c.c
deleted file mode 100644
index 15c9b13e83..0000000000
--- a/board/marasov/i2c.c
+++ /dev/null
@@ -1,81 +0,0 @@
-/* Copyright 2022 The ChromiumOS Authors
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-#include "common.h"
-#include "compile_time_macros.h"
-#include "console.h"
-#include "hooks.h"
-#include "i2c.h"
-
-/* I2C port map configuration */
-const struct i2c_port_t i2c_ports[] = {
- {
- /* I2C0 */
- .name = "sensor",
- .port = I2C_PORT_SENSOR,
- .kbps = 400,
- .scl = GPIO_EC_I2C_SENSOR_SCL,
- .sda = GPIO_EC_I2C_SENSOR_SDA,
- },
- {
- /* I2C1 */
- .name = "tcpc0,2",
- .port = I2C_PORT_USB_C0_TCPC,
- .kbps = 1000,
- .scl = GPIO_EC_I2C_USB_C0_TCPC_SCL,
- .sda = GPIO_EC_I2C_USB_C0_TCPC_SDA,
- },
- {
- /* I2C2 */
- .name = "ppc0,2",
- .port = I2C_PORT_USB_C0_PPC,
- .kbps = 1000,
- .scl = GPIO_EC_I2C_USB_C0_PPC_BC_SCL,
- .sda = GPIO_EC_I2C_USB_C0_PPC_BC_SDA,
- },
- {
- /* I2C3 */
- .name = "retimer0,2",
- .port = I2C_PORT_USB_C0_MUX,
- .kbps = 1000,
- .scl = GPIO_EC_I2C_USB_C0_RT_SCL,
- .sda = GPIO_EC_I2C_USB_C0_RT_SDA,
- },
- {
- /* I2C4 C1 TCPC */
- .name = "tcpc1",
- .port = I2C_PORT_USB_C1_TCPC,
- .kbps = 1000,
- .scl = GPIO_EC_I2C_USB_C1_TCPC_SCL,
- .sda = GPIO_EC_I2C_USB_C1_TCPC_SDA,
- .flags = I2C_PORT_FLAG_DYNAMIC_SPEED,
- },
- {
- /* I2C5 */
- .name = "battery",
- .port = I2C_PORT_BATTERY,
- .kbps = 100,
- .scl = GPIO_EC_I2C_BAT_SCL,
- .sda = GPIO_EC_I2C_BAT_SDA,
- },
- {
- /* I2C6 */
- .name = "ppc1",
- .port = I2C_PORT_USB_C1_PPC,
- .kbps = 1000,
- .scl = GPIO_EC_I2C_USB_C1_MIX_SCL,
- .sda = GPIO_EC_I2C_USB_C1_MIX_SDA,
- .flags = I2C_PORT_FLAG_DYNAMIC_SPEED,
- },
- {
- /* I2C7 */
- .name = "eeprom",
- .port = I2C_PORT_EEPROM,
- .kbps = 400,
- .scl = GPIO_EC_I2C_MISC_SCL_R,
- .sda = GPIO_EC_I2C_MISC_SDA_R,
- },
-};
-const unsigned int i2c_ports_used = ARRAY_SIZE(i2c_ports);
diff --git a/board/marasov/keyboard.c b/board/marasov/keyboard.c
deleted file mode 100644
index 936aeb290b..0000000000
--- a/board/marasov/keyboard.c
+++ /dev/null
@@ -1,25 +0,0 @@
-/* Copyright 2022 The ChromiumOS Authors
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-#include "common.h"
-
-#include "keyboard_scan.h"
-#include "timer.h"
-
-/* Keyboard scan setting */
-__override struct keyboard_scan_config keyscan_config = {
- /* Increase from 50 us, because KSO_02 passes through the H1. */
- .output_settle_us = 80,
- /* Other values should be the same as the default configuration. */
- .debounce_down_us = 9 * MSEC,
- .debounce_up_us = 30 * MSEC,
- .scan_period_us = 3 * MSEC,
- .min_post_scan_delay_us = 1000,
- .poll_timeout_us = 100 * MSEC,
- .actual_key_mask = {
- 0x14, 0xff, 0xff, 0xff, 0xff, 0xf5, 0xff,
- 0xa4, 0xff, 0xfe, 0x55, 0xfa, 0xca /* full set */
- },
-};
diff --git a/board/marasov/led.c b/board/marasov/led.c
deleted file mode 100644
index 74005005cb..0000000000
--- a/board/marasov/led.c
+++ /dev/null
@@ -1,101 +0,0 @@
-/* Copyright 2022 The ChromiumOS Authors
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-#include "chipset.h"
-#include "ec_commands.h"
-#include "gpio.h"
-#include "led_common.h"
-#include "led_onoff_states.h"
-
-#define LED_OFF_LVL 1
-#define LED_ON_LVL 0
-
-__override const int led_charge_lvl_1;
-__override const int led_charge_lvl_2 = 95;
-
-__override struct led_descriptor
- led_bat_state_table[LED_NUM_STATES][LED_NUM_PHASES] = {
- [STATE_CHARGING_LVL_1] = { { EC_LED_COLOR_AMBER,
- LED_INDEFINITE } },
- [STATE_CHARGING_LVL_2] = { { EC_LED_COLOR_AMBER,
- LED_INDEFINITE } },
- [STATE_CHARGING_FULL_CHARGE] = { { EC_LED_COLOR_WHITE,
- LED_INDEFINITE } },
- [STATE_DISCHARGE_S0] = { { EC_LED_COLOR_WHITE,
- LED_INDEFINITE } },
- [STATE_DISCHARGE_S0_BAT_LOW] = { { EC_LED_COLOR_AMBER,
- 1 * LED_ONE_SEC },
- { LED_OFF, 3 * LED_ONE_SEC } },
- [STATE_DISCHARGE_S3] = { { EC_LED_COLOR_WHITE,
- 1 * LED_ONE_SEC },
- { LED_OFF, 3 * LED_ONE_SEC } },
- [STATE_DISCHARGE_S5] = { { LED_OFF, LED_INDEFINITE } },
- [STATE_BATTERY_ERROR] = { { EC_LED_COLOR_AMBER,
- 1 * LED_ONE_SEC },
- { LED_OFF, 1 * LED_ONE_SEC } },
- [STATE_FACTORY_TEST] = { { EC_LED_COLOR_WHITE,
- 2 * LED_ONE_SEC },
- { EC_LED_COLOR_AMBER,
- 2 * LED_ONE_SEC } },
- };
-
-const enum ec_led_id supported_led_ids[] = {
- EC_LED_ID_BATTERY_LED,
-};
-
-const int supported_led_ids_count = ARRAY_SIZE(supported_led_ids);
-
-__override void led_set_color_battery(enum ec_led_colors color)
-{
- switch (color) {
- case EC_LED_COLOR_WHITE:
- gpio_set_level(GPIO_PWR_LED_A_ODL, LED_OFF_LVL);
- gpio_set_level(GPIO_PWR_LED_W_ODL, LED_ON_LVL);
- break;
- case EC_LED_COLOR_AMBER:
- gpio_set_level(GPIO_PWR_LED_A_ODL, LED_ON_LVL);
- gpio_set_level(GPIO_PWR_LED_W_ODL, LED_OFF_LVL);
- break;
- default: /* LED_OFF and other unsupported colors */
- gpio_set_level(GPIO_PWR_LED_W_ODL, LED_OFF_LVL);
- gpio_set_level(GPIO_PWR_LED_A_ODL, LED_OFF_LVL);
- break;
- }
-}
-
-void led_get_brightness_range(enum ec_led_id led_id, uint8_t *brightness_range)
-{
- if (led_id == EC_LED_ID_BATTERY_LED) {
- brightness_range[EC_LED_COLOR_WHITE] = 1;
- brightness_range[EC_LED_COLOR_AMBER] = 1;
- }
-}
-
-int led_set_brightness(enum ec_led_id led_id, const uint8_t *brightness)
-{
- if (led_id == EC_LED_ID_BATTERY_LED) {
- if (brightness[EC_LED_COLOR_WHITE] != 0)
- led_set_color_battery(EC_LED_COLOR_WHITE);
- else if (brightness[EC_LED_COLOR_AMBER] != 0)
- led_set_color_battery(EC_LED_COLOR_AMBER);
- else
- led_set_color_battery(LED_OFF);
- }
-
- return EC_SUCCESS;
-}
-
-__override enum led_states board_led_get_state(enum led_states desired_state)
-{
- if (desired_state == STATE_BATTERY_ERROR) {
- if (chipset_in_state(CHIPSET_STATE_ON))
- return desired_state;
- else if (chipset_in_state(CHIPSET_STATE_ANY_SUSPEND))
- return STATE_DISCHARGE_S3;
- else
- return STATE_DISCHARGE_S5;
- }
- return desired_state;
-}
diff --git a/board/marasov/pwm.c b/board/marasov/pwm.c
deleted file mode 100644
index f693a6e27f..0000000000
--- a/board/marasov/pwm.c
+++ /dev/null
@@ -1,38 +0,0 @@
-/* Copyright 2022 The ChromiumOS Authors
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-#include "common.h"
-
-#include "compile_time_macros.h"
-#include "hooks.h"
-#include "pwm.h"
-#include "pwm_chip.h"
-
-const struct pwm_t pwm_channels[] = {
- [PWM_CH_KBLIGHT] = {
- .channel = 3,
- .flags = 0,
- /*
- * Set PWM frequency to multiple of 50 Hz and 60 Hz to prevent
- * flicker. Higher frequencies consume similar average power to
- * lower PWM frequencies, but higher frequencies record a much
- * lower maximum power.
- */
- .freq = 12000,
- },
- [PWM_CH_FAN] = {
- .channel = 5,
- .flags = PWM_CONFIG_OPEN_DRAIN,
- .freq = 25000,
- },
-};
-BUILD_ASSERT(ARRAY_SIZE(pwm_channels) == PWM_CH_COUNT);
-
-static void board_pwm_init(void)
-{
- pwm_enable(PWM_CH_KBLIGHT, 1);
- pwm_set_duty(PWM_CH_KBLIGHT, 50);
-}
-DECLARE_HOOK(HOOK_INIT, board_pwm_init, HOOK_PRIO_DEFAULT);
diff --git a/board/marasov/sensors.c b/board/marasov/sensors.c
deleted file mode 100644
index 2a25141639..0000000000
--- a/board/marasov/sensors.c
+++ /dev/null
@@ -1,187 +0,0 @@
-/* Copyright 2022 The ChromiumOS Authors
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-#include "common.h"
-#include "adc.h"
-#include "gpio.h"
-#include "hooks.h"
-#include "temp_sensor.h"
-#include "thermal.h"
-#include "temp_sensor/thermistor.h"
-
-/* ADC configuration */
-struct adc_t adc_channels[] = {
- [ADC_TEMP_SENSOR_1_DDR_SOC] = {
- .name = "TEMP_DDR_SOC",
- .input_ch = NPCX_ADC_CH0,
- .factor_mul = ADC_MAX_VOLT,
- .factor_div = ADC_READ_MAX + 1,
- .shift = 0,
- },
- [ADC_TEMP_SENSOR_2_AMBIENT] = {
- .name = "TEMP_AMBIENT",
- .input_ch = NPCX_ADC_CH1,
- .factor_mul = ADC_MAX_VOLT,
- .factor_div = ADC_READ_MAX + 1,
- .shift = 0,
- },
- [ADC_TEMP_SENSOR_3_CHARGER] = {
- .name = "TEMP_CHARGER",
- .input_ch = NPCX_ADC_CH6,
- .factor_mul = ADC_MAX_VOLT,
- .factor_div = ADC_READ_MAX + 1,
- .shift = 0,
- },
- [ADC_TEMP_SENSOR_4_WWAN] = {
- .name = "TEMP_WWAN",
- .input_ch = NPCX_ADC_CH7,
- .factor_mul = ADC_MAX_VOLT,
- .factor_div = ADC_READ_MAX + 1,
- .shift = 0,
- },
-};
-BUILD_ASSERT(ARRAY_SIZE(adc_channels) == ADC_CH_COUNT);
-
-/* Temperature sensor configuration */
-const struct temp_sensor_t temp_sensors[] = {
- [TEMP_SENSOR_1_DDR_SOC] = {
- .name = "DDR and SOC",
- .type = TEMP_SENSOR_TYPE_BOARD,
- .read = get_temp_3v3_30k9_47k_4050b,
- .idx = ADC_TEMP_SENSOR_1_DDR_SOC,
- },
- [TEMP_SENSOR_2_AMBIENT] = {
- .name = "Ambient",
- .type = TEMP_SENSOR_TYPE_BOARD,
- .read = get_temp_3v3_30k9_47k_4050b,
- .idx = ADC_TEMP_SENSOR_2_AMBIENT,
- },
- [TEMP_SENSOR_3_CHARGER] = {
- .name = "Charger",
- .type = TEMP_SENSOR_TYPE_BOARD,
- .read = get_temp_3v3_30k9_47k_4050b,
- .idx = ADC_TEMP_SENSOR_3_CHARGER,
- },
- [TEMP_SENSOR_4_WWAN] = {
- .name = "WWAN",
- .type = TEMP_SENSOR_TYPE_BOARD,
- .read = get_temp_3v3_30k9_47k_4050b,
- .idx = ADC_TEMP_SENSOR_4_WWAN,
- },
-};
-BUILD_ASSERT(ARRAY_SIZE(temp_sensors) == TEMP_SENSOR_COUNT);
-
-/*
- * TODO(b/180681346): update for Alder Lake/brya
- *
- * Alder Lake specifies 100 C as maximum TDP temperature. THRMTRIP# occurs at
- * 130 C. However, sensor is located next to DDR, so we need to use the lower
- * DDR temperature limit (85 C)
- */
-/*
- * TODO(b/202062363): Remove when clang is fixed.
- */
-#define THERMAL_CPU \
- { \
- .temp_host = { \
- [EC_TEMP_THRESH_HIGH] = C_TO_K(85), \
- [EC_TEMP_THRESH_HALT] = C_TO_K(90), \
- }, \
- .temp_host_release = { \
- [EC_TEMP_THRESH_HIGH] = C_TO_K(80), \
- }, \
- .temp_fan_off = C_TO_K(35), \
- .temp_fan_max = C_TO_K(60), \
- }
-__maybe_unused static const struct ec_thermal_config thermal_cpu = THERMAL_CPU;
-
-/*
- * TODO(b/180681346): update for Alder Lake/brya
- *
- * Inductor limits - used for both charger and PP3300 regulator
- *
- * Need to use the lower of the charger IC, PP3300 regulator, and the inductors
- *
- * Charger max recommended temperature 100C, max absolute temperature 125C
- * PP3300 regulator: operating range -40 C to 145 C
- *
- * Inductors: limit of 125c
- * PCB: limit is 80c
- */
-/*
- * TODO(b/202062363): Remove when clang is fixed.
- */
-#define THERMAL_AMBIENT \
- { \
- .temp_host = { \
- [EC_TEMP_THRESH_HIGH] = C_TO_K(85), \
- [EC_TEMP_THRESH_HALT] = C_TO_K(90), \
- }, \
- .temp_host_release = { \
- [EC_TEMP_THRESH_HIGH] = C_TO_K(80), \
- }, \
- .temp_fan_off = C_TO_K(35), \
- .temp_fan_max = C_TO_K(60), \
- }
-__maybe_unused static const struct ec_thermal_config thermal_ambient =
- THERMAL_AMBIENT;
-
-/*
- * Inductor limits - used for both charger and PP3300 regulator
- *
- * Need to use the lower of the charger IC, PP3300 regulator, and the inductors
- *
- * Charger max recommended temperature 125C, max absolute temperature 150C
- * PP3300 regulator: operating range -40 C to 125 C
- *
- * Inductors: limit of 125c
- * PCB: limit is 80c
- */
-/*
- * TODO(b/202062363): Remove when clang is fixed.
- */
-#define THERMAL_CHARGER \
- { \
- .temp_host = { \
- [EC_TEMP_THRESH_HIGH] = C_TO_K(105), \
- [EC_TEMP_THRESH_HALT] = C_TO_K(120), \
- }, \
- .temp_host_release = { \
- [EC_TEMP_THRESH_HIGH] = C_TO_K(90), \
- }, \
- .temp_fan_off = C_TO_K(35), \
- .temp_fan_max = C_TO_K(65), \
- }
-__maybe_unused static const struct ec_thermal_config thermal_charger =
- THERMAL_CHARGER;
-
-/*
- * TODO(b/180681346): update for brya WWAN module
- */
-/*
- * TODO(b/202062363): Remove when clang is fixed.
- */
-#define THERMAL_WWAN \
- { \
- .temp_host = { \
- [EC_TEMP_THRESH_HIGH] = C_TO_K(130), \
- [EC_TEMP_THRESH_HALT] = C_TO_K(130), \
- }, \
- .temp_host_release = { \
- [EC_TEMP_THRESH_HIGH] = C_TO_K(100), \
- }, \
- .temp_fan_off = C_TO_K(35), \
- .temp_fan_max = C_TO_K(60), \
- }
-__maybe_unused static const struct ec_thermal_config thermal_wwan =
- THERMAL_WWAN;
-
-struct ec_thermal_config thermal_params[] = {
- [TEMP_SENSOR_1_DDR_SOC] = THERMAL_CPU,
- [TEMP_SENSOR_2_AMBIENT] = THERMAL_AMBIENT,
- [TEMP_SENSOR_3_CHARGER] = THERMAL_CHARGER,
- [TEMP_SENSOR_4_WWAN] = THERMAL_WWAN,
-};
-BUILD_ASSERT(ARRAY_SIZE(thermal_params) == TEMP_SENSOR_COUNT);
diff --git a/board/marasov/usbc_config.c b/board/marasov/usbc_config.c
deleted file mode 100644
index b974ba7509..0000000000
--- a/board/marasov/usbc_config.c
+++ /dev/null
@@ -1,348 +0,0 @@
-/* Copyright 2022 The ChromiumOS Authors
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-#include <stdint.h>
-#include <stdbool.h>
-
-#include "cbi.h"
-#include "charger.h"
-#include "common.h"
-#include "compile_time_macros.h"
-#include "console.h"
-#include "driver/ppc/syv682x_public.h"
-#include "driver/retimer/bb_retimer_public.h"
-#include "driver/tcpm/nct38xx.h"
-#include "driver/tcpm/ps8xxx_public.h"
-#include "driver/tcpm/tcpci.h"
-#include "ec_commands.h"
-#include "fw_config.h"
-#include "gpio.h"
-#include "gpio_signal.h"
-#include "hooks.h"
-#include "ioexpander.h"
-#include "system.h"
-#include "task.h"
-#include "task_id.h"
-#include "timer.h"
-#include "usbc_config.h"
-#include "usbc_ppc.h"
-#include "usb_mux.h"
-#include "usb_pd.h"
-#include "usb_pd_tcpm.h"
-
-#define CPRINTF(format, args...) cprintf(CC_USBPD, format, ##args)
-#define CPRINTS(format, args...) cprints(CC_USBPD, format, ##args)
-
-#ifdef CONFIG_ZEPHYR
-enum ioex_port { IOEX_C0_NCT38XX = 0, IOEX_PORT_COUNT };
-#endif /* CONFIG_ZEPHYR */
-
-#ifndef CONFIG_ZEPHYR
-/* USBC TCPC configuration */
-const struct tcpc_config_t tcpc_config[] = {
- [USBC_PORT_C0] = {
- .bus_type = EC_BUS_TYPE_I2C,
- .i2c_info = {
- .port = I2C_PORT_USB_C0_TCPC,
- .addr_flags = NCT38XX_I2C_ADDR1_1_FLAGS,
- },
- .drv = &nct38xx_tcpm_drv,
- .flags = TCPC_FLAGS_TCPCI_REV2_0 |
- TCPC_FLAGS_NO_DEBUG_ACC_CONTROL,
- },
- [USBC_PORT_C1] = {
- .bus_type = EC_BUS_TYPE_I2C,
- .i2c_info = {
- .port = I2C_PORT_USB_C1_TCPC,
- .addr_flags = PS8XXX_I2C_ADDR1_FLAGS,
- },
- .drv = &ps8xxx_tcpm_drv,
- .flags = TCPC_FLAGS_TCPCI_REV2_0 |
- TCPC_FLAGS_TCPCI_REV2_0_NO_VSAFE0V |
- TCPC_FLAGS_CONTROL_VCONN |
- TCPC_FLAGS_CONTROL_FRS,
- },
-};
-BUILD_ASSERT(ARRAY_SIZE(tcpc_config) == USBC_PORT_COUNT);
-BUILD_ASSERT(CONFIG_USB_PD_PORT_MAX_COUNT == USBC_PORT_COUNT);
-#endif /* !CONFIG_ZEPHYR */
-
-/******************************************************************************/
-/* USB-A charging control */
-
-#ifndef CONFIG_ZEPHYR
-const int usb_port_enable[USB_PORT_COUNT] = {
- GPIO_EN_PP5000_USBA_R,
-};
-#endif
-BUILD_ASSERT(ARRAY_SIZE(usb_port_enable) == USB_PORT_COUNT);
-
-/******************************************************************************/
-
-#ifndef CONFIG_ZEPHYR
-/* USBC PPC configuration */
-struct ppc_config_t ppc_chips[] = {
- [USBC_PORT_C0] = {
- .i2c_port = I2C_PORT_USB_C0_PPC,
- .i2c_addr_flags = SYV682X_ADDR0_FLAGS,
- .frs_en = IOEX_USB_C0_FRS_EN,
- .drv = &syv682x_drv,
- },
- [USBC_PORT_C1] = {
- /* Compatible with Silicon Mitus SM5360A */
- .i2c_port = I2C_PORT_USB_C1_PPC,
- .i2c_addr_flags = SYV682X_ADDR0_FLAGS,
- .drv = &syv682x_drv,
- },
-};
-BUILD_ASSERT(ARRAY_SIZE(ppc_chips) == USBC_PORT_COUNT);
-
-unsigned int ppc_cnt = ARRAY_SIZE(ppc_chips);
-
-/* USBC mux configuration - Alder Lake includes internal mux */
-static const struct usb_mux_chain usbc0_tcss_usb_mux = {
- .mux =
- &(const struct usb_mux){
- .usb_port = USBC_PORT_C0,
- .driver = &virtual_usb_mux_driver,
- .hpd_update = &virtual_hpd_update,
- },
-};
-
-/*
- * USB3 DB mux configuration - the top level mux still needs to be set
- * to the virtual_usb_mux_driver so the AP gets notified of mux changes
- * and updates the TCSS configuration on state changes.
- */
-static const struct usb_mux_chain usbc1_usb3_db_retimer = {
- .mux =
- &(const struct usb_mux){
- .usb_port = USBC_PORT_C1,
- .driver = &tcpci_tcpm_usb_mux_driver,
- .hpd_update = &ps8xxx_tcpc_update_hpd_status,
- },
-};
-
-const struct usb_mux_chain usb_muxes[] = {
- [USBC_PORT_C0] = {
- .mux = &(const struct usb_mux) {
- .usb_port = USBC_PORT_C0,
- .flags = USB_MUX_FLAG_CAN_IDLE,
- .driver = &bb_usb_retimer,
- .hpd_update = bb_retimer_hpd_update,
- .i2c_port = I2C_PORT_USB_C0_MUX,
- .i2c_addr_flags = USBC_PORT_C0_BB_RETIMER_I2C_ADDR,
- },
- .next = &usbc0_tcss_usb_mux,
- },
- [USBC_PORT_C1] = {
- .mux = &(const struct usb_mux) {
- /* PS8815 DB */
- .usb_port = USBC_PORT_C1,
- .driver = &virtual_usb_mux_driver,
- .hpd_update = &virtual_hpd_update,
- },
- .next = &usbc1_usb3_db_retimer,
- },
-};
-BUILD_ASSERT(ARRAY_SIZE(usb_muxes) == USBC_PORT_COUNT);
-
-/*
- * USB C0 uses burnside bridge chips and have their reset
- * controlled by their respective TCPC chips acting as GPIO expanders.
- *
- * ioex_init() is normally called before we take the TCPCs out of
- * reset, so we need to start in disabled mode, then explicitly
- * call ioex_init().
- */
-
-struct ioexpander_config_t ioex_config[] = {
- [IOEX_C0_NCT38XX] = {
- .i2c_host_port = I2C_PORT_USB_C0_TCPC,
- .i2c_addr_flags = NCT38XX_I2C_ADDR1_1_FLAGS,
- .drv = &nct38xx_ioexpander_drv,
- .flags = IOEX_FLAGS_DEFAULT_INIT_DISABLED,
- },
-};
-BUILD_ASSERT(ARRAY_SIZE(ioex_config) == CONFIG_IO_EXPANDER_PORT_COUNT);
-#endif /* !CONFIG_ZEPHYR */
-
-__override int bb_retimer_power_enable(const struct usb_mux *me, bool enable)
-{
- enum ioex_signal rst_signal;
-
- if (me->usb_port == USBC_PORT_C0) {
-/* TODO: explore how to handle board id in zephyr*/
-#ifndef CONFIG_ZEPHYR
- rst_signal = IOEX_USB_C0_RT_RST_ODL;
-#else
- /* On Zephyr use bb_controls generated from DTS */
- rst_signal = bb_controls[me->usb_port].retimer_rst_gpio;
-#endif /* !CONFIG_ZEPHYR */
- } else {
- return EC_ERROR_INVAL;
- }
-
- /*
- * We do not have a load switch for the burnside bridge chips,
- * so we only need to sequence reset.
- */
-
- if (enable) {
- /*
- * Tpw, minimum time from VCC to RESET_N de-assertion is 100us.
- * For boards that don't provide a load switch control, the
- * retimer_init() function ensures power is up before calling
- * this function.
- */
- ioex_set_level(rst_signal, 1);
- /*
- * Allow 1ms time for the retimer to power up lc_domain
- * which powers I2C controller within retimer
- */
- msleep(1);
- } else {
- ioex_set_level(rst_signal, 0);
- msleep(1);
- }
- return EC_SUCCESS;
-}
-
-void board_reset_pd_mcu(void)
-{
- enum gpio_signal tcpc_rst;
-
-#ifndef CONFIG_ZEPHYR
- tcpc_rst = GPIO_USB_C0_TCPC_RST_ODL;
-#else
- tcpc_rst = GPIO_UNIMPLEMENTED;
-#endif /* !CONFIG_ZEPHYR */
-
- /*
- * TODO(b/179648104): figure out correct timing
- */
-
- gpio_set_level(tcpc_rst, 0);
- gpio_set_level(GPIO_USB_C1_RT_RST_R_ODL, 0);
-
- /*
- * delay for power-on to reset-off and min. assertion time
- */
-
- msleep(20);
-
- gpio_set_level(tcpc_rst, 1);
- gpio_set_level(GPIO_USB_C1_RT_RST_R_ODL, 1);
-
- /* wait for chips to come up */
-
- msleep(50);
-}
-
-static void board_tcpc_init(void)
-{
- /* Don't reset TCPCs after initial reset */
- if (!system_jumped_late())
- board_reset_pd_mcu();
-
- /*
- * These IO expander pins are implemented using the
- * C0 TCPC, so they must be set up after the TCPC has
- * been taken out of reset.
- */
-#ifndef CONFIG_ZEPHYR
- ioex_init(IOEX_C0_NCT38XX);
-#else
- gpio_reset_port(DEVICE_DT_GET(DT_NODELABEL(ioex_port1)));
-#endif
-
- /* Enable PPC interrupts. */
- gpio_enable_interrupt(GPIO_USB_C0_PPC_INT_ODL);
-
- /* Enable TCPC interrupts. */
- gpio_enable_interrupt(GPIO_USB_C0_TCPC_INT_ODL);
-
- gpio_enable_interrupt(GPIO_USB_C1_PPC_INT_ODL);
- gpio_enable_interrupt(GPIO_USB_C1_TCPC_INT_ODL);
-}
-DECLARE_HOOK(HOOK_INIT, board_tcpc_init, HOOK_PRIO_INIT_CHIPSET);
-
-uint16_t tcpc_get_alert_status(void)
-{
- uint16_t status = 0;
-
- if (gpio_get_level(GPIO_USB_C0_TCPC_INT_ODL) == 0)
- status |= PD_STATUS_TCPC_ALERT_0;
-
- if (gpio_get_level(GPIO_USB_C1_TCPC_INT_ODL) == 0)
- status |= PD_STATUS_TCPC_ALERT_1;
-
- return status;
-}
-
-int ppc_get_alert_status(int port)
-{
- if (port == USBC_PORT_C0)
- return gpio_get_level(GPIO_USB_C0_PPC_INT_ODL) == 0;
- else if (port == USBC_PORT_C1)
- return gpio_get_level(GPIO_USB_C1_PPC_INT_ODL) == 0;
- return 0;
-}
-
-void tcpc_alert_event(enum gpio_signal signal)
-{
- switch (signal) {
- case GPIO_USB_C0_TCPC_INT_ODL:
- schedule_deferred_pd_interrupt(USBC_PORT_C0);
- break;
- case GPIO_USB_C1_TCPC_INT_ODL:
- schedule_deferred_pd_interrupt(USBC_PORT_C1);
- break;
- default:
- break;
- }
-}
-
-void ppc_interrupt(enum gpio_signal signal)
-{
- switch (signal) {
- case GPIO_USB_C0_PPC_INT_ODL:
- syv682x_interrupt(USBC_PORT_C0);
- break;
- case GPIO_USB_C1_PPC_INT_ODL:
- syv682x_interrupt(USBC_PORT_C1);
- break;
- default:
- break;
- }
-}
-
-void retimer_interrupt(enum gpio_signal signal)
-{
- /*
- * TODO(b/179513527): add USB-C support
- */
-}
-
-__override bool board_is_dts_port(int port)
-{
- return port == USBC_PORT_C0;
-}
-
-__override bool board_is_tbt_usb4_port(int port)
-{
- if (port == USBC_PORT_C0)
- return true;
-
- return false;
-}
-
-__override enum tbt_compat_cable_speed board_get_max_tbt_speed(int port)
-{
- if (!board_is_tbt_usb4_port(port))
- return TBT_SS_RES_0;
-
- return TBT_SS_TBT_GEN3;
-}
diff --git a/board/marasov/usbc_config.h b/board/marasov/usbc_config.h
deleted file mode 100644
index 1fa7ad4c7a..0000000000
--- a/board/marasov/usbc_config.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* Copyright 2022 The ChromiumOS Authors
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-/* Brya board-specific USB-C configuration */
-
-#ifndef __CROS_EC_USBC_CONFIG_H
-#define __CROS_EC_USBC_CONFIG_H
-
-#ifndef CONFIG_ZEPHYR
-#define CONFIG_USB_PD_PORT_MAX_COUNT 2
-#endif
-
-enum usbc_port { USBC_PORT_C0 = 0, USBC_PORT_C1, USBC_PORT_COUNT };
-
-#endif /* __CROS_EC_USBC_CONFIG_H */
diff --git a/board/marasov/vif_override.xml b/board/marasov/vif_override.xml
deleted file mode 100644
index 6ade5d2f92..0000000000
--- a/board/marasov/vif_override.xml
+++ /dev/null
@@ -1,148 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<vif:VIF xmlns="http://usb.org/VendorInfoFile.xsd">
- <vif:Product_Revision>2</vif:Product_Revision>
- <vif:TID>0</vif:TID>
- <vif:Product>
- <vif:USB4_Num_Internal_Host_Controllers value="1" />
- <vif:USB4_Num_PCIe_DN_Bridges value="0" />
- <vif:USB4RouterList>
- <vif:Usb4Router>
- <!--USB4 Router 0-->
- <vif:USB4_Router_ID value="0" />
- <vif:USB4_Silicon_VID value="32903">8087</vif:USB4_Silicon_VID>
- <vif:USB4_Num_Lane_Adapters value="4" />
- <vif:USB4_Num_USB3_DN_Adapters value="1" />
- <vif:USB4_Num_DP_IN_Adapters value="1" />
- <vif:USB4_Num_DP_OUT_Adapters value="0" />
- <vif:USB4_Num_PCIe_DN_Adapters value="4" />
- <vif:USB4_TBT3_Not_Supported value="0">TBT3 Compatible</vif:USB4_TBT3_Not_Supported>
- <vif:USB4_PCIe_Wake_Supported value="true" />
- <vif:USB4_USB3_Wake_Supported value="false" />
- <vif:USB4_Num_Unused_Adapters value="0" />
- <vif:USB4_TBT3_VID value="32903">8087</vif:USB4_TBT3_VID>
- <vif:USB4_PCIe_Switch_Vendor_ID value="32902">8086</vif:USB4_PCIe_Switch_Vendor_ID>
- <vif:USB4_PCIe_Switch_Device_ID value="39451">9A1B</vif:USB4_PCIe_Switch_Device_ID>
- </vif:Usb4Router>
- </vif:USB4RouterList>
- </vif:Product>
-
- <vif:Component>
- <vif:USB4_Max_Speed value="1">Gen 3 (40Gb)</vif:USB4_Max_Speed>
-
- <!--;USB Host-->
-
- <vif:Host_Speed value="4">USB 3.2 Gen 2x2</vif:Host_Speed>
- <vif:Host_Contains_Captive_Retimer value="true" />
- <vif:Host_Truncates_DP_For_tDHPResponse value="false" />
- <vif:Host_Suspend_Supported value="true" />
-
- <!--;PD Source-->
- <!-- will we ever clear USB_Suspend_Supported? -->
- <vif:USB_Suspend_May_Be_Cleared value="true" />
-
- <!-- remove FR_Swap_* when we enable CONFIG_USB_PD_FRS -->
- <!--;Dual Role-->
- <vif:FR_Swap_Supported_As_Initial_Sink value="true" />
- <!--;PD Source-->
- <vif:FR_Swap_Type_C_Current_Capability_As_Initial_Sink value="3">3A @ 5V</vif:FR_Swap_Type_C_Current_Capability_As_Initial_Sink>
- <vif:SrcPdoList>
- <vif:SrcPDO>
- <!--Source PDO 1-->
- <vif:Src_PD_OCP_OC_Debounce value="50">50 msec</vif:Src_PD_OCP_OC_Debounce>
- <vif:Src_PD_OCP_OC_Threshold value="360">3600 mA</vif:Src_PD_OCP_OC_Threshold>
- </vif:SrcPDO>
- </vif:SrcPdoList>
-
- <!-- SOP Discover ID -->
- <vif:Product_Type_UFP_SOP value="2">PDUSB Peripheral</vif:Product_Type_UFP_SOP>
- <vif:Product_Type_DFP_SOP value="2">PDUSB Host</vif:Product_Type_DFP_SOP>
-
- <!-- USB4 Port -->
- <vif:USB4_Lane_0_Adapter value="1" />
- <vif:USB4_UFP_Supported value="false" />
- <vif:USB4_DFP_Supported value="true" />
- <vif:USB4_USB3_Tunneling_Supported value="true" />
- <vif:USB4_DP_Tunneling_Supported value="true" />
- <vif:USB4_CL1_State_Supported value="true" />
- <vif:USB4_CL2_State_Supported value="true" />
- <vif:USB4_Num_Retimers value="1" />
- <vif:USB4_DP_Bit_Rate value="3">HBR3</vif:USB4_DP_Bit_Rate>
- <vif:USB4_Num_DP_Lanes value="4">4 Lanes</vif:USB4_Num_DP_Lanes>
-
- </vif:Component>
-
- <vif:Component>
- <vif:USB4_Supported value="false" />
-
- <!--;USB Host-->
- <vif:Host_Speed value="2">USB 3.2 Gen 2x1</vif:Host_Speed>
- <vif:Host_Contains_Captive_Retimer value="true" />
- <vif:Host_Truncates_DP_For_tDHPResponse value="false" />
- <vif:Host_Suspend_Supported value="true" />
-
- <!--;PD Source-->
- <!-- will we ever clear USB_Suspend_Supported? -->
- <vif:USB_Suspend_May_Be_Cleared value="true" />
-
- <!-- remove FR_Swap_* when we enable CONFIG_USB_PD_FRS -->
- <!--;Dual Role-->
- <vif:FR_Swap_Supported_As_Initial_Sink value="true" />
- <!--;PD Source-->
- <vif:FR_Swap_Type_C_Current_Capability_As_Initial_Sink value="3">3A @ 5V</vif:FR_Swap_Type_C_Current_Capability_As_Initial_Sink>
- <vif:SrcPdoList>
- <vif:SrcPDO>
- <!--Source PDO 1-->
- <vif:Src_PD_OCP_OC_Debounce value="50">50 msec</vif:Src_PD_OCP_OC_Debounce>
- <vif:Src_PD_OCP_OC_Threshold value="360">3600 mA</vif:Src_PD_OCP_OC_Threshold>
- </vif:SrcPDO>
- </vif:SrcPdoList>
-
- <!-- SOP Discover ID -->
- <vif:Product_Type_UFP_SOP value="3">PSD</vif:Product_Type_UFP_SOP>
- <vif:Product_Type_DFP_SOP value="2">PDUSB Host</vif:Product_Type_DFP_SOP>
-
- </vif:Component>
-
- <vif:Component>
- <vif:USB4_Max_Speed value="1">Gen 3 (40Gb)</vif:USB4_Max_Speed>
- <!--;USB Host-->
- <vif:Host_Speed value="4">USB 3.2 Gen 2x2</vif:Host_Speed>
- <vif:Host_Contains_Captive_Retimer value="true" />
- <vif:Host_Truncates_DP_For_tDHPResponse value="false" />
- <vif:Host_Suspend_Supported value="true" />
-
- <!--;PD Source-->
- <!-- will we ever clear USB_Suspend_Supported? -->
- <vif:USB_Suspend_May_Be_Cleared value="true" />
-
- <!-- remove FR_Swap_* when we enable CONFIG_USB_PD_FRS -->
- <!--;Dual Role-->
- <vif:FR_Swap_Supported_As_Initial_Sink value="true" />
- <!--;PD Source-->
- <vif:FR_Swap_Type_C_Current_Capability_As_Initial_Sink value="3">3A @ 5V</vif:FR_Swap_Type_C_Current_Capability_As_Initial_Sink>
- <vif:SrcPdoList>
- <vif:SrcPDO>
- <!--Source PDO 1-->
- <vif:Src_PD_OCP_OC_Debounce value="50">50 msec</vif:Src_PD_OCP_OC_Debounce>
- <vif:Src_PD_OCP_OC_Threshold value="360">3600 mA</vif:Src_PD_OCP_OC_Threshold>
- </vif:SrcPDO>
- </vif:SrcPdoList>
-
- <!-- SOP Discover ID -->
- <vif:Product_Type_UFP_SOP value="2">PDUSB Peripheral</vif:Product_Type_UFP_SOP>
- <vif:Product_Type_DFP_SOP value="2">PDUSB Host</vif:Product_Type_DFP_SOP>
-
- <!-- USB4 Port -->
- <vif:USB4_Lane_0_Adapter value="1" />
- <vif:USB4_UFP_Supported value="false" />
- <vif:USB4_DFP_Supported value="true" />
- <vif:USB4_USB3_Tunneling_Supported value="true" />
- <vif:USB4_DP_Tunneling_Supported value="true" />
- <vif:USB4_CL1_State_Supported value="true" />
- <vif:USB4_CL2_State_Supported value="true" />
- <vif:USB4_Num_Retimers value="1" />
- <vif:USB4_DP_Bit_Rate value="3">HBR3</vif:USB4_DP_Bit_Rate>
- <vif:USB4_Num_DP_Lanes value="4">4 Lanes</vif:USB4_Num_DP_Lanes>
-
- </vif:Component>
-</vif:VIF>
diff --git a/board/marzipan/board.c b/board/marzipan/board.c
index cf59f133e7..125c39a826 100644
--- a/board/marzipan/board.c
+++ b/board/marzipan/board.c
@@ -496,7 +496,6 @@ void board_tcpc_init(void)
/* Enable PPC interrupts */
gpio_enable_interrupt(GPIO_USB_C0_SWCTL_INT_ODL);
- gpio_enable_interrupt(GPIO_USB_C1_SWCTL_INT_ODL);
/* Enable TCPC interrupts */
gpio_enable_interrupt(GPIO_USB_C0_PD_INT_ODL);
@@ -626,8 +625,8 @@ int board_set_active_charge_port(int port)
return EC_SUCCESS;
}
-__override void board_set_charge_limit(int port, int supplier, int charge_ma,
- int max_ma, int charge_mv)
+void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
+ int charge_mv)
{
/*
* Ignore lower charge ceiling on PD transition if our battery is
@@ -639,7 +638,8 @@ __override void board_set_charge_limit(int port, int supplier, int charge_ma,
charge_ma = max_ma;
}
- charge_set_input_current_limit(charge_ma, charge_mv);
+ charge_set_input_current_limit(
+ MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
}
uint16_t tcpc_get_alert_status(void)
diff --git a/board/mchpevb1/board.c b/board/mchpevb1/board.c
index 3b7b34843b..23135108f6 100644
--- a/board/mchpevb1/board.c
+++ b/board/mchpevb1/board.c
@@ -590,6 +590,21 @@ int board_set_active_charge_port(int charge_port)
return EC_SUCCESS;
}
+
+/**
+ * Set the charge limit based upon desired maximum.
+ *
+ * @param port Port number.
+ * @param supplier Charge supplier type.
+ * @param charge_ma Desired charge limit (mA).
+ * @param charge_mv Negotiated charge voltage (mV).
+ */
+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);
+}
#endif
/*
diff --git a/board/mchpevb1/board.h b/board/mchpevb1/board.h
index dd7c87fd6f..10208ca736 100644
--- a/board/mchpevb1/board.h
+++ b/board/mchpevb1/board.h
@@ -150,8 +150,7 @@
/* #define CONFIG_CHARGER_DISCHARGE_ON_AC */
/* #define CONFIG_CHARGER_ISL9237 */
/* #define CONFIG_CHARGER_ILIM_PIN_DISABLED */
-/* #define CONFIG_CHARGER_DEFAULT_CURRENT_LIMIT 512 */
-/* #define CONFIG_CHARGER_MIN_INPUT_CURRENT_LIMIT 512 */
+/* #define CONFIG_CHARGER_INPUT_CURRENT 512 */
/* #define CONFIG_CHARGER_NARROW_VDC */
/* #define CONFIG_CHARGER_PROFILE_OVERRIDE */
diff --git a/board/metaknight/board.c b/board/metaknight/board.c
index e5d86aba63..5aa3a21cc0 100644
--- a/board/metaknight/board.c
+++ b/board/metaknight/board.c
@@ -396,6 +396,19 @@ int board_set_active_charge_port(int port)
return EC_SUCCESS;
}
+void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
+ int charge_mv)
+{
+ int icl = MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT);
+
+ /*
+ * b/147463641: The charger IC seems to overdraw ~4%, therefore we
+ * reduce our target accordingly.
+ */
+ icl = icl * 96 / 100;
+ charge_set_input_current_limit(icl, charge_mv);
+}
+
__override void typec_set_source_current_limit(int port, enum tcpc_rp_value rp)
{
if (port < 0 || port > board_get_usb_pd_port_count())
diff --git a/board/metaknight/board.h b/board/metaknight/board.h
index 79027a3e9c..5bd3c56a83 100644
--- a/board/metaknight/board.h
+++ b/board/metaknight/board.h
@@ -22,11 +22,6 @@
#undef CONFIG_CHARGER_SINGLE_CHIP
#undef CONFIG_USB_PD_TCPC_LPM_EXIT_DEBOUNCE
#define CONFIG_USB_PD_TCPC_LPM_EXIT_DEBOUNCE (100 * MSEC)
-/*
- * b/147463641: The charger IC seems to overdraw ~4%, therefore we
- * reduce our target accordingly.
- */
-#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 4
/*
* GPIO for C1 interrupts, for baseboard use
diff --git a/board/mithrax/board.h b/board/mithrax/board.h
index 0b6ea04bd4..d12375d678 100644
--- a/board/mithrax/board.h
+++ b/board/mithrax/board.h
@@ -176,7 +176,6 @@
#define CONFIG_CHARGE_RAMP_SW
#define CONFIG_CHARGER_SENSE_RESISTOR 10
#define CONFIG_CHARGER_SENSE_RESISTOR_AC 10
-#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 10
/* RGB Keyboard */
#ifdef SECTION_IS_RW
diff --git a/board/mithrax/charger_isl9241.c b/board/mithrax/charger_isl9241.c
index 7a16fcd5cb..a9eafe353e 100644
--- a/board/mithrax/charger_isl9241.c
+++ b/board/mithrax/charger_isl9241.c
@@ -79,3 +79,11 @@ int board_set_active_charge_port(int port)
return EC_SUCCESS;
}
+
+__overridable void board_set_charge_limit(int port, int supplier, int charge_ma,
+ int max_ma, int charge_mv)
+{
+ charge_ma = (charge_ma * 90) / 100;
+ charge_set_input_current_limit(
+ MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
+}
diff --git a/board/moli/board.c b/board/moli/board.c
index a63c93ae50..acc12f9831 100644
--- a/board/moli/board.c
+++ b/board/moli/board.c
@@ -8,13 +8,11 @@
#include "button.h"
#include "charge_manager.h"
#include "charge_state_v2.h"
-#include "chipset.h"
#include "common.h"
#include "compile_time_macros.h"
#include "console.h"
#include "cros_board_info.h"
#include "driver/tcpm/tcpci.h"
-#include "fw_config.h"
#include "gpio.h"
#include "gpio_signal.h"
#include "hooks.h"
@@ -33,32 +31,6 @@ static void power_monitor(void);
DECLARE_DEFERRED(power_monitor);
/******************************************************************************/
-/* Power on by HDMI/ DP monitor */
-struct monitor_config {
- enum gpio_signal gpio;
- uint8_t state;
-};
-
-static struct monitor_config monitors[MONITOR_COUNT] = {
- [HDMI1_MONITOR] = {
- .gpio = GPIO_HDMI1_MONITOR_ON,
- .state = MONITOR_OFF,
- },
-
- [HDMI2_MONITOR] = {
- .gpio = GPIO_HDMI2_MONITOR_ON,
- .state = MONITOR_OFF,
- },
-
- [OPTION_MONITOR] = {
- .gpio = GPIO_OPTION_MONITOR_ON,
- .state = MONITOR_OFF,
- },
-};
-
-/******************************************************************************/
-
-/******************************************************************************/
/* USB-A charging control */
const int usb_port_enable[USB_PORT_COUNT] = {
@@ -144,6 +116,34 @@ static uint8_t usbc_overcurrent;
* only do that if the system is off since it might still brown out.
*/
+/*
+ * Barrel-jack power adapter ratings.
+ */
+static const struct {
+ int voltage;
+ int current;
+} bj_power[] = {
+ { /* 0 - 90W (also default) */
+ .voltage = 19000,
+ .current = 4740 },
+ { /* 1 - 135W */
+ .voltage = 19500,
+ .current = 6920 },
+};
+
+static unsigned int ec_config_get_bj_power(void)
+{
+ uint32_t fw_config;
+ unsigned int bj;
+
+ cbi_get_fw_config(&fw_config);
+ bj = (fw_config & EC_CFG_BJ_POWER_MASK) >> EC_CFG_BJ_POWER_L;
+ /* Out of range value defaults to 0 */
+ if (bj >= ARRAY_SIZE(bj_power))
+ bj = 0;
+ return bj;
+}
+
#define ADP_DEBOUNCE_MS 1000 /* Debounce time for BJ plug/unplug */
/* Debounced connection state of the barrel jack */
static int8_t adp_connected = -1;
@@ -155,9 +155,12 @@ static void adp_connect_deferred(void)
/* Debounce */
if (connected == adp_connected)
return;
- if (connected)
- ec_bj_power(&pi.voltage, &pi.current);
+ if (connected) {
+ unsigned int bj = ec_config_get_bj_power();
+ pi.voltage = bj_power[bj].voltage;
+ pi.current = bj_power[bj].current;
+ }
charge_manager_update_charge(CHARGE_SUPPLIER_DEDICATED,
DEDICATED_CHARGE_PORT, &pi);
adp_connected = connected;
@@ -189,29 +192,12 @@ DECLARE_HOOK(HOOK_INIT, adp_state_init, HOOK_PRIO_INIT_CHARGE_MANAGER + 1);
static void board_init(void)
{
- int i;
-
gpio_enable_interrupt(GPIO_BJ_ADP_PRESENT_ODL);
gpio_enable_interrupt(GPIO_HDMI_CONN_OC_ODL);
gpio_enable_interrupt(GPIO_USB_A1_OC_ODL);
gpio_enable_interrupt(GPIO_USB_A2_OC_ODL);
gpio_enable_interrupt(GPIO_USB_A3_OC_ODL);
gpio_enable_interrupt(GPIO_USB_A4_OC_ODL);
-
- if (ec_cfg_power_on_monitor() == POWER_ON_MONITOR_ENABLE) {
- /*
- * Only enable interrupt when fw_config set it as enable.
- */
- gpio_enable_interrupt(GPIO_HDMI1_MONITOR_ON);
- gpio_enable_interrupt(GPIO_HDMI2_MONITOR_ON);
- gpio_enable_interrupt(GPIO_OPTION_MONITOR_ON);
-
- /*
- * Initialize the monitor state to corresponding gpio state.
- */
- for (i = 0; i < MONITOR_COUNT; i++)
- monitors[i].state = gpio_get_level(monitors[i].gpio);
- }
}
DECLARE_HOOK(HOOK_INIT, board_init, HOOK_PRIO_DEFAULT);
@@ -446,72 +432,3 @@ static void power_monitor(void)
* Start power monitoring after ADCs have been initialised.
*/
DECLARE_HOOK(HOOK_INIT, power_monitor, HOOK_PRIO_INIT_ADC + 1);
-
-/******************************************************************************/
-/*
- * System power on and wake up by monitor power button.
- *
- * After pressing power button of monitor for power on, monitor will send power
- * on signal with 3.3V / 200ms to DT. If DT detect that pulse, there are three
- * DT behavior:
- *
- * - Do nothing in state S0.
- * - Wake up from state S0ix.
- * - Power on from state S5 and G3.
- */
-
-/* Debounce time for HDMI power button press */
-#define MONITOR_DEBOUNCE_MS 100
-
-static void monitor_irq_deferred(void);
-DECLARE_DEFERRED(monitor_irq_deferred);
-
-static void monitor_irq_deferred(void)
-{
- int i;
-
- for (i = 0; i < MONITOR_COUNT; i++) {
- if (monitors[i].state && gpio_get_level(monitors[i].gpio)) {
- /*
- * System power on from state S5 and G3.
- */
- if (chipset_in_state(CHIPSET_STATE_ANY_OFF))
- chipset_power_on();
- /*
- * System wake up from state S0ix.
- */
- else if (chipset_in_state(CHIPSET_STATE_ANY_SUSPEND))
- power_button_simulate_press(200);
- }
- monitors[i].state = MONITOR_OFF;
- }
-}
-
-/* Power on by HDMI/ DP monitor. */
-void monitor_interrupt(enum gpio_signal signal)
-{
- /*
- * Power on by HDMI/ DP monitor only works
- * when system is not in S0.
- */
- if (chipset_in_state(CHIPSET_STATE_ON))
- return;
-
- if (ec_cfg_power_on_monitor() == POWER_ON_MONITOR_ENABLE) {
- switch (signal) {
- case GPIO_HDMI1_MONITOR_ON:
- monitors[HDMI1_MONITOR].state = MONITOR_ON;
- break;
- case GPIO_HDMI2_MONITOR_ON:
- monitors[HDMI2_MONITOR].state = MONITOR_ON;
- break;
- case GPIO_OPTION_MONITOR_ON:
- monitors[OPTION_MONITOR].state = MONITOR_ON;
- break;
- default:
- break;
- }
- hook_call_deferred(&monitor_irq_deferred_data,
- MONITOR_DEBOUNCE_MS * MSEC);
- }
-}
diff --git a/board/moli/board.h b/board/moli/board.h
index 8d0ba97fb2..e7aa7855e7 100644
--- a/board/moli/board.h
+++ b/board/moli/board.h
@@ -181,17 +181,17 @@ enum fan_channel { FAN_CH_0 = 0, FAN_CH_COUNT };
enum mft_channel { MFT_CH_0 = 0, MFT_CH_COUNT };
-enum monitor_port {
- HDMI1_MONITOR,
- HDMI2_MONITOR,
- OPTION_MONITOR,
- MONITOR_COUNT
-};
-
-enum monitor_state { MONITOR_OFF, MONITOR_ON };
+/*
+ * firmware config fields
+ */
+/*
+ * Barrel-jack power (2 bits).
+ */
+#define EC_CFG_BJ_POWER_L 0
+#define EC_CFG_BJ_POWER_H 1
+#define EC_CFG_BJ_POWER_MASK GENMASK(EC_CFG_BJ_POWER_H, EC_CFG_BJ_POWER_L)
extern void adp_connect_interrupt(enum gpio_signal signal);
-extern void monitor_interrupt(enum gpio_signal signal);
#endif /* !__ASSEMBLER__ */
diff --git a/board/moli/build.mk b/board/moli/build.mk
index 4ddfaaf181..4897d446b2 100644
--- a/board/moli/build.mk
+++ b/board/moli/build.mk
@@ -20,4 +20,3 @@ board-y+=pwm.o
board-y+=sensors.o
board-y+=thermal.o
board-y+=usbc_config.o
-board-y+=fw_config.o
diff --git a/board/moli/fw_config.c b/board/moli/fw_config.c
deleted file mode 100644
index 5807ee9111..0000000000
--- a/board/moli/fw_config.c
+++ /dev/null
@@ -1,73 +0,0 @@
-/* Copyright 2022 The ChromiumOS Authors
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-#include "cbi.h"
-#include "common.h"
-#include "compile_time_macros.h"
-#include "console.h"
-#include "cros_board_info.h"
-#include "fw_config.h"
-
-#define CPRINTS(format, args...) cprints(CC_SYSTEM, format, ##args)
-
-static union moli_cbi_fw_config fw_config;
-BUILD_ASSERT(sizeof(fw_config) == sizeof(uint32_t));
-
-/*
- * FW_CONFIG defaults for moli if the CBI.FW_CONFIG data is not
- * initialized.
- */
-static const union moli_cbi_fw_config fw_config_defaults = {
- .bj_power = BJ_90W,
- .po_mon = POWER_ON_MONITOR_ENABLE,
-};
-
-/*
- * Barrel-jack power adapter ratings.
- */
-static const struct {
- int voltage;
- int current;
-} bj_power[] = {
- [BJ_90W] = { /* 0 - 90W (also default) */
- .voltage = 19000,
- .current = 4740 },
- [BJ_135W] = { /* 1 - 135W */
- .voltage = 19500,
- .current = 6920 },
-};
-
-/****************************************************************************
- * Moli FW_CONFIG access
- */
-void board_init_fw_config(void)
-{
- if (cbi_get_fw_config(&fw_config.raw_value)) {
- CPRINTS("CBI: Read FW_CONFIG failed, using board defaults");
- fw_config = fw_config_defaults;
- }
-}
-
-union moli_cbi_fw_config get_fw_config(void)
-{
- return fw_config;
-}
-
-void ec_bj_power(uint32_t *voltage, uint32_t *current)
-{
- unsigned int bj;
-
- bj = fw_config.bj_power;
- /* Out of range value defaults to 0 */
- if (bj >= ARRAY_SIZE(bj_power))
- bj = 0;
- *voltage = bj_power[bj].voltage;
- *current = bj_power[bj].current;
-}
-
-enum ec_cfg_power_on_monitor ec_cfg_power_on_monitor(void)
-{
- return fw_config.po_mon;
-}
diff --git a/board/moli/fw_config.h b/board/moli/fw_config.h
deleted file mode 100644
index ee3dcd274d..0000000000
--- a/board/moli/fw_config.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/* Copyright 2022 The ChromiumOS Authors
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-#ifndef __BOARD_MOLI_FW_CONFIG_H_
-#define __BOARD_MOLI_FW_CONFIG_H_
-
-#include <stdint.h>
-
-/****************************************************************************
- * CBI FW_CONFIG layout for Moli board.
- *
- * Source of truth is the project/brask/moli/config.star configuration file.
- */
-
-enum ec_cfg_bj_power { BJ_90W = 0, BJ_135W = 1 };
-
-enum ec_cfg_power_on_monitor {
- POWER_ON_MONITOR_ENABLE = 0,
- POWER_ON_MONITOR_DISABLE = 1
-};
-
-union moli_cbi_fw_config {
- struct {
- uint32_t bj_power : 2;
- uint32_t mlb_usb_tbt : 2;
- uint32_t storage : 2;
- uint32_t audio : 1;
- enum ec_cfg_power_on_monitor po_mon : 1;
- uint32_t reserved_1 : 24;
- };
- uint32_t raw_value;
-};
-
-/**
- * Read the cached FW_CONFIG. Guaranteed to have valid values.
- *
- * @return the FW_CONFIG for the board.
- */
-union moli_cbi_fw_config get_fw_config(void);
-
-/**
- * Get the barrel-jack power from FW_CONFIG.
- */
-void ec_bj_power(uint32_t *voltage, uint32_t *current);
-
-/**
- * Get enable/disable power on by monitor from FW_CONFIG.
- */
-enum ec_cfg_power_on_monitor ec_cfg_power_on_monitor(void);
-
-#endif /* __BOARD_MOLI_FW_CONFIG_H_ */
diff --git a/board/moli/gpio.inc b/board/moli/gpio.inc
index e8473f8c95..fb3b508573 100644
--- a/board/moli/gpio.inc
+++ b/board/moli/gpio.inc
@@ -25,9 +25,6 @@ GPIO_INT(EC_RECOVERY_BTN_ODL, PIN(2, 3), GPIO_INT_BOTH, button_interrupt)
GPIO_INT(USB_C1_RT_INT_ODL, PIN(4, 1), GPIO_INT_FALLING, retimer_interrupt)
GPIO_INT(USB_C1_BC12_INT_ODL, PIN(8, 3), GPIO_INT_FALLING, bc12_interrupt)
GPIO_INT(USB_C1_PPC_INT_ODL, PIN(7, 0), GPIO_INT_FALLING, ppc_interrupt)
-GPIO_INT(HDMI1_MONITOR_ON, PIN(B, 4), GPIO_INT_RISING, monitor_interrupt)
-GPIO_INT(HDMI2_MONITOR_ON, PIN(B, 5), GPIO_INT_RISING, monitor_interrupt)
-GPIO_INT(OPTION_MONITOR_ON, PIN(1, 0), GPIO_INT_RISING, monitor_interrupt)
/* CCD */
GPIO(CCD_MODE_ODL, PIN(E, 5), GPIO_INPUT)
@@ -123,9 +120,12 @@ GPIO(LED_ORANGE_CONTROL, PIN(3, 1), GPIO_ODR_LOW)
GPIO(LED_BLUE_CONTROL, PIN(2, 5), GPIO_ODR_LOW)
/* Option Board */
-GPIO(HDMI1_MONON_SIO, PIN(1, 6), GPIO_INPUT)
-GPIO(HDMI2_MONON_SIO, PIN(1, 5), GPIO_INPUT)
-GPIO(OPTION_MONON_SIO, PIN(2, 1), GPIO_INPUT)
+GPIO(HDMI1_MONITOR_ON, PIN(B, 4), GPIO_INPUT)
+GPIO(HDMI1_MONON_SIO, PIN(1, 6), GPIO_ODR_LOW)
+GPIO(OPTION_MONITOR_ON, PIN(1, 0), GPIO_INPUT)
+GPIO(OPTION_MONON_SIO, PIN(2, 1), GPIO_ODR_LOW)
+GPIO(HDMI2_MONITOR_ON, PIN(B, 5), GPIO_INPUT)
+GPIO(HDMI2_MONON_SIO, PIN(1, 5), GPIO_ODR_LOW)
IOEX(USB_C0_OC_ODL, EXPIN(IOEX_C0_NCT38XX, 0, 4), GPIO_ODR_HIGH)
IOEX(USB_C0_FRS_EN, EXPIN(IOEX_C0_NCT38XX, 0, 6), GPIO_LOW)
diff --git a/board/moli/led.c b/board/moli/led.c
index edb429e530..f2ab214418 100644
--- a/board/moli/led.c
+++ b/board/moli/led.c
@@ -270,8 +270,8 @@ int led_set_brightness(enum ec_led_id id, const uint8_t *brightness)
return set_color(id, LED_OFF, 0);
}
-__override void board_set_charge_limit(int port, int supplier, int charge_ma,
- int max_ma, int charge_mv)
+void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
+ int charge_mv)
{
/* Blink alert if insufficient power per system_can_boot_ap(). */
int insufficient_power =
diff --git a/board/mrbland/board.c b/board/mrbland/board.c
index 52b1c50a1b..50ba008512 100644
--- a/board/mrbland/board.c
+++ b/board/mrbland/board.c
@@ -585,8 +585,8 @@ int board_set_active_charge_port(int port)
return EC_SUCCESS;
}
-__override void board_set_charge_limit(int port, int supplier, int charge_ma,
- int max_ma, int charge_mv)
+void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
+ int charge_mv)
{
/*
* Ignore lower charge ceiling on PD transition if our battery is
@@ -598,7 +598,9 @@ __override void board_set_charge_limit(int port, int supplier, int charge_ma,
charge_ma = max_ma;
}
- charge_set_input_current_limit(charge_ma, charge_mv);
+ charge_ma = charge_ma * 95 / 100;
+ charge_set_input_current_limit(
+ MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
}
uint16_t tcpc_get_alert_status(void)
diff --git a/board/mrbland/board.h b/board/mrbland/board.h
index cc6207ca83..0f78db50d9 100644
--- a/board/mrbland/board.h
+++ b/board/mrbland/board.h
@@ -24,8 +24,6 @@
#define CONFIG_BATTERY_FUEL_GAUGE
#define CONFIG_BATTERY_VENDOR_PARAM
-#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 5
-
/* Enable PD3.0 */
#define CONFIG_USB_PD_REV30
diff --git a/board/munna/board.c b/board/munna/board.c
index 6d7b35da1c..f6996b8460 100644
--- a/board/munna/board.c
+++ b/board/munna/board.c
@@ -236,6 +236,14 @@ int board_set_active_charge_port(int charge_port)
return EC_SUCCESS;
}
+void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
+ int charge_mv)
+{
+ charge_ma = (charge_ma * 95) / 100;
+ charge_set_input_current_limit(
+ MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
+}
+
int board_discharge_on_ac(int enable)
{
int ret, port;
diff --git a/board/munna/board.h b/board/munna/board.h
index 20194bed88..5dc35c68df 100644
--- a/board/munna/board.h
+++ b/board/munna/board.h
@@ -40,7 +40,6 @@
#define CONFIG_BATTERY_HW_PRESENT_CUSTOM
#define CONFIG_CHARGER_PSYS
-#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 5
#define CONFIG_CHARGER_RUNTIME_CONFIG
diff --git a/board/nami/board.c b/board/nami/board.c
index 2ab66ab951..02fb27a283 100644
--- a/board/nami/board.c
+++ b/board/nami/board.c
@@ -747,8 +747,8 @@ int board_set_active_charge_port(int charge_port)
return EC_SUCCESS;
}
-__override void board_set_charge_limit(int port, int supplier, int charge_ma,
- int max_ma, int charge_mv)
+void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
+ int charge_mv)
{
/*
* Limit the input current to 96% negotiated limit,
@@ -760,7 +760,8 @@ __override void board_set_charge_limit(int port, int supplier, int charge_ma,
(model == MODEL_EKKO || model == MODEL_BARD))
factor = 95;
charge_ma = charge_ma * factor / 100;
- charge_set_input_current_limit(charge_ma, charge_mv);
+ charge_set_input_current_limit(
+ MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
}
void board_hibernate(void)
diff --git a/board/nami/board.h b/board/nami/board.h
index 652db4826d..51cde41acb 100644
--- a/board/nami/board.h
+++ b/board/nami/board.h
@@ -96,8 +96,7 @@
#define CONFIG_CHARGER
#define CONFIG_CHARGER_ISL9238
#define CONFIG_CHARGER_DISCHARGE_ON_AC
-#define CONFIG_CHARGER_DEFAULT_CURRENT_LIMIT 512
-#define CONFIG_CHARGER_MIN_INPUT_CURRENT_LIMIT 512
+#define CONFIG_CHARGER_INPUT_CURRENT 512
#define CONFIG_CHARGER_MIN_POWER_MW_FOR_POWER_ON 27000
#define CONFIG_CHARGER_MIN_POWER_MW_FOR_POWER_ON_WITH_BATT 15000
/* AP's thresholds. */
diff --git a/board/nautilus/board.c b/board/nautilus/board.c
index af7d7f48d4..3cdd7abaf1 100644
--- a/board/nautilus/board.c
+++ b/board/nautilus/board.c
@@ -528,6 +528,26 @@ int board_set_active_charge_port(int charge_port)
}
/**
+ * Set the charge limit based upon desired maximum.
+ *
+ * @param port Port number.
+ * @param supplier Charge supplier type.
+ * @param charge_ma Desired charge limit (mA).
+ * @param charge_mv Negotiated charge voltage (mV).
+ */
+void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
+ int charge_mv)
+{
+ /*
+ * Limit the input current to 96% negotiated limit,
+ * to account for the charger chip margin.
+ */
+ charge_ma = charge_ma * 96 / 100;
+ charge_set_input_current_limit(
+ MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
+}
+
+/**
* Return the maximum allowed input current
*/
int board_get_ramp_current_limit(int supplier, int sup_curr)
diff --git a/board/nautilus/board.h b/board/nautilus/board.h
index 2b4f25538d..cbca28a71f 100644
--- a/board/nautilus/board.h
+++ b/board/nautilus/board.h
@@ -79,13 +79,11 @@
#define CONFIG_CHARGER
#define CONFIG_CHARGER_ISL9238
#define CONFIG_CHARGER_DISCHARGE_ON_AC
-#define CONFIG_CHARGER_DEFAULT_CURRENT_LIMIT 512
-#define CONFIG_CHARGER_MIN_INPUT_CURRENT_LIMIT 512
+#define CONFIG_CHARGER_INPUT_CURRENT 512
#define CONFIG_CHARGER_PROFILE_OVERRIDE
#define CONFIG_CHARGER_PSYS
#define CONFIG_CHARGER_SENSE_RESISTOR 10
#define CONFIG_CHARGER_SENSE_RESISTOR_AC 20
-#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 4 /* margining */
#define CONFIG_CMD_CHARGER_ADC_AMON_BMON
#define CONFIG_HOSTCMD_PD_CONTROL
#define CONFIG_EXTPOWER_GPIO
diff --git a/board/nocturne/board.c b/board/nocturne/board.c
index 1c0b2b3397..d32f036844 100644
--- a/board/nocturne/board.c
+++ b/board/nocturne/board.c
@@ -760,6 +760,19 @@ int board_set_active_charge_port(int port)
return EC_SUCCESS;
}
+void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
+ int charge_mv)
+{
+ int icl = MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT);
+
+ /*
+ * Nocturne seems to overdraw its set input current limit by about 5%.
+ * Request at most 95% of what's desired.
+ */
+ icl = icl * 95 / 100;
+ charge_set_input_current_limit(icl, charge_mv);
+}
+
static void board_chipset_reset(void)
{
board_report_pmic_fault("CHIPSET RESET");
diff --git a/board/nocturne/board.h b/board/nocturne/board.h
index 73700b8480..279016ec98 100644
--- a/board/nocturne/board.h
+++ b/board/nocturne/board.h
@@ -8,8 +8,6 @@
#ifndef __CROS_EC_BOARD_H
#define __CROS_EC_BOARD_H
-#define CONFIG_LTO
-
/*
* By default, enable all console messages excepted HC, ACPI and event:
* The sensor stack is generating a lot of activity.
@@ -33,7 +31,6 @@
#define CONFIG_ADC
#define CONFIG_BACKLIGHT_LID
#define CONFIG_HOST_INTERFACE_ESPI
-#define CONFIG_FPU
#define CONFIG_I2C
#define CONFIG_I2C_BUS_MAY_BE_UNPOWERED
#define CONFIG_I2C_CONTROLLER
@@ -70,14 +67,8 @@
#define CONFIG_CHARGE_MANAGER
#define CONFIG_CHARGER
#define CONFIG_CHARGER_DISCHARGE_ON_AC
-#define CONFIG_CHARGER_DEFAULT_CURRENT_LIMIT 128
-#define CONFIG_CHARGER_MIN_INPUT_CURRENT_LIMIT 128
+#define CONFIG_CHARGER_INPUT_CURRENT 128
#define CONFIG_CHARGER_ISL9238
-/*
- * Nocturne seems to overdraw its set input current limit by about 5%.
- * Request at most 95% of what's desired.
- */
-#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 5
#undef CONFIG_CHARGER_MIN_BAT_PCT_FOR_POWER_ON
#define CONFIG_CHARGER_MIN_BAT_PCT_FOR_POWER_ON 1
#define CONFIG_CHARGER_PROFILE_OVERRIDE
diff --git a/board/nocturne_fp/board.h b/board/nocturne_fp/board.h
index d95df6101a..e7d34445b0 100644
--- a/board/nocturne_fp/board.h
+++ b/board/nocturne_fp/board.h
@@ -110,6 +110,7 @@
#define CONFIG_SHA256
#define CONFIG_SHA256_UNROLLED
#define CONFIG_SPI
+#define CONFIG_STM_HWTIMER32
#undef CONFIG_TASK_PROFILING
#define CONFIG_WATCHDOG_HELP
#define CONFIG_WP_ACTIVE_HIGH
diff --git a/board/nocturne_fp/build.mk b/board/nocturne_fp/build.mk
index 2bc59c1f13..65ffd6c096 100644
--- a/board/nocturne_fp/build.mk
+++ b/board/nocturne_fp/build.mk
@@ -29,7 +29,6 @@ test-list-y=\
abort \
aes \
always_memset \
- benchmark \
cec \
compile_time_macros \
cortexm_fpu \
@@ -40,8 +39,6 @@ test-list-y=\
flash_write_protect \
fpsensor \
fpsensor_hw \
- ftrapv \
- libc_printf \
mpu \
mutex \
panic \
@@ -49,7 +46,6 @@ test-list-y=\
pingpong \
printf \
queue \
- rng_benchmark \
rollback \
rollback_entropy \
rsa3 \
diff --git a/board/nucleo-dartmonkey/build.mk b/board/nucleo-dartmonkey/build.mk
index b544490fc9..2e3e1f31d2 100644
--- a/board/nucleo-dartmonkey/build.mk
+++ b/board/nucleo-dartmonkey/build.mk
@@ -22,13 +22,11 @@ test-list-y=\
flash_write_protect \
fpsensor \
fpsensor_hw \
- libc_printf \
mpu \
mutex \
pingpong \
printf \
queue \
- rng_benchmark \
rollback \
rollback_entropy \
rsa3 \
diff --git a/board/nucleo-f072rb/board.h b/board/nucleo-f072rb/board.h
index bd957d35db..d807209564 100644
--- a/board/nucleo-f072rb/board.h
+++ b/board/nucleo-f072rb/board.h
@@ -16,6 +16,7 @@
#define CONFIG_UART_CONSOLE 2
/* Optional features */
+#define CONFIG_STM_HWTIMER32
#ifdef CTS_MODULE
#undef STM32_IRQ_EXT2_3_PRIORITY
diff --git a/board/nucleo-f411re/board.h b/board/nucleo-f411re/board.h
index 3b7d5f1bf1..d4e299dcff 100644
--- a/board/nucleo-f411re/board.h
+++ b/board/nucleo-f411re/board.h
@@ -19,6 +19,7 @@
/* Optional features */
#undef CONFIG_LID_SWITCH
#undef CONFIG_HIBERNATE
+#define CONFIG_STM_HWTIMER32
#define CONFIG_WATCHDOG_HELP
#define CONFIG_TASK_PROFILING
diff --git a/board/nucleo-f412zg/build.mk b/board/nucleo-f412zg/build.mk
index d923a7a40f..21a2955bc4 100644
--- a/board/nucleo-f412zg/build.mk
+++ b/board/nucleo-f412zg/build.mk
@@ -19,13 +19,11 @@ test-list-y=\
exception \
flash_physical \
flash_write_protect \
- libc_printf \
mpu \
mutex \
pingpong \
printf \
queue \
- rng_benchmark \
rollback \
rollback_entropy \
rsa3 \
diff --git a/board/nucleo-g431rb/board.h b/board/nucleo-g431rb/board.h
index e2df8d2547..905b4ea110 100644
--- a/board/nucleo-g431rb/board.h
+++ b/board/nucleo-g431rb/board.h
@@ -12,6 +12,7 @@
#define CONFIG_SYSTEM_UNLOCKED /* Allow dangerous commands while in dev. */
#define CPU_CLOCK 48000000
+#define CONFIG_STM_HWTIMER32
#define TIM_CLOCK32 2
#define TIM_CLOCK_MSB 3
#define TIM_CLOCK_LSB 15
diff --git a/board/nucleo-h743zi/build.mk b/board/nucleo-h743zi/build.mk
index ad04a68918..6153d85d8a 100644
--- a/board/nucleo-h743zi/build.mk
+++ b/board/nucleo-h743zi/build.mk
@@ -19,13 +19,11 @@ test-list-y=\
exception \
flash_physical \
flash_write_protect \
- libc_printf \
mpu \
mutex \
pingpong \
printf \
queue \
- rng_benchmark \
rollback \
rollback_entropy \
rsa3 \
diff --git a/board/oak/board.c b/board/oak/board.c
index 17908caa7a..468b6e6677 100644
--- a/board/oak/board.c
+++ b/board/oak/board.c
@@ -357,10 +357,11 @@ int board_set_active_charge_port(int charge_port)
* @param charge_ma Desired charge limit (mA).
* @param charge_mv Negotiated charge voltage (mV).
*/
-__override void board_set_charge_limit(int port, int supplier, int charge_ma,
- int max_ma, int charge_mv)
+void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
+ int charge_mv)
{
- charge_set_input_current_limit(charge_ma, charge_mv);
+ charge_set_input_current_limit(
+ MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
pd_send_host_event(PD_EVENT_POWER_CHANGE);
}
diff --git a/board/oak/board.h b/board/oak/board.h
index c429a655c5..6f5ed3fc87 100644
--- a/board/oak/board.h
+++ b/board/oak/board.h
@@ -14,7 +14,6 @@
/* Free up some flash space */
#define CONFIG_DEBUG_ASSERT_BRIEF
#define CONFIG_USB_PD_DEBUG_LEVEL 0
-#undef CONFIG_CONSOLE_CMDHELP
#define CONFIG_LTO
@@ -40,8 +39,7 @@
#define CONFIG_CHARGE_MANAGER
#define CONFIG_CHARGER
-#define CONFIG_CHARGER_DEFAULT_CURRENT_LIMIT 512
-#define CONFIG_CHARGER_MIN_INPUT_CURRENT_LIMIT 512
+#define CONFIG_CHARGER_INPUT_CURRENT 512
#if BOARD_REV == OAK_REV1
#define CONFIG_CHARGER_BQ24773
@@ -107,6 +105,7 @@
#define CONFIG_USB_PD_VBUS_DETECT_TCPC
#define CONFIG_SPI
#define CONFIG_SPI_CONTROLLER
+#define CONFIG_STM_HWTIMER32
#define CONFIG_VBOOT_HASH
#undef CONFIG_WATCHDOG_HELP
#define CONFIG_SWITCH
diff --git a/board/osiris/charger.c b/board/osiris/charger.c
index 7a16fcd5cb..88f5b85a41 100644
--- a/board/osiris/charger.c
+++ b/board/osiris/charger.c
@@ -79,3 +79,10 @@ int board_set_active_charge_port(int port)
return EC_SUCCESS;
}
+
+__overridable 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);
+}
diff --git a/board/pazquel/board.c b/board/pazquel/board.c
index 1efad2255f..6ed03e90ad 100644
--- a/board/pazquel/board.c
+++ b/board/pazquel/board.c
@@ -305,7 +305,6 @@ void board_tcpc_init(void)
/* Enable PPC interrupts */
gpio_enable_interrupt(GPIO_USB_C0_SWCTL_INT_ODL);
- gpio_enable_interrupt(GPIO_USB_C1_SWCTL_INT_ODL);
/* Enable TCPC interrupts */
gpio_enable_interrupt(GPIO_USB_C0_PD_INT_ODL);
@@ -534,8 +533,8 @@ int board_set_active_charge_port(int port)
return EC_SUCCESS;
}
-__override void board_set_charge_limit(int port, int supplier, int charge_ma,
- int max_ma, int charge_mv)
+void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
+ int charge_mv)
{
/*
* Ignore lower charge ceiling on PD transition if our battery is
@@ -547,7 +546,8 @@ __override void board_set_charge_limit(int port, int supplier, int charge_ma,
charge_ma = max_ma;
}
- charge_set_input_current_limit(charge_ma, charge_mv);
+ charge_set_input_current_limit(
+ MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
}
uint16_t tcpc_get_alert_status(void)
diff --git a/board/pdeval-stm32f072/board.h b/board/pdeval-stm32f072/board.h
index 6ba7923b8e..4cb55573f4 100644
--- a/board/pdeval-stm32f072/board.h
+++ b/board/pdeval-stm32f072/board.h
@@ -21,6 +21,7 @@
#define CONFIG_HW_CRC
#define CONFIG_I2C
#define CONFIG_I2C_CONTROLLER
+#define CONFIG_STM_HWTIMER32
/* USB Power Delivery configuration */
#define CONFIG_USB_POWER_DELIVERY
#define CONFIG_USB_PD_TCPMV1
diff --git a/board/pico/board.c b/board/pico/board.c
index 801c344a69..f884545b6d 100644
--- a/board/pico/board.c
+++ b/board/pico/board.c
@@ -320,6 +320,14 @@ int board_set_active_charge_port(int charge_port)
return EC_SUCCESS;
}
+void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
+ int charge_mv)
+{
+ charge_ma = (charge_ma * 95) / 100;
+ charge_set_input_current_limit(
+ MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
+}
+
int board_discharge_on_ac(int enable)
{
int ret, port;
diff --git a/board/pico/board.h b/board/pico/board.h
index 97128b54f1..665cf59691 100644
--- a/board/pico/board.h
+++ b/board/pico/board.h
@@ -28,7 +28,6 @@
#define CONFIG_BATTERY_HW_PRESENT_CUSTOM
#define CONFIG_CHARGER_PSYS
-#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 5
#define CONFIG_CHARGER_RUNTIME_CONFIG
diff --git a/board/pirika/board.c b/board/pirika/board.c
index ae1c74bdfc..8913ec0f07 100644
--- a/board/pirika/board.c
+++ b/board/pirika/board.c
@@ -491,6 +491,18 @@ uint16_t tcpc_get_alert_status(void)
return status;
}
+void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
+ int charge_mv)
+{
+ int icl = MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT);
+
+ /*
+ * TODO(b/151955431): Characterize the input current limit in case a
+ * scaling needs to be applied here
+ */
+ charge_set_input_current_limit(icl, charge_mv);
+}
+
int board_is_sourcing_vbus(int port)
{
int regval;
@@ -578,7 +590,7 @@ __override void ocpc_get_pid_constants(int *kp, int *kp_div, int *ki,
__override void typec_set_source_current_limit(int port, enum tcpc_rp_value rp)
{
- if (!board_is_usb_pd_port_present(port))
+ if (port < 0 || port > board_get_usb_pd_port_count())
return;
raa489000_set_output_current(port, rp);
diff --git a/board/plankton/board.h b/board/plankton/board.h
index a17bd30c3c..224364269b 100644
--- a/board/plankton/board.h
+++ b/board/plankton/board.h
@@ -16,6 +16,7 @@
#define CONFIG_UART_CONSOLE 2
/* Optional features */
+#define CONFIG_STM_HWTIMER32
#define CONFIG_USB_POWER_DELIVERY
#define CONFIG_USB_PD_TCPMV1
#define CONFIG_USB_PD_ALT_MODE
diff --git a/board/polyberry/board.h b/board/polyberry/board.h
index 1390bb996c..41069f2722 100644
--- a/board/polyberry/board.h
+++ b/board/polyberry/board.h
@@ -60,6 +60,7 @@
#undef CONFIG_WATCHDOG
/* Optional features */
+#define CONFIG_STM_HWTIMER32
/*
* Allow dangerous commands all the time, since we don't have a write protect
diff --git a/board/pompom/board.c b/board/pompom/board.c
index ccaff4f55f..394f06be8e 100644
--- a/board/pompom/board.c
+++ b/board/pompom/board.c
@@ -269,6 +269,8 @@ DECLARE_HOOK(HOOK_INIT, board_init, HOOK_PRIO_DEFAULT);
void board_hibernate(void)
{
+ int i;
+
/*
* Sensors are unpowered in hibernate. Apply PD to the
* interrupt lines such that they don't float.
@@ -288,7 +290,8 @@ void board_hibernate(void)
* otherwise, ACOK won't go High and can't wake EC up. Check the
* bug b/170324206 for details.
*/
- ppc_vbus_sink_enable(USB_PD_PORT_C0, 1);
+ for (i = 0; i < CONFIG_USB_PD_PORT_MAX_COUNT; i++)
+ ppc_vbus_sink_enable(i, 1);
}
__override uint16_t board_get_ps8xxx_product_id(int port)
@@ -320,9 +323,9 @@ void board_tcpc_init(void)
* Initialize HPD to low; after sysjump SOC needs to see
* HPD pulse to enable video path
*/
- usb_mux_hpd_update(USB_PD_PORT_C0,
- USB_PD_MUX_HPD_LVL_DEASSERTED |
- USB_PD_MUX_HPD_IRQ_DEASSERTED);
+ for (int port = 0; port < CONFIG_USB_PD_PORT_MAX_COUNT; ++port)
+ usb_mux_hpd_update(port, USB_PD_MUX_HPD_LVL_DEASSERTED |
+ USB_PD_MUX_HPD_IRQ_DEASSERTED);
}
DECLARE_HOOK(HOOK_INIT, board_tcpc_init, HOOK_PRIO_INIT_I2C + 1);
@@ -402,20 +405,24 @@ void board_overcurrent_event(int port, int is_overcurrented)
int board_set_active_charge_port(int port)
{
- int is_real_port = (port == USB_PD_PORT_C0);
+ int is_real_port = (port >= 0 && port < CONFIG_USB_PD_PORT_MAX_COUNT);
+ int i;
if (!is_real_port && port != CHARGE_PORT_NONE)
return EC_ERROR_INVAL;
if (port == CHARGE_PORT_NONE) {
CPRINTS("Disabling all charging port");
- /*
- * Do not return early if one fails otherwise we can
- * get into a boot loop assertion failure.
- */
- if (board_vbus_sink_enable(USB_PD_PORT_C0, 0))
- CPRINTS("Disabling p%d sink path failed.",
- USB_PD_PORT_C0);
+
+ /* Disable all ports. */
+ for (i = 0; i < CONFIG_USB_PD_PORT_MAX_COUNT; i++) {
+ /*
+ * Do not return early if one fails otherwise we can
+ * get into a boot loop assertion failure.
+ */
+ if (board_vbus_sink_enable(i, 0))
+ CPRINTS("Disabling p%d sink path failed.", i);
+ }
return EC_SUCCESS;
}
@@ -428,6 +435,18 @@ int board_set_active_charge_port(int port)
CPRINTS("New charge port: p%d", port);
+ /*
+ * Turn off the other ports' sink path FETs, before enabling the
+ * requested charge port.
+ */
+ for (i = 0; i < CONFIG_USB_PD_PORT_MAX_COUNT; i++) {
+ if (i == port)
+ continue;
+
+ if (board_vbus_sink_enable(i, 0))
+ CPRINTS("p%d: sink path disable failed.", i);
+ }
+
/* Enable requested charge port. */
if (board_vbus_sink_enable(port, 1)) {
CPRINTS("p%d: sink path enable failed.", port);
@@ -437,8 +456,8 @@ int board_set_active_charge_port(int port)
return EC_SUCCESS;
}
-__override void board_set_charge_limit(int port, int supplier, int charge_ma,
- int max_ma, int charge_mv)
+void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
+ int charge_mv)
{
/*
* Ignore lower charge ceiling on PD transition if our battery is
@@ -450,7 +469,9 @@ __override void board_set_charge_limit(int port, int supplier, int charge_ma,
charge_ma = max_ma;
}
- charge_set_input_current_limit(charge_ma, charge_mv);
+ charge_ma = charge_ma * 95 / 100;
+ charge_set_input_current_limit(
+ MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
}
uint16_t tcpc_get_alert_status(void)
diff --git a/board/pompom/board.h b/board/pompom/board.h
index 774b339273..40e7185c16 100644
--- a/board/pompom/board.h
+++ b/board/pompom/board.h
@@ -23,8 +23,6 @@
/* BC 1.2 Charger */
#define CONFIG_BC12_DETECT_PI3USB9201
-#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 5
-
/* USB */
#define CONFIG_USB_PD_TCPM_MULTI_PS8XXX
#define CONFIG_USB_PD_TCPM_PS8751
@@ -32,7 +30,6 @@
#define CONFIG_USB_PD_TCPM_PS8805
#define CONFIG_USBC_PPC_SN5S330
#define CONFIG_USB_PD_PORT_MAX_COUNT 1
-#define USB_PD_PORT_C0 0
/* USB-A */
#define USB_PORT_COUNT 1
diff --git a/board/poppy/board.c b/board/poppy/board.c
index ab3f3b40b0..38183c0da0 100644
--- a/board/poppy/board.c
+++ b/board/poppy/board.c
@@ -58,6 +58,9 @@
#define USB_PD_PORT_ANX74XX 0
+/* Minimum input current limit. */
+#define ILIM_MIN_MA 472
+
static void tcpc_alert_event(enum gpio_signal signal)
{
if ((signal == GPIO_USB_C0_PD_INT_ODL) &&
@@ -676,8 +679,8 @@ int board_set_active_charge_port(int charge_port)
* @param charge_ma Desired charge limit (mA).
* @param charge_mv Negotiated charge voltage (mV).
*/
-__override void board_set_charge_limit(int port, int supplier, int charge_ma,
- int max_ma, int charge_mv)
+void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
+ int charge_mv)
{
/* Adjust ILIM according to measurements to eliminate overshoot. */
charge_ma = (charge_ma - 500) * 31 / 32 + 472;
@@ -685,7 +688,7 @@ __override void board_set_charge_limit(int port, int supplier, int charge_ma,
if (charge_mv > 5000)
charge_ma -= 52;
- charge_set_input_current_limit(charge_ma, charge_mv);
+ charge_set_input_current_limit(MAX(charge_ma, ILIM_MIN_MA), charge_mv);
}
void board_hibernate(void)
diff --git a/board/poppy/board.h b/board/poppy/board.h
index 5242c1d3a8..b55dc1d818 100644
--- a/board/poppy/board.h
+++ b/board/poppy/board.h
@@ -89,8 +89,7 @@
#define CONFIG_CHARGER
#define CONFIG_CHARGER_ISL9238
#define CONFIG_CHARGER_DISCHARGE_ON_AC
-#define CONFIG_CHARGER_DEFAULT_CURRENT_LIMIT 512
-#define CONFIG_CHARGER_MIN_INPUT_CURRENT_LIMIT 472
+#define CONFIG_CHARGER_INPUT_CURRENT 512
#define CONFIG_CHARGER_PSYS
#define CONFIG_CHARGER_SENSE_RESISTOR 10
#define CONFIG_CHARGER_SENSE_RESISTOR_AC 20
diff --git a/board/primus/board.c b/board/primus/board.c
index 3f438cee00..8b5f1a86fc 100644
--- a/board/primus/board.c
+++ b/board/primus/board.c
@@ -137,7 +137,8 @@ __override void board_set_charge_limit(int port, int supplier, int charge_ma,
else
charge_ma = charge_ma * 93 / 100;
- charge_set_input_current_limit(charge_ma, charge_mv);
+ charge_set_input_current_limit(
+ MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
}
static void configure_input_current_limit(void)
@@ -158,7 +159,9 @@ static void configure_input_current_limit(void)
else
adapter_current_ma = adapter_current_ma * 97 / 100;
- charge_set_input_current_limit(adapter_current_ma, adapter_current_mv);
+ charge_set_input_current_limit(MAX(adapter_current_ma,
+ CONFIG_CHARGER_INPUT_CURRENT),
+ adapter_current_mv);
}
DECLARE_HOOK(HOOK_CHIPSET_STARTUP, configure_input_current_limit,
HOOK_PRIO_DEFAULT);
diff --git a/board/primus/charger.c b/board/primus/charger.c
index 7fabd2082e..a4fa209246 100644
--- a/board/primus/charger.c
+++ b/board/primus/charger.c
@@ -81,3 +81,10 @@ int board_set_active_charge_port(int port)
return EC_SUCCESS;
}
+
+__overridable 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);
+}
diff --git a/board/prism/board.h b/board/prism/board.h
index 42768de2e7..5c3cabce53 100644
--- a/board/prism/board.h
+++ b/board/prism/board.h
@@ -111,6 +111,7 @@
#define CONFIG_LTO
#define CONFIG_FORCE_CONSOLE_RESUME
#define CONFIG_MATH_UTIL
+#define CONFIG_STM_HWTIMER32
/* USB Configuration */
#define CONFIG_USB
diff --git a/board/puff/board.c b/board/puff/board.c
index 5475773aa0..d863b5fc0b 100644
--- a/board/puff/board.c
+++ b/board/puff/board.c
@@ -88,8 +88,8 @@ uint16_t tcpc_get_alert_status(void)
}
/* Called when the charge manager has switched to a new port. */
-__override void board_set_charge_limit(int port, int supplier, int charge_ma,
- int max_ma, int charge_mv)
+void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
+ int charge_mv)
{
/* Blink alert if insufficient power per system_can_boot_ap(). */
int insufficient_power =
diff --git a/board/quackingstick/board.c b/board/quackingstick/board.c
index 7002a62e03..6cdf814c74 100644
--- a/board/quackingstick/board.c
+++ b/board/quackingstick/board.c
@@ -612,8 +612,8 @@ int board_set_active_charge_port(int port)
return EC_SUCCESS;
}
-__override void board_set_charge_limit(int port, int supplier, int charge_ma,
- int max_ma, int charge_mv)
+void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
+ int charge_mv)
{
/*
* Ignore lower charge ceiling on PD transition if our battery is
@@ -625,7 +625,9 @@ __override void board_set_charge_limit(int port, int supplier, int charge_ma,
charge_ma = max_ma;
}
- charge_set_input_current_limit(charge_ma, charge_mv);
+ charge_ma = charge_ma * 95 / 100;
+ charge_set_input_current_limit(
+ MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
}
/**
diff --git a/board/quackingstick/board.h b/board/quackingstick/board.h
index a8ec5a4231..9b50237b4d 100644
--- a/board/quackingstick/board.h
+++ b/board/quackingstick/board.h
@@ -32,8 +32,6 @@
#define CONFIG_BATTERY_FUEL_GAUGE
#define CONFIG_BATTERY_VENDOR_PARAM
-#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 5
-
/* BC 1.2 Charger */
#define CONFIG_BC12_DETECT_PI3USB9201
diff --git a/board/rainier/board.c b/board/rainier/board.c
index 05142a3936..07a006b671 100644
--- a/board/rainier/board.c
+++ b/board/rainier/board.c
@@ -173,8 +173,8 @@ int board_set_active_charge_port(int charge_port)
return EC_SUCCESS;
}
-__override void board_set_charge_limit(int port, int supplier, int charge_ma,
- int max_ma, int charge_mv)
+void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
+ int charge_mv)
{
/*
* NOP because there is no internal power therefore no charging.
diff --git a/board/rainier/board.h b/board/rainier/board.h
index 745ebeaca8..463a1e4a05 100644
--- a/board/rainier/board.h
+++ b/board/rainier/board.h
@@ -22,6 +22,7 @@
#define CONFIG_POWER_COMMON
#define CONFIG_SPI
#define CONFIG_SPI_CONTROLLER
+#define CONFIG_STM_HWTIMER32
/* Source RTCCLK from external 32.768kHz source on PC15/OSC32_IN. */
#define CONFIG_STM32_CLOCK_LSE
#define CONFIG_SWITCH
diff --git a/board/rammus/board.c b/board/rammus/board.c
index e4abed4afb..8cbc6c6856 100644
--- a/board/rammus/board.c
+++ b/board/rammus/board.c
@@ -558,6 +558,26 @@ int board_set_active_charge_port(int charge_port)
return EC_SUCCESS;
}
+/**
+ * Set the charge limit based upon desired maximum.
+ *
+ * @param port Port number.
+ * @param supplier Charge supplier type.
+ * @param charge_ma Desired charge limit (mA).
+ * @param charge_mv Negotiated charge voltage (mV).
+ */
+void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
+ int charge_mv)
+{
+ /*
+ * Limit the input current to 96% negotiated limit,
+ * to account for the charger chip margin.
+ */
+ charge_ma = charge_ma * 96 / 100;
+ charge_set_input_current_limit(
+ MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
+}
+
void board_hibernate(void)
{
CPRINTS("Triggering PMIC shutdown.");
diff --git a/board/rammus/board.h b/board/rammus/board.h
index 975417df9a..c0c8238c3e 100644
--- a/board/rammus/board.h
+++ b/board/rammus/board.h
@@ -84,12 +84,10 @@
#define CONFIG_CHARGER
#define CONFIG_CHARGER_ISL9238
#define CONFIG_CHARGER_DISCHARGE_ON_AC
-#define CONFIG_CHARGER_DEFAULT_CURRENT_LIMIT 512
-#define CONFIG_CHARGER_MIN_INPUT_CURRENT_LIMIT 512
+#define CONFIG_CHARGER_INPUT_CURRENT 512
#define CONFIG_CHARGER_PSYS
#define CONFIG_CHARGER_SENSE_RESISTOR 10
#define CONFIG_CHARGER_SENSE_RESISTOR_AC 20
-#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 4 /* charger margin */
#define CONFIG_CMD_CHARGER_ADC_AMON_BMON
#define CONFIG_HOSTCMD_PD_CONTROL
#define CONFIG_EXTPOWER_GPIO
diff --git a/board/redrix/charger.c b/board/redrix/charger.c
index 7fabd2082e..a4fa209246 100644
--- a/board/redrix/charger.c
+++ b/board/redrix/charger.c
@@ -81,3 +81,10 @@ int board_set_active_charge_port(int port)
return EC_SUCCESS;
}
+
+__overridable 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);
+}
diff --git a/board/reef/board.c b/board/reef/board.c
index ad92334c2b..e41921a436 100644
--- a/board/reef/board.c
+++ b/board/reef/board.c
@@ -543,8 +543,8 @@ int board_set_active_charge_port(int charge_port)
* @param charge_ma Desired charge limit (mA).
* @param charge_mv Negotiated charge voltage (mV).
*/
-__override void board_set_charge_limit(int port, int supplier, int charge_ma,
- int max_ma, int charge_mv)
+void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
+ int charge_mv)
{
/* Enable charging trigger by BC1.2 detection */
int bc12_enable = (supplier == CHARGE_SUPPLIER_BC12_CDP ||
@@ -555,7 +555,9 @@ __override void board_set_charge_limit(int port, int supplier, int charge_ma,
if (bd9995x_bc12_enable_charging(port, bc12_enable))
return;
- charge_set_input_current_limit(charge_ma, charge_mv);
+ charge_ma = (charge_ma * 95) / 100;
+ charge_set_input_current_limit(
+ MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
}
/**
diff --git a/board/reef/board.h b/board/reef/board.h
index cc1783e43a..fc25024dff 100644
--- a/board/reef/board.h
+++ b/board/reef/board.h
@@ -50,9 +50,7 @@
#define CONFIG_CHARGER_BD9995X
#define CONFIG_CHARGER_BD9995X_CHGEN
#define CONFIG_CHARGER_DISCHARGE_ON_AC
-#define CONFIG_CHARGER_DEFAULT_CURRENT_LIMIT 512
-#define CONFIG_CHARGER_MIN_INPUT_CURRENT_LIMIT 512
-#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 5
+#define CONFIG_CHARGER_INPUT_CURRENT 512
#define CONFIG_CHARGER_LIMIT_POWER_THRESH_BAT_PCT 1
#define CONFIG_CHARGER_LIMIT_POWER_THRESH_CHG_MW 18000
#define CONFIG_CHARGER_MAINTAIN_VBAT
diff --git a/board/reef_it8320/board.c b/board/reef_it8320/board.c
index 1e222a4ed4..b00e451842 100644
--- a/board/reef_it8320/board.c
+++ b/board/reef_it8320/board.c
@@ -299,8 +299,8 @@ int board_set_active_charge_port(int charge_port)
* @param charge_ma Desired charge limit (mA).
* @param charge_mv Negotiated charge voltage (mV).
*/
-__override void board_set_charge_limit(int port, int supplier, int charge_ma,
- int max_ma, int charge_mv)
+void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
+ int charge_mv)
{
/* Enable charging trigger by BC1.2 detection */
int bc12_enable = (supplier == CHARGE_SUPPLIER_BC12_CDP ||
@@ -311,7 +311,9 @@ __override void board_set_charge_limit(int port, int supplier, int charge_ma,
if (bd9995x_bc12_enable_charging(port, bc12_enable))
return;
- charge_set_input_current_limit(charge_ma, charge_mv);
+ charge_ma = (charge_ma * 95) / 100;
+ charge_set_input_current_limit(
+ MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
}
/**
diff --git a/board/reef_it8320/board.h b/board/reef_it8320/board.h
index dbccc6eeee..45abf34151 100644
--- a/board/reef_it8320/board.h
+++ b/board/reef_it8320/board.h
@@ -48,9 +48,7 @@
#define CONFIG_CHARGER_BD9995X
#define CONFIG_CHARGER_BD9995X_CHGEN
#define CONFIG_CHARGER_DISCHARGE_ON_AC
-#define CONFIG_CHARGER_DEFAULT_CURRENT_LIMIT 512
-#define CONFIG_CHARGER_MIN_INPUT_CURRENT_LIMIT 512
-#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 5
+#define CONFIG_CHARGER_INPUT_CURRENT 512
#define CONFIG_CHARGER_LIMIT_POWER_THRESH_BAT_PCT 1
#define CONFIG_CHARGER_LIMIT_POWER_THRESH_CHG_MW 18000
#define CONFIG_CHARGER_MAINTAIN_VBAT
diff --git a/board/reef_mchp/board.c b/board/reef_mchp/board.c
index c50a4feb8a..0a40f5dd04 100644
--- a/board/reef_mchp/board.c
+++ b/board/reef_mchp/board.c
@@ -736,8 +736,8 @@ int board_set_active_charge_port(int charge_port)
* @param charge_ma Desired charge limit (mA).
* @param charge_mv Negotiated charge voltage (mV).
*/
-__override void board_set_charge_limit(int port, int supplier, int charge_ma,
- int max_ma, int charge_mv)
+void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
+ int charge_mv)
{
/* Enable charging trigger by BC1.2 detection */
int bc12_enable = (supplier == CHARGE_SUPPLIER_BC12_CDP ||
@@ -748,7 +748,9 @@ __override void board_set_charge_limit(int port, int supplier, int charge_ma,
if (bd9995x_bc12_enable_charging(port, bc12_enable))
return;
- charge_set_input_current_limit(charge_ma, charge_mv);
+ charge_ma = (charge_ma * 95) / 100;
+ charge_set_input_current_limit(
+ MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
}
/**
diff --git a/board/reef_mchp/board.h b/board/reef_mchp/board.h
index 925f271ffd..bde2d831d3 100644
--- a/board/reef_mchp/board.h
+++ b/board/reef_mchp/board.h
@@ -53,9 +53,7 @@
#define CONFIG_CHARGER_BD9995X
#define CONFIG_CHARGER_BD9995X_CHGEN
#define CONFIG_CHARGER_DISCHARGE_ON_AC
-#define CONFIG_CHARGER_DEFAULT_CURRENT_LIMIT 512
-#define CONFIG_CHARGER_MIN_INPUT_CURRENT_LIMIT 512
-#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 5
+#define CONFIG_CHARGER_INPUT_CURRENT 512
#define CONFIG_CHARGER_LIMIT_POWER_THRESH_BAT_PCT 1
#define CONFIG_CHARGER_LIMIT_POWER_THRESH_CHG_MW 18000
#define CONFIG_CHARGER_MAINTAIN_VBAT
diff --git a/board/sasuke/board.c b/board/sasuke/board.c
index e6767d8126..ddd5279d62 100644
--- a/board/sasuke/board.c
+++ b/board/sasuke/board.c
@@ -395,6 +395,19 @@ int board_set_active_charge_port(int port)
return EC_SUCCESS;
}
+void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
+ int charge_mv)
+{
+ int icl = MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT);
+
+ /*
+ * b/147463641: The charger IC seems to overdraw ~4%, therefore we
+ * reduce our target accordingly.
+ */
+ icl = icl * 96 / 100;
+ charge_set_input_current_limit(icl, charge_mv);
+}
+
__override void typec_set_source_current_limit(int port, enum tcpc_rp_value rp)
{
if (port < 0 || port > board_get_usb_pd_port_count())
diff --git a/board/sasuke/board.h b/board/sasuke/board.h
index df390d2d99..64c830df0f 100644
--- a/board/sasuke/board.h
+++ b/board/sasuke/board.h
@@ -29,11 +29,6 @@
#define CONFIG_OCPC_DEF_RBATT_MOHMS \
22 /* R_DS(on) 11.6mOhm + 10mOhm sns rstr \
*/
-/*
- * b/147463641: The charger IC seems to overdraw ~4%, therefore we
- * reduce our target accordingly.
- */
-#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 4
#define CONFIG_OCPC
#define CONFIG_CHARGER_PROFILE_OVERRIDE
#define CONFIG_CHARGE_RAMP_HW
diff --git a/board/sasukette/board.c b/board/sasukette/board.c
index f6786c1441..e45213a63a 100644
--- a/board/sasukette/board.c
+++ b/board/sasukette/board.c
@@ -251,6 +251,19 @@ uint16_t tcpc_get_alert_status(void)
return status;
}
+void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
+ int charge_mv)
+{
+ int icl = MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT);
+
+ /*
+ * b/147463641: The charger IC seems to overdraw ~4%, therefore we
+ * reduce our target accordingly.
+ */
+ icl = icl * 96 / 100;
+ charge_set_input_current_limit(icl, charge_mv);
+}
+
int board_is_sourcing_vbus(int port)
{
int regval;
diff --git a/board/sasukette/board.h b/board/sasukette/board.h
index f06a89a5f0..44cb65239a 100644
--- a/board/sasukette/board.h
+++ b/board/sasukette/board.h
@@ -36,11 +36,6 @@
#define CONFIG_CHARGER_PROFILE_OVERRIDE
#undef CONFIG_USB_PD_TCPC_LPM_EXIT_DEBOUNCE
#define CONFIG_USB_PD_TCPC_LPM_EXIT_DEBOUNCE (100 * MSEC)
-/*
- * b/147463641: The charger IC seems to overdraw ~4%, therefore we
- * reduce our target accordingly.
- */
-#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 4
/* LED */
#define CONFIG_LED_COMMON
diff --git a/board/scarlet/board.c b/board/scarlet/board.c
index 66017e172d..34e5cc456c 100644
--- a/board/scarlet/board.c
+++ b/board/scarlet/board.c
@@ -212,6 +212,13 @@ int board_set_active_charge_port(int charge_port)
return EC_SUCCESS;
}
+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);
+}
+
int extpower_is_present(void)
{
/*
diff --git a/board/scarlet/board.h b/board/scarlet/board.h
index cdc09f9114..4691d74391 100644
--- a/board/scarlet/board.h
+++ b/board/scarlet/board.h
@@ -32,6 +32,7 @@
#define CONFIG_POWER_COMMON
#define CONFIG_SPI
#define CONFIG_SPI_CONTROLLER
+#define CONFIG_STM_HWTIMER32
/* Source RTCCLK from external 32.768kHz source on PC15/OSC32_IN. */
#define CONFIG_STM32_CLOCK_LSE
#define CONFIG_SWITCH
@@ -69,8 +70,7 @@
#define CONFIG_CHARGER
#define CONFIG_CHARGER_RT9467
-#define CONFIG_CHARGER_DEFAULT_CURRENT_LIMIT 512
-#define CONFIG_CHARGER_MIN_INPUT_CURRENT_LIMIT 512
+#define CONFIG_CHARGER_INPUT_CURRENT 512
#define CONFIG_CHARGER_LIMIT_POWER_THRESH_BAT_PCT 2
#define CONFIG_CHARGER_LIMIT_POWER_THRESH_CHG_MW 15000
#define CONFIG_CHARGER_PROFILE_OVERRIDE
diff --git a/board/servo_micro/board.h b/board/servo_micro/board.h
index 109a40409d..801b67e07e 100644
--- a/board/servo_micro/board.h
+++ b/board/servo_micro/board.h
@@ -30,6 +30,7 @@
#undef CONFIG_UART_RX_DMA
/* Optional features */
+#define CONFIG_STM_HWTIMER32
#define CONFIG_HW_CRC
#define CONFIG_PVD
/* See 'Programmable voltage detector characteristics' in the STM32F072x8
diff --git a/board/servo_v4/board.h b/board/servo_v4/board.h
index 1c7d90eab4..289c117989 100644
--- a/board/servo_v4/board.h
+++ b/board/servo_v4/board.h
@@ -35,6 +35,7 @@
#define CONFIG_CMD_USART_INFO
/* Optional features */
+#define CONFIG_STM_HWTIMER32
#define CONFIG_HW_CRC
#define CONFIG_PVD
/* See 'Programmable voltage detector characteristics' in the STM32F072x8
@@ -96,8 +97,6 @@
#undef CONFIG_CMD_FLASHINFO
#undef CONFIG_CMD_FLASH_WP
#undef CONFIG_CMD_GETTIME
-#undef CONFIG_CMD_I2C_SCAN
-#undef CONFIG_CMD_I2C_XFER
#undef CONFIG_CMD_MEM
#undef CONFIG_CMD_SHMEM
#undef CONFIG_CMD_SYSLOCK
diff --git a/board/servo_v4/usb_pd_policy.c b/board/servo_v4/usb_pd_policy.c
index e3eba6104a..4fcded6842 100644
--- a/board/servo_v4/usb_pd_policy.c
+++ b/board/servo_v4/usb_pd_policy.c
@@ -364,8 +364,8 @@ int board_set_active_charge_port(int charge_port)
return 0;
}
-__override void board_set_charge_limit(int port, int supplier, int charge_ma,
- int max_ma, int charge_mv)
+void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
+ int charge_mv)
{
if (port != CHG)
return;
diff --git a/board/servo_v4p1/board.h b/board/servo_v4p1/board.h
index 4debd67b49..b6c7915c6c 100644
--- a/board/servo_v4p1/board.h
+++ b/board/servo_v4p1/board.h
@@ -97,6 +97,7 @@
#undef CONFIG_UART_RX_DMA
/* Optional features */
+#define CONFIG_STM_HWTIMER32
#define CONFIG_HW_CRC
#define CONFIG_PVD
/*
diff --git a/board/servo_v4p1/usb_pd_policy.c b/board/servo_v4p1/usb_pd_policy.c
index fc79bf84da..7f5b6f35bf 100644
--- a/board/servo_v4p1/usb_pd_policy.c
+++ b/board/servo_v4p1/usb_pd_policy.c
@@ -391,8 +391,8 @@ int board_set_active_charge_port(int charge_port)
return 0;
}
-__override void board_set_charge_limit(int port, int supplier, int charge_ma,
- int max_ma, int charge_mv)
+void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
+ int charge_mv)
{
if (port != CHG)
return;
diff --git a/board/shotzo/board.c b/board/shotzo/board.c
index 5d96e164cf..dea75ee7d2 100644
--- a/board/shotzo/board.c
+++ b/board/shotzo/board.c
@@ -351,8 +351,8 @@ uint16_t tcpc_get_alert_status(void)
return 0;
}
-__override void board_set_charge_limit(int port, int supplier, int charge_ma,
- int max_ma, int charge_mv)
+void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
+ int charge_mv)
{
if (port == CHARGER_SOLO) {
charger_set_input_current_limit(CHARGER_SOLO, max_ma);
diff --git a/board/stern/board.c b/board/stern/board.c
index a6d488aaf6..26576ede86 100644
--- a/board/stern/board.c
+++ b/board/stern/board.c
@@ -236,6 +236,14 @@ int board_set_active_charge_port(int charge_port)
return EC_SUCCESS;
}
+void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
+ int charge_mv)
+{
+ charge_ma = (charge_ma * 95) / 100;
+ charge_set_input_current_limit(
+ MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
+}
+
int board_discharge_on_ac(int enable)
{
int ret, port;
diff --git a/board/stern/board.h b/board/stern/board.h
index d7d96ea67c..eedbc2a44c 100644
--- a/board/stern/board.h
+++ b/board/stern/board.h
@@ -28,7 +28,6 @@
#define CONFIG_BATTERY_HW_PRESENT_CUSTOM
#define CONFIG_CHARGER_PSYS
-#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 5
#define CONFIG_CHARGER_RUNTIME_CONFIG
diff --git a/board/stm32f446e-eval/board.h b/board/stm32f446e-eval/board.h
index 667483d81f..4ae9117829 100644
--- a/board/stm32f446e-eval/board.h
+++ b/board/stm32f446e-eval/board.h
@@ -56,6 +56,7 @@
#undef CONFIG_WATCHDOG
/* Optional features */
+#define CONFIG_STM_HWTIMER32
#define CONFIG_DMA_HELP
#define CONFIG_FLASH_CROS
diff --git a/board/stm32l476g-eval/board.h b/board/stm32l476g-eval/board.h
index 40c7fb0eca..26ea530e4e 100644
--- a/board/stm32l476g-eval/board.h
+++ b/board/stm32l476g-eval/board.h
@@ -33,6 +33,7 @@
#endif
/* Optional features */
+#define CONFIG_STM_HWTIMER32
#ifdef CTS_MODULE_I2C
#define CONFIG_I2C
diff --git a/board/storo/board.c b/board/storo/board.c
index 83d9ef4c72..f6f3ed5750 100644
--- a/board/storo/board.c
+++ b/board/storo/board.c
@@ -431,6 +431,19 @@ uint16_t tcpc_get_alert_status(void)
return status;
}
+void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
+ int charge_mv)
+{
+ int icl = MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT);
+
+ /*
+ * b/147463641: The charger IC seems to overdraw ~4%, therefore we
+ * reduce our target accordingly.
+ */
+ icl = icl * 96 / 100;
+ charge_set_input_current_limit(icl, charge_mv);
+}
+
int board_is_sourcing_vbus(int port)
{
int regval;
diff --git a/board/storo/board.h b/board/storo/board.h
index 1f33ce53b0..93dd573ba1 100644
--- a/board/storo/board.h
+++ b/board/storo/board.h
@@ -31,11 +31,6 @@
#define CONFIG_OCPC_DEF_RBATT_MOHMS \
22 /* R_DS(on) 11.6mOhm + 10mOhm sns rstr \
*/
-/*
- * b/147463641: The charger IC seems to overdraw ~4%, therefore we
- * reduce our target accordingly.
- */
-#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 4
#define CONFIG_OCPC
#undef CONFIG_CHARGER_SINGLE_CHIP
#undef CONFIG_USB_PD_TCPC_LPM_EXIT_DEBOUNCE
diff --git a/board/sweetberry/board.h b/board/sweetberry/board.h
index 4d945f5dc4..4387cd4094 100644
--- a/board/sweetberry/board.h
+++ b/board/sweetberry/board.h
@@ -77,6 +77,7 @@
#undef CONFIG_WATCHDOG
/* Optional features */
+#define CONFIG_STM_HWTIMER32
/*
* Allow dangerous commands all the time, since we don't have a write protect
diff --git a/board/taeko/board.c b/board/taeko/board.c
index 9f0d21b8b8..79ef4029d6 100644
--- a/board/taeko/board.c
+++ b/board/taeko/board.c
@@ -136,3 +136,16 @@ enum battery_present battery_hw_present(void)
/* The GPIO is low when the battery is physically present */
return gpio_get_level(GPIO_EC_BATT_PRES_ODL) ? BP_NO : BP_YES;
}
+
+__override void board_set_charge_limit(int port, int supplier, int charge_ma,
+ int max_ma, int charge_mv)
+{
+ /*
+ * Follow OEM request to limit the input current to
+ * 95% negotiated limit.
+ */
+ charge_ma = charge_ma * 95 / 100;
+
+ charge_set_input_current_limit(
+ MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
+}
diff --git a/board/taeko/board.h b/board/taeko/board.h
index a3ae9abb00..c3193c8847 100644
--- a/board/taeko/board.h
+++ b/board/taeko/board.h
@@ -26,9 +26,6 @@
#define CONFIG_MP2964
-/* OEM requested 5% charger current margin */
-#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 5
-
/* LED */
#define CONFIG_LED_ONOFF_STATES
diff --git a/board/taeko/charger.c b/board/taeko/charger.c
index 7fabd2082e..a4fa209246 100644
--- a/board/taeko/charger.c
+++ b/board/taeko/charger.c
@@ -81,3 +81,10 @@ int board_set_active_charge_port(int port)
return EC_SUCCESS;
}
+
+__overridable 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);
+}
diff --git a/board/taniks/board.c b/board/taniks/board.c
index f8501d761b..5da998524b 100644
--- a/board/taniks/board.c
+++ b/board/taniks/board.c
@@ -115,3 +115,16 @@ enum battery_present battery_hw_present(void)
/* The GPIO is low when the battery is physically present */
return gpio_get_level(GPIO_EC_BATT_PRES_ODL) ? BP_NO : BP_YES;
}
+
+__override void board_set_charge_limit(int port, int supplier, int charge_ma,
+ int max_ma, int charge_mv)
+{
+ /*
+ * Follow OEM request to limit the input current to
+ * 95% negotiated limit.
+ */
+ charge_ma = charge_ma * 95 / 100;
+
+ charge_set_input_current_limit(
+ MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
+}
diff --git a/board/taniks/board.h b/board/taniks/board.h
index a301f3b458..6cd42ad7bb 100644
--- a/board/taniks/board.h
+++ b/board/taniks/board.h
@@ -36,9 +36,6 @@
*/
#define CONFIG_HIBERNATE_PSL_VCC1_RST_WAKEUP
-/* OEM requested 5% charger margin */
-#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 5
-
/* LED */
#define CONFIG_LED_ONOFF_STATES
diff --git a/board/taniks/charger.c b/board/taniks/charger.c
index 7fabd2082e..a4fa209246 100644
--- a/board/taniks/charger.c
+++ b/board/taniks/charger.c
@@ -81,3 +81,10 @@ int board_set_active_charge_port(int port)
return EC_SUCCESS;
}
+
+__overridable 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);
+}
diff --git a/board/terrador/board.c b/board/terrador/board.c
index 3724c9d2d0..8426216e79 100644
--- a/board/terrador/board.c
+++ b/board/terrador/board.c
@@ -301,7 +301,6 @@ void ppc_interrupt(enum gpio_signal signal)
break;
case GPIO_USB_C1_PPC_INT_ODL:
syv682x_interrupt(USBC_PORT_C1);
- break;
default:
break;
}
diff --git a/board/tglrvp_ish/board.h b/board/tglrvp_ish/board.h
index e285014e5e..3912e8803a 100644
--- a/board/tglrvp_ish/board.h
+++ b/board/tglrvp_ish/board.h
@@ -79,11 +79,8 @@
#define CONFIG_ISH_IPAPG
#define CONFIG_ISH_D0I2_MIN_USEC (15 * MSEC)
-#ifdef BOARD_ADL_ISH_LITE
-#define CONFIG_ISH_D0I3_MIN_USEC (3000 * MSEC)
-#else
#define CONFIG_ISH_D0I3_MIN_USEC (50 * MSEC)
-#endif
+
#define CONFIG_ISH_NEW_PM
#ifndef __ASSEMBLER__
diff --git a/board/tigertail/board.h b/board/tigertail/board.h
index 26e6af5985..ea4d11db06 100644
--- a/board/tigertail/board.h
+++ b/board/tigertail/board.h
@@ -24,6 +24,7 @@
#undef CONFIG_UART_RX_DMA
/* Optional features */
+#define CONFIG_STM_HWTIMER32
#define CONFIG_HW_CRC
/* USB Configuration */
diff --git a/board/trogdor/usbc_config.c b/board/trogdor/usbc_config.c
index b9c37a04fd..39a54f659e 100644
--- a/board/trogdor/usbc_config.c
+++ b/board/trogdor/usbc_config.c
@@ -225,7 +225,6 @@ void board_tcpc_init(void)
/* Enable PPC interrupts */
gpio_enable_interrupt(GPIO_USB_C0_SWCTL_INT_ODL);
- gpio_enable_interrupt(GPIO_USB_C1_SWCTL_INT_ODL);
/* Enable TCPC interrupts */
gpio_enable_interrupt(GPIO_USB_C0_PD_INT_ODL);
@@ -334,8 +333,8 @@ int board_set_active_charge_port(int port)
return EC_SUCCESS;
}
-__override void board_set_charge_limit(int port, int supplier, int charge_ma,
- int max_ma, int charge_mv)
+void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
+ int charge_mv)
{
/*
* Ignore lower charge ceiling on PD transition if our battery is
@@ -347,7 +346,8 @@ __override void board_set_charge_limit(int port, int supplier, int charge_ma,
charge_ma = max_ma;
}
- charge_set_input_current_limit(charge_ma, charge_mv);
+ charge_set_input_current_limit(
+ MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
}
uint16_t tcpc_get_alert_status(void)
diff --git a/board/twinkie/board.h b/board/twinkie/board.h
index 808053d146..b1379fb15b 100644
--- a/board/twinkie/board.h
+++ b/board/twinkie/board.h
@@ -79,7 +79,8 @@ void trace_packets(void);
void set_trace_mode(int mode);
/* Timer selection */
-#define TIM_CLOCK32 2
+#define TIM_CLOCK_MSB 3
+#define TIM_CLOCK_LSB 15
#define TIM_ADC 16
#include "gpio_signal.h"
diff --git a/board/vell/board.h b/board/vell/board.h
index 3a7d97858c..4b3d527901 100644
--- a/board/vell/board.h
+++ b/board/vell/board.h
@@ -61,8 +61,6 @@
#undef CONFIG_SYV682X_HV_ILIM
#define CONFIG_SYV682X_HV_ILIM SYV682X_HV_ILIM_5_50
-#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 4
-
/* TODO: b/177608416 - measure and check these values on brya */
#define PD_POWER_SUPPLY_TURN_ON_DELAY 30000 /* us */
#define PD_POWER_SUPPLY_TURN_OFF_DELAY 30000 /* us */
diff --git a/board/vell/charger.c b/board/vell/charger.c
index 53b14381cd..e33a0ed44a 100644
--- a/board/vell/charger.c
+++ b/board/vell/charger.c
@@ -81,6 +81,18 @@ int board_set_active_charge_port(int port)
return EC_SUCCESS;
}
+void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
+ int charge_mv)
+{
+ /*
+ * Limit the input current to 96% negotiated limit,
+ * to account for the charger chip margin.
+ */
+ charge_ma = charge_ma * 96 / 100;
+ charge_set_input_current_limit(
+ MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
+}
+
static void set_ac_prochot(void)
{
isl9241_set_ac_prochot(CHARGER_SOLO, PD_MAX_CURRENT_MA);
diff --git a/board/vilboz/board.c b/board/vilboz/board.c
index 1ba266f145..7c74794d9d 100644
--- a/board/vilboz/board.c
+++ b/board/vilboz/board.c
@@ -504,3 +504,16 @@ const int usb_port_enable[USBA_PORT_COUNT] = {
IOEX_EN_USB_A0_5V,
GPIO_EN_USB_A1_5V,
};
+
+__override void board_set_charge_limit(int port, int supplier, int charge_ma,
+ int max_ma, int charge_mv)
+{
+ /*
+ * Limit the input current to 95% negotiated limit,
+ * to account for the charger chip margin.
+ */
+ charge_ma = charge_ma * 95 / 100;
+
+ charge_set_input_current_limit(
+ MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
+}
diff --git a/board/vilboz/board.h b/board/vilboz/board.h
index 8a7c86824d..5160abbc26 100644
--- a/board/vilboz/board.h
+++ b/board/vilboz/board.h
@@ -20,7 +20,6 @@
#define GPIO_USB2_ILIM_SEL GPIO_USB_A1_CHARGE_EN_DB_L
#define CONFIG_CHARGER_PROFILE_OVERRIDE
-#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 5
/* Motion sensing drivers */
#define CONFIG_ACCELGYRO_LSM6DSM
diff --git a/board/volmar/charger.c b/board/volmar/charger.c
index 7a16fcd5cb..88f5b85a41 100644
--- a/board/volmar/charger.c
+++ b/board/volmar/charger.c
@@ -79,3 +79,10 @@ int board_set_active_charge_port(int port)
return EC_SUCCESS;
}
+
+__overridable 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);
+}
diff --git a/board/waddledee/board.c b/board/waddledee/board.c
index 4dfb3048ca..d7abda740c 100644
--- a/board/waddledee/board.c
+++ b/board/waddledee/board.c
@@ -342,6 +342,18 @@ uint16_t tcpc_get_alert_status(void)
return status;
}
+void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
+ int charge_mv)
+{
+ int icl = MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT);
+
+ /*
+ * TODO(b/151955431): Characterize the input current limit in case a
+ * scaling needs to be applied here
+ */
+ charge_set_input_current_limit(icl, charge_mv);
+}
+
int board_set_active_charge_port(int port)
{
int is_valid_port = (port >= 0 && port < board_get_usb_pd_port_count());
diff --git a/board/waddledoo/board.c b/board/waddledoo/board.c
index 3cdb71cc5e..e207e59456 100644
--- a/board/waddledoo/board.c
+++ b/board/waddledoo/board.c
@@ -390,6 +390,19 @@ int board_set_active_charge_port(int port)
return EC_SUCCESS;
}
+void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
+ int charge_mv)
+{
+ int icl = MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT);
+
+ /*
+ * b/147463641: The charger IC seems to overdraw ~4%, therefore we
+ * reduce our target accordingly.
+ */
+ icl = icl * 96 / 100;
+ charge_set_input_current_limit(icl, charge_mv);
+}
+
__override void typec_set_source_current_limit(int port, enum tcpc_rp_value rp)
{
if (port < 0 || port > board_get_usb_pd_port_count())
diff --git a/board/waddledoo/board.h b/board/waddledoo/board.h
index 23a89c84d6..727f1bdb33 100644
--- a/board/waddledoo/board.h
+++ b/board/waddledoo/board.h
@@ -18,12 +18,10 @@
#define CONFIG_SYSTEM_UNLOCKED
/* Save some flash space */
-#undef CONFIG_ACCEL_SPOOF_MODE
#define CONFIG_CHIP_INIT_ROM_REGION
#undef CONFIG_CONSOLE_CMDHELP
-#undef CONFIG_CONSOLE_HISTORY
#define CONFIG_DEBUG_ASSERT_BRIEF
-#define CONFIG_USB_PD_DEBUG_LEVEL 0
+#define CONFIG_USB_PD_DEBUG_LEVEL 2
/* EC console commands */
#define CONFIG_CMD_CHARGER_DUMP
@@ -43,11 +41,6 @@
#define CONFIG_OCPC_DEF_RBATT_MOHMS \
22 /* R_DS(on) 11.6mOhm + 10mOhm sns rstr \
*/
-/*
- * b/147463641: The charger IC seems to overdraw ~4%, therefore we
- * reduce our target accordingly.
- */
-#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 4
#define CONFIG_OCPC
#undef CONFIG_CHARGER_SINGLE_CHIP
#undef CONFIG_USB_PD_TCPC_LPM_EXIT_DEBOUNCE
diff --git a/board/waddledoo2/board.c b/board/waddledoo2/board.c
index 98c061d9af..fd12aec449 100644
--- a/board/waddledoo2/board.c
+++ b/board/waddledoo2/board.c
@@ -397,6 +397,19 @@ int board_set_active_charge_port(int port)
return EC_SUCCESS;
}
+void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
+ int charge_mv)
+{
+ int icl = MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT);
+
+ /*
+ * b/147463641: The charger IC seems to overdraw ~4%, therefore we
+ * reduce our target accordingly.
+ */
+ icl = icl * 96 / 100;
+ charge_set_input_current_limit(icl, charge_mv);
+}
+
__override void typec_set_source_current_limit(int port, enum tcpc_rp_value rp)
{
if (port < 0 || port > board_get_usb_pd_port_count())
diff --git a/board/waddledoo2/board.h b/board/waddledoo2/board.h
index 3b4587037d..93f0a0f108 100644
--- a/board/waddledoo2/board.h
+++ b/board/waddledoo2/board.h
@@ -28,11 +28,6 @@
#define CONFIG_OCPC_DEF_RBATT_MOHMS \
22 /* R_DS(on) 11.6mOhm + 10mOhm sns rstr \
*/
-/*
- * b/147463641: The charger IC seems to overdraw ~4%, therefore we
- * reduce our target accordingly.
- */
-#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 4
#define CONFIG_OCPC
#undef CONFIG_CHARGER_SINGLE_CHIP
#undef CONFIG_CMD_CHARGER_DUMP
diff --git a/board/wheelie/board.c b/board/wheelie/board.c
index e8852a0b5a..9708dcca82 100644
--- a/board/wheelie/board.c
+++ b/board/wheelie/board.c
@@ -229,6 +229,18 @@ uint16_t tcpc_get_alert_status(void)
return status;
}
+void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
+ int charge_mv)
+{
+ int icl = MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT);
+
+ /*
+ * TODO(b/151955431): Characterize the input current limit in case a
+ * scaling needs to be applied here
+ */
+ charge_set_input_current_limit(icl, charge_mv);
+}
+
int board_set_active_charge_port(int port)
{
int is_valid_port = (port >= 0 && port < CONFIG_USB_PD_PORT_MAX_COUNT);
diff --git a/board/willow/board.c b/board/willow/board.c
index 1fdcc37492..826df6940c 100644
--- a/board/willow/board.c
+++ b/board/willow/board.c
@@ -234,6 +234,14 @@ int board_set_active_charge_port(int charge_port)
return EC_SUCCESS;
}
+void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
+ int charge_mv)
+{
+ charge_ma = (charge_ma * 95) / 100;
+ charge_set_input_current_limit(
+ MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
+}
+
int board_discharge_on_ac(int enable)
{
int ret, port;
diff --git a/board/willow/board.h b/board/willow/board.h
index 315c206a07..18745a07a4 100644
--- a/board/willow/board.h
+++ b/board/willow/board.h
@@ -27,7 +27,6 @@
#define CONFIG_BATTERY_HW_PRESENT_CUSTOM
#define CONFIG_CHARGER_PSYS
-#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 5
#define CONFIG_CHARGER_RUNTIME_CONFIG
diff --git a/board/woomax/board.c b/board/woomax/board.c
index 7e9fbd224f..747c576fc2 100644
--- a/board/woomax/board.c
+++ b/board/woomax/board.c
@@ -451,7 +451,7 @@ static int woomax_ps8802_mux_set(const struct usb_mux *me,
const struct usb_mux usbc1_woomax_ps8818 = {
.usb_port = USBC_PORT_C1,
.i2c_port = I2C_PORT_TCPC1,
- .i2c_addr_flags = PS8818_I2C_ADDR0_FLAGS,
+ .i2c_addr_flags = PS8818_I2C_ADDR_FLAGS,
.driver = &ps8818_usb_retimer_driver,
.board_set = &woomax_ps8818_mux_set,
};
diff --git a/board/wormdingler/board.c b/board/wormdingler/board.c
index e9e929de53..3c4dfe4b3c 100644
--- a/board/wormdingler/board.c
+++ b/board/wormdingler/board.c
@@ -458,7 +458,6 @@ void board_tcpc_init(void)
/* Enable PPC interrupts */
gpio_enable_interrupt(GPIO_USB_C0_SWCTL_INT_ODL);
- gpio_enable_interrupt(GPIO_USB_C1_SWCTL_INT_ODL);
/* Enable TCPC interrupts */
gpio_enable_interrupt(GPIO_USB_C0_PD_INT_ODL);
@@ -630,8 +629,8 @@ int board_set_active_charge_port(int port)
return EC_SUCCESS;
}
-__override void board_set_charge_limit(int port, int supplier, int charge_ma,
- int max_ma, int charge_mv)
+void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
+ int charge_mv)
{
/*
* Ignore lower charge ceiling on PD transition if our battery is
@@ -643,7 +642,9 @@ __override void board_set_charge_limit(int port, int supplier, int charge_ma,
charge_ma = max_ma;
}
- charge_set_input_current_limit(charge_ma, charge_mv);
+ charge_ma = charge_ma * 95 / 100;
+ charge_set_input_current_limit(
+ MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
}
uint16_t tcpc_get_alert_status(void)
diff --git a/board/wormdingler/board.h b/board/wormdingler/board.h
index 447846c509..3c3ba6ead5 100644
--- a/board/wormdingler/board.h
+++ b/board/wormdingler/board.h
@@ -24,8 +24,6 @@
#define CONFIG_BATTERY_FUEL_GAUGE
#define CONFIG_BATTERY_VENDOR_PARAM
-#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 5
-
/* Enable PD3.0 */
#define CONFIG_USB_PD_REV30