Hi Konrad, On Sat Aug 2, 2025 at 2:04 PM CEST, Konrad Dybcio wrote: > On 7/29/25 8:49 AM, Luca Weiss wrote: >> Hi Konrad, >> >> On Thu Jul 17, 2025 at 11:46 AM CEST, Luca Weiss wrote: >>> Hi Konrad, >>> >>> On Thu Jul 17, 2025 at 10:29 AM CEST, Luca Weiss wrote: >>>> On Mon Jul 14, 2025 at 1:06 PM CEST, Konrad Dybcio wrote: >>>>> On 7/13/25 10:05 AM, Luca Weiss wrote: >>>>>> Add a devicetree description for the Milos SoC, which is for example >>>>>> Snapdragon 7s Gen 3 (SM7635). >>>>>> >>>>>> Signed-off-by: Luca Weiss <luca.we...@fairphone.com> >>>>>> --- >>>>> >>>>> [...] >>>>>> + >>>>>> + spmi_bus: spmi@c400000 { >>>>>> + compatible = "qcom,spmi-pmic-arb"; >>>>> >>>>> There's two bus instances on this platform, check out the x1e binding >>>> >>>> Will do >>> >>> One problem: If we make the labels spmi_bus0 and spmi_bus1 then we can't >>> reuse the existing PMIC dtsi files since they all reference &spmi_bus. >>> >>> On FP6 everything's connected to PMIC_SPMI0_*, and PMIC_SPMI1_* is not >>> connected to anything so just adding the label spmi_bus on spmi_bus0 >>> would be fine. >>> >>> Can I add this to the device dts? Not going to be pretty though... >>> >>> diff --git a/arch/arm64/boot/dts/qcom/milos-fairphone-fp6.dts >>> b/arch/arm64/boot/dts/qcom/milos-fairphone-fp6.dts >>> index d12eaa585b31..69605c9ed344 100644 >>> --- a/arch/arm64/boot/dts/qcom/milos-fairphone-fp6.dts >>> +++ b/arch/arm64/boot/dts/qcom/milos-fairphone-fp6.dts >>> @@ -11,6 +11,9 @@ >>> #include <dt-bindings/pinctrl/qcom,pmic-gpio.h> >>> #include <dt-bindings/regulator/qcom,rpmh-regulator.h> >>> #include "milos.dtsi" >>> + >>> +spmi_bus: &spmi_bus0 {}; >>> + >>> #include "pm7550.dtsi" >>> #include "pm8550vs.dtsi" >>> #include "pmiv0104.dtsi" /* PMIV0108 */ >>> >>> Or I can add a second label for the spmi_bus0 as 'spmi_bus'. Not sure >>> other designs than SM7635 recommend using spmi_bus1 for some stuff. >>> >>> But I guess longer term we'd need to figure out a solution to this, how >>> to place a PMIC on a given SPMI bus, if reference designs start to >>> recommend putting different PMIC on the separate busses. >> >> Any feedback on this regarding the spmi_bus label? > > I had an offline chat with Bjorn and we only came up with janky > solutions :) > > What you propose works well if the PMICs are all on bus0, which is > not the case for the newest platforms. If some instances are on bus0 > and others are on bus1, things get ugly really quick and we're going > to drown in #ifdefs. > > > An alternative that I've seen downstream is to define PMIC nodes in > the root of a dtsi file (not in the root of DT, i.e. NOT under / { }) > and do the following: > > &spmi_busN { > #include "pmABCDX.dtsi" > }; > > Which is "okay", but has the visible downside of having to define the > temp alarm thermal zone in each board's DT separately (and doing > mid-file includes which is.. fine I guess, but also something we avoided > upstream for the longest time) > > > Both are less than ideal when it comes to altering the SID under > "interrupts", fixing that would help immensely. We were hoping to > leverage something like Johan's work on drivers/mfd/qcom-pm8008.c, > but that seems like a longer term project. > > Please voice your opinions
Since nobody else jumped in, how can we continue? One janky solution in my mind is somewhat similar to the PMxxxx_SID defines, doing something like "#define PM7550_SPMI spmi_bus0" and then using "&PM7550_SPMI {}" in the dtsi. I didn't try it so not sure that actually works but something like this should I imagine. But fortunately my Milos device doesn't have the problem that it actually uses both SPMI busses for different PMICs, so similar to other SoCs that already have two SPMI busses, I could somewhat ignore the problem and let someone else figure out how to actually place PMICs on spmi_bus0 and spmi_bus1 if they have such a hardware. Regards Luca > > Konrad