diff options
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 { |