lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <aa2cca7d-3362-43c4-9af7-94f277b16793@oss.qualcomm.com>
Date: Wed, 7 Jan 2026 14:36:49 -0800
From: Anjelique Melendez <anjelique.melendez@....qualcomm.com>
To: Bjorn Andersson <andersson@...nel.org>
Cc: konradybcio@...nel.org, robh@...nel.org, krzk+dt@...nel.org,
        conor+dt@...nel.org, linux-arm-msm@...r.kernel.org,
        devicetree@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH v3 1/2] dt-bindings: soc: qcom: qcom,pmic-glink: Add
 Kaanapali and Glymur compatibles



On 12/22/2025 11:42 AM, Bjorn Andersson wrote:
> On Tue, Dec 16, 2025 at 09:56:54PM -0800, Anjelique Melendez wrote:
>> Kaanapali PMIC glink platforms support features exposed by the
>> SM8550 PMIC glink interface. Document the Kaanpali compatible
>> string to have fallback on SM8550.
>> 
>> Glymur PMIC glink platforms support features exposed by SM8550, 
>> X1E80100 and Kaanapali PMIC glink interfaces. Document the Glymur 
>> compatible string to have fallbacks on SM8550, X1E80100 and
>> Kaanapali.
> 
> But while the Glymur PMIC GLINK interface does present (almost) the
> same features as SM8550 and/or Kaanapali, I don't see them as
> compatible. The protocol is different and if nothing else, as shown
> by patch 2, the life cycle is different.
> 
>> 
>> Signed-off-by: Anjelique Melendez
>> <anjelique.melendez@....qualcomm.com> --- .../devicetree/bindings/
>> soc/qcom/qcom,pmic-glink.yaml     | 8 ++++++++ 1 file changed, 8
>> insertions(+)
>> 
>> diff --git a/Documentation/devicetree/bindings/soc/qcom/qcom,pmic-
>> glink.yaml b/Documentation/devicetree/bindings/soc/qcom/qcom,pmic-
>> glink.yaml index 7085bf88afab..302b338e7012 100644 --- a/
>> Documentation/devicetree/bindings/soc/qcom/qcom,pmic-glink.yaml ++
>> + b/Documentation/devicetree/bindings/soc/qcom/qcom,pmic-
>> glink.yaml @@ -37,12 +37,20 @@ properties: - const: qcom,pmic-
>> glink - items: - enum: +              - qcom,kaanapali-pmic-glink 
>> - qcom,milos-pmic-glink - qcom,sm8650-pmic-glink - qcom,sm8750-
>> pmic-glink - qcom,x1e80100-pmic-glink - const: qcom,sm8550-pmic-
>> glink - const: qcom,pmic-glink +      - items: +          - enum: 
>> +              - qcom,glymur-pmic-glink +          - const:
>> qcom,kaanapali-pmic-glink +          - const: qcom,x1e80100-pmic-
>> glink +          - const: qcom,sm8550-pmic-glink +          -
>> const: qcom,pmic-glink
> 
> So this would then result in:
> 
> compatible = "qcom,glymur-pmic-glink", "qcom,kaanapali-pmic-glink",
> "qcom,x1e80100-pmic-glink", "qcom,sm8550-pmic-glink", "qcom,pmic-
> glink";
> 
> Which tells the operating system that it should use the
> implementation for the Glymur interface, and if that isn't known the
> implementation for the Kaanapali interface, and if that isn't known
> the implementation for the Hamoa interface, and if that isn't known
> the implementation for the SM8550 interface, and if that isn't known
> the generic "pmic glink" interface.
> 
> So, in an operating system that doesn't know how to interact with 
> Glymur, you have stated that Kaanapali is a good second choice. This 
> does accurately capture the soccp behavior, but looking at the 
> individual functions we're not compatible with Kaanapali.
> 
> If we're in an operating system that doesn't know about Glymur or 
> Kaanapali, you're stating that the Hamoa implementation is good. I
> think this is accurate for several of the features, but the OS will
> forever wait for the services to show up.
> 
> Etc...
> 
> As such, I think the appropriate way to express this is to add two
> new "top-level" options:
> 
> - items: - const: qcom,kaanapali-pmic-glink - const: qcom,pmic-glink 
> - items: - const: qcom,glymur-pmic-glink - const: qcom,pmic-glink
> 
> This establishes them as new "base compatibles", which can be used
> for derived platforms, by just adding the relevant enums. The
> alternative is to add them to the first item (enum + qcom,pmic-
> glink) and then as soon as we have derivatives we split it out in
> enum + kaanapali + qcom,pmic-glink or enum + glymur + qcom,pmic-
> glink. But I think this would be cleaner.
> 
> Regards, Bjorn
>

I agree that it would make more sense to decouple Kaanapali and Glymur 
however I do have a few follow up questions on how that should look in 
the pmic-glink and glink aux drivers.

1. In v2 we had tried to define Kaanapali and Glymur separately but in 
the pmic-glink driver they were sharing the same data since they both 
have charger FW running on SOCCP instead of ADSP. Krzysztof had 
expressed here, 
https://lore.kernel.org/all/01f419cc-3236-48b9-bd51-e7db07d1e6fe@kernel.org/, 
that having separate Glymur and Kaanapali compatible strings but then 
having them both point to the pmic_glink_kaanapali_data basically infers 
that Kaanapali and Glymur were compatible. There were other issues with 
that binding so I'm not sure if that comment would still stand in this 
case if we create new Glymur and Kaanapali base compatibles. If it does 
would it make more sense if the pmic_glink_data was instead named so 
that it relates to the system that the chg fw is running on?
i.e
{ .compatible="qcom,glymur-pmic-glink",.data=&pmic_glink_soccp_data},
{ .compatible="qcom,kaanapali-pmic-glink",.data=&pmic_glink_soccp_data},
{ .compatible = "qcom,pmic-glink", .data = &pmic_glink_adsp_data },


2. With Glymur and Kaanapali separated we would also need to update the 
UCSI and Battmngr drivers compatible string lists.

In USCI driver we would need to do:

+ { .compatible ="qcom,glymur-pmic-glink", .data = &quirk_sm8450, },
+ { .compatible = "qcom,kaanapali-pmic-glink",.data = &quirk_sm8450, },
   { .compatible = "qcom,qcm6490-pmic-glink", .data = &quirk_sc8280xp, },
   { .compatible = "qcom,sc8180x-pmic-glink", .data = &quirk_sc8180x, },
   { .compatible = "qcom,sc8280xp-pmic-glink", .data= &quirk_sc8280xp, },
   { .compatible = "qcom,sm8350-pmic-glink", .data = &quirk_sc8180x, },
   { .compatible = "qcom,sm8450-pmic-glink", .data = &quirk_sm8450, },
   { .compatible = "qcom,sm8550-pmic-glink", .data = &quirk_sm8450, },


and in battmgr driver we would need to do:

+ { .compatible = "qcom,glymur-pmic-glink", .data = (void *) X1E80100 },
+ { .compatible = "qcom,kaanapali-pmic-glink", .data = (void *)SM8550 },
   { .compatible = "qcom,sc8180x-pmic-glink", .data = (void *)SC8280XP },
   { .compatible = "qcom,sc8280xp-pmic-glink", .data = (void 
*)SC8280XP},
   { .compatible = "qcom,sm8550-pmic-glink", .data = (void *)SM8550 },
   { .compatible = "qcom,x1e80100-pmic-glink", .data = (void *)X1E80100},


I'm wondering if instead of making changes to both the UCSI and battmngr 
drivers, does it make sense to just add a compatible for X1E to UCSI? I 
briefly discussed this approach in this response: 
https://lore.kernel.org/all/481ec137-87cf-4448-99e9-4a1477f4854d@oss.qualcomm.com/.
With this we could instead define Kaanapali as a fallback to sm8550 and 
Glymur as a fallback to the x1e

Binding would instead look something like this

--- a/Documentation/devicetree/bindings/soc/qcom/qcom,pmic-glink.yaml
+++ b/Documentation/devicetree/bindings/soc/qcom/qcom,pmic-glink.yaml
@@ -29,6 +29,7 @@ properties:
                 - qcom,sm8350-pmic-glink
                 - qcom,sm8450-pmic-glink
                 - qcom,sm8550-pmic-glink
+               - qcom,x1e80100-pmic-glink
             - const: qcom,pmic-glink
         - items:
             - enum:
@@ -38,12 +38,18 @@ properties:
             - const: qcom,pmic-glink
         - items:
             - enum:
+               - qcom,kaanapali-pmic-glink
                 - qcom,milos-pmic-glink
                 - qcom,sm8650-pmic-glink
                 - qcom,sm8750-pmic-glink
                 - qcom,x1e80100-pmic-glink
             - const: qcom,sm8550-pmic-glink
             - const: qcom,pmic-glink
+      - items:
+          - enum:
+              - qcom,glymur-pmic-glink
+          - const: qcom,x1e80100-pmic-glink
+          - const: qcom,pmic-glink

with the UCSI driver change just being:
   { .compatible = "qcom,qcm6490-pmic-glink", .data = &quirk_sc8280xp, },
   { .compatible = "qcom,sc8180x-pmic-glink", .data = &quirk_sc8180x, },
   { .compatible = "qcom,sc8280xp-pmic-glink", .data= &quirk_sc8280xp, },
   { .compatible = "qcom,sm8350-pmic-glink", .data = &quirk_sc8180x, },
   { .compatible = "qcom,sm8450-pmic-glink", .data = &quirk_sm8450, },
   { .compatible = "qcom,sm8550-pmic-glink", .data = &quirk_sm8450, },
+ { .compatible = "qcom,x1e80100-pmic-glink", .data = &quirk_sm8450, },


Thanks,
Anjelique

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ