On Wed, 29 Mar 2023 at 03:33, Konrad Dybcio <konrad.dybcio@xxxxxxxxxx> 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@xxxxxxxxxx> > > --- > > 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", -- With best wishes Dmitry