Message ID | 20230329000833.2507594-5-dmitry.baryshkov@linaro.org (mailing list archive) |
---|---|
State | Handled Elsewhere |
Headers | show |
Series | arm64: dts: qcom: sc8280xp: remove duplication in PMIC declarations | expand |
On 29.03.2023 02:08, Dmitry Baryshkov wrote: > The platform can use several instances of PM8350 PMIC. Include SID into > all the labels to simplify such platforms configuration. > > Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> > --- > arch/arm64/boot/dts/qcom/pm8350.dtsi | 31 +++++++++++++------ > .../dts/qcom/sm8350-sony-xperia-sagami.dtsi | 4 +-- > .../dts/qcom/sm8450-sony-xperia-nagara.dtsi | 4 +-- > 3 files changed, 26 insertions(+), 13 deletions(-) > > diff --git a/arch/arm64/boot/dts/qcom/pm8350.dtsi b/arch/arm64/boot/dts/qcom/pm8350.dtsi > index 2dfeb99300d7..f1ef242760f2 100644 > --- a/arch/arm64/boot/dts/qcom/pm8350.dtsi > +++ b/arch/arm64/boot/dts/qcom/pm8350.dtsi > @@ -6,21 +6,30 @@ > #include <dt-bindings/interrupt-controller/irq.h> > #include <dt-bindings/spmi/spmi.h> > > +/* (Sadly) this PMIC can be configured to be at different SIDs */ > +#ifndef PM8350_SID > + #define PM8350_SID 1 > +#endif > + > +#define __LABEL(pmic, sid, name) pmic ## _ ## sid ## _ ## name > +#define _LABEL(pmic, sid, name) __LABEL(pmic, sid, name) Perhaps that should go to some Qcom PMIC-common include now! Also, at one point, an idea came up to stop writing so much dt, I'm not necessarily a fan of creating .dtsc (like ACPI-C sources), but perhaps we could explore having e.g. a "gen_dt.py" which would take in some data and generate device trees based on that.. Not very related to this patch, but I'm just throwing it in the open Konrad > +#define LABEL(name) _LABEL(pm8350, PM8350_SID, name) > + > / { > thermal-zones { > - pm8350_thermal: pm8350c-thermal { > + LABEL(thermal): pm8350c-thermal { > polling-delay-passive = <100>; > polling-delay = <0>; > - thermal-sensors = <&pm8350_temp_alarm>; > + thermal-sensors = <&LABEL(temp_alarm)>; > > trips { > - pm8350_trip0: trip0 { > + LABEL(trip0): trip0 { > temperature = <95000>; > hysteresis = <0>; > type = "passive"; > }; > > - pm8350_crit: pm8350c-crit { > + LABEL(crit): pm8350c-crit { > temperature = <115000>; > hysteresis = <0>; > type = "critical"; > @@ -33,25 +42,29 @@ pm8350_crit: pm8350c-crit { > &spmi_bus { > pm8350: pmic@1 { > compatible = "qcom,pm8350", "qcom,spmi-pmic"; > - reg = <0x1 SPMI_USID>; > + reg = <PM8350_SID SPMI_USID>; > #address-cells = <1>; > #size-cells = <0>; > > - pm8350_temp_alarm: temp-alarm@a00 { > + LABEL(temp_alarm): temp-alarm@a00 { > compatible = "qcom,spmi-temp-alarm"; > reg = <0xa00>; > - interrupts = <0x1 0xa 0x0 IRQ_TYPE_EDGE_BOTH>; > + interrupts = <PM8350_SID 0xa 0x0 IRQ_TYPE_EDGE_BOTH>; > #thermal-sensor-cells = <0>; > }; > > - pm8350_gpios: gpio@8800 { > + LABEL(gpios): gpio@8800 { > compatible = "qcom,pm8350-gpio", "qcom,spmi-gpio"; > reg = <0x8800>; > gpio-controller; > - gpio-ranges = <&pm8350_gpios 0 0 10>; > + gpio-ranges = <&LABEL(gpios) 0 0 10>; > #gpio-cells = <2>; > interrupt-controller; > #interrupt-cells = <2>; > }; > }; > }; > + > +#undef LABEL > +#undef _LABEL > +#undef __LABEL > diff --git a/arch/arm64/boot/dts/qcom/sm8350-sony-xperia-sagami.dtsi b/arch/arm64/boot/dts/qcom/sm8350-sony-xperia-sagami.dtsi > index e28f49e31b9f..5c09b1d8881b 100644 > --- a/arch/arm64/boot/dts/qcom/sm8350-sony-xperia-sagami.dtsi > +++ b/arch/arm64/boot/dts/qcom/sm8350-sony-xperia-sagami.dtsi > @@ -72,7 +72,7 @@ key-camera-snapshot { > > key-google-assist { > label = "Google Assistant Key"; > - gpios = <&pm8350_gpios 9 GPIO_ACTIVE_LOW>; > + gpios = <&pm8350_1_gpios 9 GPIO_ACTIVE_LOW>; > linux,code = <KEY_LEFTMETA>; > debounce-interval = <15>; > linux,can-disable; > @@ -564,7 +564,7 @@ &mpss { > firmware-name = "qcom/sm8350/Sony/sagami/modem.mbn"; > }; > > -&pm8350_gpios { > +&pm8350_1_gpios { > gpio-line-names = "ASSIGN1_THERM", /* GPIO_1 */ > "LCD_ID", > "SDR_MMW_THERM", > diff --git a/arch/arm64/boot/dts/qcom/sm8450-sony-xperia-nagara.dtsi b/arch/arm64/boot/dts/qcom/sm8450-sony-xperia-nagara.dtsi > index 99e9b776b93d..d90e3fedb742 100644 > --- a/arch/arm64/boot/dts/qcom/sm8450-sony-xperia-nagara.dtsi > +++ b/arch/arm64/boot/dts/qcom/sm8450-sony-xperia-nagara.dtsi > @@ -56,7 +56,7 @@ key-camera-snapshot { > key-volume-down { > label = "Volume Down"; > linux,code = <KEY_VOLUMEDOWN>; > - gpios = <&pm8350_gpios 6 GPIO_ACTIVE_LOW>; > + gpios = <&pm8350_1_gpios 6 GPIO_ACTIVE_LOW>; > debounce-interval = <15>; > linux,can-disable; > wakeup-source; > @@ -622,7 +622,7 @@ &pcie0_phy { > status = "okay"; > }; > > -&pm8350_gpios { > +&pm8350_1_gpios { > gpio-line-names = "ASSIGN1_THERM", /* GPIO_1 */ > "LCD_ID", > "SDR_MMW_THERM",
On Wed, 29 Mar 2023 at 03:33, Konrad Dybcio <konrad.dybcio@linaro.org> wrote: > > > > On 29.03.2023 02:08, Dmitry Baryshkov wrote: > > The platform can use several instances of PM8350 PMIC. Include SID into > > all the labels to simplify such platforms configuration. > > > > Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> > > --- > > arch/arm64/boot/dts/qcom/pm8350.dtsi | 31 +++++++++++++------ > > .../dts/qcom/sm8350-sony-xperia-sagami.dtsi | 4 +-- > > .../dts/qcom/sm8450-sony-xperia-nagara.dtsi | 4 +-- > > 3 files changed, 26 insertions(+), 13 deletions(-) > > > > diff --git a/arch/arm64/boot/dts/qcom/pm8350.dtsi b/arch/arm64/boot/dts/qcom/pm8350.dtsi > > index 2dfeb99300d7..f1ef242760f2 100644 > > --- a/arch/arm64/boot/dts/qcom/pm8350.dtsi > > +++ b/arch/arm64/boot/dts/qcom/pm8350.dtsi > > @@ -6,21 +6,30 @@ > > #include <dt-bindings/interrupt-controller/irq.h> > > #include <dt-bindings/spmi/spmi.h> > > > > +/* (Sadly) this PMIC can be configured to be at different SIDs */ > > +#ifndef PM8350_SID > > + #define PM8350_SID 1 > > +#endif > > + > > +#define __LABEL(pmic, sid, name) pmic ## _ ## sid ## _ ## name > > +#define _LABEL(pmic, sid, name) __LABEL(pmic, sid, name) > Perhaps that should go to some Qcom PMIC-common include now! I usually prefer to have a "second case" before generalizing things. I think we might have it with sa8540p-pmics (which includes 4 instances of pmm8540). However I didn't dare to touch that as I do not know if they are really the same PMICs or there are some differences, etc. > Also, at one point, an idea came up to stop writing so much dt, I'm > not necessarily a fan of creating .dtsc (like ACPI-C sources), but > perhaps we could explore having e.g. a "gen_dt.py" which would take > in some data and generate device trees based on that.. Not very > related to this patch, but I'm just throwing it in the open Standard issue: one has to find a balance between the generated source and the actual code. Given that most of the blocks are more or less standard, we might be able to create a DSL for describing PMICs. But then we have all kinds of strange nodes (like Type-C handler), which do not follow the reset. > > > Konrad > > +#define LABEL(name) _LABEL(pm8350, PM8350_SID, name) > > + > > / { > > thermal-zones { > > - pm8350_thermal: pm8350c-thermal { > > + LABEL(thermal): pm8350c-thermal { > > polling-delay-passive = <100>; > > polling-delay = <0>; > > - thermal-sensors = <&pm8350_temp_alarm>; > > + thermal-sensors = <&LABEL(temp_alarm)>; > > > > trips { > > - pm8350_trip0: trip0 { > > + LABEL(trip0): trip0 { > > temperature = <95000>; > > hysteresis = <0>; > > type = "passive"; > > }; > > > > - pm8350_crit: pm8350c-crit { > > + LABEL(crit): pm8350c-crit { > > temperature = <115000>; > > hysteresis = <0>; > > type = "critical"; > > @@ -33,25 +42,29 @@ pm8350_crit: pm8350c-crit { > > &spmi_bus { > > pm8350: pmic@1 { > > compatible = "qcom,pm8350", "qcom,spmi-pmic"; > > - reg = <0x1 SPMI_USID>; > > + reg = <PM8350_SID SPMI_USID>; > > #address-cells = <1>; > > #size-cells = <0>; > > > > - pm8350_temp_alarm: temp-alarm@a00 { > > + LABEL(temp_alarm): temp-alarm@a00 { > > compatible = "qcom,spmi-temp-alarm"; > > reg = <0xa00>; > > - interrupts = <0x1 0xa 0x0 IRQ_TYPE_EDGE_BOTH>; > > + interrupts = <PM8350_SID 0xa 0x0 IRQ_TYPE_EDGE_BOTH>; > > #thermal-sensor-cells = <0>; > > }; > > > > - pm8350_gpios: gpio@8800 { > > + LABEL(gpios): gpio@8800 { > > compatible = "qcom,pm8350-gpio", "qcom,spmi-gpio"; > > reg = <0x8800>; > > gpio-controller; > > - gpio-ranges = <&pm8350_gpios 0 0 10>; > > + gpio-ranges = <&LABEL(gpios) 0 0 10>; > > #gpio-cells = <2>; > > interrupt-controller; > > #interrupt-cells = <2>; > > }; > > }; > > }; > > + > > +#undef LABEL > > +#undef _LABEL > > +#undef __LABEL > > diff --git a/arch/arm64/boot/dts/qcom/sm8350-sony-xperia-sagami.dtsi b/arch/arm64/boot/dts/qcom/sm8350-sony-xperia-sagami.dtsi > > index e28f49e31b9f..5c09b1d8881b 100644 > > --- a/arch/arm64/boot/dts/qcom/sm8350-sony-xperia-sagami.dtsi > > +++ b/arch/arm64/boot/dts/qcom/sm8350-sony-xperia-sagami.dtsi > > @@ -72,7 +72,7 @@ key-camera-snapshot { > > > > key-google-assist { > > label = "Google Assistant Key"; > > - gpios = <&pm8350_gpios 9 GPIO_ACTIVE_LOW>; > > + gpios = <&pm8350_1_gpios 9 GPIO_ACTIVE_LOW>; > > linux,code = <KEY_LEFTMETA>; > > debounce-interval = <15>; > > linux,can-disable; > > @@ -564,7 +564,7 @@ &mpss { > > firmware-name = "qcom/sm8350/Sony/sagami/modem.mbn"; > > }; > > > > -&pm8350_gpios { > > +&pm8350_1_gpios { > > gpio-line-names = "ASSIGN1_THERM", /* GPIO_1 */ > > "LCD_ID", > > "SDR_MMW_THERM", > > diff --git a/arch/arm64/boot/dts/qcom/sm8450-sony-xperia-nagara.dtsi b/arch/arm64/boot/dts/qcom/sm8450-sony-xperia-nagara.dtsi > > index 99e9b776b93d..d90e3fedb742 100644 > > --- a/arch/arm64/boot/dts/qcom/sm8450-sony-xperia-nagara.dtsi > > +++ b/arch/arm64/boot/dts/qcom/sm8450-sony-xperia-nagara.dtsi > > @@ -56,7 +56,7 @@ key-camera-snapshot { > > key-volume-down { > > label = "Volume Down"; > > linux,code = <KEY_VOLUMEDOWN>; > > - gpios = <&pm8350_gpios 6 GPIO_ACTIVE_LOW>; > > + gpios = <&pm8350_1_gpios 6 GPIO_ACTIVE_LOW>; > > debounce-interval = <15>; > > linux,can-disable; > > wakeup-source; > > @@ -622,7 +622,7 @@ &pcie0_phy { > > status = "okay"; > > }; > > > > -&pm8350_gpios { > > +&pm8350_1_gpios { > > gpio-line-names = "ASSIGN1_THERM", /* GPIO_1 */ > > "LCD_ID", > > "SDR_MMW_THERM",
diff --git a/arch/arm64/boot/dts/qcom/pm8350.dtsi b/arch/arm64/boot/dts/qcom/pm8350.dtsi index 2dfeb99300d7..f1ef242760f2 100644 --- a/arch/arm64/boot/dts/qcom/pm8350.dtsi +++ b/arch/arm64/boot/dts/qcom/pm8350.dtsi @@ -6,21 +6,30 @@ #include <dt-bindings/interrupt-controller/irq.h> #include <dt-bindings/spmi/spmi.h> +/* (Sadly) this PMIC can be configured to be at different SIDs */ +#ifndef PM8350_SID + #define PM8350_SID 1 +#endif + +#define __LABEL(pmic, sid, name) pmic ## _ ## sid ## _ ## name +#define _LABEL(pmic, sid, name) __LABEL(pmic, sid, name) +#define LABEL(name) _LABEL(pm8350, PM8350_SID, name) + / { thermal-zones { - pm8350_thermal: pm8350c-thermal { + LABEL(thermal): pm8350c-thermal { polling-delay-passive = <100>; polling-delay = <0>; - thermal-sensors = <&pm8350_temp_alarm>; + thermal-sensors = <&LABEL(temp_alarm)>; trips { - pm8350_trip0: trip0 { + LABEL(trip0): trip0 { temperature = <95000>; hysteresis = <0>; type = "passive"; }; - pm8350_crit: pm8350c-crit { + LABEL(crit): pm8350c-crit { temperature = <115000>; hysteresis = <0>; type = "critical"; @@ -33,25 +42,29 @@ pm8350_crit: pm8350c-crit { &spmi_bus { pm8350: pmic@1 { compatible = "qcom,pm8350", "qcom,spmi-pmic"; - reg = <0x1 SPMI_USID>; + reg = <PM8350_SID SPMI_USID>; #address-cells = <1>; #size-cells = <0>; - pm8350_temp_alarm: temp-alarm@a00 { + LABEL(temp_alarm): temp-alarm@a00 { compatible = "qcom,spmi-temp-alarm"; reg = <0xa00>; - interrupts = <0x1 0xa 0x0 IRQ_TYPE_EDGE_BOTH>; + interrupts = <PM8350_SID 0xa 0x0 IRQ_TYPE_EDGE_BOTH>; #thermal-sensor-cells = <0>; }; - pm8350_gpios: gpio@8800 { + LABEL(gpios): gpio@8800 { compatible = "qcom,pm8350-gpio", "qcom,spmi-gpio"; reg = <0x8800>; gpio-controller; - gpio-ranges = <&pm8350_gpios 0 0 10>; + gpio-ranges = <&LABEL(gpios) 0 0 10>; #gpio-cells = <2>; interrupt-controller; #interrupt-cells = <2>; }; }; }; + +#undef LABEL +#undef _LABEL +#undef __LABEL diff --git a/arch/arm64/boot/dts/qcom/sm8350-sony-xperia-sagami.dtsi b/arch/arm64/boot/dts/qcom/sm8350-sony-xperia-sagami.dtsi index e28f49e31b9f..5c09b1d8881b 100644 --- a/arch/arm64/boot/dts/qcom/sm8350-sony-xperia-sagami.dtsi +++ b/arch/arm64/boot/dts/qcom/sm8350-sony-xperia-sagami.dtsi @@ -72,7 +72,7 @@ key-camera-snapshot { key-google-assist { label = "Google Assistant Key"; - gpios = <&pm8350_gpios 9 GPIO_ACTIVE_LOW>; + gpios = <&pm8350_1_gpios 9 GPIO_ACTIVE_LOW>; linux,code = <KEY_LEFTMETA>; debounce-interval = <15>; linux,can-disable; @@ -564,7 +564,7 @@ &mpss { firmware-name = "qcom/sm8350/Sony/sagami/modem.mbn"; }; -&pm8350_gpios { +&pm8350_1_gpios { gpio-line-names = "ASSIGN1_THERM", /* GPIO_1 */ "LCD_ID", "SDR_MMW_THERM", diff --git a/arch/arm64/boot/dts/qcom/sm8450-sony-xperia-nagara.dtsi b/arch/arm64/boot/dts/qcom/sm8450-sony-xperia-nagara.dtsi index 99e9b776b93d..d90e3fedb742 100644 --- a/arch/arm64/boot/dts/qcom/sm8450-sony-xperia-nagara.dtsi +++ b/arch/arm64/boot/dts/qcom/sm8450-sony-xperia-nagara.dtsi @@ -56,7 +56,7 @@ key-camera-snapshot { key-volume-down { label = "Volume Down"; linux,code = <KEY_VOLUMEDOWN>; - gpios = <&pm8350_gpios 6 GPIO_ACTIVE_LOW>; + gpios = <&pm8350_1_gpios 6 GPIO_ACTIVE_LOW>; debounce-interval = <15>; linux,can-disable; wakeup-source; @@ -622,7 +622,7 @@ &pcie0_phy { status = "okay"; }; -&pm8350_gpios { +&pm8350_1_gpios { gpio-line-names = "ASSIGN1_THERM", /* GPIO_1 */ "LCD_ID", "SDR_MMW_THERM",
The platform can use several instances of PM8350 PMIC. Include SID into all the labels to simplify such platforms configuration. Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> --- arch/arm64/boot/dts/qcom/pm8350.dtsi | 31 +++++++++++++------ .../dts/qcom/sm8350-sony-xperia-sagami.dtsi | 4 +-- .../dts/qcom/sm8450-sony-xperia-nagara.dtsi | 4 +-- 3 files changed, 26 insertions(+), 13 deletions(-)