summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--zephyr/dts/bindings/charger/chg-chip.yaml75
-rw-r--r--zephyr/dts/bindings/usbc/named-usbc-port.yaml5
-rw-r--r--zephyr/projects/brya/i2c.dts6
-rw-r--r--zephyr/projects/brya/usbc.dts6
-rw-r--r--zephyr/projects/corsola/i2c_kingler.dts6
-rw-r--r--zephyr/projects/corsola/i2c_krabby.dts6
-rw-r--r--zephyr/projects/corsola/usbc_kingler.dts6
-rw-r--r--zephyr/projects/corsola/usbc_krabby.dts6
-rw-r--r--zephyr/projects/corsola/usbc_tentacruel.dts6
-rw-r--r--zephyr/projects/herobrine/i2c.dts6
-rw-r--r--zephyr/projects/herobrine/usbc_evoker.dts6
-rw-r--r--zephyr/projects/herobrine/usbc_herobrine.dts6
-rw-r--r--zephyr/projects/herobrine/usbc_hoglin.dts6
-rw-r--r--zephyr/projects/herobrine/usbc_villager.dts6
-rw-r--r--zephyr/projects/intelrvp/adlrvp/adlrvp_npcx/adlrvp_npcx.dts6
-rw-r--r--zephyr/projects/intelrvp/adlrvp/adlrvp_npcx/usbc.dts6
-rw-r--r--zephyr/projects/intelrvp/mtlrvp/mtlrvpp_npcx/mtlrvp_npcx.dts6
-rw-r--r--zephyr/projects/intelrvp/mtlrvp/usbc.dts6
-rw-r--r--zephyr/projects/nissa/craask/overlay.dts24
-rw-r--r--zephyr/projects/nissa/joxer/overlay.dts24
-rw-r--r--zephyr/projects/nissa/nereid/overlay.dts24
-rw-r--r--zephyr/projects/nissa/nivviks/overlay.dts24
-rw-r--r--zephyr/projects/nissa/pujjo/overlay.dts12
-rw-r--r--zephyr/projects/nissa/xivu/overlay.dts24
-rw-r--r--zephyr/projects/rex/rex.dts6
-rw-r--r--zephyr/projects/rex/usbc.dts6
-rw-r--r--zephyr/projects/skyrim/i2c.dts6
-rw-r--r--zephyr/projects/skyrim/usbc.dts6
-rw-r--r--zephyr/projects/trogdor/lazor/i2c.dts6
-rw-r--r--zephyr/projects/trogdor/lazor/usbc.dts6
-rw-r--r--zephyr/shim/include/charger/chg_bq25710.h10
-rw-r--r--zephyr/shim/include/charger/chg_isl923x.h11
-rw-r--r--zephyr/shim/include/charger/chg_isl9241.h10
-rw-r--r--zephyr/shim/include/charger/chg_rt9490.h10
-rw-r--r--zephyr/shim/include/charger/chg_sm5803.h10
-rw-r--r--zephyr/shim/src/charger.c44
-rw-r--r--zephyr/test/drivers/boards/native_posix.overlay7
37 files changed, 231 insertions, 215 deletions
diff --git a/zephyr/dts/bindings/charger/chg-chip.yaml b/zephyr/dts/bindings/charger/chg-chip.yaml
index 50e78756d9..c28efacddf 100644
--- a/zephyr/dts/bindings/charger/chg-chip.yaml
+++ b/zephyr/dts/bindings/charger/chg-chip.yaml
@@ -3,18 +3,7 @@
description: Charger chip
-properties:
- port:
- type: phandle
- required: true
- description: |
- I2C port used to communicate with charger chip
-
- i2c-addr-flags:
- type: string
- required: false
- description: |
- I2C address of charger chip
+include: i2c-device.yaml
# Example
# The charger chips nodes have to be placed under the USB-C
@@ -30,28 +19,30 @@ properties:
# port0@0 {
# compatible = "named-usbc-port";
# reg = <0>;
-# bc12 {
-# compatible = "pericom,pi3usb9201";
-# port = <&i2c_ec_i2c_usb_c0>;
-# };
-# chg {
-# compatible = "siliconmitus,sm5803";
-# status = "okay";
-# port = <&i2c_ec_i2c_usb_c0>;
-# };
+# bc12 = <&bc12_port0>;
+# chg = <&chg_port0>;
# };
# port1@1 {
# compatible = "named-usbc-port";
# reg = <1>;
-# bc12 {
-# compatible = "pericom,pi3usb9201";
-# port = <&i2c_ec_i2c_sub_usb_c1>;
-# };
-# chg {
-# compatible = "siliconmitus,sm5803";
-# status = "okay";
-# port = <&i2c_ec_i2c_sub_usb_c1>;
-# };
+# bc12 = <&bc12_port1>;
+# chg = <&chg_port1>;
+# };
+# };
+#
+# &i2c5 {
+# chg_port0: sm5803@32 {
+# compatible = "siliconmitus,sm5803";
+# status = "okay";
+# reg = <0x32>;
+# };
+# };
+#
+# &i2c4 {
+# chg_port1: sm5803@32 {
+# compatible = "siliconmitus,sm5803";
+# status = "okay";
+# reg = <0x32>;
# };
# };
#
@@ -63,23 +54,19 @@ properties:
# port0@0 {
# compatible = "named-usbc-port";
# reg = <0>;
-# bc12 {
-# compatible = "pericom,pi3usb9201";
-# port = <&i2c_ec_i2c_usb_c0>;
-# };
-# chg {
-# compatible = "siliconmitus,sm5803";
-# status = "okay";
-# port = <&i2c_ec_i2c_usb_c0>;
-# };
+# chg = <&charger>;
# };
# port1@1 {
# compatible = "named-usbc-port";
# reg = <1>;
-# bc12 {
-# compatible = "pericom,pi3usb9201";
-# port = <&i2c_ec_i2c_sub_usb_c1>;
-# };
+# bc12 = <&bc12_port1>;
+# };
+# };
+#
+# &i2c5 {
+# charger: sm5803@32 {
+# compatible = "siliconmitus,sm5803";
+# status = "okay";
+# reg = <0x32>;
# };
# };
-
diff --git a/zephyr/dts/bindings/usbc/named-usbc-port.yaml b/zephyr/dts/bindings/usbc/named-usbc-port.yaml
index 21c5f90fab..93e48177f5 100644
--- a/zephyr/dts/bindings/usbc/named-usbc-port.yaml
+++ b/zephyr/dts/bindings/usbc/named-usbc-port.yaml
@@ -19,6 +19,11 @@ properties:
required: false
description: |
TCPC chip for the USB-C port.
+ chg:
+ type: phandle
+ required: false
+ description: |
+ Charger chip for the USB-C port.
usb-muxes:
type: phandles
required: false
diff --git a/zephyr/projects/brya/i2c.dts b/zephyr/projects/brya/i2c.dts
index a8d0a063e5..43c7b45401 100644
--- a/zephyr/projects/brya/i2c.dts
+++ b/zephyr/projects/brya/i2c.dts
@@ -184,6 +184,12 @@
reg = <0x20>;
label = "I2C_ADDR_MP2964_FLAGS";
};
+
+ charger: bq25710@9 {
+ compatible = "ti,bq25710";
+ status = "okay";
+ reg = <0x9>;
+ };
};
&i2c_ctrl7 {
diff --git a/zephyr/projects/brya/usbc.dts b/zephyr/projects/brya/usbc.dts
index d1bd259038..4864743d6e 100644
--- a/zephyr/projects/brya/usbc.dts
+++ b/zephyr/projects/brya/usbc.dts
@@ -13,11 +13,7 @@
reg = <0>;
bc12 = <&bc12_port0>;
tcpc = <&tcpc_port0>;
- chg {
- compatible = "ti,bq25710";
- status = "okay";
- port = <&i2c_charger>;
- };
+ chg = <&charger>;
usb-muxes = <&usb_c0_bb_retimer &virtual_mux_c0>;
};
port0-muxes {
diff --git a/zephyr/projects/corsola/i2c_kingler.dts b/zephyr/projects/corsola/i2c_kingler.dts
index a8fc6e592b..a8b6a592c8 100644
--- a/zephyr/projects/corsola/i2c_kingler.dts
+++ b/zephyr/projects/corsola/i2c_kingler.dts
@@ -117,6 +117,12 @@ i2c_pwr_cbi: &i2c3_0 {
clock-frequency = <I2C_BITRATE_FAST>;
pinctrl-0 = <&i2c3_0_sda_scl_gpd0_d1>;
pinctrl-names = "default";
+
+ charger: isl923x@9 {
+ compatible = "intersil,isl923x";
+ status = "okay";
+ reg = <0x9>;
+ };
};
&i2c_ctrl3 {
diff --git a/zephyr/projects/corsola/i2c_krabby.dts b/zephyr/projects/corsola/i2c_krabby.dts
index 6eb08c6460..a522eebea6 100644
--- a/zephyr/projects/corsola/i2c_krabby.dts
+++ b/zephyr/projects/corsola/i2c_krabby.dts
@@ -53,6 +53,12 @@ i2c_pwr_cbi: &i2c0 {
pinctrl-0 = <&i2c0_clk_gpb3_default
&i2c0_data_gpb4_default>;
pinctrl-names = "default";
+
+ charger: rt9490@53 {
+ compatible = "richtek,rt9490";
+ status = "okay";
+ reg = <0x53>;
+ };
};
&i2c1 {
diff --git a/zephyr/projects/corsola/usbc_kingler.dts b/zephyr/projects/corsola/usbc_kingler.dts
index 8e96c62a4f..549a1b8622 100644
--- a/zephyr/projects/corsola/usbc_kingler.dts
+++ b/zephyr/projects/corsola/usbc_kingler.dts
@@ -20,11 +20,7 @@
i2c-addr-flags = "NX20P3483_ADDR2_FLAGS";
};
usb-muxes = <&anx7447_mux_0 &virtual_mux_0>;
- chg {
- compatible = "intersil,isl923x";
- status = "okay";
- port = <&i2c_charger>;
- };
+ chg = <&charger>;
};
port0-muxes {
diff --git a/zephyr/projects/corsola/usbc_krabby.dts b/zephyr/projects/corsola/usbc_krabby.dts
index 829405bd87..5a41dff504 100644
--- a/zephyr/projects/corsola/usbc_krabby.dts
+++ b/zephyr/projects/corsola/usbc_krabby.dts
@@ -19,11 +19,7 @@
port = <&i2c_usb_c0>;
i2c-addr-flags = "RT1739_ADDR1_FLAGS";
};
- chg {
- compatible = "richtek,rt9490";
- status = "okay";
- port = <&i2c_charger>;
- };
+ chg = <&charger>;
usb-muxes = <&it5205_mux_0 &virtual_mux_0>;
};
port0-muxes {
diff --git a/zephyr/projects/corsola/usbc_tentacruel.dts b/zephyr/projects/corsola/usbc_tentacruel.dts
index 899a95c8d8..78a88e2031 100644
--- a/zephyr/projects/corsola/usbc_tentacruel.dts
+++ b/zephyr/projects/corsola/usbc_tentacruel.dts
@@ -19,11 +19,7 @@
i2c-addr-flags = "RT1739_ADDR1_FLAGS";
};
tcpc = <&usbpd0>;
- chg {
- compatible = "richtek,rt9490";
- status = "okay";
- port = <&i2c_charger>;
- };
+ chg = <&charger>;
usb-muxes = <&it5205_mux_0 &virtual_mux_0>;
};
port0-muxes {
diff --git a/zephyr/projects/herobrine/i2c.dts b/zephyr/projects/herobrine/i2c.dts
index cab36e9a62..0ff60658cc 100644
--- a/zephyr/projects/herobrine/i2c.dts
+++ b/zephyr/projects/herobrine/i2c.dts
@@ -66,6 +66,12 @@
reg = <0x5f>;
irq = <&int_usb_c0_bc12>;
};
+
+ charger: isl923x@9 {
+ compatible = "intersil,isl923x";
+ status = "okay";
+ reg = <0x9>;
+ };
};
&i2c_ctrl0 {
diff --git a/zephyr/projects/herobrine/usbc_evoker.dts b/zephyr/projects/herobrine/usbc_evoker.dts
index 12273897b7..cad7e04b39 100644
--- a/zephyr/projects/herobrine/usbc_evoker.dts
+++ b/zephyr/projects/herobrine/usbc_evoker.dts
@@ -19,11 +19,7 @@
port = <&i2c_tcpc0>;
i2c-addr-flags = "SN5S330_ADDR0_FLAGS";
};
- chg {
- compatible = "intersil,isl923x";
- status = "okay";
- port = <&i2c_power>;
- };
+ chg = <&charger>;
usb-muxes = <&usb_mux_0>;
};
usb_mux_0: usb-mux-0 {
diff --git a/zephyr/projects/herobrine/usbc_herobrine.dts b/zephyr/projects/herobrine/usbc_herobrine.dts
index 27c575f5db..f1bfd0f196 100644
--- a/zephyr/projects/herobrine/usbc_herobrine.dts
+++ b/zephyr/projects/herobrine/usbc_herobrine.dts
@@ -19,11 +19,7 @@
port = <&i2c_tcpc0>;
i2c-addr-flags = "SN5S330_ADDR0_FLAGS";
};
- chg {
- compatible = "intersil,isl923x";
- status = "okay";
- port = <&i2c_power>;
- };
+ chg = <&charger>;
usb-muxes = <&usb_mux_0>;
};
usb_mux_0: usb-mux-0 {
diff --git a/zephyr/projects/herobrine/usbc_hoglin.dts b/zephyr/projects/herobrine/usbc_hoglin.dts
index eaf0143d4b..bd55206737 100644
--- a/zephyr/projects/herobrine/usbc_hoglin.dts
+++ b/zephyr/projects/herobrine/usbc_hoglin.dts
@@ -20,11 +20,7 @@
i2c-addr-flags = "SYV682X_ADDR1_FLAGS";
frs_en_gpio = <&gpio_usb_c0_frs_en>;
};
- chg {
- compatible = "intersil,isl923x";
- status = "okay";
- port = <&i2c_power>;
- };
+ chg = <&charger>;
usb-muxes = <&usb_mux_0>;
};
usb_mux_0: usb-mux-0 {
diff --git a/zephyr/projects/herobrine/usbc_villager.dts b/zephyr/projects/herobrine/usbc_villager.dts
index 05a60d1111..892478d209 100644
--- a/zephyr/projects/herobrine/usbc_villager.dts
+++ b/zephyr/projects/herobrine/usbc_villager.dts
@@ -20,11 +20,7 @@
i2c-addr-flags = "SYV682X_ADDR1_FLAGS";
frs_en_gpio = <&gpio_usb_c0_frs_en>;
};
- chg {
- compatible = "intersil,isl923x";
- status = "okay";
- port = <&i2c_power>;
- };
+ chg = <&charger>;
usb-muxes = <&usb_mux_0>;
};
usb_mux_0: usb-mux-0 {
diff --git a/zephyr/projects/intelrvp/adlrvp/adlrvp_npcx/adlrvp_npcx.dts b/zephyr/projects/intelrvp/adlrvp/adlrvp_npcx/adlrvp_npcx.dts
index 0875f350ec..7af9a4a259 100644
--- a/zephyr/projects/intelrvp/adlrvp/adlrvp_npcx/adlrvp_npcx.dts
+++ b/zephyr/projects/intelrvp/adlrvp/adlrvp_npcx/adlrvp_npcx.dts
@@ -117,6 +117,12 @@
reg = <0x38>;
label = "MAX695X_SEVEN_SEG_DISPLAY";
};
+
+ charger: isl9241@9 {
+ compatible = "intersil,isl9241";
+ status = "okay";
+ reg = <0x9>;
+ };
};
&i2c_ctrl7 {
diff --git a/zephyr/projects/intelrvp/adlrvp/adlrvp_npcx/usbc.dts b/zephyr/projects/intelrvp/adlrvp/adlrvp_npcx/usbc.dts
index 4441730f8e..17cf3e4dc5 100644
--- a/zephyr/projects/intelrvp/adlrvp/adlrvp_npcx/usbc.dts
+++ b/zephyr/projects/intelrvp/adlrvp/adlrvp_npcx/usbc.dts
@@ -11,11 +11,7 @@
compatible = "named-usbc-port";
reg = <0>;
tcpc = <&tcpc_port0>;
- chg {
- compatible = "intersil,isl9241";
- status = "okay";
- port = <&i2c_charger>;
- };
+ chg = <&charger>;
usb-muxes = <&usb_c0_bb_retimer &virtual_mux_c0>;
};
port0-muxes {
diff --git a/zephyr/projects/intelrvp/mtlrvp/mtlrvpp_npcx/mtlrvp_npcx.dts b/zephyr/projects/intelrvp/mtlrvp/mtlrvpp_npcx/mtlrvp_npcx.dts
index 9e3289628e..83b454028b 100644
--- a/zephyr/projects/intelrvp/mtlrvp/mtlrvpp_npcx/mtlrvp_npcx.dts
+++ b/zephyr/projects/intelrvp/mtlrvp/mtlrvpp_npcx/mtlrvp_npcx.dts
@@ -109,6 +109,12 @@
reg = <0x38>;
label = "MAX695X_SEVEN_SEG_DISPLAY";
};
+
+ charger: isl9241@9 {
+ compatible = "intersil,isl9241";
+ status = "okay";
+ reg = <0x9>;
+ };
};
/* host interface */
diff --git a/zephyr/projects/intelrvp/mtlrvp/usbc.dts b/zephyr/projects/intelrvp/mtlrvp/usbc.dts
index a71cc32090..32ef4f7535 100644
--- a/zephyr/projects/intelrvp/mtlrvp/usbc.dts
+++ b/zephyr/projects/intelrvp/mtlrvp/usbc.dts
@@ -12,11 +12,7 @@
compatible = "named-usbc-port";
reg = <0>;
tcpc = <&tcpc_port0>;
- chg {
- compatible = "intersil,isl9241";
- status = "okay";
- port = <&i2c_charger>;
- };
+ chg = <&charger>;
usb-muxes = <&usb_c0_hb_retimer &virtual_mux_c0>;
};
port0-muxes {
diff --git a/zephyr/projects/nissa/craask/overlay.dts b/zephyr/projects/nissa/craask/overlay.dts
index 2d7c904a9d..180a2596a5 100644
--- a/zephyr/projects/nissa/craask/overlay.dts
+++ b/zephyr/projects/nissa/craask/overlay.dts
@@ -202,11 +202,7 @@
compatible = "named-usbc-port";
reg = <0>;
bc12 = <&bc12_port0>;
- chg {
- compatible = "intersil,isl923x";
- status = "okay";
- port = <&i2c_ec_i2c_usb_c0>;
- };
+ chg = <&chg_port0>;
usb-muxes = <&virtual_mux_0>;
};
port0-muxes {
@@ -222,11 +218,7 @@
compatible = "named-usbc-port";
reg = <1>;
bc12 = <&bc12_port1>;
- chg {
- compatible = "intersil,isl923x";
- status = "okay";
- port = <&i2c_ec_i2c_sub_usb_c1>;
- };
+ chg = <&chg_port1>;
/*
* Some sub-boards may disable all usb muxes in chain
* except virtual_mux_1
@@ -302,6 +294,12 @@
* usb_c0_interrupt.
*/
};
+
+ chg_port0: isl923x@9 {
+ compatible = "intersil,isl923x";
+ status = "okay";
+ reg = <0x9>;
+ };
};
&i2c5_1 {
@@ -313,6 +311,12 @@
status = "okay";
reg = <0x5f>;
};
+
+ chg_port1: isl923x@9 {
+ compatible = "intersil,isl923x";
+ status = "okay";
+ reg = <0x9>;
+ };
};
&i2c7_0 {
diff --git a/zephyr/projects/nissa/joxer/overlay.dts b/zephyr/projects/nissa/joxer/overlay.dts
index 53290e2d97..6aa9c55e3f 100644
--- a/zephyr/projects/nissa/joxer/overlay.dts
+++ b/zephyr/projects/nissa/joxer/overlay.dts
@@ -238,11 +238,7 @@
compatible = "named-usbc-port";
reg = <0>;
bc12 = <&bc12_port0>;
- chg {
- compatible = "siliconmitus,sm5803";
- status = "okay";
- port = <&i2c_ec_i2c_usb_c0>;
- };
+ chg = <&chg_port0>;
usb-muxes = <&virtual_mux_0>;
};
port0-muxes {
@@ -254,11 +250,7 @@
compatible = "named-usbc-port";
reg = <1>;
bc12 = <&bc12_port1>;
- chg {
- compatible = "siliconmitus,sm5803";
- status = "okay";
- port = <&i2c_ec_i2c_sub_usb_c1>;
- };
+ chg = <&chg_port1>;
/*
* Some sub-boards may disable all usb muxes in chain
* except virtual_mux_1
@@ -386,6 +378,12 @@
status = "okay";
reg = <0x5f>;
};
+
+ chg_port1: sm5803@32 {
+ compatible = "siliconmitus,sm5803";
+ status = "okay";
+ reg = <0x32>;
+ };
};
&i2c_ec_i2c_sub_usb_c1 {
@@ -410,6 +408,12 @@
status = "okay";
reg = <0x5f>;
};
+
+ chg_port0: sm5803@32 {
+ compatible = "siliconmitus,sm5803";
+ status = "okay";
+ reg = <0x32>;
+ };
};
/* pwm for fan */
diff --git a/zephyr/projects/nissa/nereid/overlay.dts b/zephyr/projects/nissa/nereid/overlay.dts
index 7a4425df19..48d94f8bb5 100644
--- a/zephyr/projects/nissa/nereid/overlay.dts
+++ b/zephyr/projects/nissa/nereid/overlay.dts
@@ -208,11 +208,7 @@
compatible = "named-usbc-port";
reg = <0>;
bc12 = <&bc12_port0>;
- chg {
- compatible = "siliconmitus,sm5803";
- status = "okay";
- port = <&i2c_ec_i2c_usb_c0>;
- };
+ chg = <&chg_port0>;
usb-muxes = <&virtual_mux_0>;
};
port0-muxes {
@@ -224,11 +220,7 @@
compatible = "named-usbc-port";
reg = <1>;
bc12 = <&bc12_port1>;
- chg {
- compatible = "siliconmitus,sm5803";
- status = "okay";
- port = <&i2c_ec_i2c_sub_usb_c1>;
- };
+ chg = <&chg_port1>;
/*
* Some sub-boards may disable all usb muxes in chain
* except virtual_mux_1
@@ -351,6 +343,12 @@
status = "okay";
reg = <0x5f>;
};
+
+ chg_port1: sm5803@32 {
+ compatible = "siliconmitus,sm5803";
+ status = "okay";
+ reg = <0x32>;
+ };
};
&i2c_ec_i2c_sub_usb_c1 {
@@ -375,6 +373,12 @@
status = "okay";
reg = <0x5f>;
};
+
+ chg_port0: sm5803@32 {
+ compatible = "siliconmitus,sm5803";
+ status = "okay";
+ reg = <0x32>;
+ };
};
&usbpd0 {
diff --git a/zephyr/projects/nissa/nivviks/overlay.dts b/zephyr/projects/nissa/nivviks/overlay.dts
index b41cd9af34..9a9db0cb22 100644
--- a/zephyr/projects/nissa/nivviks/overlay.dts
+++ b/zephyr/projects/nissa/nivviks/overlay.dts
@@ -212,11 +212,7 @@
compatible = "named-usbc-port";
reg = <0>;
bc12 = <&bc12_port0>;
- chg {
- compatible = "intersil,isl923x";
- status = "okay";
- port = <&i2c_ec_i2c_usb_c0>;
- };
+ chg = <&chg_port0>;
usb-muxes = <&virtual_mux_0>;
};
port0-muxes {
@@ -232,11 +228,7 @@
compatible = "named-usbc-port";
reg = <1>;
bc12 = <&bc12_port1>;
- chg {
- compatible = "intersil,isl923x";
- status = "okay";
- port = <&i2c_ec_i2c_sub_usb_c1>;
- };
+ chg = <&chg_port1>;
/*
* Some sub-boards may disable all usb muxes in chain
* except virtual_mux_1
@@ -345,6 +337,12 @@
* usb_c0_interrupt.
*/
};
+
+ chg_port0: isl923x@9 {
+ compatible = "intersil,isl923x";
+ status = "okay";
+ reg = <0x9>;
+ };
};
&i2c5_1 {
@@ -356,6 +354,12 @@
status = "okay";
reg = <0x5f>;
};
+
+ chg_port1: isl923x@9 {
+ compatible = "intersil,isl923x";
+ status = "okay";
+ reg = <0x9>;
+ };
};
&i2c7_0 {
diff --git a/zephyr/projects/nissa/pujjo/overlay.dts b/zephyr/projects/nissa/pujjo/overlay.dts
index ae04f21ab0..64bbc918a2 100644
--- a/zephyr/projects/nissa/pujjo/overlay.dts
+++ b/zephyr/projects/nissa/pujjo/overlay.dts
@@ -212,11 +212,7 @@
compatible = "named-usbc-port";
reg = <0>;
bc12 = <&bc12_port0>;
- chg {
- compatible = "intersil,isl923x";
- status = "okay";
- port = <&i2c_ec_i2c_usb_c0>;
- };
+ chg = <&chg_port0>;
usb-muxes = <&virtual_mux_0>;
};
port0-muxes {
@@ -305,6 +301,12 @@
* usb_c0_interrupt.
*/
};
+
+ chg_port0: isl923x@9 {
+ compatible = "intersil,isl923x";
+ status = "okay";
+ reg = <0x9>;
+ };
};
&i2c7_0 {
diff --git a/zephyr/projects/nissa/xivu/overlay.dts b/zephyr/projects/nissa/xivu/overlay.dts
index d33d8c9498..34ea16d513 100644
--- a/zephyr/projects/nissa/xivu/overlay.dts
+++ b/zephyr/projects/nissa/xivu/overlay.dts
@@ -193,11 +193,7 @@
compatible = "named-usbc-port";
reg = <0>;
bc12 = <&bc12_port0>;
- chg {
- compatible = "intersil,isl923x";
- status = "okay";
- port = <&i2c_ec_i2c_usb_c0>;
- };
+ chg = <&chg_port0>;
usb-muxes = <&virtual_mux_0>;
};
port0-muxes {
@@ -213,11 +209,7 @@
compatible = "named-usbc-port";
reg = <1>;
bc12 = <&bc12_port1>;
- chg {
- compatible = "intersil,isl923x";
- status = "okay";
- port = <&i2c_ec_i2c_sub_usb_c1>;
- };
+ chg = <&chg_port1>;
/*
* Some sub-boards may disable all usb muxes in chain
* except virtual_mux_1
@@ -299,6 +291,12 @@
* usb_c0_interrupt.
*/
};
+
+ chg_port0: isl923x@9 {
+ compatible = "intersil,isl923x";
+ status = "okay";
+ reg = <0x9>;
+ };
};
&i2c5_1 {
@@ -310,6 +308,12 @@
status = "okay";
reg = <0x5f>;
};
+
+ chg_port1: isl923x@9 {
+ compatible = "intersil,isl923x";
+ status = "okay";
+ reg = <0x9>;
+ };
};
&i2c7_0 {
diff --git a/zephyr/projects/rex/rex.dts b/zephyr/projects/rex/rex.dts
index d35bccf19a..e1d4e1b62e 100644
--- a/zephyr/projects/rex/rex.dts
+++ b/zephyr/projects/rex/rex.dts
@@ -162,4 +162,10 @@
pinctrl-0 = <&i2c7_0_sda_scl_gpb2_b3>;
pinctrl-names = "default";
+
+ charger: isl9241@9 {
+ compatible = "intersil,isl9241";
+ status = "okay";
+ reg = <0x73>;
+ };
};
diff --git a/zephyr/projects/rex/usbc.dts b/zephyr/projects/rex/usbc.dts
index 484aa90c26..dfb88a8f7e 100644
--- a/zephyr/projects/rex/usbc.dts
+++ b/zephyr/projects/rex/usbc.dts
@@ -19,11 +19,7 @@
i2c-addr-flags = "SYV682X_ADDR1_FLAGS";
};
tcpc = <&tcpc_port0>;
- chg {
- compatible = "intersil,isl9241";
- status = "okay";
- port = <&i2c_ec_i2c_mi>;
- };
+ chg = <&charger>;
usb-muxes = <&usb_c0_hb_retimer &virtual_mux_c0>;
};
port0-muxes {
diff --git a/zephyr/projects/skyrim/i2c.dts b/zephyr/projects/skyrim/i2c.dts
index 9af7eccc8e..bece4b5607 100644
--- a/zephyr/projects/skyrim/i2c.dts
+++ b/zephyr/projects/skyrim/i2c.dts
@@ -146,6 +146,12 @@
clock-frequency = <I2C_BITRATE_FAST>;
pinctrl-0 = <&i2c4_1_sda_scl_gpf2_f3>;
pinctrl-names = "default";
+
+ charger: isl9241@9 {
+ compatible = "intersil,isl9241";
+ status = "okay";
+ reg = <0x9>;
+ };
};
&i2c_ctrl4 {
diff --git a/zephyr/projects/skyrim/usbc.dts b/zephyr/projects/skyrim/usbc.dts
index 5cfab0a4c8..dbbaa8f803 100644
--- a/zephyr/projects/skyrim/usbc.dts
+++ b/zephyr/projects/skyrim/usbc.dts
@@ -13,11 +13,7 @@
reg = <0>;
bc12 = <&bc12_port0>;
tcpc = <&tcpc_port0>;
- chg {
- compatible = "intersil,isl9241";
- status = "okay";
- port = <&i2c_charger>;
- };
+ chg = <&charger>;
};
port1@1 {
diff --git a/zephyr/projects/trogdor/lazor/i2c.dts b/zephyr/projects/trogdor/lazor/i2c.dts
index b2721d7a89..46dedca503 100644
--- a/zephyr/projects/trogdor/lazor/i2c.dts
+++ b/zephyr/projects/trogdor/lazor/i2c.dts
@@ -48,6 +48,12 @@
reg = <0x5f>;
irq = <&int_usb_c0_bc12>;
};
+
+ charger: isl923x@9 {
+ compatible = "intersil,isl923x";
+ status = "okay";
+ reg = <0x9>;
+ };
};
&i2c_ctrl0 {
diff --git a/zephyr/projects/trogdor/lazor/usbc.dts b/zephyr/projects/trogdor/lazor/usbc.dts
index 67adb0518e..76f3596804 100644
--- a/zephyr/projects/trogdor/lazor/usbc.dts
+++ b/zephyr/projects/trogdor/lazor/usbc.dts
@@ -25,11 +25,7 @@
i2c-addr-flags = "SN5S330_ADDR0_FLAGS";
};
- chg {
- compatible = "intersil,isl923x";
- status = "okay";
- port = <&i2c_power>;
- };
+ chg = <&charger>;
};
port1@1 {
diff --git a/zephyr/shim/include/charger/chg_bq25710.h b/zephyr/shim/include/charger/chg_bq25710.h
index 6458545946..9ce7e5a037 100644
--- a/zephyr/shim/include/charger/chg_bq25710.h
+++ b/zephyr/shim/include/charger/chg_bq25710.h
@@ -10,10 +10,10 @@
#define BQ25710_CHG_COMPAT ti_bq25710
-#define CHG_CONFIG_BQ25710(id) \
- { \
- .i2c_port = I2C_PORT(DT_PHANDLE(id, port)), \
- .i2c_addr_flags = BQ25710_SMBUS_ADDR1_FLAGS, \
- .drv = &bq25710_drv, \
+#define CHG_CONFIG_BQ25710(id) \
+ { \
+ .i2c_port = I2C_PORT_BY_DEV(id), \
+ .i2c_addr_flags = DT_REG_ADDR(id), \
+ .drv = &bq25710_drv, \
},
#endif
diff --git a/zephyr/shim/include/charger/chg_isl923x.h b/zephyr/shim/include/charger/chg_isl923x.h
index fea25e7391..ba383358e8 100644
--- a/zephyr/shim/include/charger/chg_isl923x.h
+++ b/zephyr/shim/include/charger/chg_isl923x.h
@@ -7,10 +7,11 @@
#include "driver/charger/isl923x_public.h"
#define ISL923X_CHG_COMPAT intersil_isl923x
+#define ISL923X_EMUL_COMPAT cros_isl923x_emul
-#define CHG_CONFIG_ISL923X(id) \
- { \
- .i2c_port = I2C_PORT(DT_PHANDLE(id, port)), \
- .i2c_addr_flags = ISL923X_ADDR_FLAGS, \
- .drv = &isl923x_drv, \
+#define CHG_CONFIG_ISL923X(id) \
+ { \
+ .i2c_port = I2C_PORT_BY_DEV(id), \
+ .i2c_addr_flags = DT_REG_ADDR(id), \
+ .drv = &isl923x_drv, \
},
diff --git a/zephyr/shim/include/charger/chg_isl9241.h b/zephyr/shim/include/charger/chg_isl9241.h
index 8e19e2643e..0a880a1996 100644
--- a/zephyr/shim/include/charger/chg_isl9241.h
+++ b/zephyr/shim/include/charger/chg_isl9241.h
@@ -8,9 +8,9 @@
#define ISL9241_CHG_COMPAT intersil_isl9241
-#define CHG_CONFIG_ISL9241(id) \
- { \
- .i2c_port = I2C_PORT(DT_PHANDLE(id, port)), \
- .i2c_addr_flags = ISL9241_ADDR_FLAGS, \
- .drv = &isl9241_drv, \
+#define CHG_CONFIG_ISL9241(id) \
+ { \
+ .i2c_port = I2C_PORT_BY_DEV(id), \
+ .i2c_addr_flags = DT_REG_ADDR(id), \
+ .drv = &isl9241_drv, \
},
diff --git a/zephyr/shim/include/charger/chg_rt9490.h b/zephyr/shim/include/charger/chg_rt9490.h
index 03059078e9..a8424e4db5 100644
--- a/zephyr/shim/include/charger/chg_rt9490.h
+++ b/zephyr/shim/include/charger/chg_rt9490.h
@@ -8,9 +8,9 @@
#define RT9490_CHG_COMPAT richtek_rt9490
-#define CHG_CONFIG_RT9490(id) \
- { \
- .i2c_port = I2C_PORT(DT_PHANDLE(id, port)), \
- .i2c_addr_flags = RT9490_ADDR_FLAGS, \
- .drv = &rt9490_drv, \
+#define CHG_CONFIG_RT9490(id) \
+ { \
+ .i2c_port = I2C_PORT_BY_DEV(id), \
+ .i2c_addr_flags = DT_REG_ADDR(id), \
+ .drv = &rt9490_drv, \
},
diff --git a/zephyr/shim/include/charger/chg_sm5803.h b/zephyr/shim/include/charger/chg_sm5803.h
index 7e18a5554b..e3e23503f4 100644
--- a/zephyr/shim/include/charger/chg_sm5803.h
+++ b/zephyr/shim/include/charger/chg_sm5803.h
@@ -8,9 +8,9 @@
#define SM5803_CHG_COMPAT siliconmitus_sm5803
-#define CHG_CONFIG_SM5803(id) \
- { \
- .i2c_port = I2C_PORT(DT_PHANDLE(id, port)), \
- .i2c_addr_flags = SM5803_ADDR_CHARGER_FLAGS, \
- .drv = &sm5803_drv, \
+#define CHG_CONFIG_SM5803(id) \
+ { \
+ .i2c_port = I2C_PORT_BY_DEV(id), \
+ .i2c_addr_flags = DT_REG_ADDR(id), \
+ .drv = &sm5803_drv, \
},
diff --git a/zephyr/shim/src/charger.c b/zephyr/shim/src/charger.c
index 72322b4510..87e847e6f0 100644
--- a/zephyr/shim/src/charger.c
+++ b/zephyr/shim/src/charger.c
@@ -12,31 +12,35 @@
#include "charger/chg_rt9490.h"
#include "charger/chg_sm5803.h"
#include "hooks.h"
+#include "usbc/utils.h"
LOG_MODULE_DECLARE(ap_pwrseq, LOG_LEVEL_INF);
-#define CHG_CHIP(id, fn) [DT_REG_ADDR(DT_PARENT(id))] = fn(id)
+#define CHG_CHIP_ENTRY(usbc_id, chg_id, config_fn) \
+ [USBC_PORT_NEW(usbc_id)] = config_fn(chg_id)
+
+#define CHECK_COMPAT(compat, usbc_id, chg_id, config_fn) \
+ COND_CODE_1(DT_NODE_HAS_COMPAT(chg_id, compat), \
+ (CHG_CHIP_ENTRY(usbc_id, chg_id, config_fn)), ())
+
+#define CHG_CHIP_FIND(usbc_id, chg_id) \
+ CHECK_COMPAT(BQ25710_CHG_COMPAT, usbc_id, chg_id, CHG_CONFIG_BQ25710) \
+ CHECK_COMPAT(ISL923X_CHG_COMPAT, usbc_id, chg_id, CHG_CONFIG_ISL923X) \
+ CHECK_COMPAT(ISL923X_EMUL_COMPAT, usbc_id, chg_id, CHG_CONFIG_ISL923X) \
+ CHECK_COMPAT(ISL9241_CHG_COMPAT, usbc_id, chg_id, CHG_CONFIG_ISL9241) \
+ CHECK_COMPAT(RT9490_CHG_COMPAT, usbc_id, chg_id, CHG_CONFIG_RT9490) \
+ CHECK_COMPAT(SM5803_CHG_COMPAT, usbc_id, chg_id, CHG_CONFIG_SM5803)
+
+#define CHG_CHIP(usbc_id) \
+ COND_CODE_1(DT_NODE_HAS_PROP(usbc_id, chg), \
+ (CHG_CHIP_FIND(usbc_id, DT_PHANDLE(usbc_id, chg))), ())
+
+#define MAYBE_CONST \
+ COND_CODE_1(CONFIG_PLATFORM_EC_CHARGER_RUNTIME_CONFIG, (), (const))
/* Charger chips */
-#ifndef CONFIG_PLATFORM_EC_CHARGER_RUNTIME_CONFIG
-const struct charger_config_t chg_chips[] = {
-#else
-struct charger_config_t chg_chips[] = {
-#endif
- DT_FOREACH_STATUS_OKAY_VARGS(BQ25710_CHG_COMPAT, CHG_CHIP,
- CHG_CONFIG_BQ25710)
- DT_FOREACH_STATUS_OKAY_VARGS(ISL923X_CHG_COMPAT, CHG_CHIP,
- CHG_CONFIG_ISL923X)
- DT_FOREACH_STATUS_OKAY_VARGS(ISL9241_CHG_COMPAT,
- CHG_CHIP,
- CHG_CONFIG_ISL9241)
- DT_FOREACH_STATUS_OKAY_VARGS(RT9490_CHG_COMPAT,
- CHG_CHIP,
- CHG_CONFIG_RT9490)
- DT_FOREACH_STATUS_OKAY_VARGS(
- SM5803_CHG_COMPAT, CHG_CHIP,
- CHG_CONFIG_SM5803)
-};
+MAYBE_CONST struct charger_config_t chg_chips[] = { DT_FOREACH_STATUS_OKAY(
+ named_usbc_port, CHG_CHIP) };
#ifdef CONFIG_PLATFORM_EC_CHARGER_SINGLE_CHIP
BUILD_ASSERT(ARRAY_SIZE(chg_chips) == 1,
diff --git a/zephyr/test/drivers/boards/native_posix.overlay b/zephyr/test/drivers/boards/native_posix.overlay
index fdec710b9d..d5b3fdbb01 100644
--- a/zephyr/test/drivers/boards/native_posix.overlay
+++ b/zephyr/test/drivers/boards/native_posix.overlay
@@ -32,12 +32,7 @@
port0@0 {
compatible = "named-usbc-port";
reg = <0>;
-
- chg {
- compatible = "intersil,isl923x";
- status = "okay";
- port = <&named_i2c0>;
- };
+ chg = <&isl923x_emul>;
};
port1@1 {