Re: [PATCH v6 11/12] arm64: dts: qcom: add PMP8074 DTSI
From: Konrad Dybcio
Date: Wed Jul 06 2022 - 08:27:36 EST
On 4.07.2022 23:24, Robert Marko wrote:
> PMP8074 is a companion PMIC to the Qualcomm IPQ8074 series that is
> controlled via SPMI.
>
> Add DTSI for it providing GPIO, regulator and RTC support.
>
> RTC is disabled by default as there is no built-in battery so it will
> loose time unless board vendor added a battery, so make it optional.
>
> Signed-off-by: Robert Marko <robimarko@xxxxxxxxx>
> ---
> Changes in v6:
> * Add RTC and GPIO nodes
>
> Changes in v5:
> * Remove #address-cells and #size-cells as they are not required for
> regulator subnodes
> ---
> arch/arm64/boot/dts/qcom/pmp8074.dtsi | 125 ++++++++++++++++++++++++++
> 1 file changed, 125 insertions(+)
> create mode 100644 arch/arm64/boot/dts/qcom/pmp8074.dtsi
>
> diff --git a/arch/arm64/boot/dts/qcom/pmp8074.dtsi b/arch/arm64/boot/dts/qcom/pmp8074.dtsi
> new file mode 100644
> index 000000000000..a3b395e4d78f
> --- /dev/null
> +++ b/arch/arm64/boot/dts/qcom/pmp8074.dtsi
> @@ -0,0 +1,125 @@
> +// SPDX-License-Identifier: GPL-2.0-only
Hi,
Please consider BSD3, or at least dual-licensing with some permissive
license (so that for example BSDs can re-use these DTs).
> +
> +#include <dt-bindings/spmi/spmi.h>
> +#include <dt-bindings/iio/qcom,spmi-vadc.h>
> +
> +&spmi_bus {
> + pmic@0 {
> + compatible = "qcom,pmp8074", "qcom,spmi-pmic";
> + reg = <0x0 SPMI_USID>;
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + pmp8074_adc: adc@3100 {
> + compatible = "qcom,spmi-adc-rev2";
> + reg = <0x3100>;
> + interrupts = <0x0 0x31 0x0 IRQ_TYPE_EDGE_RISING>;
> + #address-cells = <1>;
> + #size-cells = <0>;
> + #io-channel-cells = <1>;
> +
> + ref_gnd@0 {
No underscores in node names, please change this to ref-gnd (and consequently
for all other nodes). Note that this only concerns node names and not labels.
> + reg = <ADC5_REF_GND>;
> + qcom,pre-scaling = <1 1>;
> + };
> +
> + vref_1p25@1 {
> + reg = <ADC5_1P25VREF>;
> + qcom,pre-scaling = <1 1>;
> + };
> +
> + vref_vadc@2 {
> + reg = <ADC5_VREF_VADC>;
> + qcom,pre-scaling = <1 1>;
> + };
> +
> + pmic_die: die_temp@6 {
> + reg = <ADC5_DIE_TEMP>;
> + qcom,pre-scaling = <1 1>;
> + };
> +
> + xo_therm: xo_temp@76 {
> + reg = <ADC5_XO_THERM_100K_PU>;
> + qcom,ratiometric;
> + qcom,hw-settle-time = <200>;
> + qcom,pre-scaling = <1 1>;
> + };
> +
> + pa_therm1: thermistor1@77 {
> + reg = <ADC5_AMUX_THM1_100K_PU>;
> + qcom,ratiometric;
> + qcom,hw-settle-time = <200>;
> + qcom,pre-scaling = <1 1>;
> + };
> +
> + pa_therm2: thermistor2@78 {
> + reg = <ADC5_AMUX_THM2_100K_PU>;
> + qcom,ratiometric;
> + qcom,hw-settle-time = <200>;
> + qcom,pre-scaling = <1 1>;
> + };
> +
> + pa_therm3: thermistor3@79 {
> + reg = <ADC5_AMUX_THM3_100K_PU>;
> + qcom,ratiometric;
> + qcom,hw-settle-time = <200>;
> + qcom,pre-scaling = <1 1>;
> + };
> +
> + vph_pwr@131 {
> + reg = <ADC5_VPH_PWR>;
> + qcom,pre-scaling = <1 3>;
> + };
> + };
> +
> + pmp8074_rtc: rtc@6000 {
> + compatible = "qcom,pm8941-rtc";
> + reg = <0x6000>;
> + reg-names = "rtc", "alarm";
> + interrupts = <0x0 0x61 0x1 IRQ_TYPE_NONE>;
> + allow-set-time;
> + status = "disabled";
Isn't this PMIC-internal, aka accessible on all devices using PMP8074?
> + };
> +
> + pmp8074_gpios: gpio@c000 {
> + compatible = "qcom,pmp8074-gpio", "qcom,spmi-gpio";
> + reg = <0xc000>;
> + gpio-controller;
> + #gpio-cells = <2>;
> + gpio-ranges = <&pmp8074_gpios 0 0 12>;
> + interrupt-controller;
> + #interrupt-cells = <2>;
> + };
> + };
> +
> + pmic@1 {
> + compatible = "qcom,pmp8074", "qcom,spmi-pmic";
> + reg = <0x1 SPMI_USID>;
> +
> + regulators {
> + compatible = "qcom,pmp8074-regulators";
> +
> + s3: s3 {
> + regulator-name = "vdd_s3";
> + regulator-min-microvolt = <592000>;
> + regulator-max-microvolt = <1064000>;
Are you sure no other configurations are supported with this PMIC?
Otherwise you may accidentally burn somebody's board by setting up
regulators in a place that's not usually expected to have them..
Konrad
> + regulator-always-on;
> + regulator-boot-on;
> + };
> +
> + s4: s4 {
> + regulator-name = "vdd_s4";
> + regulator-min-microvolt = <712000>;
> + regulator-max-microvolt = <992000>;
> + regulator-always-on;
> + regulator-boot-on;
> + };
> +
> + l11: l11 {
> + regulator-name = "l11";
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <3300000>;
> + };
> + };
> + };
> +};