On 2.09.2022 13:10, Luca Weiss wrote: > PM7250B is a PMIC primarily used for charging and fuel gauge but also > has some of the standard functionality like temp-alarm, adc, etc. > > Add the .dtsi with some of the functionality added. > > Signed-off-by: Luca Weiss <luca.weiss@xxxxxxxxxxxxx> > --- Reviewed-by: Konrad Dybcio <konrad.dybcio@xxxxxxxxxxxxxx Konrad > arch/arm64/boot/dts/qcom/pm7250b.dtsi | 149 ++++++++++++++++++++++++++ > 1 file changed, 149 insertions(+) > create mode 100644 arch/arm64/boot/dts/qcom/pm7250b.dtsi > > diff --git a/arch/arm64/boot/dts/qcom/pm7250b.dtsi b/arch/arm64/boot/dts/qcom/pm7250b.dtsi > new file mode 100644 > index 000000000000..61f7a6345150 > --- /dev/null > +++ b/arch/arm64/boot/dts/qcom/pm7250b.dtsi > @@ -0,0 +1,149 @@ > +// SPDX-License-Identifier: BSD-3-Clause > +/* > + * Copyright (C) 2022 Luca Weiss <luca.weiss@xxxxxxxxxxxxx> > + */ > + > +#include <dt-bindings/interrupt-controller/irq.h> > +#include <dt-bindings/spmi/spmi.h> > + > +/ { > + thermal-zones { > + pm7250b-thermal { > + polling-delay-passive = <100>; > + polling-delay = <0>; > + > + thermal-sensors = <&pm7250b_temp>; > + > + trips { > + trip0 { > + temperature = <95000>; > + hysteresis = <0>; > + type = "passive"; > + }; > + > + trip1 { > + temperature = <115000>; > + hysteresis = <0>; > + type = "hot"; > + }; > + > + trip2 { > + temperature = <145000>; > + hysteresis = <0>; > + type = "critical"; > + }; > + }; > + }; > + }; > +}; > + > +&spmi_bus { > + pmic@2 { > + compatible = "qcom,pm7250b", "qcom,spmi-pmic"; > + reg = <0x2 SPMI_USID>; > + #address-cells = <1>; > + #size-cells = <0>; > + > + pm7250b_temp: temp-alarm@2400 { > + compatible = "qcom,spmi-temp-alarm"; > + reg = <0x2400>; > + interrupts = <0x2 0x24 0x0 IRQ_TYPE_EDGE_BOTH>; > + io-channels = <&pm7250b_adc ADC5_DIE_TEMP>; > + io-channel-names = "thermal"; > + #thermal-sensor-cells = <0>; > + }; > + > + pm7250b_adc: adc@3100 { > + compatible = "qcom,spmi-adc5"; > + reg = <0x3100>; > + #address-cells = <1>; > + #size-cells = <0>; > + #io-channel-cells = <1>; > + interrupts = <0x2 0x31 0x0 IRQ_TYPE_EDGE_RISING>; > + > + adc-chan@0 { > + reg = <ADC5_REF_GND>; > + qcom,pre-scaling = <1 1>; > + label = "ref_gnd"; > + }; > + > + adc-chan@1 { > + reg = <ADC5_1P25VREF>; > + qcom,pre-scaling = <1 1>; > + label = "vref_1p25"; > + }; > + > + adc-chan@2 { > + reg = <ADC5_DIE_TEMP>; > + qcom,pre-scaling = <1 1>; > + label = "die_temp"; > + }; > + > + adc-chan@7 { > + reg = <ADC5_USB_IN_I>; > + qcom,pre-scaling = <1 1>; > + label = "usb_in_i_uv"; > + }; > + > + adc-chan@8 { > + reg = <ADC5_USB_IN_V_16>; > + qcom,pre-scaling = <1 16>; > + label = "usb_in_v_div_16"; > + }; > + > + adc-chan@9 { > + reg = <ADC5_CHG_TEMP>; > + qcom,pre-scaling = <1 1>; > + label = "chg_temp"; > + }; > + > + adc-chan@e { > + reg = <ADC5_AMUX_THM2>; > + qcom,hw-settle-time = <200>; > + qcom,pre-scaling = <1 1>; > + label = "smb1390_therm"; > + }; > + > + adc-chan@1e { > + reg = <ADC5_MID_CHG_DIV6>; > + qcom,pre-scaling = <1 6>; > + label = "chg_mid"; > + }; > + > + adc-chan@83 { > + reg = <ADC5_VPH_PWR>; > + qcom,pre-scaling = <1 3>; > + label = "vph_pwr"; > + }; > + > + adc-chan@84 { > + reg = <ADC5_VBAT_SNS>; > + qcom,pre-scaling = <1 3>; > + label = "vbat_sns"; > + }; > + > + adc-chan@99 { > + reg = <ADC5_SBUx>; > + qcom,pre-scaling = <1 3>; > + label = "chg_sbux"; > + }; > + }; > + > + pm7250b_adc_tm: adc-tm@3500 { > + compatible = "qcom,spmi-adc-tm5"; > + reg = <0x3500>; > + interrupts = <0x2 0x35 0x0 IRQ_TYPE_EDGE_RISING>; > + #thermal-sensor-cells = <1>; > + #address-cells = <1>; > + #size-cells = <0>; > + status = "disabled"; > + }; > + }; > + > + pmic@3 { > + compatible = "qcom,pm7250b", "qcom,spmi-pmic"; > + reg = <0x3 SPMI_USID>; > + #address-cells = <1>; > + #size-cells = <0>; > + }; > +};