diff mbox series

[6/6] dt-bindings: power: supply: qcom,smb2: add bindings for smb2 driver

Message ID 20220401202643.877609-7-caleb.connolly@linaro.org
State New
Headers show
Series power: supply: introduce the Qualcomm smb2 | expand

Commit Message

Caleb Connolly April 1, 2022, 8:26 p.m. UTC
Add devicetree bindings for the Qualcomm PMI8998/PM660 SMB2 charger
drivers.

Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
---
 .../bindings/power/supply/qcom,smb2.yaml      | 68 +++++++++++++++++++
 1 file changed, 68 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/power/supply/qcom,smb2.yaml

Comments

Sebastian Reichel April 1, 2022, 11:03 p.m. UTC | #1
Hi,

On Fri, Apr 01, 2022 at 09:26:43PM +0100, Caleb Connolly wrote:
> Add devicetree bindings for the Qualcomm PMI8998/PM660 SMB2 charger
> drivers.
> 
> Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
> ---
>  .../bindings/power/supply/qcom,smb2.yaml      | 68 +++++++++++++++++++
>  1 file changed, 68 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/power/supply/qcom,smb2.yaml
> 
> diff --git a/Documentation/devicetree/bindings/power/supply/qcom,smb2.yaml b/Documentation/devicetree/bindings/power/supply/qcom,smb2.yaml
> new file mode 100644
> index 000000000000..1bea1fef78b8
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/power/supply/qcom,smb2.yaml
> @@ -0,0 +1,68 @@
> +# SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/power/supply/qcom,smb2.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Qualcomm PMI8998/PM660 Switch-Mode Battery Charger "2"
> +
> +maintainers:
> +  - Caleb Connolly <caleb.connolly@linaro.org>
> +
> +properties:
> +  compatible:
> +    enum:
> +      - qcom,pmi8998-smb2
> +
> +  reg:
> +    maxItems: 1
> +
> +  interrupts:
> +    items:
> +      - description: usb plugin
> +
> +  interrupt-names:
> +    items:
> +      - const: usb-plugin
> +
> +  io-channels:
> +    items:
> +      - description: USB in current in uA
> +      - description: USB in voltage in uV
> +
> +  io-channel-names:
> +    items:
> +      - const: usbin_i
> +      - const: usbin_v

Is there a good reason to use usbin_ instead of usb_in_?

-- Sebastian

> +
> +required:
> +  - compatible
> +  - reg
> +  - interrupts
> +  - interrupt-names
> +  - io-channels
> +  - io-channel-names
> +
> +additionalProperties: false
> +
> +examples:
> +  - |
> +    #include <dt-bindings/interrupt-controller/irq.h>
> +    pmic {
> +      #address-cells = <1>;
> +      #size-cells = <0>;
> +      #interrupt-cells = <4>;
> +
> +      smb2@1000 {
> +        compatible = "qcom,pmi8998-smb2";
> +        reg = <0x1000>;
> +
> +        interrupts = <0x2 0x13 0x4 IRQ_TYPE_EDGE_BOTH>;
> +        interrupt-names = "usb-plugin";
> +
> +        io-channels = <&pmi8998_rradc 3>,
> +                      <&pmi8998_rradc 4>;
> +        io-channel-names = "usbin_i",
> +                           "usbin_v";
> +      };
> +    };
> -- 
> 2.35.1
>
Krzysztof Kozlowski April 2, 2022, 2:22 p.m. UTC | #2
On 01/04/2022 22:26, Caleb Connolly wrote:
> Add devicetree bindings for the Qualcomm PMI8998/PM660 SMB2 charger
> drivers.
> 
> Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
> ---
>  .../bindings/power/supply/qcom,smb2.yaml      | 68 +++++++++++++++++++
>  1 file changed, 68 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/power/supply/qcom,smb2.yaml
> 
> diff --git a/Documentation/devicetree/bindings/power/supply/qcom,smb2.yaml b/Documentation/devicetree/bindings/power/supply/qcom,smb2.yaml
> new file mode 100644
> index 000000000000..1bea1fef78b8
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/power/supply/qcom,smb2.yaml
> @@ -0,0 +1,68 @@
> +# SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/power/supply/qcom,smb2.yaml#

Hi,

Are you sure "smb2" is a real Qualcomm versioning? IOW, is there going
to be smb3 in the future? If not, better to just name the file according
to model, so like compatible and like other existing schemas from Qualcomm.

> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Qualcomm PMI8998/PM660 Switch-Mode Battery Charger "2"
> +
> +maintainers:
> +  - Caleb Connolly <caleb.connolly@linaro.org>
> +
> +properties:
> +  compatible:
> +    enum:
> +      - qcom,pmi8998-smb2
> +
> +  reg:
> +    maxItems: 1
> +
> +  interrupts:
> +    items:
> +      - description: usb plugin

Just maxItems:1 (description is obvious and matches names).

> +
> +  interrupt-names:
> +    items:
> +      - const: usb-plugin
> +
> +  io-channels:
> +    items:
> +      - description: USB in current in uA
> +      - description: USB in voltage in uV
> +
> +  io-channel-names:
> +    items:
> +      - const: usbin_i
> +      - const: usbin_v
> +

What about monitored-battery? How do you configure the battery
characteristics?

> +required:
> +  - compatible
> +  - reg
> +  - interrupts
> +  - interrupt-names
> +  - io-channels
> +  - io-channel-names
> +
> +additionalProperties: false
> +
> +examples:
> +  - |
> +    #include <dt-bindings/interrupt-controller/irq.h>
> +    pmic {
> +      #address-cells = <1>;
> +      #size-cells = <0>;
> +      #interrupt-cells = <4>;
> +
> +      smb2@1000 {

Generic node name please, so "charger".



Best regards,
Krzysztof
Caleb Connolly April 2, 2022, 3:44 p.m. UTC | #3
On 02/04/2022 00:03, Sebastian Reichel wrote:
> Hi,
> 
> On Fri, Apr 01, 2022 at 09:26:43PM +0100, Caleb Connolly wrote:
>> Add devicetree bindings for the Qualcomm PMI8998/PM660 SMB2 charger
>> drivers.
>>
>> Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
>> ---
>>   .../bindings/power/supply/qcom,smb2.yaml      | 68 +++++++++++++++++++
>>   1 file changed, 68 insertions(+)
>>   create mode 100644 Documentation/devicetree/bindings/power/supply/qcom,smb2.yaml
>>
>> diff --git a/Documentation/devicetree/bindings/power/supply/qcom,smb2.yaml b/Documentation/devicetree/bindings/power/supply/qcom,smb2.yaml
>> new file mode 100644
>> index 000000000000..1bea1fef78b8
>> --- /dev/null
>> +++ b/Documentation/devicetree/bindings/power/supply/qcom,smb2.yaml
>> @@ -0,0 +1,68 @@
>> +# SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause
>> +%YAML 1.2
>> +---
>> +$id: http://devicetree.org/schemas/power/supply/qcom,smb2.yaml#
>> +$schema: http://devicetree.org/meta-schemas/core.yaml#
>> +
>> +title: Qualcomm PMI8998/PM660 Switch-Mode Battery Charger "2"
>> +
>> +maintainers:
>> +  - Caleb Connolly <caleb.connolly@linaro.org>
>> +
>> +properties:
>> +  compatible:
>> +    enum:
>> +      - qcom,pmi8998-smb2
>> +
>> +  reg:
>> +    maxItems: 1
>> +
>> +  interrupts:
>> +    items:
>> +      - description: usb plugin
>> +
>> +  interrupt-names:
>> +    items:
>> +      - const: usb-plugin
>> +
>> +  io-channels:
>> +    items:
>> +      - description: USB in current in uA
>> +      - description: USB in voltage in uV
>> +
>> +  io-channel-names:
>> +    items:
>> +      - const: usbin_i
>> +      - const: usbin_v
> 
> Is there a good reason to use usbin_ instead of usb_in_?
These are the channel names exposed by the RRADC driver, so they would have to 
be changed there.
> 
> -- Sebastian
> 
>> +
>> +required:
>> +  - compatible
>> +  - reg
>> +  - interrupts
>> +  - interrupt-names
>> +  - io-channels
>> +  - io-channel-names
>> +
>> +additionalProperties: false
>> +
>> +examples:
>> +  - |
>> +    #include <dt-bindings/interrupt-controller/irq.h>
>> +    pmic {
>> +      #address-cells = <1>;
>> +      #size-cells = <0>;
>> +      #interrupt-cells = <4>;
>> +
>> +      smb2@1000 {
>> +        compatible = "qcom,pmi8998-smb2";
>> +        reg = <0x1000>;
>> +
>> +        interrupts = <0x2 0x13 0x4 IRQ_TYPE_EDGE_BOTH>;
>> +        interrupt-names = "usb-plugin";
>> +
>> +        io-channels = <&pmi8998_rradc 3>,
>> +                      <&pmi8998_rradc 4>;
>> +        io-channel-names = "usbin_i",
>> +                           "usbin_v";
>> +      };
>> +    };
>> -- 
>> 2.35.1
>>
Caleb Connolly April 2, 2022, 3:50 p.m. UTC | #4
On 02/04/2022 15:22, Krzysztof Kozlowski wrote:
> On 01/04/2022 22:26, Caleb Connolly wrote:
>> Add devicetree bindings for the Qualcomm PMI8998/PM660 SMB2 charger
>> drivers.
>>
>> Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
>> ---
>>   .../bindings/power/supply/qcom,smb2.yaml      | 68 +++++++++++++++++++
>>   1 file changed, 68 insertions(+)
>>   create mode 100644 Documentation/devicetree/bindings/power/supply/qcom,smb2.yaml
>>
>> diff --git a/Documentation/devicetree/bindings/power/supply/qcom,smb2.yaml b/Documentation/devicetree/bindings/power/supply/qcom,smb2.yaml
>> new file mode 100644
>> index 000000000000..1bea1fef78b8
>> --- /dev/null
>> +++ b/Documentation/devicetree/bindings/power/supply/qcom,smb2.yaml
>> @@ -0,0 +1,68 @@
>> +# SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause
>> +%YAML 1.2
>> +---
>> +$id: http://devicetree.org/schemas/power/supply/qcom,smb2.yaml#
> 
> Hi,
Hi Krzysztof,
> 
> Are you sure "smb2" is a real Qualcomm versioning? IOW, is there going
> to be smb3 in the future? If not, better to just name the file according
> to model, so like compatible and like other existing schemas from Qualcomm.
Qualcomm versioning is a complete mystery to me 😅, downstream kernels have a 
"pmi8998_charger" which uses the qpnp-smb2 driver, there is also an "smb5" 
driver presumably for newer PMICs. This driver is used for the charger block 
found on the PMI8998 and PM660 at least, a name like "pmi8998_charger" might be 
more suitable.

> 
>> +$schema: http://devicetree.org/meta-schemas/core.yaml#
>> +
>> +title: Qualcomm PMI8998/PM660 Switch-Mode Battery Charger "2"
>> +
>> +maintainers:
>> +  - Caleb Connolly <caleb.connolly@linaro.org>
>> +
>> +properties:
>> +  compatible:
>> +    enum:
>> +      - qcom,pmi8998-smb2
>> +
>> +  reg:
>> +    maxItems: 1
>> +
>> +  interrupts:
>> +    items:
>> +      - description: usb plugin
> 
> Just maxItems:1 (description is obvious and matches names).
> 
>> +
>> +  interrupt-names:
>> +    items:
>> +      - const: usb-plugin
>> +
>> +  io-channels:
>> +    items:
>> +      - description: USB in current in uA
>> +      - description: USB in voltage in uV
>> +
>> +  io-channel-names:
>> +    items:
>> +      - const: usbin_i
>> +      - const: usbin_v
>> +
> 
> What about monitored-battery? How do you configure the battery
> characteristics?
> 
>> +required:
>> +  - compatible
>> +  - reg
>> +  - interrupts
>> +  - interrupt-names
>> +  - io-channels
>> +  - io-channel-names
>> +
>> +additionalProperties: false
>> +
>> +examples:
>> +  - |
>> +    #include <dt-bindings/interrupt-controller/irq.h>
>> +    pmic {
>> +      #address-cells = <1>;
>> +      #size-cells = <0>;
>> +      #interrupt-cells = <4>;
>> +
>> +      smb2@1000 {
> 
> Generic node name please, so "charger".
> 
> 
> 
> Best regards,
> Krzysztof
Kuldeep Singh April 3, 2022, 7:14 a.m. UTC | #5
On Fri, Apr 01, 2022 at 09:26:43PM +0100, Caleb Connolly wrote:
> Add devicetree bindings for the Qualcomm PMI8998/PM660 SMB2 charger
> drivers.
> 
> Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
> ---
>  .../bindings/power/supply/qcom,smb2.yaml      | 68 +++++++++++++++++++
>  1 file changed, 68 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/power/supply/qcom,smb2.yaml
> 
> diff --git a/Documentation/devicetree/bindings/power/supply/qcom,smb2.yaml b/Documentation/devicetree/bindings/power/supply/qcom,smb2.yaml
> new file mode 100644
> index 000000000000..1bea1fef78b8
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/power/supply/qcom,smb2.yaml
> @@ -0,0 +1,68 @@
> +# SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/power/supply/qcom,smb2.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Qualcomm PMI8998/PM660 Switch-Mode Battery Charger "2"
> +
> +maintainers:
> +  - Caleb Connolly <caleb.connolly@linaro.org>
> +
> +properties:
> +  compatible:
> +    enum:
> +      - qcom,pmi8998-smb2

Since there's only 1 entry, please use const.

> +
> +  reg:
> +    maxItems: 1
> +
> +  interrupts:
> +    items:
> +      - description: usb plugin
> +
> +  interrupt-names:
> +    items:
> +      - const: usb-plugin
> +
> +  io-channels:
> +    items:
> +      - description: USB in current in uA
> +      - description: USB in voltage in uV
> +
> +  io-channel-names:
> +    items:
> +      - const: usbin_i
> +      - const: usbin_v
> +
> +required:
> +  - compatible
> +  - reg
> +  - interrupts
> +  - interrupt-names
> +  - io-channels
> +  - io-channel-names
> +
> +additionalProperties: false
> +
> +examples:
> +  - |
> +    #include <dt-bindings/interrupt-controller/irq.h>

New line here. Looks nice.

> +    pmic {
> +      #address-cells = <1>;
> +      #size-cells = <0>;
> +      #interrupt-cells = <4>;
> +
> +      smb2@1000 {
> +        compatible = "qcom,pmi8998-smb2";
> +        reg = <0x1000>;
> +
> +        interrupts = <0x2 0x13 0x4 IRQ_TYPE_EDGE_BOTH>;
> +        interrupt-names = "usb-plugin";
> +

In-between new lines may not be required.
And DTs use tabs instead of 2 spaces, we can follow that here also.

> +        io-channels = <&pmi8998_rradc 3>,
> +                      <&pmi8998_rradc 4>;
> +        io-channel-names = "usbin_i",
> +                           "usbin_v";

Channel-names can be written in one line.

> +      };
> +    };
> -- 
> 2.35.1
>
Krzysztof Kozlowski April 3, 2022, 7:56 a.m. UTC | #6
On 03/04/2022 09:14, Kuldeep Singh wrote:
> On Fri, Apr 01, 2022 at 09:26:43PM +0100, Caleb Connolly wrote:
>> Add devicetree bindings for the Qualcomm PMI8998/PM660 SMB2 charger
>> drivers.
>>

(...)

> 
>> +    pmic {
>> +      #address-cells = <1>;
>> +      #size-cells = <0>;
>> +      #interrupt-cells = <4>;
>> +
>> +      smb2@1000 {
>> +        compatible = "qcom,pmi8998-smb2";
>> +        reg = <0x1000>;
>> +
>> +        interrupts = <0x2 0x13 0x4 IRQ_TYPE_EDGE_BOTH>;
>> +        interrupt-names = "usb-plugin";
>> +
> 
> In-between new lines may not be required.
> And DTs use tabs instead of 2 spaces, we can follow that here also.

The DT examples in bindings use spaces. Either two (like YAML) or four
(for easier reading).

> 
>> +        io-channels = <&pmi8998_rradc 3>,
>> +                      <&pmi8998_rradc 4>;
>> +        io-channel-names = "usbin_i",
>> +                           "usbin_v";
> 
> Channel-names can be written in one line.

They match the format of io-channels, so this is quite readable.



Best regards,
Krzysztof
Kuldeep Singh April 3, 2022, 1:31 p.m. UTC | #7
On Sun, Apr 03, 2022 at 09:56:25AM +0200, Krzysztof Kozlowski wrote:
> On 03/04/2022 09:14, Kuldeep Singh wrote:
> > On Fri, Apr 01, 2022 at 09:26:43PM +0100, Caleb Connolly wrote:
> >> Add devicetree bindings for the Qualcomm PMI8998/PM660 SMB2 charger
> >> drivers.
> >>
> 
> (...)
> 
> > 
> >> +    pmic {
> >> +      #address-cells = <1>;
> >> +      #size-cells = <0>;
> >> +      #interrupt-cells = <4>;
> >> +
> >> +      smb2@1000 {
> >> +        compatible = "qcom,pmi8998-smb2";
> >> +        reg = <0x1000>;
> >> +
> >> +        interrupts = <0x2 0x13 0x4 IRQ_TYPE_EDGE_BOTH>;
> >> +        interrupt-names = "usb-plugin";
> >> +
> > 
> > In-between new lines may not be required.
> > And DTs use tabs instead of 2 spaces, we can follow that here also.
> 
> The DT examples in bindings use spaces. Either two (like YAML) or four
> (for easier reading).

ok, since example snippet is taken from DT that's why I said four
spaces(tab) as it will be closest to actual env.

> 
> > 
> >> +        io-channels = <&pmi8998_rradc 3>,
> >> +                      <&pmi8998_rradc 4>;
> >> +        io-channel-names = "usbin_i",
> >> +                           "usbin_v";
> > 
> > Channel-names can be written in one line.
> 
> They match the format of io-channels, so this is quite readable.

io-channels doesn't exceed max characters in line(i.e 75) even after
being clubbed. Won't be better if kept in one line?
This might be personal perspective but I thought it's worth mentioning.
Krzysztof Kozlowski April 3, 2022, 3:30 p.m. UTC | #8
On 03/04/2022 15:31, Kuldeep Singh wrote:
> On Sun, Apr 03, 2022 at 09:56:25AM +0200, Krzysztof Kozlowski wrote:
>> On 03/04/2022 09:14, Kuldeep Singh wrote:
>>> On Fri, Apr 01, 2022 at 09:26:43PM +0100, Caleb Connolly wrote:
>>>> Add devicetree bindings for the Qualcomm PMI8998/PM660 SMB2 charger
>>>> drivers.
>>>>
>>
>> (...)
>>
>>>
>>>> +    pmic {
>>>> +      #address-cells = <1>;
>>>> +      #size-cells = <0>;
>>>> +      #interrupt-cells = <4>;
>>>> +
>>>> +      smb2@1000 {
>>>> +        compatible = "qcom,pmi8998-smb2";
>>>> +        reg = <0x1000>;
>>>> +
>>>> +        interrupts = <0x2 0x13 0x4 IRQ_TYPE_EDGE_BOTH>;
>>>> +        interrupt-names = "usb-plugin";
>>>> +
>>>
>>> In-between new lines may not be required.
>>> And DTs use tabs instead of 2 spaces, we can follow that here also.
>>
>> The DT examples in bindings use spaces. Either two (like YAML) or four
>> (for easier reading).
> 
> ok, since example snippet is taken from DT that's why I said four
> spaces(tab) as it will be closest to actual env.

You said "use tabs", which is 8 spaces in Linux. So to clarify - we do
not use tabs here, so do not use tabs.

>>>> +        io-channels = <&pmi8998_rradc 3>,
>>>> +                      <&pmi8998_rradc 4>;
>>>> +        io-channel-names = "usbin_i",
>>>> +                           "usbin_v";
>>>
>>> Channel-names can be written in one line.
>>
>> They match the format of io-channels, so this is quite readable.
> 
> io-channels doesn't exceed max characters in line(i.e 75) even after
> being clubbed. Won't be better if kept in one line?
> This might be personal perspective but I thought it's worth mentioning.

I find current code readable. The other option would be fine as well,
kind of does not matter to me much.

Best regards,
Krzysztof
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/power/supply/qcom,smb2.yaml b/Documentation/devicetree/bindings/power/supply/qcom,smb2.yaml
new file mode 100644
index 000000000000..1bea1fef78b8
--- /dev/null
+++ b/Documentation/devicetree/bindings/power/supply/qcom,smb2.yaml
@@ -0,0 +1,68 @@ 
+# SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/power/supply/qcom,smb2.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Qualcomm PMI8998/PM660 Switch-Mode Battery Charger "2"
+
+maintainers:
+  - Caleb Connolly <caleb.connolly@linaro.org>
+
+properties:
+  compatible:
+    enum:
+      - qcom,pmi8998-smb2
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    items:
+      - description: usb plugin
+
+  interrupt-names:
+    items:
+      - const: usb-plugin
+
+  io-channels:
+    items:
+      - description: USB in current in uA
+      - description: USB in voltage in uV
+
+  io-channel-names:
+    items:
+      - const: usbin_i
+      - const: usbin_v
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - interrupt-names
+  - io-channels
+  - io-channel-names
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/irq.h>
+    pmic {
+      #address-cells = <1>;
+      #size-cells = <0>;
+      #interrupt-cells = <4>;
+
+      smb2@1000 {
+        compatible = "qcom,pmi8998-smb2";
+        reg = <0x1000>;
+
+        interrupts = <0x2 0x13 0x4 IRQ_TYPE_EDGE_BOTH>;
+        interrupt-names = "usb-plugin";
+
+        io-channels = <&pmi8998_rradc 3>,
+                      <&pmi8998_rradc 4>;
+        io-channel-names = "usbin_i",
+                           "usbin_v";
+      };
+    };