2022-09-02 11:15:49

by Luca Weiss

[permalink] [raw]
Subject: [PATCH 1/3] mfd: qcom-spmi-pmic: Add pm7250b compatible

Document the compatible for pm7250b that is used with e.g. sm6350.

Also while we're at it, sort the compatibles alphabetically.

Signed-off-by: Luca Weiss <[email protected]>
---
Documentation/devicetree/bindings/mfd/qcom,spmi-pmic.yaml | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/Documentation/devicetree/bindings/mfd/qcom,spmi-pmic.yaml b/Documentation/devicetree/bindings/mfd/qcom,spmi-pmic.yaml
index 65cbc6dee545..202aadc1539d 100644
--- a/Documentation/devicetree/bindings/mfd/qcom,spmi-pmic.yaml
+++ b/Documentation/devicetree/bindings/mfd/qcom,spmi-pmic.yaml
@@ -33,11 +33,12 @@ properties:
compatible:
items:
- enum:
- - qcom,pm660
- - qcom,pm660l
- qcom,pm6150
- qcom,pm6150l
- qcom,pm6350
+ - qcom,pm660
+ - qcom,pm660l
+ - qcom,pm7250b
- qcom,pm7325
- qcom,pm8004
- qcom,pm8005
--
2.37.3


2022-09-02 11:23:47

by Luca Weiss

[permalink] [raw]
Subject: [PATCH 3/3] arm64: dts: qcom: sm7225-fairphone-fp4: Add pm7250b PMIC

The PM7250B is primarily used for charger and fuel gauge on Fairphone 4
but also has some thermal zones that we can configure already.

Signed-off-by: Luca Weiss <[email protected]>
---
.../boot/dts/qcom/sm7225-fairphone-fp4.dts | 67 +++++++++++++++++++
1 file changed, 67 insertions(+)

diff --git a/arch/arm64/boot/dts/qcom/sm7225-fairphone-fp4.dts b/arch/arm64/boot/dts/qcom/sm7225-fairphone-fp4.dts
index c76abe7587b4..30c94fd4fe61 100644
--- a/arch/arm64/boot/dts/qcom/sm7225-fairphone-fp4.dts
+++ b/arch/arm64/boot/dts/qcom/sm7225-fairphone-fp4.dts
@@ -12,6 +12,7 @@
#include "sm7225.dtsi"
#include "pm6150l.dtsi"
#include "pm6350.dtsi"
+#include "pm7250b.dtsi"

/ {
model = "Fairphone 4";
@@ -70,6 +71,36 @@ memory@efe01000 {
qcom,vmid = <15>;
};
};
+
+ thermal-zones {
+ chg-skin-thermal {
+ polling-delay-passive = <0>;
+ polling-delay = <0>;
+ thermal-sensors = <&pm7250b_adc_tm 0>;
+
+ trips {
+ active-config0 {
+ temperature = <125000>;
+ hysteresis = <1000>;
+ type = "passive";
+ };
+ };
+ };
+
+ conn-thermal {
+ polling-delay-passive = <0>;
+ polling-delay = <0>;
+ thermal-sensors = <&pm7250b_adc_tm 1>;
+
+ trips {
+ active-config0 {
+ temperature = <125000>;
+ hysteresis = <1000>;
+ type = "passive";
+ };
+ };
+ };
+ };
};

&adsp {
@@ -353,6 +384,42 @@ &pm6350_resin {
linux,code = <KEY_VOLUMEDOWN>;
};

+&pm7250b_adc {
+ adc-chan@4d {
+ reg = <ADC5_AMUX_THM1_100K_PU>;
+ qcom,ratiometric;
+ qcom,hw-settle-time = <200>;
+ qcom,pre-scaling = <1 1>;
+ label = "charger_skin_therm";
+ };
+
+ adc-chan@4f {
+ reg = <ADC5_AMUX_THM3_100K_PU>;
+ qcom,ratiometric;
+ qcom,hw-settle-time = <200>;
+ qcom,pre-scaling = <1 1>;
+ label = "conn_therm";
+ };
+};
+
+&pm7250b_adc_tm {
+ status = "okay";
+
+ charger-skin-therm@0 {
+ reg = <0>;
+ io-channels = <&pm7250b_adc ADC5_AMUX_THM1_100K_PU>;
+ qcom,ratiometric;
+ qcom,hw-settle-time-us = <200>;
+ };
+
+ conn-therm@1 {
+ reg = <1>;
+ io-channels = <&pm7250b_adc ADC5_AMUX_THM3_100K_PU>;
+ qcom,ratiometric;
+ qcom,hw-settle-time-us = <200>;
+ };
+};
+
&qupv3_id_1 {
status = "okay";
};
--
2.37.3

2022-09-02 11:33:30

by Luca Weiss

[permalink] [raw]
Subject: [PATCH 2/3] arm64: dts: qcom: Add pm7250b PMIC

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 <[email protected]>
---
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 <[email protected]>
+ */
+
+#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>;
+ };
+};
--
2.37.3

2022-09-03 12:57:49

by Konrad Dybcio

[permalink] [raw]
Subject: Re: [PATCH 3/3] arm64: dts: qcom: sm7225-fairphone-fp4: Add pm7250b PMIC



On 2.09.2022 13:10, Luca Weiss wrote:
> The PM7250B is primarily used for charger and fuel gauge on Fairphone 4
> but also has some thermal zones that we can configure already.
>
> Signed-off-by: Luca Weiss <[email protected]>
> ---
> .../boot/dts/qcom/sm7225-fairphone-fp4.dts | 67 +++++++++++++++++++
> 1 file changed, 67 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/qcom/sm7225-fairphone-fp4.dts b/arch/arm64/boot/dts/qcom/sm7225-fairphone-fp4.dts
> index c76abe7587b4..30c94fd4fe61 100644
> --- a/arch/arm64/boot/dts/qcom/sm7225-fairphone-fp4.dts
> +++ b/arch/arm64/boot/dts/qcom/sm7225-fairphone-fp4.dts
> @@ -12,6 +12,7 @@
> #include "sm7225.dtsi"
> #include "pm6150l.dtsi"
> #include "pm6350.dtsi"
> +#include "pm7250b.dtsi"
>
> / {
> model = "Fairphone 4";
> @@ -70,6 +71,36 @@ memory@efe01000 {
> qcom,vmid = <15>;
> };
> };
> +
> + thermal-zones {
> + chg-skin-thermal {
> + polling-delay-passive = <0>;
> + polling-delay = <0>;
> + thermal-sensors = <&pm7250b_adc_tm 0>;
> +
> + trips {
> + active-config0 {
> + temperature = <125000>;
> + hysteresis = <1000>;
> + type = "passive";
> + };
> + };
> + };
> +
> + conn-thermal {
> + polling-delay-passive = <0>;
> + polling-delay = <0>;
> + thermal-sensors = <&pm7250b_adc_tm 1>;
> +
> + trips {
> + active-config0 {
> + temperature = <125000>;
> + hysteresis = <1000>;
> + type = "passive";
> + };
> + };
> + };
> + };
> };
>
> &adsp {
> @@ -353,6 +384,42 @@ &pm6350_resin {
> linux,code = <KEY_VOLUMEDOWN>;
> };
>
> +&pm7250b_adc {
> + adc-chan@4d {
> + reg = <ADC5_AMUX_THM1_100K_PU>;
> + qcom,ratiometric;
> + qcom,hw-settle-time = <200>;
> + qcom,pre-scaling = <1 1>;
> + label = "charger_skin_therm";
> + };
> +
> + adc-chan@4f {
> + reg = <ADC5_AMUX_THM3_100K_PU>;
> + qcom,ratiometric;
> + qcom,hw-settle-time = <200>;
> + qcom,pre-scaling = <1 1>;
> + label = "conn_therm";
> + };
> +};
> +
> +&pm7250b_adc_tm {
> + status = "okay";
> +
> + charger-skin-therm@0 {
> + reg = <0>;
> + io-channels = <&pm7250b_adc ADC5_AMUX_THM1_100K_PU>;
> + qcom,ratiometric;
> + qcom,hw-settle-time-us = <200>;
Reverse-Christmas-tree would have been nicer here and above, in pm7250b_adc,
but for the code itself:

Reviewed-by: Konrad Dybcio <[email protected]>

Konrad
> + };
> +
> + conn-therm@1 {
> + reg = <1>;
> + io-channels = <&pm7250b_adc ADC5_AMUX_THM3_100K_PU>;
> + qcom,ratiometric;
> + qcom,hw-settle-time-us = <200>;
> + };
> +};
> +
> &qupv3_id_1 {
> status = "okay";
> };

2022-09-03 13:15:15

by Konrad Dybcio

[permalink] [raw]
Subject: Re: [PATCH 2/3] arm64: dts: qcom: Add pm7250b PMIC



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 <[email protected]>
> ---
Reviewed-by: Konrad Dybcio <[email protected]

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 <[email protected]>
> + */
> +
> +#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>;
> + };
> +};

2022-09-05 17:10:10

by Krzysztof Kozlowski

[permalink] [raw]
Subject: Re: [PATCH 1/3] mfd: qcom-spmi-pmic: Add pm7250b compatible

On 02/09/2022 13:10, Luca Weiss wrote:
> Document the compatible for pm7250b that is used with e.g. sm6350.
>
> Also while we're at it, sort the compatibles alphabetically.
>
> Signed-off-by: Luca Weiss <[email protected]>


Acked-by: Krzysztof Kozlowski <[email protected]>


Best regards,
Krzysztof

2022-09-06 17:19:54

by Bjorn Andersson

[permalink] [raw]
Subject: Re: (subset) [PATCH 1/3] mfd: qcom-spmi-pmic: Add pm7250b compatible

On Fri, 2 Sep 2022 13:10:53 +0200, Luca Weiss wrote:
> Document the compatible for pm7250b that is used with e.g. sm6350.
>
> Also while we're at it, sort the compatibles alphabetically.
>
>

Applied, thanks!

[2/3] arm64: dts: qcom: Add pm7250b PMIC
commit: 11975b9b813576686653cf76e768d08484a2ddba
[3/3] arm64: dts: qcom: sm7225-fairphone-fp4: Add pm7250b PMIC
commit: 80f63766e52d040726ff38b46e5f569a9fecaf5f

Best regards,
--
Bjorn Andersson <[email protected]>

2022-09-08 10:41:01

by Lee Jones

[permalink] [raw]
Subject: Re: [PATCH 1/3] mfd: qcom-spmi-pmic: Add pm7250b compatible

On Fri, 02 Sep 2022, Luca Weiss wrote:

> Document the compatible for pm7250b that is used with e.g. sm6350.
>
> Also while we're at it, sort the compatibles alphabetically.
>
> Signed-off-by: Luca Weiss <[email protected]>
> ---
> Documentation/devicetree/bindings/mfd/qcom,spmi-pmic.yaml | 5 +++--
> 1 file changed, 3 insertions(+), 2 deletions(-)

Applied, thanks.

--
Lee Jones [李琼斯]