summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--baseboard/asurada/baseboard.h1
-rw-r--r--baseboard/asurada/usbc_config.c3
-rw-r--r--baseboard/brya/baseboard.h1
-rw-r--r--baseboard/cherry/baseboard.h1
-rw-r--r--baseboard/dedede/baseboard.h1
-rw-r--r--baseboard/goroh/baseboard.c3
-rw-r--r--baseboard/goroh/baseboard.h1
-rw-r--r--baseboard/grunt/baseboard.c3
-rw-r--r--baseboard/grunt/baseboard.h1
-rw-r--r--baseboard/guybrush/baseboard.c3
-rw-r--r--baseboard/guybrush/baseboard.h1
-rw-r--r--baseboard/hatch/baseboard.c3
-rw-r--r--baseboard/hatch/baseboard.h1
-rw-r--r--baseboard/herobrine/baseboard.h1
-rw-r--r--baseboard/intelrvp/baseboard.h1
-rw-r--r--baseboard/intelrvp/chg_usb_pd.c3
-rw-r--r--baseboard/kukui/baseboard.h1
-rw-r--r--baseboard/octopus/baseboard.c3
-rw-r--r--baseboard/octopus/baseboard.h1
-rw-r--r--baseboard/trogdor/baseboard.h1
-rw-r--r--baseboard/volteer/baseboard.h1
-rw-r--r--baseboard/volteer/charger.c3
-rw-r--r--baseboard/zork/baseboard.c3
-rw-r--r--baseboard/zork/baseboard.h1
-rw-r--r--board/agah/charger_isl9241.c3
-rw-r--r--board/anahera/charger.c3
-rw-r--r--board/atlas/board.c3
-rw-r--r--board/atlas/board.h1
-rw-r--r--board/banshee/charger.c3
-rw-r--r--board/beadrix/board.c4
-rw-r--r--board/beetley/board.c4
-rw-r--r--board/bellis/board.c3
-rw-r--r--board/blipper/board.c3
-rw-r--r--board/boten/board.c3
-rw-r--r--board/brya/charger.c3
-rw-r--r--board/bugzzy/board.c3
-rw-r--r--board/burnet/board.c3
-rw-r--r--board/cappy2/board.c3
-rw-r--r--board/cerise/board.c3
-rw-r--r--board/cherry/board.c3
-rw-r--r--board/coachz/board.c3
-rw-r--r--board/coral/board.c3
-rw-r--r--board/coral/board.h1
-rw-r--r--board/corori/board.c3
-rw-r--r--board/corori2/board.c3
-rw-r--r--board/cret/board.c3
-rw-r--r--board/crota/charger.c3
-rw-r--r--board/damu/board.c3
-rw-r--r--board/dibbi/board.c4
-rw-r--r--board/dojo/board.c3
-rw-r--r--board/drawcia/board.c6
-rw-r--r--board/drawcia_riscv/board.c6
-rw-r--r--board/driblee/board.c3
-rw-r--r--board/drobit/board.c3
-rw-r--r--board/eldrid/board.c3
-rw-r--r--board/elm/board.c3
-rw-r--r--board/elm/board.h1
-rw-r--r--board/eve/board.c3
-rw-r--r--board/eve/board.h1
-rw-r--r--board/ezkinil/board.c3
-rw-r--r--board/felwinter/charger_isl9241.c3
-rw-r--r--board/fennel/board.c3
-rw-r--r--board/galtic/board.c4
-rw-r--r--board/gelarshie/board.c3
-rw-r--r--board/gimble/charger.c3
-rw-r--r--board/gooey/board.c3
-rw-r--r--board/haboki/board.c6
-rw-r--r--board/herobrine/usbc_config.c3
-rw-r--r--board/homestar/board.c3
-rw-r--r--board/icarus/board.c3
-rw-r--r--board/jacuzzi/board.c3
-rw-r--r--board/kano/charger.c3
-rw-r--r--board/kappa/board.c3
-rw-r--r--board/kingoftown/usbc_config.c3
-rw-r--r--board/kracko/board.c6
-rw-r--r--board/lalala/board.c3
-rw-r--r--board/lantis/board.c4
-rw-r--r--board/lazor/usbc_config.c3
-rw-r--r--board/madoo/board.c3
-rw-r--r--board/magolor/board.c3
-rw-r--r--board/makomo/board.c3
-rw-r--r--board/marzipan/board.c3
-rw-r--r--board/mchpevb1/board.c3
-rw-r--r--board/mchpevb1/board.h1
-rw-r--r--board/metaknight/board.c3
-rw-r--r--board/mithrax/charger_isl9241.c3
-rw-r--r--board/mrbland/board.c3
-rw-r--r--board/munna/board.c3
-rw-r--r--board/nami/board.c3
-rw-r--r--board/nami/board.h1
-rw-r--r--board/nautilus/board.c3
-rw-r--r--board/nautilus/board.h1
-rw-r--r--board/nocturne/board.c3
-rw-r--r--board/nocturne/board.h1
-rw-r--r--board/oak/board.c3
-rw-r--r--board/oak/board.h1
-rw-r--r--board/osiris/charger.c3
-rw-r--r--board/pazquel/board.c3
-rw-r--r--board/pico/board.c3
-rw-r--r--board/pirika/board.c4
-rw-r--r--board/pompom/board.c3
-rw-r--r--board/poppy/board.c5
-rw-r--r--board/poppy/board.h1
-rw-r--r--board/primus/board.c7
-rw-r--r--board/quackingstick/board.c3
-rw-r--r--board/rammus/board.c3
-rw-r--r--board/rammus/board.h1
-rw-r--r--board/redrix/charger.c3
-rw-r--r--board/reef/board.c3
-rw-r--r--board/reef/board.h1
-rw-r--r--board/reef_it8320/board.c3
-rw-r--r--board/reef_it8320/board.h1
-rw-r--r--board/reef_mchp/board.c3
-rw-r--r--board/reef_mchp/board.h1
-rw-r--r--board/sasuke/board.c3
-rw-r--r--board/sasukette/board.c3
-rw-r--r--board/scarlet/board.c3
-rw-r--r--board/scarlet/board.h1
-rw-r--r--board/stern/board.c3
-rw-r--r--board/storo/board.c3
-rw-r--r--board/taeko/charger.c3
-rw-r--r--board/taniks/charger.c3
-rw-r--r--board/trogdor/usbc_config.c3
-rw-r--r--board/vell/charger.c3
-rw-r--r--board/vilboz/board.c3
-rw-r--r--board/volmar/charger.c3
-rw-r--r--board/waddledee/board.c4
-rw-r--r--board/waddledoo/board.c3
-rw-r--r--board/waddledoo2/board.c3
-rw-r--r--board/wheelie/board.c4
-rw-r--r--board/willow/board.c3
-rw-r--r--board/wormdingler/board.c3
-rw-r--r--common/charge_manager.c6
-rw-r--r--common/charge_state_v2.c5
-rw-r--r--docs/low_battery_startup.md25
-rw-r--r--include/charge_state_v2.h3
-rw-r--r--include/config.h19
-rw-r--r--zephyr/Kconfig.usbc20
-rw-r--r--zephyr/program/brya/prj.conf1
-rw-r--r--zephyr/program/herobrine/program.conf1
-rw-r--r--zephyr/program/herobrine/src/usbc_config.c3
-rw-r--r--zephyr/program/intelrvp/prj.conf1
-rw-r--r--zephyr/program/intelrvp/src/chg_usb_pd.c3
-rw-r--r--zephyr/program/nissa/program.conf1
-rw-r--r--zephyr/program/nissa/src/common.c3
-rw-r--r--zephyr/program/rex/prj.conf1
-rw-r--r--zephyr/program/rex/src/usbc_config.c3
-rw-r--r--zephyr/program/skyrim/prj.conf1
-rw-r--r--zephyr/program/skyrim/src/usbc_config.c3
-rw-r--r--zephyr/program/trogdor/lazor/prj.conf1
-rw-r--r--zephyr/program/trogdor/lazor/src/usbc_config.c3
-rw-r--r--zephyr/shim/include/config_chip.h6
-rw-r--r--zephyr/test/drivers/bc12_pi3usb9201/src/pi3usb9201.c8
-rw-r--r--zephyr/test/drivers/common/src/stubs.c3
-rw-r--r--zephyr/test/drivers/common_charger/src/test_charge_state_v2.c13
-rw-r--r--zephyr/test/drivers/testcase.yaml1
156 files changed, 243 insertions, 253 deletions
diff --git a/baseboard/asurada/baseboard.h b/baseboard/asurada/baseboard.h
index b40f2f50de..597515363c 100644
--- a/baseboard/asurada/baseboard.h
+++ b/baseboard/asurada/baseboard.h
@@ -61,6 +61,7 @@
#define CONFIG_CHARGE_RAMP_HW
#define CONFIG_CHARGER_DISCHARGE_ON_AC
#define CONFIG_CHARGER_INPUT_CURRENT 512
+#define CONFIG_CHARGER_MIN_INPUT_CURRENT_LIMIT 512
#define CONFIG_CHARGER_ISL9238C
#define CONFIG_CHARGER_MAINTAIN_VBAT
#define CONFIG_CHARGER_OTG
diff --git a/baseboard/asurada/usbc_config.c b/baseboard/asurada/usbc_config.c
index ecc882659f..57396121f5 100644
--- a/baseboard/asurada/usbc_config.c
+++ b/baseboard/asurada/usbc_config.c
@@ -311,8 +311,7 @@ void board_reset_pd_mcu(void)
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);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
void board_pd_vconn_ctrl(int port, enum usbpd_cc_pin cc_pin, int enabled)
diff --git a/baseboard/brya/baseboard.h b/baseboard/brya/baseboard.h
index 6748a8a777..b2d722fcd9 100644
--- a/baseboard/brya/baseboard.h
+++ b/baseboard/brya/baseboard.h
@@ -69,6 +69,7 @@
#define CONFIG_CHARGER
#define CONFIG_CHARGER_DISCHARGE_ON_AC
#define CONFIG_CHARGER_INPUT_CURRENT 512
+#define CONFIG_CHARGER_MIN_INPUT_CURRENT_LIMIT 512
#define CONFIG_CMD_CHARGER_DUMP
diff --git a/baseboard/cherry/baseboard.h b/baseboard/cherry/baseboard.h
index de3acda1d3..8cd2aacd1f 100644
--- a/baseboard/cherry/baseboard.h
+++ b/baseboard/cherry/baseboard.h
@@ -71,6 +71,7 @@
#define CONFIG_CHARGE_RAMP_HW
#define CONFIG_CHARGER_DISCHARGE_ON_AC
#define CONFIG_CHARGER_INPUT_CURRENT 512
+#define CONFIG_CHARGER_MIN_INPUT_CURRENT_LIMIT 512
#define CONFIG_CHARGER_ISL9238C
#define CONFIG_CHARGER_MAINTAIN_VBAT
/* Not used in boot flow, set to 0 to suppress system_can_boot_ap warning */
diff --git a/baseboard/dedede/baseboard.h b/baseboard/dedede/baseboard.h
index e581a0e8d0..e03d41ae21 100644
--- a/baseboard/dedede/baseboard.h
+++ b/baseboard/dedede/baseboard.h
@@ -165,6 +165,7 @@
#define CONFIG_CHARGER
#define CONFIG_CHARGER_DISCHARGE_ON_AC
#define CONFIG_CHARGER_INPUT_CURRENT 256
+#define CONFIG_CHARGER_MIN_INPUT_CURRENT_LIMIT 256
#define CONFIG_USB_CHARGER
#define CONFIG_TRICKLE_CHARGING
diff --git a/baseboard/goroh/baseboard.c b/baseboard/goroh/baseboard.c
index 8422030619..d1474f78a7 100644
--- a/baseboard/goroh/baseboard.c
+++ b/baseboard/goroh/baseboard.c
@@ -163,8 +163,7 @@ const struct cc_para_t *board_get_cc_tuning_parameter(enum usbpd_port port)
void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
int charge_mv)
{
- charge_set_input_current_limit(
- MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
void board_pd_vconn_ctrl(int port, enum usbpd_cc_pin cc_pin, int enabled)
diff --git a/baseboard/goroh/baseboard.h b/baseboard/goroh/baseboard.h
index 05c26d74a0..205621e040 100644
--- a/baseboard/goroh/baseboard.h
+++ b/baseboard/goroh/baseboard.h
@@ -58,6 +58,7 @@
#define CONFIG_CHARGE_RAMP_HW
#define CONFIG_CHARGER_DISCHARGE_ON_AC
#define CONFIG_CHARGER_INPUT_CURRENT 512
+#define CONFIG_CHARGER_MIN_INPUT_CURRENT_LIMIT 512
#define CONFIG_CHARGER_ISL9238C
#define CONFIG_CHARGER_MAINTAIN_VBAT
#define CONFIG_CHARGER_OTG
diff --git a/baseboard/grunt/baseboard.c b/baseboard/grunt/baseboard.c
index 50db1887f1..aef91f5e30 100644
--- a/baseboard/grunt/baseboard.c
+++ b/baseboard/grunt/baseboard.c
@@ -467,8 +467,7 @@ int board_set_active_charge_port(int port)
void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
int charge_mv)
{
- charge_set_input_current_limit(
- MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
/* Keyboard scan setting */
diff --git a/baseboard/grunt/baseboard.h b/baseboard/grunt/baseboard.h
index b83b274d49..e385b11b86 100644
--- a/baseboard/grunt/baseboard.h
+++ b/baseboard/grunt/baseboard.h
@@ -73,6 +73,7 @@
* See also b/111214767
*/
#define CONFIG_CHARGER_INPUT_CURRENT 512
+#define CONFIG_CHARGER_MIN_INPUT_CURRENT_LIMIT 512
#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 5
#define CONFIG_CHARGER_ISL9238
#define CONFIG_CHARGER_SENSE_RESISTOR 10
diff --git a/baseboard/guybrush/baseboard.c b/baseboard/guybrush/baseboard.c
index 654f73e7fe..b8b4b775a6 100644
--- a/baseboard/guybrush/baseboard.c
+++ b/baseboard/guybrush/baseboard.c
@@ -537,8 +537,7 @@ int board_aoz1380_set_vbus_source_current_limit(int port, enum tcpc_rp_value rp)
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);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
void sbu_fault_interrupt(enum ioex_signal signal)
diff --git a/baseboard/guybrush/baseboard.h b/baseboard/guybrush/baseboard.h
index 04b1e10c97..883bf27847 100644
--- a/baseboard/guybrush/baseboard.h
+++ b/baseboard/guybrush/baseboard.h
@@ -163,6 +163,7 @@
#define CONFIG_CHARGE_MANAGER
#define CONFIG_CHARGER_DISCHARGE_ON_AC
#define CONFIG_CHARGER_INPUT_CURRENT 512
+#define CONFIG_CHARGER_MIN_INPUT_CURRENT_LIMIT 512
#define CONFIG_CHARGER_ISL9241
#define CONFIG_CHARGER_SENSE_RESISTOR 10
#define CONFIG_CHARGER_SENSE_RESISTOR_AC 20
diff --git a/baseboard/hatch/baseboard.c b/baseboard/hatch/baseboard.c
index f5376700c5..9910f21880 100644
--- a/baseboard/hatch/baseboard.c
+++ b/baseboard/hatch/baseboard.c
@@ -351,8 +351,7 @@ int ppc_get_alert_status(int port)
void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
int charge_mv)
{
- charge_set_input_current_limit(
- MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
#ifdef USB_PD_PORT_TCPC_MST
diff --git a/baseboard/hatch/baseboard.h b/baseboard/hatch/baseboard.h
index d5d680e7bf..9ba148e91e 100644
--- a/baseboard/hatch/baseboard.h
+++ b/baseboard/hatch/baseboard.h
@@ -97,6 +97,7 @@
#define CONFIG_CHARGER_BQ25710
#define CONFIG_CHARGER_DISCHARGE_ON_AC
#define CONFIG_CHARGER_INPUT_CURRENT 512 /* Allow low-current USB charging */
+#define CONFIG_CHARGER_MIN_INPUT_CURRENT_LIMIT 512
#undef CONFIG_CHARGER_MIN_BAT_PCT_FOR_POWER_ON
#define CONFIG_CHARGER_MIN_BAT_PCT_FOR_POWER_ON 1
#define CONFIG_CHARGE_RAMP_HW
diff --git a/baseboard/herobrine/baseboard.h b/baseboard/herobrine/baseboard.h
index 0782612cb8..b1aabc6bd6 100644
--- a/baseboard/herobrine/baseboard.h
+++ b/baseboard/herobrine/baseboard.h
@@ -89,6 +89,7 @@
#define CONFIG_CHARGER_DISCHARGE_ON_AC
#define CONFIG_CHARGER_INPUT_CURRENT 512
+#define CONFIG_CHARGER_MIN_INPUT_CURRENT_LIMIT 512
#define CONFIG_CHARGER_MIN_POWER_MW_FOR_POWER_ON 10000
#define CONFIG_CHARGER_SENSE_RESISTOR 10
#define CONFIG_CHARGER_SENSE_RESISTOR_AC 20
diff --git a/baseboard/intelrvp/baseboard.h b/baseboard/intelrvp/baseboard.h
index b927632fc5..96acf8c562 100644
--- a/baseboard/intelrvp/baseboard.h
+++ b/baseboard/intelrvp/baseboard.h
@@ -69,6 +69,7 @@
#define CONFIG_CHARGER
#define CONFIG_CHARGER_DISCHARGE_ON_AC
#define CONFIG_CHARGER_INPUT_CURRENT 512
+#define CONFIG_CHARGER_MIN_INPUT_CURRENT_LIMIT 512
#define CONFIG_CHARGER_SENSE_RESISTOR 5
#define CONFIG_CHARGER_SENSE_RESISTOR_AC 10
#undef CONFIG_EXTPOWER_DEBOUNCE_MS
diff --git a/baseboard/intelrvp/chg_usb_pd.c b/baseboard/intelrvp/chg_usb_pd.c
index 95aeea0441..9fa7c60f44 100644
--- a/baseboard/intelrvp/chg_usb_pd.c
+++ b/baseboard/intelrvp/chg_usb_pd.c
@@ -129,6 +129,5 @@ int board_set_active_charge_port(int port)
void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
int charge_mv)
{
- charge_set_input_current_limit(
- MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
diff --git a/baseboard/kukui/baseboard.h b/baseboard/kukui/baseboard.h
index 9afc726861..4a5562fb04 100644
--- a/baseboard/kukui/baseboard.h
+++ b/baseboard/kukui/baseboard.h
@@ -62,6 +62,7 @@
#define CONFIG_CHARGER_SENSE_RESISTOR 10 /* BOARD_RS2 */
#define CONFIG_CHARGER_OTG
#define CONFIG_CHARGE_RAMP_HW
+#define CONFIG_CHARGER_MIN_INPUT_CURRENT_LIMIT 512
/* TCPC FUSB302 */
#define PD_POWER_SUPPLY_TURN_ON_DELAY 160000 /* us */
diff --git a/baseboard/octopus/baseboard.c b/baseboard/octopus/baseboard.c
index b35bbcd67b..c852d1fad5 100644
--- a/baseboard/octopus/baseboard.c
+++ b/baseboard/octopus/baseboard.c
@@ -301,8 +301,7 @@ int board_set_active_charge_port(int port)
void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
int charge_mv)
{
- charge_set_input_current_limit(
- MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
void board_hibernate(void)
diff --git a/baseboard/octopus/baseboard.h b/baseboard/octopus/baseboard.h
index 8662749c98..9c6e2a14e6 100644
--- a/baseboard/octopus/baseboard.h
+++ b/baseboard/octopus/baseboard.h
@@ -155,6 +155,7 @@
#define CONFIG_CHARGE_RAMP_HW
#define CONFIG_CHARGER
#define CONFIG_CHARGER_INPUT_CURRENT 512 /* Allow low-current USB charging */
+#define CONFIG_CHARGER_MIN_INPUT_CURRENT_LIMIT 512
#define CONFIG_CHARGER_SENSE_RESISTOR 10
#define CONFIG_CHARGER_DISCHARGE_ON_AC
#define CONFIG_USB_CHARGER
diff --git a/baseboard/trogdor/baseboard.h b/baseboard/trogdor/baseboard.h
index 2dedf8f330..901466fec1 100644
--- a/baseboard/trogdor/baseboard.h
+++ b/baseboard/trogdor/baseboard.h
@@ -93,6 +93,7 @@
#define CONFIG_CHARGER_DISCHARGE_ON_AC
#define CONFIG_CHARGER_INPUT_CURRENT 512
+#define CONFIG_CHARGER_MIN_INPUT_CURRENT_LIMIT 512
#define CONFIG_CHARGER_MIN_POWER_MW_FOR_POWER_ON 10000
#define CONFIG_CHARGER_SENSE_RESISTOR 10
#define CONFIG_CHARGER_SENSE_RESISTOR_AC 20
diff --git a/baseboard/volteer/baseboard.h b/baseboard/volteer/baseboard.h
index 10bea07eeb..4df7d5fc73 100644
--- a/baseboard/volteer/baseboard.h
+++ b/baseboard/volteer/baseboard.h
@@ -108,6 +108,7 @@
#define CONFIG_CHARGER
#define CONFIG_CHARGER_DISCHARGE_ON_AC
#define CONFIG_CHARGER_INPUT_CURRENT 512
+#define CONFIG_CHARGER_MIN_INPUT_CURRENT_LIMIT 512
/*
* Hardware based charge ramp is broken in the ISL9241 (b/169350714).
diff --git a/baseboard/volteer/charger.c b/baseboard/volteer/charger.c
index 73b80e17b8..252e8795d3 100644
--- a/baseboard/volteer/charger.c
+++ b/baseboard/volteer/charger.c
@@ -83,8 +83,7 @@ int board_set_active_charge_port(int port)
__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);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
void board_overcurrent_event(int port, int is_overcurrented)
diff --git a/baseboard/zork/baseboard.c b/baseboard/zork/baseboard.c
index a9e4324aad..0ad8339591 100644
--- a/baseboard/zork/baseboard.c
+++ b/baseboard/zork/baseboard.c
@@ -99,8 +99,7 @@ DECLARE_HOOK(HOOK_CHIPSET_RESUME, baseboard_chipset_resume, HOOK_PRIO_DEFAULT);
__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);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
/* Keyboard scan setting */
diff --git a/baseboard/zork/baseboard.h b/baseboard/zork/baseboard.h
index 2289c1891b..528aa44a91 100644
--- a/baseboard/zork/baseboard.h
+++ b/baseboard/zork/baseboard.h
@@ -77,6 +77,7 @@
#define CONFIG_CHARGE_MANAGER
#define CONFIG_CHARGER_DISCHARGE_ON_AC
#define CONFIG_CHARGER_INPUT_CURRENT 512
+#define CONFIG_CHARGER_MIN_INPUT_CURRENT_LIMIT 512
#define CONFIG_CHARGER_ISL9241
#define CONFIG_CHARGER_SENSE_RESISTOR 10
#define CONFIG_CHARGER_SENSE_RESISTOR_AC 20
diff --git a/board/agah/charger_isl9241.c b/board/agah/charger_isl9241.c
index 47e8261f78..64ad9ae7f7 100644
--- a/board/agah/charger_isl9241.c
+++ b/board/agah/charger_isl9241.c
@@ -199,8 +199,7 @@ int board_set_active_charge_port(int port)
void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
int charge_mv)
{
- charge_set_input_current_limit(
- MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
static const struct charge_port_info bj_power = {
diff --git a/board/anahera/charger.c b/board/anahera/charger.c
index 29211bc033..6b45881b99 100644
--- a/board/anahera/charger.c
+++ b/board/anahera/charger.c
@@ -85,6 +85,5 @@ int board_set_active_charge_port(int port)
__override 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);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
diff --git a/board/atlas/board.c b/board/atlas/board.c
index 633543b51f..685afb3e0e 100644
--- a/board/atlas/board.c
+++ b/board/atlas/board.c
@@ -551,8 +551,7 @@ DECLARE_HOOK(HOOK_INIT, board_charger_init, HOOK_PRIO_DEFAULT);
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);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
static void board_chipset_suspend(void)
diff --git a/board/atlas/board.h b/board/atlas/board.h
index 97f6d67e49..f5cef8d582 100644
--- a/board/atlas/board.h
+++ b/board/atlas/board.h
@@ -78,6 +78,7 @@
#define CONFIG_CHARGER_ISL9238
#define CONFIG_CHARGER_DISCHARGE_ON_AC
#define CONFIG_CHARGER_INPUT_CURRENT 512
+#define CONFIG_CHARGER_MIN_INPUT_CURRENT_LIMIT 512
#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 5
#define CONFIG_CHARGER_PROFILE_OVERRIDE
#define CONFIG_CHARGER_PSYS
diff --git a/board/banshee/charger.c b/board/banshee/charger.c
index 88f5b85a41..8edcb00e31 100644
--- a/board/banshee/charger.c
+++ b/board/banshee/charger.c
@@ -83,6 +83,5 @@ int board_set_active_charge_port(int port)
__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);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
diff --git a/board/beadrix/board.c b/board/beadrix/board.c
index 5cea32f90c..14467a66a1 100644
--- a/board/beadrix/board.c
+++ b/board/beadrix/board.c
@@ -478,13 +478,11 @@ int board_set_active_charge_port(int port)
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);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
__override void typec_set_source_current_limit(int port, enum tcpc_rp_value rp)
diff --git a/board/beetley/board.c b/board/beetley/board.c
index e0ba900a70..28ae90fc9b 100644
--- a/board/beetley/board.c
+++ b/board/beetley/board.c
@@ -387,9 +387,7 @@ uint16_t tcpc_get_alert_status(void)
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);
-
- charge_set_input_current_limit(icl, charge_mv);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
__override void typec_set_source_current_limit(int port, enum tcpc_rp_value rp)
diff --git a/board/bellis/board.c b/board/bellis/board.c
index fc960749f3..fb9701e4e7 100644
--- a/board/bellis/board.c
+++ b/board/bellis/board.c
@@ -239,8 +239,7 @@ int board_set_active_charge_port(int charge_port)
void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
int charge_mv)
{
- charge_set_input_current_limit(
- MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
int board_discharge_on_ac(int enable)
diff --git a/board/blipper/board.c b/board/blipper/board.c
index b7782a8af9..b31c5cde38 100644
--- a/board/blipper/board.c
+++ b/board/blipper/board.c
@@ -539,8 +539,7 @@ uint16_t tcpc_get_alert_status(void)
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);
- charge_set_input_current_limit(icl, charge_mv);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
__override void typec_set_source_current_limit(int port, enum tcpc_rp_value rp)
diff --git a/board/boten/board.c b/board/boten/board.c
index 9a54a4a341..14899b0a3a 100644
--- a/board/boten/board.c
+++ b/board/boten/board.c
@@ -247,8 +247,7 @@ uint16_t tcpc_get_alert_status(void)
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);
- charge_set_input_current_limit(icl, charge_mv);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
__override void typec_set_source_current_limit(int port, enum tcpc_rp_value rp)
diff --git a/board/brya/charger.c b/board/brya/charger.c
index b1a29c725b..937a48590c 100644
--- a/board/brya/charger.c
+++ b/board/brya/charger.c
@@ -85,6 +85,5 @@ int board_set_active_charge_port(int port)
void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
int charge_mv)
{
- charge_set_input_current_limit(
- MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
diff --git a/board/bugzzy/board.c b/board/bugzzy/board.c
index b6a015999e..6d30dba966 100644
--- a/board/bugzzy/board.c
+++ b/board/bugzzy/board.c
@@ -396,8 +396,7 @@ int board_set_active_charge_port(int port)
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);
- charge_set_input_current_limit(icl, charge_mv);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
__override void typec_set_source_current_limit(int port, enum tcpc_rp_value rp)
diff --git a/board/burnet/board.c b/board/burnet/board.c
index 923a7a76ce..b4a8860cf1 100644
--- a/board/burnet/board.c
+++ b/board/burnet/board.c
@@ -225,8 +225,7 @@ int board_set_active_charge_port(int charge_port)
void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
int charge_mv)
{
- charge_set_input_current_limit(
- MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
int board_discharge_on_ac(int enable)
diff --git a/board/cappy2/board.c b/board/cappy2/board.c
index d81e731ebf..eb33499eb0 100644
--- a/board/cappy2/board.c
+++ b/board/cappy2/board.c
@@ -232,8 +232,7 @@ int board_set_active_charge_port(int port)
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);
- charge_set_input_current_limit(icl, charge_mv);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
__override void typec_set_source_current_limit(int port, enum tcpc_rp_value rp)
diff --git a/board/cerise/board.c b/board/cerise/board.c
index 62fbc69254..03c31b3ec9 100644
--- a/board/cerise/board.c
+++ b/board/cerise/board.c
@@ -239,8 +239,7 @@ int board_set_active_charge_port(int charge_port)
void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
int charge_mv)
{
- charge_set_input_current_limit(
- MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
int board_discharge_on_ac(int enable)
diff --git a/board/cherry/board.c b/board/cherry/board.c
index c2ad54acb2..2f2f242b48 100644
--- a/board/cherry/board.c
+++ b/board/cherry/board.c
@@ -265,8 +265,7 @@ 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);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
/* Initialize board. */
diff --git a/board/coachz/board.c b/board/coachz/board.c
index 96ed26b819..a0f6dc74fc 100644
--- a/board/coachz/board.c
+++ b/board/coachz/board.c
@@ -697,8 +697,7 @@ void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
charge_ma = max_ma;
}
- charge_set_input_current_limit(
- MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
uint16_t tcpc_get_alert_status(void)
diff --git a/board/coral/board.c b/board/coral/board.c
index 922a19e97c..612ec180ae 100644
--- a/board/coral/board.c
+++ b/board/coral/board.c
@@ -566,8 +566,7 @@ void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
if (bd9995x_bc12_enable_charging(port, bc12_enable))
return;
- charge_set_input_current_limit(
- MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
/**
diff --git a/board/coral/board.h b/board/coral/board.h
index eee201669c..9b45db2cf3 100644
--- a/board/coral/board.h
+++ b/board/coral/board.h
@@ -61,6 +61,7 @@
#define CONFIG_CHARGER_BD9995X_CHGEN
#define CONFIG_CHARGER_DISCHARGE_ON_AC
#define CONFIG_CHARGER_INPUT_CURRENT 512
+#define CONFIG_CHARGER_MIN_INPUT_CURRENT_LIMIT 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 09baf1eabf..11d4ad8169 100644
--- a/board/corori/board.c
+++ b/board/corori/board.c
@@ -314,8 +314,7 @@ int board_set_active_charge_port(int port)
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);
- charge_set_input_current_limit(icl, charge_mv);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
__override void typec_set_source_current_limit(int port, enum tcpc_rp_value rp)
diff --git a/board/corori2/board.c b/board/corori2/board.c
index c06ccbb15b..bc41f397ad 100644
--- a/board/corori2/board.c
+++ b/board/corori2/board.c
@@ -457,8 +457,7 @@ int board_set_active_charge_port(int port)
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);
- charge_set_input_current_limit(icl, charge_mv);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
__override void typec_set_source_current_limit(int port, enum tcpc_rp_value rp)
diff --git a/board/cret/board.c b/board/cret/board.c
index 90bfc7d41a..17ecb3e7da 100644
--- a/board/cret/board.c
+++ b/board/cret/board.c
@@ -307,8 +307,7 @@ int board_set_active_charge_port(int port)
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);
- charge_set_input_current_limit(icl, charge_mv);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
__override void typec_set_source_current_limit(int port, enum tcpc_rp_value rp)
diff --git a/board/crota/charger.c b/board/crota/charger.c
index c7dcf7b0c1..e46364ee6d 100644
--- a/board/crota/charger.c
+++ b/board/crota/charger.c
@@ -83,6 +83,5 @@ int board_set_active_charge_port(int port)
__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);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
diff --git a/board/damu/board.c b/board/damu/board.c
index a2415f228d..7c82182ce4 100644
--- a/board/damu/board.c
+++ b/board/damu/board.c
@@ -239,8 +239,7 @@ int board_set_active_charge_port(int charge_port)
void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
int charge_mv)
{
- charge_set_input_current_limit(
- MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
int board_discharge_on_ac(int enable)
diff --git a/board/dibbi/board.c b/board/dibbi/board.c
index 467e238d8a..f546c92c87 100644
--- a/board/dibbi/board.c
+++ b/board/dibbi/board.c
@@ -235,13 +235,11 @@ uint16_t tcpc_get_alert_status(void)
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);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
int board_set_active_charge_port(int port)
diff --git a/board/dojo/board.c b/board/dojo/board.c
index 62f2e6ac09..fcc924770c 100644
--- a/board/dojo/board.c
+++ b/board/dojo/board.c
@@ -473,8 +473,7 @@ void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
/* Limit input current lower than 2944 mA for safety */
charge_ma = MIN(charge_ma, 2944);
- charge_set_input_current_limit(
- MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
/* NVME */
diff --git a/board/drawcia/board.c b/board/drawcia/board.c
index 118b3178be..325de31f5e 100644
--- a/board/drawcia/board.c
+++ b/board/drawcia/board.c
@@ -613,16 +613,14 @@ uint16_t tcpc_get_alert_status(void)
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))
- icl = MIN(icl, 2000);
+ charge_ma = MIN(charge_ma, 2000);
/*
* 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);
+ charge_set_input_current_limit(charge_ma, 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 cbc977d64b..f44be9ed7c 100644
--- a/board/drawcia_riscv/board.c
+++ b/board/drawcia_riscv/board.c
@@ -545,16 +545,14 @@ uint16_t tcpc_get_alert_status(void)
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))
- icl = MIN(icl, 2000);
+ charge_ma = MIN(charge_ma, 2000);
/*
* 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);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
int board_set_active_charge_port(int port)
diff --git a/board/driblee/board.c b/board/driblee/board.c
index 5c78dbda06..fd4c4bb573 100644
--- a/board/driblee/board.c
+++ b/board/driblee/board.c
@@ -341,8 +341,7 @@ int board_set_active_charge_port(int port)
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);
- charge_set_input_current_limit(icl, charge_mv);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
__override void typec_set_source_current_limit(int port, enum tcpc_rp_value rp)
diff --git a/board/drobit/board.c b/board/drobit/board.c
index c2bdbec773..b07e01d0fb 100644
--- a/board/drobit/board.c
+++ b/board/drobit/board.c
@@ -481,6 +481,5 @@ DECLARE_HOOK(HOOK_CHIPSET_SUSPEND, board_chipset_suspend, HOOK_PRIO_DEFAULT);
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);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
diff --git a/board/eldrid/board.c b/board/eldrid/board.c
index 6212c6a375..1abf9c6acd 100644
--- a/board/eldrid/board.c
+++ b/board/eldrid/board.c
@@ -182,8 +182,7 @@ __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(
- MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
/******************************************************************************/
diff --git a/board/elm/board.c b/board/elm/board.c
index 329c411c8a..2e99a42b7c 100644
--- a/board/elm/board.c
+++ b/board/elm/board.c
@@ -340,8 +340,7 @@ int board_set_active_charge_port(int charge_port)
void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
int charge_mv)
{
- charge_set_input_current_limit(
- MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
+ charge_set_input_current_limit(charge_ma, charge_mv);
pd_send_host_event(PD_EVENT_POWER_CHANGE);
}
diff --git a/board/elm/board.h b/board/elm/board.h
index 31a6ec7b61..ba542754b5 100644
--- a/board/elm/board.h
+++ b/board/elm/board.h
@@ -38,6 +38,7 @@
#define CONFIG_CHARGE_MANAGER
#define CONFIG_CHARGER
#define CONFIG_CHARGER_INPUT_CURRENT 512
+#define CONFIG_CHARGER_MIN_INPUT_CURRENT_LIMIT 512
#define CONFIG_CHARGE_RAMP_HW
#define CONFIG_CHARGER_ISL9237
#define CONFIG_CHARGER_MAX_INPUT_CURRENT 3000
diff --git a/board/eve/board.c b/board/eve/board.c
index 77e5b403a0..9f89792818 100644
--- a/board/eve/board.c
+++ b/board/eve/board.c
@@ -646,8 +646,7 @@ void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
if (bd9995x_bc12_enable_charging(port, bc12_enable))
return;
- charge_set_input_current_limit(
- MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
/**
diff --git a/board/eve/board.h b/board/eve/board.h
index 361f2ddd53..b9de20896d 100644
--- a/board/eve/board.h
+++ b/board/eve/board.h
@@ -101,6 +101,7 @@
#define CONFIG_CHARGER_BD9995X_CHGEN
#define CONFIG_CHARGER_DISCHARGE_ON_AC
#define CONFIG_CHARGER_INPUT_CURRENT 512
+#define CONFIG_CHARGER_MIN_INPUT_CURRENT_LIMIT 512
#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 5
#define CONFIG_CHARGER_MAINTAIN_VBAT
#define CONFIG_CHARGER_PROFILE_OVERRIDE
diff --git a/board/ezkinil/board.c b/board/ezkinil/board.c
index 2173a2062d..d9ea2c0ecb 100644
--- a/board/ezkinil/board.c
+++ b/board/ezkinil/board.c
@@ -869,6 +869,5 @@ int fan_percent_to_rpm(int fan, int pct)
__override 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);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
diff --git a/board/felwinter/charger_isl9241.c b/board/felwinter/charger_isl9241.c
index 7d4026b818..552436824a 100644
--- a/board/felwinter/charger_isl9241.c
+++ b/board/felwinter/charger_isl9241.c
@@ -83,6 +83,5 @@ int board_set_active_charge_port(int port)
void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
int charge_mv)
{
- charge_set_input_current_limit(
- MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
diff --git a/board/fennel/board.c b/board/fennel/board.c
index e583a21285..95f865a20c 100644
--- a/board/fennel/board.c
+++ b/board/fennel/board.c
@@ -240,8 +240,7 @@ int board_set_active_charge_port(int charge_port)
void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
int charge_mv)
{
- charge_set_input_current_limit(
- MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
int board_discharge_on_ac(int enable)
diff --git a/board/galtic/board.c b/board/galtic/board.c
index af0638be20..787b8877ab 100644
--- a/board/galtic/board.c
+++ b/board/galtic/board.c
@@ -505,13 +505,11 @@ uint16_t tcpc_get_alert_status(void)
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);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
int board_is_sourcing_vbus(int port)
diff --git a/board/gelarshie/board.c b/board/gelarshie/board.c
index dfa85037a2..5ce8030560 100644
--- a/board/gelarshie/board.c
+++ b/board/gelarshie/board.c
@@ -696,8 +696,7 @@ void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
charge_ma = max_ma;
}
- charge_set_input_current_limit(
- MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
uint16_t tcpc_get_alert_status(void)
diff --git a/board/gimble/charger.c b/board/gimble/charger.c
index b1a29c725b..937a48590c 100644
--- a/board/gimble/charger.c
+++ b/board/gimble/charger.c
@@ -85,6 +85,5 @@ int board_set_active_charge_port(int port)
void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
int charge_mv)
{
- charge_set_input_current_limit(
- MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
diff --git a/board/gooey/board.c b/board/gooey/board.c
index 9acbadd10d..80748b29de 100644
--- a/board/gooey/board.c
+++ b/board/gooey/board.c
@@ -262,8 +262,7 @@ uint16_t tcpc_get_alert_status(void)
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);
- charge_set_input_current_limit(icl, charge_mv);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
__override void typec_set_source_current_limit(int port, enum tcpc_rp_value rp)
diff --git a/board/haboki/board.c b/board/haboki/board.c
index d7509115b5..1c48955cbc 100644
--- a/board/haboki/board.c
+++ b/board/haboki/board.c
@@ -529,16 +529,14 @@ uint16_t tcpc_get_alert_status(void)
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))
- icl = MIN(icl, 2000);
+ charge_ma = MIN(charge_ma, 2000);
/*
* 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);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
int board_set_active_charge_port(int port)
diff --git a/board/herobrine/usbc_config.c b/board/herobrine/usbc_config.c
index 18033e0b3c..5d5d57d8bc 100644
--- a/board/herobrine/usbc_config.c
+++ b/board/herobrine/usbc_config.c
@@ -299,8 +299,7 @@ void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
charge_ma = max_ma;
}
- charge_set_input_current_limit(
- MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
uint16_t tcpc_get_alert_status(void)
diff --git a/board/homestar/board.c b/board/homestar/board.c
index b1a136dd67..3c63fd7f81 100644
--- a/board/homestar/board.c
+++ b/board/homestar/board.c
@@ -644,8 +644,7 @@ void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
charge_ma = max_ma;
}
- charge_set_input_current_limit(
- MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
uint16_t tcpc_get_alert_status(void)
diff --git a/board/icarus/board.c b/board/icarus/board.c
index d0a98c901e..e11e763f10 100644
--- a/board/icarus/board.c
+++ b/board/icarus/board.c
@@ -207,8 +207,7 @@ int board_set_active_charge_port(int charge_port)
void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
int charge_mv)
{
- charge_set_input_current_limit(
- MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
int board_discharge_on_ac(int enable)
diff --git a/board/jacuzzi/board.c b/board/jacuzzi/board.c
index 6df0b8dc82..5a3f34d273 100644
--- a/board/jacuzzi/board.c
+++ b/board/jacuzzi/board.c
@@ -247,8 +247,7 @@ int board_set_active_charge_port(int charge_port)
void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
int charge_mv)
{
- charge_set_input_current_limit(
- MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
int board_discharge_on_ac(int enable)
diff --git a/board/kano/charger.c b/board/kano/charger.c
index ab48a7338c..4ad9b41deb 100644
--- a/board/kano/charger.c
+++ b/board/kano/charger.c
@@ -83,6 +83,5 @@ int board_set_active_charge_port(int port)
__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);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
diff --git a/board/kappa/board.c b/board/kappa/board.c
index e3e374e18d..f99d11f063 100644
--- a/board/kappa/board.c
+++ b/board/kappa/board.c
@@ -220,8 +220,7 @@ int board_set_active_charge_port(int charge_port)
void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
int charge_mv)
{
- charge_set_input_current_limit(
- MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
int board_discharge_on_ac(int enable)
diff --git a/board/kingoftown/usbc_config.c b/board/kingoftown/usbc_config.c
index 5cd1f81818..3e4179904c 100644
--- a/board/kingoftown/usbc_config.c
+++ b/board/kingoftown/usbc_config.c
@@ -347,8 +347,7 @@ void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
charge_ma = max_ma;
}
- charge_set_input_current_limit(
- MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
uint16_t tcpc_get_alert_status(void)
diff --git a/board/kracko/board.c b/board/kracko/board.c
index 136b05ea1e..6ac215b1fb 100644
--- a/board/kracko/board.c
+++ b/board/kracko/board.c
@@ -585,16 +585,14 @@ uint16_t tcpc_get_alert_status(void)
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))
- icl = MIN(icl, 2000);
+ charge_ma = MIN(charge_ma, 2000);
/*
* 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);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
int board_set_active_charge_port(int port)
diff --git a/board/lalala/board.c b/board/lalala/board.c
index feedfe0262..b06e6760db 100644
--- a/board/lalala/board.c
+++ b/board/lalala/board.c
@@ -400,8 +400,7 @@ int board_set_active_charge_port(int port)
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);
- charge_set_input_current_limit(icl, charge_mv);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
__override void typec_set_source_current_limit(int port, enum tcpc_rp_value rp)
diff --git a/board/lantis/board.c b/board/lantis/board.c
index 08fc84e222..8d20b61673 100644
--- a/board/lantis/board.c
+++ b/board/lantis/board.c
@@ -722,13 +722,11 @@ uint16_t tcpc_get_alert_status(void)
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);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
int board_set_active_charge_port(int port)
diff --git a/board/lazor/usbc_config.c b/board/lazor/usbc_config.c
index 9b9504a44a..6d4351ab64 100644
--- a/board/lazor/usbc_config.c
+++ b/board/lazor/usbc_config.c
@@ -384,8 +384,7 @@ void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
charge_ma = max_ma;
}
- charge_set_input_current_limit(
- MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
uint16_t tcpc_get_alert_status(void)
diff --git a/board/madoo/board.c b/board/madoo/board.c
index 9f2021cf99..e7294150b0 100644
--- a/board/madoo/board.c
+++ b/board/madoo/board.c
@@ -315,8 +315,7 @@ int board_set_active_charge_port(int port)
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);
- charge_set_input_current_limit(icl, charge_mv);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
__override void typec_set_source_current_limit(int port, enum tcpc_rp_value rp)
diff --git a/board/magolor/board.c b/board/magolor/board.c
index 57f6791ae3..e09eb31abf 100644
--- a/board/magolor/board.c
+++ b/board/magolor/board.c
@@ -596,8 +596,7 @@ int board_set_active_charge_port(int port)
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);
- charge_set_input_current_limit(icl, charge_mv);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
__override void typec_set_source_current_limit(int port, enum tcpc_rp_value rp)
diff --git a/board/makomo/board.c b/board/makomo/board.c
index 09fe5fdd74..dcf7d671b2 100644
--- a/board/makomo/board.c
+++ b/board/makomo/board.c
@@ -238,8 +238,7 @@ int board_set_active_charge_port(int charge_port)
void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
int charge_mv)
{
- charge_set_input_current_limit(
- MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
int board_discharge_on_ac(int enable)
diff --git a/board/marzipan/board.c b/board/marzipan/board.c
index 94b7c444d5..18a02799cc 100644
--- a/board/marzipan/board.c
+++ b/board/marzipan/board.c
@@ -639,8 +639,7 @@ void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
charge_ma = max_ma;
}
- charge_set_input_current_limit(
- MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
uint16_t tcpc_get_alert_status(void)
diff --git a/board/mchpevb1/board.c b/board/mchpevb1/board.c
index 23135108f6..b51f6be876 100644
--- a/board/mchpevb1/board.c
+++ b/board/mchpevb1/board.c
@@ -602,8 +602,7 @@ int board_set_active_charge_port(int charge_port)
void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
int charge_mv)
{
- charge_set_input_current_limit(
- MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
#endif
diff --git a/board/mchpevb1/board.h b/board/mchpevb1/board.h
index 10208ca736..ae8982f939 100644
--- a/board/mchpevb1/board.h
+++ b/board/mchpevb1/board.h
@@ -151,6 +151,7 @@
/* #define CONFIG_CHARGER_ISL9237 */
/* #define CONFIG_CHARGER_ILIM_PIN_DISABLED */
/* #define CONFIG_CHARGER_INPUT_CURRENT 512 */
+/* #define CONFIG_CHARGER_MIN_INPUT_CURRENT_LIMIT 512 */
/* #define CONFIG_CHARGER_NARROW_VDC */
/* #define CONFIG_CHARGER_PROFILE_OVERRIDE */
diff --git a/board/metaknight/board.c b/board/metaknight/board.c
index f075f58ee4..b142740c1e 100644
--- a/board/metaknight/board.c
+++ b/board/metaknight/board.c
@@ -399,8 +399,7 @@ int board_set_active_charge_port(int port)
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);
- charge_set_input_current_limit(icl, charge_mv);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
__override void typec_set_source_current_limit(int port, enum tcpc_rp_value rp)
diff --git a/board/mithrax/charger_isl9241.c b/board/mithrax/charger_isl9241.c
index 88f5b85a41..8edcb00e31 100644
--- a/board/mithrax/charger_isl9241.c
+++ b/board/mithrax/charger_isl9241.c
@@ -83,6 +83,5 @@ int board_set_active_charge_port(int port)
__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);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
diff --git a/board/mrbland/board.c b/board/mrbland/board.c
index 04fef6ec82..9b42b15e23 100644
--- a/board/mrbland/board.c
+++ b/board/mrbland/board.c
@@ -598,8 +598,7 @@ void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
charge_ma = max_ma;
}
- charge_set_input_current_limit(
- MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
uint16_t tcpc_get_alert_status(void)
diff --git a/board/munna/board.c b/board/munna/board.c
index 408a81d47d..76445f4bd3 100644
--- a/board/munna/board.c
+++ b/board/munna/board.c
@@ -239,8 +239,7 @@ int board_set_active_charge_port(int charge_port)
void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
int charge_mv)
{
- charge_set_input_current_limit(
- MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
int board_discharge_on_ac(int enable)
diff --git a/board/nami/board.c b/board/nami/board.c
index 02fb27a283..b02b33fdd8 100644
--- a/board/nami/board.c
+++ b/board/nami/board.c
@@ -760,8 +760,7 @@ void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
(model == MODEL_EKKO || model == MODEL_BARD))
factor = 95;
charge_ma = charge_ma * factor / 100;
- charge_set_input_current_limit(
- MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
void board_hibernate(void)
diff --git a/board/nami/board.h b/board/nami/board.h
index 51cde41acb..1a71e83c4f 100644
--- a/board/nami/board.h
+++ b/board/nami/board.h
@@ -97,6 +97,7 @@
#define CONFIG_CHARGER_ISL9238
#define CONFIG_CHARGER_DISCHARGE_ON_AC
#define CONFIG_CHARGER_INPUT_CURRENT 512
+#define CONFIG_CHARGER_MIN_INPUT_CURRENT_LIMIT 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 36b79aa0c7..2f69158b9f 100644
--- a/board/nautilus/board.c
+++ b/board/nautilus/board.c
@@ -538,8 +538,7 @@ int board_set_active_charge_port(int charge_port)
void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
int charge_mv)
{
- charge_set_input_current_limit(
- MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
/**
diff --git a/board/nautilus/board.h b/board/nautilus/board.h
index f40b2f00b5..882b5d74f4 100644
--- a/board/nautilus/board.h
+++ b/board/nautilus/board.h
@@ -80,6 +80,7 @@
#define CONFIG_CHARGER_ISL9238
#define CONFIG_CHARGER_DISCHARGE_ON_AC
#define CONFIG_CHARGER_INPUT_CURRENT 512
+#define CONFIG_CHARGER_MIN_INPUT_CURRENT_LIMIT 512
#define CONFIG_CHARGER_PROFILE_OVERRIDE
#define CONFIG_CHARGER_PSYS
#define CONFIG_CHARGER_SENSE_RESISTOR 10
diff --git a/board/nocturne/board.c b/board/nocturne/board.c
index dbe5f50b68..13fa259276 100644
--- a/board/nocturne/board.c
+++ b/board/nocturne/board.c
@@ -763,8 +763,7 @@ int board_set_active_charge_port(int port)
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);
- charge_set_input_current_limit(icl, charge_mv);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
static void board_chipset_reset(void)
diff --git a/board/nocturne/board.h b/board/nocturne/board.h
index 7c38e48ee3..828c9a2087 100644
--- a/board/nocturne/board.h
+++ b/board/nocturne/board.h
@@ -71,6 +71,7 @@
#define CONFIG_CHARGER
#define CONFIG_CHARGER_DISCHARGE_ON_AC
#define CONFIG_CHARGER_INPUT_CURRENT 128
+#define CONFIG_CHARGER_MIN_INPUT_CURRENT_LIMIT 128
#define CONFIG_CHARGER_ISL9238
/*
* Nocturne seems to overdraw its set input current limit by about 5%.
diff --git a/board/oak/board.c b/board/oak/board.c
index 468b6e6677..3e370c8fa6 100644
--- a/board/oak/board.c
+++ b/board/oak/board.c
@@ -360,8 +360,7 @@ int board_set_active_charge_port(int charge_port)
void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
int charge_mv)
{
- charge_set_input_current_limit(
- MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
+ charge_set_input_current_limit(charge_ma, charge_mv);
pd_send_host_event(PD_EVENT_POWER_CHANGE);
}
diff --git a/board/oak/board.h b/board/oak/board.h
index e40e16bccf..ca9e16cf23 100644
--- a/board/oak/board.h
+++ b/board/oak/board.h
@@ -41,6 +41,7 @@
#define CONFIG_CHARGER
#define CONFIG_CHARGER_INPUT_CURRENT 512
+#define CONFIG_CHARGER_MIN_INPUT_CURRENT_LIMIT 512
#if BOARD_REV == OAK_REV1
#define CONFIG_CHARGER_BQ24773
diff --git a/board/osiris/charger.c b/board/osiris/charger.c
index 88f5b85a41..8edcb00e31 100644
--- a/board/osiris/charger.c
+++ b/board/osiris/charger.c
@@ -83,6 +83,5 @@ int board_set_active_charge_port(int port)
__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);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
diff --git a/board/pazquel/board.c b/board/pazquel/board.c
index 8fdd4a5325..f2d4685154 100644
--- a/board/pazquel/board.c
+++ b/board/pazquel/board.c
@@ -547,8 +547,7 @@ void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
charge_ma = max_ma;
}
- charge_set_input_current_limit(
- MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
uint16_t tcpc_get_alert_status(void)
diff --git a/board/pico/board.c b/board/pico/board.c
index 8dbfcdec12..5326f17283 100644
--- a/board/pico/board.c
+++ b/board/pico/board.c
@@ -323,8 +323,7 @@ int board_set_active_charge_port(int charge_port)
void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
int charge_mv)
{
- charge_set_input_current_limit(
- MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
int board_discharge_on_ac(int enable)
diff --git a/board/pirika/board.c b/board/pirika/board.c
index f7c5c0d19b..bbe6deab48 100644
--- a/board/pirika/board.c
+++ b/board/pirika/board.c
@@ -494,13 +494,11 @@ uint16_t tcpc_get_alert_status(void)
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);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
int board_is_sourcing_vbus(int port)
diff --git a/board/pompom/board.c b/board/pompom/board.c
index 2f1de29013..e922244721 100644
--- a/board/pompom/board.c
+++ b/board/pompom/board.c
@@ -450,8 +450,7 @@ void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
charge_ma = max_ma;
}
- charge_set_input_current_limit(
- MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
uint16_t tcpc_get_alert_status(void)
diff --git a/board/poppy/board.c b/board/poppy/board.c
index 38183c0da0..c870bffb4f 100644
--- a/board/poppy/board.c
+++ b/board/poppy/board.c
@@ -58,9 +58,6 @@
#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) &&
@@ -688,7 +685,7 @@ void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
if (charge_mv > 5000)
charge_ma -= 52;
- charge_set_input_current_limit(MAX(charge_ma, ILIM_MIN_MA), charge_mv);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
void board_hibernate(void)
diff --git a/board/poppy/board.h b/board/poppy/board.h
index b55dc1d818..c06f96c438 100644
--- a/board/poppy/board.h
+++ b/board/poppy/board.h
@@ -90,6 +90,7 @@
#define CONFIG_CHARGER_ISL9238
#define CONFIG_CHARGER_DISCHARGE_ON_AC
#define CONFIG_CHARGER_INPUT_CURRENT 512
+#define CONFIG_CHARGER_MIN_INPUT_CURRENT_LIMIT 472
#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 8b5f1a86fc..3f438cee00 100644
--- a/board/primus/board.c
+++ b/board/primus/board.c
@@ -137,8 +137,7 @@ __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(
- MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
static void configure_input_current_limit(void)
@@ -159,9 +158,7 @@ static void configure_input_current_limit(void)
else
adapter_current_ma = adapter_current_ma * 97 / 100;
- charge_set_input_current_limit(MAX(adapter_current_ma,
- CONFIG_CHARGER_INPUT_CURRENT),
- adapter_current_mv);
+ charge_set_input_current_limit(adapter_current_ma, adapter_current_mv);
}
DECLARE_HOOK(HOOK_CHIPSET_STARTUP, configure_input_current_limit,
HOOK_PRIO_DEFAULT);
diff --git a/board/quackingstick/board.c b/board/quackingstick/board.c
index 8985254a23..2ccdc1c097 100644
--- a/board/quackingstick/board.c
+++ b/board/quackingstick/board.c
@@ -625,8 +625,7 @@ void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
charge_ma = max_ma;
}
- charge_set_input_current_limit(
- MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
/**
diff --git a/board/rammus/board.c b/board/rammus/board.c
index 3696733047..be1f3d9110 100644
--- a/board/rammus/board.c
+++ b/board/rammus/board.c
@@ -569,8 +569,7 @@ int board_set_active_charge_port(int charge_port)
void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
int charge_mv)
{
- charge_set_input_current_limit(
- MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
void board_hibernate(void)
diff --git a/board/rammus/board.h b/board/rammus/board.h
index 83f0f35c57..2de783e247 100644
--- a/board/rammus/board.h
+++ b/board/rammus/board.h
@@ -85,6 +85,7 @@
#define CONFIG_CHARGER_ISL9238
#define CONFIG_CHARGER_DISCHARGE_ON_AC
#define CONFIG_CHARGER_INPUT_CURRENT 512
+#define CONFIG_CHARGER_MIN_INPUT_CURRENT_LIMIT 512
#define CONFIG_CHARGER_PSYS
#define CONFIG_CHARGER_SENSE_RESISTOR 10
#define CONFIG_CHARGER_SENSE_RESISTOR_AC 20
diff --git a/board/redrix/charger.c b/board/redrix/charger.c
index a4fa209246..4f52a06d7e 100644
--- a/board/redrix/charger.c
+++ b/board/redrix/charger.c
@@ -85,6 +85,5 @@ int board_set_active_charge_port(int port)
__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);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
diff --git a/board/reef/board.c b/board/reef/board.c
index b3732f6be9..4ee0f75b25 100644
--- a/board/reef/board.c
+++ b/board/reef/board.c
@@ -555,8 +555,7 @@ void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
if (bd9995x_bc12_enable_charging(port, bc12_enable))
return;
- charge_set_input_current_limit(
- MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
/**
diff --git a/board/reef/board.h b/board/reef/board.h
index bce20f4645..16f40c2f4a 100644
--- a/board/reef/board.h
+++ b/board/reef/board.h
@@ -51,6 +51,7 @@
#define CONFIG_CHARGER_BD9995X_CHGEN
#define CONFIG_CHARGER_DISCHARGE_ON_AC
#define CONFIG_CHARGER_INPUT_CURRENT 512
+#define CONFIG_CHARGER_MIN_INPUT_CURRENT_LIMIT 512
#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.c b/board/reef_it8320/board.c
index 6196f1967a..54a0995e85 100644
--- a/board/reef_it8320/board.c
+++ b/board/reef_it8320/board.c
@@ -311,8 +311,7 @@ void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
if (bd9995x_bc12_enable_charging(port, bc12_enable))
return;
- charge_set_input_current_limit(
- MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
/**
diff --git a/board/reef_it8320/board.h b/board/reef_it8320/board.h
index fc1ca0079d..558b10152a 100644
--- a/board/reef_it8320/board.h
+++ b/board/reef_it8320/board.h
@@ -49,6 +49,7 @@
#define CONFIG_CHARGER_BD9995X_CHGEN
#define CONFIG_CHARGER_DISCHARGE_ON_AC
#define CONFIG_CHARGER_INPUT_CURRENT 512
+#define CONFIG_CHARGER_MIN_INPUT_CURRENT_LIMIT 512
#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.c b/board/reef_mchp/board.c
index 67cbfa5aa9..55b5ab25c7 100644
--- a/board/reef_mchp/board.c
+++ b/board/reef_mchp/board.c
@@ -748,8 +748,7 @@ void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
if (bd9995x_bc12_enable_charging(port, bc12_enable))
return;
- charge_set_input_current_limit(
- MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
/**
diff --git a/board/reef_mchp/board.h b/board/reef_mchp/board.h
index 3cc3d2b77f..d570f50142 100644
--- a/board/reef_mchp/board.h
+++ b/board/reef_mchp/board.h
@@ -54,6 +54,7 @@
#define CONFIG_CHARGER_BD9995X_CHGEN
#define CONFIG_CHARGER_DISCHARGE_ON_AC
#define CONFIG_CHARGER_INPUT_CURRENT 512
+#define CONFIG_CHARGER_MIN_INPUT_CURRENT_LIMIT 512
#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.c b/board/sasuke/board.c
index 567dc8cee7..07dd0ddb79 100644
--- a/board/sasuke/board.c
+++ b/board/sasuke/board.c
@@ -398,8 +398,7 @@ int board_set_active_charge_port(int port)
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);
- charge_set_input_current_limit(icl, charge_mv);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
__override void typec_set_source_current_limit(int port, enum tcpc_rp_value rp)
diff --git a/board/sasukette/board.c b/board/sasukette/board.c
index 019df9348a..9d7e0470ff 100644
--- a/board/sasukette/board.c
+++ b/board/sasukette/board.c
@@ -254,8 +254,7 @@ uint16_t tcpc_get_alert_status(void)
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);
- charge_set_input_current_limit(icl, charge_mv);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
int board_is_sourcing_vbus(int port)
diff --git a/board/scarlet/board.c b/board/scarlet/board.c
index 34e5cc456c..b423e5f79a 100644
--- a/board/scarlet/board.c
+++ b/board/scarlet/board.c
@@ -215,8 +215,7 @@ int board_set_active_charge_port(int charge_port)
void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
int charge_mv)
{
- charge_set_input_current_limit(
- MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
int extpower_is_present(void)
diff --git a/board/scarlet/board.h b/board/scarlet/board.h
index 0f96e0208a..aba5819516 100644
--- a/board/scarlet/board.h
+++ b/board/scarlet/board.h
@@ -70,6 +70,7 @@
#define CONFIG_CHARGER
#define CONFIG_CHARGER_RT9467
#define CONFIG_CHARGER_INPUT_CURRENT 512
+#define CONFIG_CHARGER_MIN_INPUT_CURRENT_LIMIT 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/stern/board.c b/board/stern/board.c
index 41f63d40a4..ec3c7e66d5 100644
--- a/board/stern/board.c
+++ b/board/stern/board.c
@@ -239,8 +239,7 @@ int board_set_active_charge_port(int charge_port)
void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
int charge_mv)
{
- charge_set_input_current_limit(
- MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
int board_discharge_on_ac(int enable)
diff --git a/board/storo/board.c b/board/storo/board.c
index e4f2ad2fb9..65fa6c917f 100644
--- a/board/storo/board.c
+++ b/board/storo/board.c
@@ -434,8 +434,7 @@ uint16_t tcpc_get_alert_status(void)
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);
- charge_set_input_current_limit(icl, charge_mv);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
int board_is_sourcing_vbus(int port)
diff --git a/board/taeko/charger.c b/board/taeko/charger.c
index 29211bc033..6b45881b99 100644
--- a/board/taeko/charger.c
+++ b/board/taeko/charger.c
@@ -85,6 +85,5 @@ int board_set_active_charge_port(int port)
__override 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);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
diff --git a/board/taniks/charger.c b/board/taniks/charger.c
index b1a29c725b..937a48590c 100644
--- a/board/taniks/charger.c
+++ b/board/taniks/charger.c
@@ -85,6 +85,5 @@ int board_set_active_charge_port(int port)
void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
int charge_mv)
{
- charge_set_input_current_limit(
- MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
diff --git a/board/trogdor/usbc_config.c b/board/trogdor/usbc_config.c
index 34c37edf1a..7abe04651b 100644
--- a/board/trogdor/usbc_config.c
+++ b/board/trogdor/usbc_config.c
@@ -347,8 +347,7 @@ void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
charge_ma = max_ma;
}
- charge_set_input_current_limit(
- MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
uint16_t tcpc_get_alert_status(void)
diff --git a/board/vell/charger.c b/board/vell/charger.c
index a153d57704..757f545d80 100644
--- a/board/vell/charger.c
+++ b/board/vell/charger.c
@@ -84,8 +84,7 @@ int board_set_active_charge_port(int port)
void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
int charge_mv)
{
- charge_set_input_current_limit(
- MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
static void set_ac_prochot(void)
diff --git a/board/vilboz/board.c b/board/vilboz/board.c
index fe0b8ee32e..dbbe3a64ca 100644
--- a/board/vilboz/board.c
+++ b/board/vilboz/board.c
@@ -508,6 +508,5 @@ const int usb_port_enable[USBA_PORT_COUNT] = {
__override 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);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
diff --git a/board/volmar/charger.c b/board/volmar/charger.c
index 88f5b85a41..8edcb00e31 100644
--- a/board/volmar/charger.c
+++ b/board/volmar/charger.c
@@ -83,6 +83,5 @@ int board_set_active_charge_port(int port)
__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);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
diff --git a/board/waddledee/board.c b/board/waddledee/board.c
index d7abda740c..ab71aa0680 100644
--- a/board/waddledee/board.c
+++ b/board/waddledee/board.c
@@ -345,13 +345,11 @@ uint16_t tcpc_get_alert_status(void)
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);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
int board_set_active_charge_port(int port)
diff --git a/board/waddledoo/board.c b/board/waddledoo/board.c
index e71151f6b5..8658397d9d 100644
--- a/board/waddledoo/board.c
+++ b/board/waddledoo/board.c
@@ -393,8 +393,7 @@ int board_set_active_charge_port(int port)
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);
- charge_set_input_current_limit(icl, charge_mv);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
__override void typec_set_source_current_limit(int port, enum tcpc_rp_value rp)
diff --git a/board/waddledoo2/board.c b/board/waddledoo2/board.c
index b1417d8ee2..6f8a48abe6 100644
--- a/board/waddledoo2/board.c
+++ b/board/waddledoo2/board.c
@@ -400,8 +400,7 @@ int board_set_active_charge_port(int port)
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);
- charge_set_input_current_limit(icl, charge_mv);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
__override void typec_set_source_current_limit(int port, enum tcpc_rp_value rp)
diff --git a/board/wheelie/board.c b/board/wheelie/board.c
index 9708dcca82..922d6cde52 100644
--- a/board/wheelie/board.c
+++ b/board/wheelie/board.c
@@ -232,13 +232,11 @@ uint16_t tcpc_get_alert_status(void)
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);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
int board_set_active_charge_port(int port)
diff --git a/board/willow/board.c b/board/willow/board.c
index 3bd5c4633b..370b79e4c8 100644
--- a/board/willow/board.c
+++ b/board/willow/board.c
@@ -237,8 +237,7 @@ int board_set_active_charge_port(int charge_port)
void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
int charge_mv)
{
- charge_set_input_current_limit(
- MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
int board_discharge_on_ac(int enable)
diff --git a/board/wormdingler/board.c b/board/wormdingler/board.c
index 8705e0d2cb..8a106ca965 100644
--- a/board/wormdingler/board.c
+++ b/board/wormdingler/board.c
@@ -643,8 +643,7 @@ void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
charge_ma = max_ma;
}
- charge_set_input_current_limit(
- MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
uint16_t tcpc_get_alert_status(void)
diff --git a/common/charge_manager.c b/common/charge_manager.c
index b28a186ef8..c67656b122 100644
--- a/common/charge_manager.c
+++ b/common/charge_manager.c
@@ -835,8 +835,12 @@ static void charge_manager_refresh(void)
override_port = OVERRIDE_OFF;
if (new_supplier == CHARGE_SUPPLIER_NONE) {
+#ifdef CONFIG_CHARGER_INPUT_CURRENT
+ new_charge_current = CONFIG_CHARGER_INPUT_CURRENT;
+#else
new_charge_current = 0;
- new_charge_current_uncapped = 0;
+#endif
+ new_charge_current_uncapped = new_charge_current;
new_charge_voltage = 0;
} else {
new_charge_current_uncapped =
diff --git a/common/charge_state_v2.c b/common/charge_state_v2.c
index 6967cf5333..1e1353a639 100644
--- a/common/charge_state_v2.c
+++ b/common/charge_state_v2.c
@@ -2336,6 +2336,11 @@ int charge_set_input_current_limit(int ma, int mv)
100;
}
#endif
+#ifdef CONFIG_CHARGER_MIN_INPUT_CURRENT_LIMIT
+ if (CONFIG_CHARGER_MIN_INPUT_CURRENT_LIMIT > 0) {
+ ma = MAX(ma, CONFIG_CHARGER_MIN_INPUT_CURRENT_LIMIT);
+ }
+#endif
if (IS_ENABLED(CONFIG_OCPC))
chgnum = charge_get_active_chg_chip();
diff --git a/docs/low_battery_startup.md b/docs/low_battery_startup.md
index 48f9c28f49..83aae054b5 100644
--- a/docs/low_battery_startup.md
+++ b/docs/low_battery_startup.md
@@ -77,8 +77,7 @@ analog signaling alone. Via digital communication in the PD protocol, much
higher power states may be negotiated. However, higher power states also usually
run at a higher voltage state as well. Any time the voltage level is changing,
the power sink (the ChromeOS device) must lower its power consumption during the
-transient. The standby current level is governed by
-`CONFIG_CHARGER_INPUT_CURRENT`.
+transient.
PD port partners are capable of both soft and hard resets. Hard resets will
cause a dead-bus state for a brief interval before PD can renegotiate, from
@@ -341,13 +340,23 @@ Example configuration:
Required.
-The lowest current limit programmed into the charger. This determines both the
-default level used on startup, and the value used during the voltage transients
-in PD negotiation.
+The default charger current limit used on startup and for inactive ports. It
+should not be higher than 512 mA unless the device ships with a discrete power
+supply. Raising this term above 512 mA is contrary to USB-PD. It may be lowered
+in order to improve compatibility with marginal BC1.2 chargers.
-It should not be higher than 512 mA unless the device ships with a discrete
-power supply. Raising this term above 512 mA is contrary to USB-PD. It may be
-lowered in order to improve compatibility with marginal BC1.2 chargers.
+### `CONFIG_CHARGER_MIN_INPUT_CURRENT_LIMIT`
+
+Optional.
+
+If set, charger input current limits will never be set lower than this value.
+Historically most boards used the same value as `CONFIG_CHARGER_INPUT_CURRENT`,
+but doing so violates USB-PD standby power requirements when voltages greater
+than 5V are used with the default 512 mA value. Configuring this option to a
+nonzero value may be useful if a board needs extra headroom (possibly at the
+cost of drawing excess standby power), but boards should prefer to
+override `board_set_charge_limit()` instead to limit situations with excess
+power draw to only occur when that extra power is needed.
### `CONFIG_CHARGER_MIN_BAT_PCT_FOR_POWER_ON`
diff --git a/include/charge_state_v2.h b/include/charge_state_v2.h
index 5f886257d3..c7a5cbc995 100644
--- a/include/charge_state_v2.h
+++ b/include/charge_state_v2.h
@@ -72,7 +72,8 @@ int charge_set_output_current_limit(int chgnum, int ma, int mv);
* time AC is applied.
*
* The input current limit is automatically derated by
- * CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT, if configured.
+ * CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT (if configured), and is clamped to
+ * no less than CONFIG_CHARGER_MIN_INPUT_CURRENT_LIMIT mA (if configured).
*
* @param ma New input current limit in mA
* @param mv Negotiated charge voltage in mV.
diff --git a/include/config.h b/include/config.h
index 74ac859dc3..a9a346c464 100644
--- a/include/config.h
+++ b/include/config.h
@@ -1033,8 +1033,7 @@
#undef CONFIG_CHARGER_ILIM_PIN_DISABLED
/*
- * Default input current for the board, in mA. Many boards also use this as the
- * least maximum input current during transients.
+ * Default input current for the board, in mA.
*
* This value should depend on external power adapter, designed charging
* voltage, and the maximum power of the running system. For type-C chargers,
@@ -1044,6 +1043,22 @@
#undef CONFIG_CHARGER_INPUT_CURRENT
/*
+ * Minimum current limit that will ever be set for chargers, even if a lower
+ * limit is requested. This will allow the charger to draw more power than
+ * the requested limit.
+ *
+ * If set, this should usually be set to no more than 2.5W divided by the
+ * maximum supported input voltage in order to satisfy USB-PD pSnkStdby
+ * requirements. Higher values may help devices stay alive under low-battery
+ * conditions at the cost of violating standby power limits.
+ *
+ * Many boards set this to large values, since historically this number was
+ * usually equal to CONFIG_CHARGER_INPUT_CURRENT. New boards should avoid doing
+ * so if possible.
+ */
+#undef CONFIG_CHARGER_MIN_INPUT_CURRENT_LIMIT
+
+/*
* Percentage derating factor applied to charger input current limits.
*
* Desired charger current is reduced by this many percent when programming
diff --git a/zephyr/Kconfig.usbc b/zephyr/Kconfig.usbc
index 5350c1cbbf..7f65419a4b 100644
--- a/zephyr/Kconfig.usbc
+++ b/zephyr/Kconfig.usbc
@@ -44,6 +44,26 @@ config PLATFORM_EC_CHARGER_INPUT_CURRENT
chargers, this should be set to 512 mA in order to not brown-out
low-current USB charge ports in accordance with USB-PD r3.0 Sec. 7.3
+config PLATFORM_EC_CHARGER_MIN_INPUT_CURRENT_LIMIT
+ int "Minimum charger input current limit in mA"
+ default 0
+ depends on PLATFORM_EC_CHARGE_MANAGER
+ help
+ Minimum current limit in mA that will ever be set for chargers, even if a
+ lower limit is requested.
+
+ If set, this should usually be set to no more than 2.5W divided by the
+ maximum supported input voltage in order to satisfy USB-PD pSnkStdby
+ requirements. Higher values may help devices stay alive under low-battery
+ conditions at the cost of violating standby power limits.
+
+ Many boards set this to large values, since historically this number was
+ usually equal to the default current limit. New boards should avoid doing
+ so if possible, and usually leave this unset: customization of
+ board_set_charge_limit() should be considered instead if a device sometimes
+ requires amounts of power in violation of specs, to limit those violations
+ only to situations where they are necessary.
+
config PLATFORM_EC_CHARGER_INPUT_CURRENT_DERATE_PCT
int "Charger input current derating percentage"
default 0
diff --git a/zephyr/program/brya/prj.conf b/zephyr/program/brya/prj.conf
index e9d35dc0e2..0d248c6487 100644
--- a/zephyr/program/brya/prj.conf
+++ b/zephyr/program/brya/prj.conf
@@ -105,6 +105,7 @@ CONFIG_PLATFORM_EC_CHARGER_BQ25720_VSYS_TH2_CUSTOM=y
CONFIG_PLATFORM_EC_CHARGER_BQ25720_VSYS_TH2_DV=70
CONFIG_PLATFORM_EC_CHARGER_DISCHARGE_ON_AC=y
CONFIG_PLATFORM_EC_CHARGER_DISCHARGE_ON_AC_CHARGER=y
+CONFIG_PLATFORM_EC_CHARGER_MIN_INPUT_CURRENT_LIMIT=512
CONFIG_PLATFORM_EC_CHARGER_MIN_BAT_PCT_FOR_POWER_ON=3
CONFIG_PLATFORM_EC_CHARGER_MIN_BAT_PCT_FOR_POWER_ON_WITH_AC=1
CONFIG_PLATFORM_EC_CHARGER_MIN_POWER_MW_FOR_POWER_ON_WITH_BATT=15000
diff --git a/zephyr/program/herobrine/program.conf b/zephyr/program/herobrine/program.conf
index 60b78f6758..d97919cce1 100644
--- a/zephyr/program/herobrine/program.conf
+++ b/zephyr/program/herobrine/program.conf
@@ -70,6 +70,7 @@ CONFIG_PLATFORM_EC_CHARGER_DISCHARGE_ON_AC=y
CONFIG_PLATFORM_EC_CHARGER_DISCHARGE_ON_AC_CHARGER=y
CONFIG_PLATFORM_EC_CHARGER_MIN_BAT_PCT_FOR_POWER_ON=2
CONFIG_PLATFORM_EC_CHARGER_MIN_POWER_MW_FOR_POWER_ON=12500
+CONFIG_PLATFORM_EC_CHARGER_MIN_INPUT_CURRENT_LIMIT=512
CONFIG_PLATFORM_EC_CHARGER_PROFILE_OVERRIDE=y
CONFIG_PLATFORM_EC_CHARGER_PSYS=y
CONFIG_PLATFORM_EC_CHARGER_PSYS_READ=y
diff --git a/zephyr/program/herobrine/src/usbc_config.c b/zephyr/program/herobrine/src/usbc_config.c
index e757e3f2e1..95301120d8 100644
--- a/zephyr/program/herobrine/src/usbc_config.c
+++ b/zephyr/program/herobrine/src/usbc_config.c
@@ -262,8 +262,7 @@ void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
charge_ma = max_ma;
}
- charge_set_input_current_limit(
- MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
uint16_t tcpc_get_alert_status(void)
diff --git a/zephyr/program/intelrvp/prj.conf b/zephyr/program/intelrvp/prj.conf
index 890122f510..9ca19c5071 100644
--- a/zephyr/program/intelrvp/prj.conf
+++ b/zephyr/program/intelrvp/prj.conf
@@ -20,6 +20,7 @@ CONFIG_PLATFORM_EC_BATTERY_SMART=y
CONFIG_PLATFORM_EC_BATTERY_TYPE_NO_AUTO_DETECT=y
CONFIG_PLATFORM_EC_CHARGER_MIN_POWER_MW_FOR_POWER_ON_WITH_BATT=15000
CONFIG_PLATFORM_EC_CHARGER_MIN_POWER_MW_FOR_POWER_ON=15001
+CONFIG_PLATFORM_EC_CHARGER_MIN_INPUT_CURRENT_LIMIT=512
#Power Sequencing
CONFIG_PLATFORM_EC_BOARD_RESET_AFTER_POWER_ON=y
diff --git a/zephyr/program/intelrvp/src/chg_usb_pd.c b/zephyr/program/intelrvp/src/chg_usb_pd.c
index 63a1853b4d..81a44238e4 100644
--- a/zephyr/program/intelrvp/src/chg_usb_pd.c
+++ b/zephyr/program/intelrvp/src/chg_usb_pd.c
@@ -124,6 +124,5 @@ int board_set_active_charge_port(int port)
void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
int charge_mv)
{
- charge_set_input_current_limit(
- MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
diff --git a/zephyr/program/nissa/program.conf b/zephyr/program/nissa/program.conf
index 8fd87c94b5..b445c60b6f 100644
--- a/zephyr/program/nissa/program.conf
+++ b/zephyr/program/nissa/program.conf
@@ -129,6 +129,7 @@ CONFIG_PLATFORM_EC_CHARGER_DISCHARGE_ON_AC_CHARGER=y
CONFIG_PLATFORM_EC_OCPC_DEF_DRIVELIMIT_MILLIVOLTS=200
# Assume 4% overdraw, which could be changed with actual characterization
CONFIG_PLATFORM_EC_CHARGER_INPUT_CURRENT_DERATE_PCT=4
+CONFIG_PLATFORM_EC_CHARGER_MIN_INPUT_CURRENT_LIMIT=512
# Reduce logging so that state transitions do not cause protocol issues
# pd dump [1-3] can be used to increase the debugging level
diff --git a/zephyr/program/nissa/src/common.c b/zephyr/program/nissa/src/common.c
index bfcbabcbaa..3600005ae1 100644
--- a/zephyr/program/nissa/src/common.c
+++ b/zephyr/program/nissa/src/common.c
@@ -83,8 +83,7 @@ DECLARE_HOOK(HOOK_INIT, board_setup_init, HOOK_PRIO_INIT_I2C);
__overridable 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);
- charge_set_input_current_limit(icl, charge_mv);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
int pd_check_vconn_swap(int port)
diff --git a/zephyr/program/rex/prj.conf b/zephyr/program/rex/prj.conf
index e5900afd54..8b99cc373c 100644
--- a/zephyr/program/rex/prj.conf
+++ b/zephyr/program/rex/prj.conf
@@ -77,6 +77,7 @@ CONFIG_PLATFORM_EC_CHARGER_SENSE_RESISTOR=5
CONFIG_PLATFORM_EC_CHARGER_SENSE_RESISTOR_AC=10
CONFIG_PLATFORM_EC_CHARGER_MIN_POWER_MW_FOR_POWER_ON=30000
CONFIG_PLATFORM_EC_CHARGER_MIN_POWER_MW_FOR_POWER_ON_WITH_BATT=15000
+CONFIG_PLATFORM_EC_CHARGER_MIN_INPUT_CURRENT_LIMIT=512
# USBC
CONFIG_PLATFORM_EC_USBC_PPC=y
diff --git a/zephyr/program/rex/src/usbc_config.c b/zephyr/program/rex/src/usbc_config.c
index 6f09887eed..ed51be6160 100644
--- a/zephyr/program/rex/src/usbc_config.c
+++ b/zephyr/program/rex/src/usbc_config.c
@@ -195,8 +195,7 @@ void bc12_interrupt(enum gpio_signal signal)
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);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
static void board_disable_charger_ports(void)
diff --git a/zephyr/program/skyrim/prj.conf b/zephyr/program/skyrim/prj.conf
index 951926f537..4d0ed48e6f 100644
--- a/zephyr/program/skyrim/prj.conf
+++ b/zephyr/program/skyrim/prj.conf
@@ -70,6 +70,7 @@ CONFIG_PLATFORM_EC_BATTERY_REVIVE_DISCONNECT=y
# Charger
CONFIG_PLATFORM_EC_CHARGER_DISCHARGE_ON_AC=y
CONFIG_PLATFORM_EC_CHARGER_INPUT_CURRENT=512
+CONFIG_PLATFORM_EC_CHARGER_MIN_INPUT_CURRENT_LIMIT=512
CONFIG_PLATFORM_EC_CHARGER_ISL9241=y
CONFIG_PLATFORM_EC_CHARGER_SENSE_RESISTOR=10
CONFIG_PLATFORM_EC_CHARGER_SENSE_RESISTOR_AC=20
diff --git a/zephyr/program/skyrim/src/usbc_config.c b/zephyr/program/skyrim/src/usbc_config.c
index 1b728f1cf0..eaa327ff4e 100644
--- a/zephyr/program/skyrim/src/usbc_config.c
+++ b/zephyr/program/skyrim/src/usbc_config.c
@@ -193,8 +193,7 @@ int board_set_active_charge_port(int port)
void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
int charge_mv)
{
- charge_set_input_current_limit(
- MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
void sbu_fault_interrupt(enum gpio_signal signal)
diff --git a/zephyr/program/trogdor/lazor/prj.conf b/zephyr/program/trogdor/lazor/prj.conf
index d8cf4009ea..5f29c3f5c2 100644
--- a/zephyr/program/trogdor/lazor/prj.conf
+++ b/zephyr/program/trogdor/lazor/prj.conf
@@ -73,6 +73,7 @@ CONFIG_PLATFORM_EC_CHARGER_DISCHARGE_ON_AC=y
CONFIG_PLATFORM_EC_CHARGER_DISCHARGE_ON_AC_CHARGER=y
CONFIG_PLATFORM_EC_CHARGER_MIN_BAT_PCT_FOR_POWER_ON=2
CONFIG_PLATFORM_EC_CHARGER_MIN_POWER_MW_FOR_POWER_ON=10000
+CONFIG_PLATFORM_EC_CHARGER_MIN_INPUT_CURRENT_LIMIT=512
CONFIG_PLATFORM_EC_CHARGER_PROFILE_OVERRIDE=y
CONFIG_PLATFORM_EC_CHARGER_PSYS=y
CONFIG_PLATFORM_EC_CHARGER_PSYS_READ=y
diff --git a/zephyr/program/trogdor/lazor/src/usbc_config.c b/zephyr/program/trogdor/lazor/src/usbc_config.c
index 9639b556a0..c3860dc005 100644
--- a/zephyr/program/trogdor/lazor/src/usbc_config.c
+++ b/zephyr/program/trogdor/lazor/src/usbc_config.c
@@ -314,8 +314,7 @@ void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
charge_ma = max_ma;
}
- charge_set_input_current_limit(
- MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
uint16_t tcpc_get_alert_status(void)
diff --git a/zephyr/shim/include/config_chip.h b/zephyr/shim/include/config_chip.h
index b0c0aa2a47..c0d388b60b 100644
--- a/zephyr/shim/include/config_chip.h
+++ b/zephyr/shim/include/config_chip.h
@@ -1083,6 +1083,12 @@ extern char mock_jump_data[CONFIG_PLATFORM_EC_PRESERVED_END_OF_RAM_SIZE];
#define CONFIG_CHARGER_INPUT_CURRENT CONFIG_PLATFORM_EC_CHARGER_INPUT_CURRENT
#endif
+#undef CONFIG_CHARGER_MIN_INPUT_CURRENT_LIMIT
+#ifdef CONFIG_PLATFORM_EC_CHARGER_MIN_INPUT_CURRENT_LIMIT
+#define CONFIG_CHARGER_MIN_INPUT_CURRENT_LIMIT \
+ CONFIG_PLATFORM_EC_CHARGER_MIN_INPUT_CURRENT_LIMIT
+#endif
+
#undef CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT
#ifdef CONFIG_PLATFORM_EC_CHARGER_INPUT_CURRENT_DERATE_PCT
#define CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT \
diff --git a/zephyr/test/drivers/bc12_pi3usb9201/src/pi3usb9201.c b/zephyr/test/drivers/bc12_pi3usb9201/src/pi3usb9201.c
index 5d143dcbdb..a384fb1e0a 100644
--- a/zephyr/test/drivers/bc12_pi3usb9201/src/pi3usb9201.c
+++ b/zephyr/test/drivers/bc12_pi3usb9201/src/pi3usb9201.c
@@ -73,7 +73,9 @@ static const struct bc12_status bc12_chg_limits[] = {
[CHG_1_0A] = { .supplier = CHARGE_SUPPLIER_PROPRIETARY,
.current_limit = 1000 },
[CHG_RESERVED] = { .supplier = CHARGE_SUPPLIER_NONE,
- .current_limit = 0 },
+ /* Not charging, limit is set to default */
+ .current_limit =
+ CONFIG_PLATFORM_EC_CHARGER_INPUT_CURRENT },
[CHG_CDP] = { .supplier = CHARGE_SUPPLIER_BC12_CDP,
.current_limit = USB_CHARGER_MAX_CURR_MA },
[CHG_SDP] = { .supplier = CHARGE_SUPPLIER_BC12_SDP,
@@ -209,7 +211,8 @@ test_bc12_pi3usb9201_client_mode(enum pi3usb9201_client_sts detect_result,
NULL);
zassert_equal(charge_manager_get_supplier(), CHARGE_SUPPLIER_NONE,
NULL);
- zassert_equal(charge_manager_get_charger_current(), 0);
+ zassert_equal(charge_manager_get_charger_current(),
+ CONFIG_PLATFORM_EC_CHARGER_INPUT_CURRENT);
zassert_equal(charge_manager_get_charger_voltage(), 0);
}
@@ -258,6 +261,7 @@ ZTEST_USER(bc12, test_bc12_pi3usb9201)
test_bc12_pi3usb9201_host_mode();
for (int c = CHG_OTHER; c <= CHG_DCP; c++) {
+ LOG_INF("Test client mode supplier %d", c);
test_bc12_pi3usb9201_client_mode(
c, bc12_chg_limits[c].supplier,
bc12_chg_limits[c].current_limit);
diff --git a/zephyr/test/drivers/common/src/stubs.c b/zephyr/test/drivers/common/src/stubs.c
index 3cddc5cdfe..2f8ec7a43f 100644
--- a/zephyr/test/drivers/common/src/stubs.c
+++ b/zephyr/test/drivers/common/src/stubs.c
@@ -101,8 +101,7 @@ int board_is_vbus_too_low(int port, enum chg_ramp_vbus_state ramp_state)
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);
+ charge_set_input_current_limit(charge_ma, charge_mv);
}
BUILD_ASSERT(CONFIG_USB_PD_PORT_MAX_COUNT == USBC_PORT_COUNT);
diff --git a/zephyr/test/drivers/common_charger/src/test_charge_state_v2.c b/zephyr/test/drivers/common_charger/src/test_charge_state_v2.c
index e1c602e86d..9dfeb5e734 100644
--- a/zephyr/test/drivers/common_charger/src/test_charge_state_v2.c
+++ b/zephyr/test/drivers/common_charger/src/test_charge_state_v2.c
@@ -114,3 +114,16 @@ ZTEST(charge_state_v2, test_current_limit_derating)
CONFIG_PLATFORM_EC_CHARGER_INPUT_CURRENT_DERATE_PCT,
charger_current_limit);
}
+
+ZTEST(charge_state_v2, test_minimum_current_limit)
+{
+ int charger_current_limit;
+
+ charge_set_input_current_limit(50, 5000);
+ zassert_ok(charger_get_input_current_limit(0, &charger_current_limit));
+ zassert_equal(charger_current_limit, 96,
+ "Minimum input current limit should be %d mA,"
+ " but current limit is %d (capped to %d)",
+ 96, charger_current_limit,
+ CONFIG_PLATFORM_EC_CHARGER_MIN_INPUT_CURRENT_LIMIT);
+}
diff --git a/zephyr/test/drivers/testcase.yaml b/zephyr/test/drivers/testcase.yaml
index db341b3048..59456ac5f0 100644
--- a/zephyr/test/drivers/testcase.yaml
+++ b/zephyr/test/drivers/testcase.yaml
@@ -63,6 +63,7 @@ tests:
drivers.common_charger:
extra_configs:
- CONFIG_PLATFORM_EC_CHARGER_INPUT_CURRENT_DERATE_PCT=5
+ - CONFIG_PLATFORM_EC_CHARGER_MIN_INPUT_CURRENT_LIMIT=100
- CONFIG_LINK_TEST_SUITE_COMMON_CHARGER=y
# Set to focus testing for Herobrine
# Config is y only in nissa