summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Marheine <pmarheine@chromium.org>2022-12-15 11:33:19 +1100
committerChromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com>2023-01-12 22:52:09 +0000
commit49abac39678928a242f94115f523ba462146412a (patch)
tree4f49575ca917686881027e18bfa17d6cbef6ece5
parent9a9669c83100f8833d066e8a0e58a561075c3e9f (diff)
downloadchrome-ec-49abac39678928a242f94115f523ba462146412a.tar.gz
Default charger current derating to 5%
Not derating seems like a common pitfall that can cause problems with some chargers, so set a reasonably conservative default. 5% is chosen as the most common derating factor used among boards today (counting occurrences in source code, so this may undercount 5% occurrences because several projects set 5% at the project rather than board-level): 1. 38 x 5% 2. 23 x 4% 3. 6 x 10% 3. 2 x 3% 4. 1 x 2% Boards that currently configure this setting are modified only to continue building without warnings regardless of whether they use the new default value in order to signal that they were explicitly configured. BUG=b:260774380 TEST=make buildall / zmake build -a BRANCH=none Change-Id: I017849d38572fbc48090ae1fa2c539b808e426f9 Signed-off-by: Peter Marheine <pmarheine@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/4109651 Reviewed-by: Daisuke Nojiri <dnojiri@chromium.org> Code-Coverage: Zoss <zoss-cl-coverage@prod.google.com>
-rw-r--r--baseboard/grunt/baseboard.h1
-rw-r--r--baseboard/octopus/baseboard.h2
-rw-r--r--board/anahera/board.h1
-rw-r--r--board/atlas/board.h1
-rw-r--r--board/beetley/board.h1
-rw-r--r--board/bellis/board.h1
-rw-r--r--board/blipper/board.h1
-rw-r--r--board/boten/board.h1
-rw-r--r--board/bugzzy/board.h1
-rw-r--r--board/burnet/board.h1
-rw-r--r--board/cappy2/board.h1
-rw-r--r--board/cerise/board.h1
-rw-r--r--board/coachz/board.h1
-rw-r--r--board/coral/board.h1
-rw-r--r--board/corori/board.h1
-rw-r--r--board/corori2/board.h1
-rw-r--r--board/cret/board.h1
-rw-r--r--board/damu/board.h1
-rw-r--r--board/driblee/board.h1
-rw-r--r--board/drobit/board.h1
-rw-r--r--board/eldrid/board.h1
-rw-r--r--board/elm/board.h1
-rw-r--r--board/eve/board.h1
-rw-r--r--board/ezkinil/board.h1
-rw-r--r--board/felwinter/board.h1
-rw-r--r--board/fennel/board.h1
-rw-r--r--board/gelarshie/board.h1
-rw-r--r--board/gimble/board.h1
-rw-r--r--board/gooey/board.h1
-rw-r--r--board/homestar/board.h1
-rw-r--r--board/icarus/board.h1
-rw-r--r--board/jacuzzi/board.h1
-rw-r--r--board/kappa/board.h1
-rw-r--r--board/lalala/board.h1
-rw-r--r--board/madoo/board.h1
-rw-r--r--board/magolor/board.h1
-rw-r--r--board/makomo/board.h1
-rw-r--r--board/metaknight/board.h1
-rw-r--r--board/mithrax/board.h1
-rw-r--r--board/mrbland/board.h1
-rw-r--r--board/munna/board.h1
-rw-r--r--board/nautilus/board.h1
-rw-r--r--board/nocturne/board.h1
-rw-r--r--board/pico/board.h1
-rw-r--r--board/pompom/board.h1
-rw-r--r--board/quackingstick/board.h1
-rw-r--r--board/rammus/board.h1
-rw-r--r--board/redrix/board.h1
-rw-r--r--board/reef/board.h1
-rw-r--r--board/reef_it8320/board.h1
-rw-r--r--board/reef_mchp/board.h1
-rw-r--r--board/sasuke/board.h1
-rw-r--r--board/sasukette/board.h1
-rw-r--r--board/stern/board.h1
-rw-r--r--board/storo/board.h1
-rw-r--r--board/taeko/board.h1
-rw-r--r--board/taniks/board.h1
-rw-r--r--board/vell/board.h1
-rw-r--r--board/vilboz/board.h1
-rw-r--r--board/waddledoo/board.h1
-rw-r--r--board/waddledoo2/board.h1
-rw-r--r--board/willow/board.h1
-rw-r--r--board/wormdingler/board.h1
-rw-r--r--docs/low_battery_startup.md10
-rw-r--r--include/config.h12
-rw-r--r--zephyr/Kconfig.usbc12
-rw-r--r--zephyr/test/drivers/default/prj.conf3
67 files changed, 98 insertions, 3 deletions
diff --git a/baseboard/grunt/baseboard.h b/baseboard/grunt/baseboard.h
index bdbec1e0d2..30ffb885a2 100644
--- a/baseboard/grunt/baseboard.h
+++ b/baseboard/grunt/baseboard.h
@@ -74,6 +74,7 @@
*/
#define CONFIG_CHARGER_DEFAULT_CURRENT_LIMIT 512
#define CONFIG_CHARGER_MIN_INPUT_CURRENT_LIMIT 512
+#undef CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT
#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 5
#define CONFIG_CHARGER_ISL9238
#define CONFIG_CHARGER_SENSE_RESISTOR 10
diff --git a/baseboard/octopus/baseboard.h b/baseboard/octopus/baseboard.h
index 42093ab771..2913a014d0 100644
--- a/baseboard/octopus/baseboard.h
+++ b/baseboard/octopus/baseboard.h
@@ -126,6 +126,7 @@
#undef CONFIG_EXTPOWER_DEBOUNCE_MS
#define CONFIG_EXTPOWER_DEBOUNCE_MS 200
/* Charger seems to overdraw by about 5% */
+#undef CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT
#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 5
#elif defined(VARIANT_OCTOPUS_CHARGER_BQ25703)
#define CONFIG_CHARGER_BQ25703
@@ -136,6 +137,7 @@
#undef CONFIG_EXTPOWER_DEBOUNCE_MS
#define CONFIG_EXTPOWER_DEBOUNCE_MS 50
/* Charger seems to overdraw by about 5% */
+#undef CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT
#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 5
#elif defined(CONFIG_CHARGER_RUNTIME_CONFIG)
#define CONFIG_CHARGER_ISL9238
diff --git a/board/anahera/board.h b/board/anahera/board.h
index 82ba5a4e1c..517e934f87 100644
--- a/board/anahera/board.h
+++ b/board/anahera/board.h
@@ -33,6 +33,7 @@
#define CONFIG_USB_PORT_POWER_DUMB
#define CONFIG_USBC_RETIMER_PS8811
+#undef CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT
#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 5
/* USB Type C and USB PD defines */
diff --git a/board/atlas/board.h b/board/atlas/board.h
index 3dbce640bb..144afda14c 100644
--- a/board/atlas/board.h
+++ b/board/atlas/board.h
@@ -79,6 +79,7 @@
#define CONFIG_CHARGER_DISCHARGE_ON_AC
#define CONFIG_CHARGER_DEFAULT_CURRENT_LIMIT 512
#define CONFIG_CHARGER_MIN_INPUT_CURRENT_LIMIT 512
+#undef CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT
#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 5
#define CONFIG_CHARGER_PROFILE_OVERRIDE
#define CONFIG_CHARGER_PSYS
diff --git a/board/beetley/board.h b/board/beetley/board.h
index b05b8e2eb5..f2d43534fa 100644
--- a/board/beetley/board.h
+++ b/board/beetley/board.h
@@ -31,6 +31,7 @@
* b/147463641: The charger IC seems to overdraw ~4%, therefore we
* reduce our target accordingly.
*/
+#undef CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT
#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 4
#define PD_MAX_VOLTAGE_MV 20000
#define CONFIG_CHARGER_SENSE_RESISTOR_AC 10
diff --git a/board/bellis/board.h b/board/bellis/board.h
index 0741de5dc7..7720b5a391 100644
--- a/board/bellis/board.h
+++ b/board/bellis/board.h
@@ -40,6 +40,7 @@
#define CONFIG_BATTERY_HW_PRESENT_CUSTOM
#define CONFIG_CHARGER_PSYS
+#undef CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT
#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 5
#define CONFIG_CHARGER_RUNTIME_CONFIG
diff --git a/board/blipper/board.h b/board/blipper/board.h
index 896ebec76a..1a911da1df 100644
--- a/board/blipper/board.h
+++ b/board/blipper/board.h
@@ -33,6 +33,7 @@
* b/147463641: The charger IC seems to overdraw ~4%, therefore we
* reduce our target accordingly.
*/
+#undef CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT
#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 4
/* DAC for PSYS */
diff --git a/board/boten/board.h b/board/boten/board.h
index 2e607f73c1..f429d7c942 100644
--- a/board/boten/board.h
+++ b/board/boten/board.h
@@ -36,6 +36,7 @@
* b/147463641: The charger IC seems to overdraw ~4%, therefore we
* reduce our target accordingly.
*/
+#undef CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT
#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 4
/* DAC for PSYS */
diff --git a/board/bugzzy/board.h b/board/bugzzy/board.h
index 45bdfdc9f3..b62928b5e1 100644
--- a/board/bugzzy/board.h
+++ b/board/bugzzy/board.h
@@ -47,6 +47,7 @@
* b/147463641: The charger IC seems to overdraw ~4%, therefore we
* reduce our target accordingly.
*/
+#undef CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT
#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 4
#define CONFIG_BATTERY_CHECK_CHARGE_TEMP_LIMITS
#define CONFIG_CHARGER_PROFILE_OVERRIDE
diff --git a/board/burnet/board.h b/board/burnet/board.h
index 5199ae4aaf..6d6870da2b 100644
--- a/board/burnet/board.h
+++ b/board/burnet/board.h
@@ -31,6 +31,7 @@
#define CONFIG_BATTERY_COUNT 1
#define CONFIG_CHARGER_PSYS
+#undef CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT
#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 5
#define CONFIG_BC12_DETECT_PI3USB9201
diff --git a/board/cappy2/board.h b/board/cappy2/board.h
index 8f503b1bcc..d9b027eed9 100644
--- a/board/cappy2/board.h
+++ b/board/cappy2/board.h
@@ -43,6 +43,7 @@
* b/147463641: The charger IC seems to overdraw ~4%, therefore we
* reduce our target accordingly.
*/
+#undef CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT
#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 4
/* Keyboard */
diff --git a/board/cerise/board.h b/board/cerise/board.h
index d2c58e9f6e..64b04e35aa 100644
--- a/board/cerise/board.h
+++ b/board/cerise/board.h
@@ -28,6 +28,7 @@
#define CONFIG_BATTERY_HW_PRESENT_CUSTOM
#define CONFIG_CHARGER_PSYS
+#undef CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT
#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 5
#define CONFIG_CHARGER_RUNTIME_CONFIG
diff --git a/board/coachz/board.h b/board/coachz/board.h
index 70594d3efa..e0786075df 100644
--- a/board/coachz/board.h
+++ b/board/coachz/board.h
@@ -40,6 +40,7 @@
#define CONFIG_BATTERY_FUEL_GAUGE
#define CONFIG_BATTERY_VENDOR_PARAM
+#undef CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT
#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 5
/* BC 1.2 Charger */
diff --git a/board/coral/board.h b/board/coral/board.h
index cea83ef4a5..4b570db1e5 100644
--- a/board/coral/board.h
+++ b/board/coral/board.h
@@ -25,6 +25,7 @@
#define CONFIG_CMD_CHARGER_ADC_AMON_BMON
#define CONFIG_CHARGER_SENSE_RESISTOR 10
#define CONFIG_CHARGER_SENSE_RESISTOR_AC 10
+#undef CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT
#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 5
#define BD9995X_IOUT_GAIN_SELECT \
BD9995X_CMD_PMON_IOUT_CTRL_SET_IOUT_GAIN_SET_20V
diff --git a/board/corori/board.h b/board/corori/board.h
index 646b14227d..16628d4619 100644
--- a/board/corori/board.h
+++ b/board/corori/board.h
@@ -32,6 +32,7 @@
* b/147463641: The charger IC seems to overdraw ~4%, therefore we
* reduce our target accordingly.
*/
+#undef CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT
#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 4
/* LED defines */
diff --git a/board/corori2/board.h b/board/corori2/board.h
index c62cade1c3..5d4d810dd1 100644
--- a/board/corori2/board.h
+++ b/board/corori2/board.h
@@ -54,6 +54,7 @@
* b/147463641: The charger IC seems to overdraw ~4%, therefore we
* reduce our target accordingly.
*/
+#undef CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT
#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 4
/*
diff --git a/board/cret/board.h b/board/cret/board.h
index eb6b261cdf..9dc2edb265 100644
--- a/board/cret/board.h
+++ b/board/cret/board.h
@@ -38,6 +38,7 @@
* b/147463641: The charger IC seems to overdraw ~4%, therefore we
* reduce our target accordingly.
*/
+#undef CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT
#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 4
#define CONFIG_CHARGER_PROFILE_OVERRIDE
#define CHARGING_CURRENT_1100MA 1100
diff --git a/board/damu/board.h b/board/damu/board.h
index 16e03cf45c..5700954484 100644
--- a/board/damu/board.h
+++ b/board/damu/board.h
@@ -28,6 +28,7 @@
#define CONFIG_BATTERY_HW_PRESENT_CUSTOM
#define CONFIG_CHARGER_PSYS
+#undef CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT
#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 5
#define CONFIG_CHARGER_RUNTIME_CONFIG
diff --git a/board/driblee/board.h b/board/driblee/board.h
index 514fe584ff..e2d51723c0 100644
--- a/board/driblee/board.h
+++ b/board/driblee/board.h
@@ -35,6 +35,7 @@
* b/147463641: The charger IC seems to overdraw ~4%, therefore we
* reduce our target accordingly.
*/
+#undef CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT
#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 4
#define CONFIG_MATH_UTIL
#define CONFIG_CHARGER_PROFILE_OVERRIDE
diff --git a/board/drobit/board.h b/board/drobit/board.h
index bf3e64ae5a..c8e51962fa 100644
--- a/board/drobit/board.h
+++ b/board/drobit/board.h
@@ -89,6 +89,7 @@
/* charger defines */
#define CONFIG_CHARGER_SENSE_RESISTOR 10
#define CONFIG_CHARGER_SENSE_RESISTOR_AC 10
+#undef CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT
#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 2
/*
diff --git a/board/eldrid/board.h b/board/eldrid/board.h
index 8cfac4d8bc..84c04217d8 100644
--- a/board/eldrid/board.h
+++ b/board/eldrid/board.h
@@ -94,6 +94,7 @@
#define CONFIG_CHARGER_SENSE_RESISTOR 10
#define CONFIG_CHARGER_SENSE_RESISTOR_AC 10
/* OEM requested 10% derating */
+#undef CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT
#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 10
/* Retimer */
diff --git a/board/elm/board.h b/board/elm/board.h
index 6e4e705604..42c8e06c35 100644
--- a/board/elm/board.h
+++ b/board/elm/board.h
@@ -45,6 +45,7 @@
#define CONFIG_CHARGER_SENSE_RESISTOR 10
#define CONFIG_CHARGER_SENSE_RESISTOR_AC 20
#define CONFIG_CHARGER_DISCHARGE_ON_AC
+#undef CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT
#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 5
#define CONFIG_CHIPSET_MT817X
#define CONFIG_CMD_TYPEC
diff --git a/board/eve/board.h b/board/eve/board.h
index e3623979c3..a5cade1cc8 100644
--- a/board/eve/board.h
+++ b/board/eve/board.h
@@ -102,6 +102,7 @@
#define CONFIG_CHARGER_DISCHARGE_ON_AC
#define CONFIG_CHARGER_DEFAULT_CURRENT_LIMIT 512
#define CONFIG_CHARGER_MIN_INPUT_CURRENT_LIMIT 512
+#undef CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT
#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 5
#define CONFIG_CHARGER_MAINTAIN_VBAT
#define CONFIG_CHARGER_PROFILE_OVERRIDE
diff --git a/board/ezkinil/board.h b/board/ezkinil/board.h
index 5c8fd2c075..66c01a4efb 100644
--- a/board/ezkinil/board.h
+++ b/board/ezkinil/board.h
@@ -17,6 +17,7 @@
#define CONFIG_KEYBOARD_FACTORY_TEST
/* charger margin */
+#undef CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT
#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 5
/* Motion sensing drivers */
diff --git a/board/felwinter/board.h b/board/felwinter/board.h
index 0ca6a59b9c..5327e8fec2 100644
--- a/board/felwinter/board.h
+++ b/board/felwinter/board.h
@@ -179,6 +179,7 @@
#define CONFIG_CHARGE_RAMP_SW
#define CONFIG_CHARGER_SENSE_RESISTOR 10
#define CONFIG_CHARGER_SENSE_RESISTOR_AC 10
+#undef CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT
#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 10
#define CONFIG_KEYBOARD_REFRESH_ROW3
diff --git a/board/fennel/board.h b/board/fennel/board.h
index 42e1fcd451..e00c37c4e9 100644
--- a/board/fennel/board.h
+++ b/board/fennel/board.h
@@ -26,6 +26,7 @@
#define CONFIG_BATTERY_HW_PRESENT_CUSTOM
#define CONFIG_CHARGER_PSYS
+#undef CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT
#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 5
#define CONFIG_CHARGER_RUNTIME_CONFIG
diff --git a/board/gelarshie/board.h b/board/gelarshie/board.h
index 737f005639..65016ceb75 100644
--- a/board/gelarshie/board.h
+++ b/board/gelarshie/board.h
@@ -44,6 +44,7 @@
#define CONFIG_BATTERY_VENDOR_PARAM
/* charger margin */
+#undef CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT
#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 5
/* Enable PD3.0 */
diff --git a/board/gimble/board.h b/board/gimble/board.h
index 1d4099e7eb..3fd3adcafa 100644
--- a/board/gimble/board.h
+++ b/board/gimble/board.h
@@ -197,6 +197,7 @@
#define CONFIG_CHARGER_BQ25710_SENSE_RESISTOR_AC 10
#define CONFIG_CHARGER_BQ25710_PSYS_SENSING
/* OEM requested 10% derating */
+#undef CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT
#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 10
/* PROCHOT defines */
diff --git a/board/gooey/board.h b/board/gooey/board.h
index fde32f8866..82aca107af 100644
--- a/board/gooey/board.h
+++ b/board/gooey/board.h
@@ -36,6 +36,7 @@
* b/147463641: The charger IC seems to overdraw ~4%, therefore we
* reduce our target accordingly.
*/
+#undef CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT
#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 4
/* DAC for PSYS */
diff --git a/board/homestar/board.h b/board/homestar/board.h
index 60d943b300..fff7ad7f77 100644
--- a/board/homestar/board.h
+++ b/board/homestar/board.h
@@ -28,6 +28,7 @@
#define CONFIG_BATTERY_VENDOR_PARAM
/* charger margin */
+#undef CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT
#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 5
/* Enable PD3.0 */
diff --git a/board/icarus/board.h b/board/icarus/board.h
index ca1a236307..5fa752c518 100644
--- a/board/icarus/board.h
+++ b/board/icarus/board.h
@@ -24,6 +24,7 @@
#define CONFIG_BATTERY_HW_PRESENT_CUSTOM
#define CONFIG_CHARGER_PSYS
+#undef CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT
#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 5
#define CONFIG_CHARGER_RUNTIME_CONFIG
diff --git a/board/jacuzzi/board.h b/board/jacuzzi/board.h
index d5d0523790..3d50b41297 100644
--- a/board/jacuzzi/board.h
+++ b/board/jacuzzi/board.h
@@ -34,6 +34,7 @@
#define CONFIG_BATTERY_HW_PRESENT_CUSTOM
#define CONFIG_CHARGER_PSYS
+#undef CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT
#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 5
#define CONFIG_CHARGER_RUNTIME_CONFIG
diff --git a/board/kappa/board.h b/board/kappa/board.h
index 5c49053a7b..0911d50951 100644
--- a/board/kappa/board.h
+++ b/board/kappa/board.h
@@ -26,6 +26,7 @@
#define CONFIG_BATTERY_COUNT 1
#define CONFIG_CHARGER_PSYS
+#undef CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT
#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 5
#define CONFIG_BC12_DETECT_PI3USB9201
diff --git a/board/lalala/board.h b/board/lalala/board.h
index 2996ad3613..f9aa2482b0 100644
--- a/board/lalala/board.h
+++ b/board/lalala/board.h
@@ -37,6 +37,7 @@
* b/147463641: The charger IC seems to overdraw ~4%, therefore we
* reduce our target accordingly.
*/
+#undef CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT
#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 4
/* GPIO for C1 interrupts, for baseboard use */
diff --git a/board/madoo/board.h b/board/madoo/board.h
index 0d5e24c2a0..1e7118ba28 100644
--- a/board/madoo/board.h
+++ b/board/madoo/board.h
@@ -23,6 +23,7 @@
* b/147463641: The charger IC seems to overdraw ~4%, therefore we
* reduce our target accordingly.
*/
+#undef CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT
#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 4
#define CONFIG_OCPC
#undef CONFIG_CHARGER_SINGLE_CHIP
diff --git a/board/magolor/board.h b/board/magolor/board.h
index beb2cc279c..1cb996303b 100644
--- a/board/magolor/board.h
+++ b/board/magolor/board.h
@@ -49,6 +49,7 @@
* b/147463641: The charger IC seems to overdraw ~4%, therefore we
* reduce our target accordingly.
*/
+#undef CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT
#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 4
/* GPIO for C1 interrupts, for baseboard use */
diff --git a/board/makomo/board.h b/board/makomo/board.h
index 86e5e78862..e05e15c13d 100644
--- a/board/makomo/board.h
+++ b/board/makomo/board.h
@@ -27,6 +27,7 @@
#define CONFIG_BATTERY_HW_PRESENT_CUSTOM
#define CONFIG_CHARGER_PSYS
+#undef CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT
#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 5
#define CONFIG_CHARGER_RUNTIME_CONFIG
diff --git a/board/metaknight/board.h b/board/metaknight/board.h
index 79027a3e9c..cab1501256 100644
--- a/board/metaknight/board.h
+++ b/board/metaknight/board.h
@@ -26,6 +26,7 @@
* b/147463641: The charger IC seems to overdraw ~4%, therefore we
* reduce our target accordingly.
*/
+#undef CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT
#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 4
/*
diff --git a/board/mithrax/board.h b/board/mithrax/board.h
index 0b6ea04bd4..22878a936d 100644
--- a/board/mithrax/board.h
+++ b/board/mithrax/board.h
@@ -176,6 +176,7 @@
#define CONFIG_CHARGE_RAMP_SW
#define CONFIG_CHARGER_SENSE_RESISTOR 10
#define CONFIG_CHARGER_SENSE_RESISTOR_AC 10
+#undef CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT
#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 10
/* RGB Keyboard */
diff --git a/board/mrbland/board.h b/board/mrbland/board.h
index cc6207ca83..25b1805e2a 100644
--- a/board/mrbland/board.h
+++ b/board/mrbland/board.h
@@ -24,6 +24,7 @@
#define CONFIG_BATTERY_FUEL_GAUGE
#define CONFIG_BATTERY_VENDOR_PARAM
+#undef CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT
#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 5
/* Enable PD3.0 */
diff --git a/board/munna/board.h b/board/munna/board.h
index 20194bed88..286f80aa38 100644
--- a/board/munna/board.h
+++ b/board/munna/board.h
@@ -40,6 +40,7 @@
#define CONFIG_BATTERY_HW_PRESENT_CUSTOM
#define CONFIG_CHARGER_PSYS
+#undef CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT
#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 5
#define CONFIG_CHARGER_RUNTIME_CONFIG
diff --git a/board/nautilus/board.h b/board/nautilus/board.h
index 2b4f25538d..e3a136c261 100644
--- a/board/nautilus/board.h
+++ b/board/nautilus/board.h
@@ -85,6 +85,7 @@
#define CONFIG_CHARGER_PSYS
#define CONFIG_CHARGER_SENSE_RESISTOR 10
#define CONFIG_CHARGER_SENSE_RESISTOR_AC 20
+#undef CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT
#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 4 /* margining */
#define CONFIG_CMD_CHARGER_ADC_AMON_BMON
#define CONFIG_HOSTCMD_PD_CONTROL
diff --git a/board/nocturne/board.h b/board/nocturne/board.h
index 73700b8480..6c46a2949b 100644
--- a/board/nocturne/board.h
+++ b/board/nocturne/board.h
@@ -77,6 +77,7 @@
* Nocturne seems to overdraw its set input current limit by about 5%.
* Request at most 95% of what's desired.
*/
+#undef CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT
#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
diff --git a/board/pico/board.h b/board/pico/board.h
index 97128b54f1..1cfed1eba1 100644
--- a/board/pico/board.h
+++ b/board/pico/board.h
@@ -28,6 +28,7 @@
#define CONFIG_BATTERY_HW_PRESENT_CUSTOM
#define CONFIG_CHARGER_PSYS
+#undef CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT
#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 5
#define CONFIG_CHARGER_RUNTIME_CONFIG
diff --git a/board/pompom/board.h b/board/pompom/board.h
index 774b339273..de7fd92a75 100644
--- a/board/pompom/board.h
+++ b/board/pompom/board.h
@@ -23,6 +23,7 @@
/* BC 1.2 Charger */
#define CONFIG_BC12_DETECT_PI3USB9201
+#undef CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT
#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 5
/* USB */
diff --git a/board/quackingstick/board.h b/board/quackingstick/board.h
index a8ec5a4231..3cc4ab2b12 100644
--- a/board/quackingstick/board.h
+++ b/board/quackingstick/board.h
@@ -32,6 +32,7 @@
#define CONFIG_BATTERY_FUEL_GAUGE
#define CONFIG_BATTERY_VENDOR_PARAM
+#undef CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT
#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 5
/* BC 1.2 Charger */
diff --git a/board/rammus/board.h b/board/rammus/board.h
index 975417df9a..096d419fe9 100644
--- a/board/rammus/board.h
+++ b/board/rammus/board.h
@@ -89,6 +89,7 @@
#define CONFIG_CHARGER_PSYS
#define CONFIG_CHARGER_SENSE_RESISTOR 10
#define CONFIG_CHARGER_SENSE_RESISTOR_AC 20
+#undef CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT
#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 4 /* charger margin */
#define CONFIG_CMD_CHARGER_ADC_AMON_BMON
#define CONFIG_HOSTCMD_PD_CONTROL
diff --git a/board/redrix/board.h b/board/redrix/board.h
index 205b9e1c69..b865667f63 100644
--- a/board/redrix/board.h
+++ b/board/redrix/board.h
@@ -66,6 +66,7 @@
#define USB_PORT_COUNT 1
#define CONFIG_USB_PORT_POWER_DUMB
+#undef CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT
#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 6
/* USB Type C and USB PD defines */
diff --git a/board/reef/board.h b/board/reef/board.h
index cc1783e43a..b5bdd574a8 100644
--- a/board/reef/board.h
+++ b/board/reef/board.h
@@ -52,6 +52,7 @@
#define CONFIG_CHARGER_DISCHARGE_ON_AC
#define CONFIG_CHARGER_DEFAULT_CURRENT_LIMIT 512
#define CONFIG_CHARGER_MIN_INPUT_CURRENT_LIMIT 512
+#undef CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT
#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 5
#define CONFIG_CHARGER_LIMIT_POWER_THRESH_BAT_PCT 1
#define CONFIG_CHARGER_LIMIT_POWER_THRESH_CHG_MW 18000
diff --git a/board/reef_it8320/board.h b/board/reef_it8320/board.h
index dbccc6eeee..87767e5c23 100644
--- a/board/reef_it8320/board.h
+++ b/board/reef_it8320/board.h
@@ -50,6 +50,7 @@
#define CONFIG_CHARGER_DISCHARGE_ON_AC
#define CONFIG_CHARGER_DEFAULT_CURRENT_LIMIT 512
#define CONFIG_CHARGER_MIN_INPUT_CURRENT_LIMIT 512
+#undef CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT
#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 5
#define CONFIG_CHARGER_LIMIT_POWER_THRESH_BAT_PCT 1
#define CONFIG_CHARGER_LIMIT_POWER_THRESH_CHG_MW 18000
diff --git a/board/reef_mchp/board.h b/board/reef_mchp/board.h
index 925f271ffd..f9db14a01e 100644
--- a/board/reef_mchp/board.h
+++ b/board/reef_mchp/board.h
@@ -55,6 +55,7 @@
#define CONFIG_CHARGER_DISCHARGE_ON_AC
#define CONFIG_CHARGER_DEFAULT_CURRENT_LIMIT 512
#define CONFIG_CHARGER_MIN_INPUT_CURRENT_LIMIT 512
+#undef CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT
#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 5
#define CONFIG_CHARGER_LIMIT_POWER_THRESH_BAT_PCT 1
#define CONFIG_CHARGER_LIMIT_POWER_THRESH_CHG_MW 18000
diff --git a/board/sasuke/board.h b/board/sasuke/board.h
index df390d2d99..f43c287d8b 100644
--- a/board/sasuke/board.h
+++ b/board/sasuke/board.h
@@ -33,6 +33,7 @@
* b/147463641: The charger IC seems to overdraw ~4%, therefore we
* reduce our target accordingly.
*/
+#undef CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT
#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 4
#define CONFIG_OCPC
#define CONFIG_CHARGER_PROFILE_OVERRIDE
diff --git a/board/sasukette/board.h b/board/sasukette/board.h
index f06a89a5f0..848be6dffa 100644
--- a/board/sasukette/board.h
+++ b/board/sasukette/board.h
@@ -40,6 +40,7 @@
* b/147463641: The charger IC seems to overdraw ~4%, therefore we
* reduce our target accordingly.
*/
+#undef CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT
#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 4
/* LED */
diff --git a/board/stern/board.h b/board/stern/board.h
index d7d96ea67c..aa41df9329 100644
--- a/board/stern/board.h
+++ b/board/stern/board.h
@@ -28,6 +28,7 @@
#define CONFIG_BATTERY_HW_PRESENT_CUSTOM
#define CONFIG_CHARGER_PSYS
+#undef CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT
#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 5
#define CONFIG_CHARGER_RUNTIME_CONFIG
diff --git a/board/storo/board.h b/board/storo/board.h
index 1f33ce53b0..930b92f95a 100644
--- a/board/storo/board.h
+++ b/board/storo/board.h
@@ -35,6 +35,7 @@
* b/147463641: The charger IC seems to overdraw ~4%, therefore we
* reduce our target accordingly.
*/
+#undef CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT
#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 4
#define CONFIG_OCPC
#undef CONFIG_CHARGER_SINGLE_CHIP
diff --git a/board/taeko/board.h b/board/taeko/board.h
index a3ae9abb00..24cf2630a5 100644
--- a/board/taeko/board.h
+++ b/board/taeko/board.h
@@ -27,6 +27,7 @@
#define CONFIG_MP2964
/* OEM requested 5% charger current margin */
+#undef CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT
#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 5
/* LED */
diff --git a/board/taniks/board.h b/board/taniks/board.h
index a301f3b458..1c874d6b83 100644
--- a/board/taniks/board.h
+++ b/board/taniks/board.h
@@ -37,6 +37,7 @@
#define CONFIG_HIBERNATE_PSL_VCC1_RST_WAKEUP
/* OEM requested 5% charger margin */
+#undef CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT
#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 5
/* LED */
diff --git a/board/vell/board.h b/board/vell/board.h
index 3a7d97858c..ca4d055b9b 100644
--- a/board/vell/board.h
+++ b/board/vell/board.h
@@ -61,6 +61,7 @@
#undef CONFIG_SYV682X_HV_ILIM
#define CONFIG_SYV682X_HV_ILIM SYV682X_HV_ILIM_5_50
+#undef CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT
#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 4
/* TODO: b/177608416 - measure and check these values on brya */
diff --git a/board/vilboz/board.h b/board/vilboz/board.h
index a481082f0f..5bda55b8d3 100644
--- a/board/vilboz/board.h
+++ b/board/vilboz/board.h
@@ -21,6 +21,7 @@
#define GPIO_USB2_ILIM_SEL GPIO_USB_A1_CHARGE_EN_DB_L
#define CONFIG_CHARGER_PROFILE_OVERRIDE
+#undef CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT
#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 5
/* Motion sensing drivers */
diff --git a/board/waddledoo/board.h b/board/waddledoo/board.h
index 23a89c84d6..a53507ecad 100644
--- a/board/waddledoo/board.h
+++ b/board/waddledoo/board.h
@@ -47,6 +47,7 @@
* b/147463641: The charger IC seems to overdraw ~4%, therefore we
* reduce our target accordingly.
*/
+#undef CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT
#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 4
#define CONFIG_OCPC
#undef CONFIG_CHARGER_SINGLE_CHIP
diff --git a/board/waddledoo2/board.h b/board/waddledoo2/board.h
index 3b4587037d..428a4cc3fc 100644
--- a/board/waddledoo2/board.h
+++ b/board/waddledoo2/board.h
@@ -32,6 +32,7 @@
* b/147463641: The charger IC seems to overdraw ~4%, therefore we
* reduce our target accordingly.
*/
+#undef CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT
#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 4
#define CONFIG_OCPC
#undef CONFIG_CHARGER_SINGLE_CHIP
diff --git a/board/willow/board.h b/board/willow/board.h
index 315c206a07..013f7df035 100644
--- a/board/willow/board.h
+++ b/board/willow/board.h
@@ -27,6 +27,7 @@
#define CONFIG_BATTERY_HW_PRESENT_CUSTOM
#define CONFIG_CHARGER_PSYS
+#undef CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT
#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 5
#define CONFIG_CHARGER_RUNTIME_CONFIG
diff --git a/board/wormdingler/board.h b/board/wormdingler/board.h
index 447846c509..595e16eac8 100644
--- a/board/wormdingler/board.h
+++ b/board/wormdingler/board.h
@@ -24,6 +24,7 @@
#define CONFIG_BATTERY_FUEL_GAUGE
#define CONFIG_BATTERY_VENDOR_PARAM
+#undef CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT
#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 5
/* Enable PD3.0 */
diff --git a/docs/low_battery_startup.md b/docs/low_battery_startup.md
index 1f94d4956e..c82268a308 100644
--- a/docs/low_battery_startup.md
+++ b/docs/low_battery_startup.md
@@ -427,3 +427,13 @@ Optional.
Similar to `CONFIG_CHARGER_MIN_POWER_MW_FOR_POWER_ON`, this is the minimum
charger power needed to boot even when the battery is less than
`CONFIG_CHARGER_MIN_BAT_PCT_FOR_POWER_ON_WITH_AC`
+
+### `CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT`
+
+Optional, default 5%.
+
+This option reduces the charger's programmed current limit below the detected
+current limit for a given charger in an attempt to ensure that load transients
+won't overcurrent the source. Devices that require a lot of power to boot may
+need to either decrease the derating factor (if behavior remains acceptable when
+decreased) or increase `MIN_POWER_MW` settings to compensate. \ No newline at end of file
diff --git a/include/config.h b/include/config.h
index 5a264f5619..ee9b354835 100644
--- a/include/config.h
+++ b/include/config.h
@@ -1076,10 +1076,20 @@
* and input current is limited to 1000 mA, the charger will be given a limit
* of 960 mA.
*
+ * The default value is set to prevent most overcurrent conditions during load
+ * transients, because power supplies vary in their tolerance to such
+ * short-lived overcurrent conditions and many chargers respond slowly to those
+ * transients.
+ *
+ * Projects SHOULD characterize system behavior to tune for system
+ * behavior and charger response in order to optimize this (allowing the
+ * derating to be reduced) and ensure transients do not exceed the range of
+ * acceptable current (which might require greater derating).
+ *
* Boards requiring more complex control over input current should leave this
* undefined and override board_set_charge_limit instead.
*/
-#undef CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT
+#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 5
/*
* This config option is used to enable IDCHG trigger for prochot. This macro
diff --git a/zephyr/Kconfig.usbc b/zephyr/Kconfig.usbc
index 082f96ca7f..53c918816c 100644
--- a/zephyr/Kconfig.usbc
+++ b/zephyr/Kconfig.usbc
@@ -66,7 +66,7 @@ config PLATFORM_EC_CHARGER_MIN_INPUT_CURRENT_LIMIT
config PLATFORM_EC_CHARGER_INPUT_CURRENT_DERATE_PCT
int "Charger input current derating percentage"
- default 0
+ default 5
depends on PLATFORM_EC_CHARGE_MANAGER
help
Setting this to a nonzero value causes actual charger current limits
@@ -80,6 +80,16 @@ config PLATFORM_EC_CHARGER_INPUT_CURRENT_DERATE_PCT
required, boards should override the board_set_charge_limit()
function instead of configuring this option.
+ The default value is set to prevent most overcurrent conditions during
+ load transients, because power supplies vary in their tolerance to
+ such short-lived overcurrent conditions and many chargers respond
+ slowly to those transients.
+
+ Projects SHOULD characterize system behavior to tune for system
+ behavior and charger response in order to optimize this (allowing the
+ derating to be reduced) and ensure transients do not exceed the range
+ of acceptable current (which might require greater derating).
+
config PLATFORM_EC_USBC_OCP
bool
help
diff --git a/zephyr/test/drivers/default/prj.conf b/zephyr/test/drivers/default/prj.conf
index 75a0556013..fbc7c4336b 100644
--- a/zephyr/test/drivers/default/prj.conf
+++ b/zephyr/test/drivers/default/prj.conf
@@ -10,4 +10,5 @@ CONFIG_PLATFORM_EC_VOLUME_BUTTONS=y
CONFIG_TASK_HOSTCMD_THREAD_MAIN=y
CONFIG_SYSTEM_FAKE=y
-CONFIG_GPIO_GET_CONFIG=y \ No newline at end of file
+CONFIG_GPIO_GET_CONFIG=y
+CONFIG_PLATFORM_EC_CHARGER_INPUT_CURRENT_DERATE_PCT=0