On 18.04.2023 18:43, Luca Weiss wrote: > The PMI632, commonly found on SoCs with SDM632 has various standard > functions like ADC, GPIOs, LPG and more. > > Signed-off-by: Luca Weiss <luca@xxxxxxxxx> > --- Looks good! Reviewed-by: Konrad Dybcio <konrad.dybcio@xxxxxxxxxx> Konrad > arch/arm64/boot/dts/qcom/pmi632.dtsi | 165 +++++++++++++++++++++++++++++++++++ > 1 file changed, 165 insertions(+) > > diff --git a/arch/arm64/boot/dts/qcom/pmi632.dtsi b/arch/arm64/boot/dts/qcom/pmi632.dtsi > new file mode 100644 > index 000000000000..4eb79e0ce40a > --- /dev/null > +++ b/arch/arm64/boot/dts/qcom/pmi632.dtsi > @@ -0,0 +1,165 @@ > +// SPDX-License-Identifier: BSD-3-Clause > +/* > + * Copyright (C) 2023 Luca Weiss <luca@xxxxxxxxx> > + */ > + > +#include <dt-bindings/iio/qcom,spmi-vadc.h> > +#include <dt-bindings/interrupt-controller/irq.h> > +#include <dt-bindings/spmi/spmi.h> > + > +/ { > + thermal-zones { > + pmi632-thermal { > + polling-delay-passive = <100>; > + polling-delay = <0>; > + > + thermal-sensors = <&pmi632_temp>; > + > + trips { > + trip0 { > + temperature = <95000>; > + hysteresis = <0>; > + type = "passive"; > + }; > + > + trip1 { > + temperature = <115000>; > + hysteresis = <0>; > + type = "hot"; > + }; > + > + trip2 { > + temperature = <125000>; > + hysteresis = <0>; > + type = "critical"; > + }; > + }; > + }; > + }; > +}; > + > +&spmi_bus { > + pmic@2 { > + compatible = "qcom,pmi632", "qcom,spmi-pmic"; > + reg = <0x2 SPMI_USID>; > + #address-cells = <1>; > + #size-cells = <0>; > + > + pmi632_temp: temp-alarm@2400 { > + compatible = "qcom,spmi-temp-alarm"; > + reg = <0x2400>; > + interrupts = <0x2 0x24 0x0 IRQ_TYPE_EDGE_BOTH>; > + #thermal-sensor-cells = <0>; > + }; > + > + pmi632_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>; > + > + channel@0 { > + reg = <ADC5_REF_GND>; > + qcom,pre-scaling = <1 1>; > + label = "ref_gnd"; > + }; > + > + channel@1 { > + reg = <ADC5_1P25VREF>; > + qcom,pre-scaling = <1 1>; > + label = "vref_1p25"; > + }; > + > + channel@6 { > + reg = <ADC5_DIE_TEMP>; > + qcom,pre-scaling = <1 1>; > + label = "die_temp"; > + }; > + > + channel@7 { > + reg = <ADC5_USB_IN_I>; > + qcom,pre-scaling = <1 1>; > + label = "usb_in_i_uv"; > + }; > + > + channel@8 { > + reg = <ADC5_USB_IN_V_16>; > + qcom,pre-scaling = <1 16>; > + label = "usb_in_v_div_16"; > + }; > + > + channel@9 { > + reg = <ADC5_CHG_TEMP>; > + qcom,pre-scaling = <1 1>; > + label = "chg_temp"; > + }; > + > + channel@4b { > + reg = <ADC5_BAT_ID_100K_PU>; > + qcom,hw-settle-time = <200>; > + qcom,pre-scaling = <1 1>; > + qcom,ratiometric; > + label = "bat_id"; > + }; > + > + channel@83 { > + reg = <ADC5_VPH_PWR>; > + qcom,pre-scaling = <1 3>; > + label = "vph_pwr"; > + }; > + > + channel@84 { > + reg = <ADC5_VBAT_SNS>; > + qcom,pre-scaling = <1 3>; > + label = "vbat_sns"; > + }; > + }; > + > + pmi632_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"; > + }; > + > + pmi632_sdam_7: nvram@b600 { > + compatible = "qcom,spmi-sdam"; > + reg = <0xb600>; > + #address-cells = <1>; > + #size-cells = <1>; > + ranges = <0 0xb600 0x100>; > + }; > + > + pmi632_gpios: gpio@c000 { > + compatible = "qcom,pmi632-gpio", "qcom,spmi-gpio"; > + reg = <0xc000>; > + gpio-controller; > + gpio-ranges = <&pmi632_gpios 0 0 8>; > + #gpio-cells = <2>; > + interrupt-controller; > + #interrupt-cells = <2>; > + }; > + }; > + > + pmic@3 { > + compatible = "qcom,pmi632", "qcom,spmi-pmic"; > + reg = <0x3 SPMI_USID>; > + #address-cells = <1>; > + #size-cells = <0>; > + > + pmi632_lpg: pwm { > + compatible = "qcom,pmi632-lpg"; > + > + #address-cells = <1>; > + #size-cells = <0>; > + #pwm-cells = <2>; > + > + status = "disabled"; > + }; > + }; > +}; >