diff mbox series

[v2] dt-bindings: power: Convert bq27xxx dt to yaml

Message ID 20200507183013.27261-1-dmurphy@ti.com
State Changes Requested, archived
Headers show
Series [v2] dt-bindings: power: Convert bq27xxx dt to yaml | expand

Checks

Context Check Description
robh/checkpatch warning total: 0 errors, 3 warnings, 86 lines checked
robh/dt-meta-schema success

Commit Message

Dan Murphy May 7, 2020, 6:30 p.m. UTC
Convert the bq27xxx.txt to yaml format

CC: Pali Rohár <pali@kernel.org>
CC: Andrew F. Davis <afd@ti.com>
Signed-off-by: Dan Murphy <dmurphy@ti.com>
---
 .../bindings/power/supply/bq27xxx.txt         | 56 ------------
 .../bindings/power/supply/bq27xxx.yaml        | 86 +++++++++++++++++++
 2 files changed, 86 insertions(+), 56 deletions(-)
 delete mode 100644 Documentation/devicetree/bindings/power/supply/bq27xxx.txt
 create mode 100644 Documentation/devicetree/bindings/power/supply/bq27xxx.yaml

Comments

Sebastian Reichel May 10, 2020, 4:17 p.m. UTC | #1
Hi Dan,

On Thu, May 07, 2020 at 01:30:13PM -0500, Dan Murphy wrote:
> Convert the bq27xxx.txt to yaml format
> 
> CC: Pali Rohár <pali@kernel.org>
> CC: Andrew F. Davis <afd@ti.com>
> Signed-off-by: Dan Murphy <dmurphy@ti.com>
> ---

This needs is missing the power-supplies property. The N900 DT
contains a bq27200 referencing the charger, so it should fail the DT
check without the property being listed here.

>  .../bindings/power/supply/bq27xxx.txt         | 56 ------------
>  .../bindings/power/supply/bq27xxx.yaml        | 86 +++++++++++++++++++
>  2 files changed, 86 insertions(+), 56 deletions(-)
>  delete mode 100644 Documentation/devicetree/bindings/power/supply/bq27xxx.txt
>  create mode 100644 Documentation/devicetree/bindings/power/supply/bq27xxx.yaml
> 
> diff --git a/Documentation/devicetree/bindings/power/supply/bq27xxx.txt b/Documentation/devicetree/bindings/power/supply/bq27xxx.txt
> deleted file mode 100644
> index 4fa8e08df2b6..000000000000
> --- a/Documentation/devicetree/bindings/power/supply/bq27xxx.txt
> +++ /dev/null
> @@ -1,56 +0,0 @@
> -TI BQ27XXX fuel gauge family
> -
> -Required properties:
> -- compatible: contains one of the following:
> - * "ti,bq27200" - BQ27200
> - * "ti,bq27210" - BQ27210
> - * "ti,bq27500" - deprecated, use revision specific property below
> - * "ti,bq27510" - deprecated, use revision specific property below
> - * "ti,bq27520" - deprecated, use revision specific property below
> - * "ti,bq27500-1" - BQ27500/1
> - * "ti,bq27510g1" - BQ27510-g1
> - * "ti,bq27510g2" - BQ27510-g2
> - * "ti,bq27510g3" - BQ27510-g3
> - * "ti,bq27520g1" - BQ27520-g1
> - * "ti,bq27520g2" - BQ27520-g2
> - * "ti,bq27520g3" - BQ27520-g3
> - * "ti,bq27520g4" - BQ27520-g4
> - * "ti,bq27521" - BQ27521
> - * "ti,bq27530" - BQ27530
> - * "ti,bq27531" - BQ27531
> - * "ti,bq27541" - BQ27541
> - * "ti,bq27542" - BQ27542
> - * "ti,bq27546" - BQ27546
> - * "ti,bq27742" - BQ27742
> - * "ti,bq27545" - BQ27545
> - * "ti,bq27411" - BQ27411
> - * "ti,bq27421" - BQ27421
> - * "ti,bq27425" - BQ27425
> - * "ti,bq27426" - BQ27426
> - * "ti,bq27441" - BQ27441
> - * "ti,bq27621" - BQ27621
> -- reg: integer, I2C address of the fuel gauge.
> -
> -Optional properties:
> -- monitored-battery: phandle of battery characteristics node
> -    The fuel gauge uses the following battery properties:
> -    + energy-full-design-microwatt-hours
> -    + charge-full-design-microamp-hours
> -    + voltage-min-design-microvolt
> -  Both or neither of the *-full-design-*-hours properties must be set.
> -  See Documentation/devicetree/bindings/power/supply/battery.txt
> -
> -Example:
> -
> -	bat: battery {
> -		compatible = "simple-battery";
> -		voltage-min-design-microvolt = <3200000>;
> -		energy-full-design-microwatt-hours = <5290000>;
> -		charge-full-design-microamp-hours = <1430000>;
> -	};
> -
> -	bq27510g3: fuel-gauge@55 {
> -		compatible = "ti,bq27510g3";
> -		reg = <0x55>;
> -		monitored-battery = <&bat>;
> -	};
> diff --git a/Documentation/devicetree/bindings/power/supply/bq27xxx.yaml b/Documentation/devicetree/bindings/power/supply/bq27xxx.yaml
> new file mode 100644
> index 000000000000..54f497c291f2
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/power/supply/bq27xxx.yaml
> @@ -0,0 +1,86 @@
> +# SPDX-License-Identifier: GPL-2.0
> +# Copyright (C) 2020 Texas Instruments Incorporated
> +%YAML 1.2
> +---
> +$id: "http://devicetree.org/schemas/power/supply/bq27xxx.yaml#"
> +$schema: "http://devicetree.org/meta-schemas/core.yaml#"
> +
> +title: TI BQ27XXX fuel gauge family
> +
> +maintainers:
> +  - Pali Rohár <pali@kernel.org>
> +  - Andrew F. Davis <afd@ti.com>
> +  - Sebastian Reichel <sre@kernel.org>
> +
> +description: |
> +  Support various Texas Instruments fuel gauge devices that share similar
> +  register maps and power supply properties

allOf:
  - $ref: power-supply.yaml#

> +properties:
> +  compatible:
> +    enum:
> +      - ti,bq27200 - BQ27200
> +      - ti,bq27210 - BQ27210
> +      - ti,bq27500 - deprecated, use revision specific property below
> +      - ti,bq27510 - deprecated, use revision specific property below
> +      - ti,bq27520 - deprecated, use revision specific property below

There is a deprecated property ("deprecated: true"), but IDK how to
apply it to specific compatible values. Maybe Rob can help out here.
Otherwise it's not a blocker, since the conversion is still an
improvement without having explicit deprecation marks :)

> +      - ti,bq27500-1 - BQ27500/1
> +      - ti,bq27510g1 - BQ27510-g1
> +      - ti,bq27510g2 - BQ27510-g2
> +      - ti,bq27510g3 - BQ27510-g3
> +      - ti,bq27520g1 - BQ27520-g1
> +      - ti,bq27520g2 - BQ27520-g2
> +      - ti,bq27520g3 - BQ27520-g3
> +      - ti,bq27520g4 - BQ27520-g4
> +      - ti,bq27521 - BQ27521
> +      - ti,bq27530 - BQ27530
> +      - ti,bq27531 - BQ27531
> +      - ti,bq27541 - BQ27541
> +      - ti,bq27542 - BQ27542
> +      - ti,bq27546 - BQ27546
> +      - ti,bq27742 - BQ27742
> +      - ti,bq27545 - BQ27545
> +      - ti,bq27411 - BQ27411
> +      - ti,bq27421 - BQ27421
> +      - ti,bq27425 - BQ27425
> +      - ti,bq27426 - BQ27426
> +      - ti,bq27441 - BQ27441
> +      - ti,bq27621 - BQ27621
> +
> +  reg:
> +    maxItems: 1
> +    description: integer, I2C address of the fuel gauge.
> +
> +  monitored-battery:
> +    description: |
> +       phandle of battery characteristics node.
> +       The fuel gauge uses the following battery properties:
> +       - energy-full-design-microwatt-hours
> +       - charge-full-design-microamp-hours
> +       - voltage-min-design-microvolt
> +       Both or neither of the *-full-design-*-hours properties must be set.
> +       See Documentation/devicetree/bindings/power/supply/battery.txt

power-supplies: true

> +
> +required:
> +  - compatible
> +  - reg
> +additionalProperties: false
> +
> +examples:
> +  - |
> +    i2c0 {
> +      #address-cells = <1>;
> +      #size-cells = <0>;
> +      bat: battery {
> +        compatible = "simple-battery";
> +        voltage-min-design-microvolt = <3200000>;
> +        energy-full-design-microwatt-hours = <5290000>;
> +        charge-full-design-microamp-hours = <1430000>;
> +      };
> +
> +      bq27510g3: fuel-gauge@55 {
> +        compatible = "ti,bq27510g3";
> +        reg = <0x55>;
> +        monitored-battery = <&bat>;
> +      };
> +    };

Otherwise looks good to me.

-- Sebastian
Dan Murphy May 11, 2020, 12:25 p.m. UTC | #2
Sebastian

On 5/10/20 11:17 AM, Sebastian Reichel wrote:
> Hi Dan,
>
> On Thu, May 07, 2020 at 01:30:13PM -0500, Dan Murphy wrote:
>> Convert the bq27xxx.txt to yaml format
>>
>> CC: Pali Rohár <pali@kernel.org>
>> CC: Andrew F. Davis <afd@ti.com>
>> Signed-off-by: Dan Murphy <dmurphy@ti.com>
>> ---
> This needs is missing the power-supplies property. The N900 DT
> contains a bq27200 referencing the charger, so it should fail the DT
> check without the property being listed here.

Hmm.  I ran the dt checker specifically on the binding and it did not 
fail.  Unless I need to build some other DTs as well.

Either I will have the power-supplies property

>
>>   .../bindings/power/supply/bq27xxx.txt         | 56 ------------
>>   .../bindings/power/supply/bq27xxx.yaml        | 86 +++++++++++++++++++
>>   2 files changed, 86 insertions(+), 56 deletions(-)
>>   delete mode 100644 Documentation/devicetree/bindings/power/supply/bq27xxx.txt
>>   create mode 100644 Documentation/devicetree/bindings/power/supply/bq27xxx.yaml
>>
>> diff --git a/Documentation/devicetree/bindings/power/supply/bq27xxx.txt b/Documentation/devicetree/bindings/power/supply/bq27xxx.txt
>> deleted file mode 100644
>> index 4fa8e08df2b6..000000000000
>> --- a/Documentation/devicetree/bindings/power/supply/bq27xxx.txt
>> +++ /dev/null
>> @@ -1,56 +0,0 @@
>> -TI BQ27XXX fuel gauge family
>> -
>> -Required properties:
>> -- compatible: contains one of the following:
>> - * "ti,bq27200" - BQ27200
>> - * "ti,bq27210" - BQ27210
>> - * "ti,bq27500" - deprecated, use revision specific property below
>> - * "ti,bq27510" - deprecated, use revision specific property below
>> - * "ti,bq27520" - deprecated, use revision specific property below
>> - * "ti,bq27500-1" - BQ27500/1
>> - * "ti,bq27510g1" - BQ27510-g1
>> - * "ti,bq27510g2" - BQ27510-g2
>> - * "ti,bq27510g3" - BQ27510-g3
>> - * "ti,bq27520g1" - BQ27520-g1
>> - * "ti,bq27520g2" - BQ27520-g2
>> - * "ti,bq27520g3" - BQ27520-g3
>> - * "ti,bq27520g4" - BQ27520-g4
>> - * "ti,bq27521" - BQ27521
>> - * "ti,bq27530" - BQ27530
>> - * "ti,bq27531" - BQ27531
>> - * "ti,bq27541" - BQ27541
>> - * "ti,bq27542" - BQ27542
>> - * "ti,bq27546" - BQ27546
>> - * "ti,bq27742" - BQ27742
>> - * "ti,bq27545" - BQ27545
>> - * "ti,bq27411" - BQ27411
>> - * "ti,bq27421" - BQ27421
>> - * "ti,bq27425" - BQ27425
>> - * "ti,bq27426" - BQ27426
>> - * "ti,bq27441" - BQ27441
>> - * "ti,bq27621" - BQ27621
>> -- reg: integer, I2C address of the fuel gauge.
>> -
>> -Optional properties:
>> -- monitored-battery: phandle of battery characteristics node
>> -    The fuel gauge uses the following battery properties:
>> -    + energy-full-design-microwatt-hours
>> -    + charge-full-design-microamp-hours
>> -    + voltage-min-design-microvolt
>> -  Both or neither of the *-full-design-*-hours properties must be set.
>> -  See Documentation/devicetree/bindings/power/supply/battery.txt
>> -
>> -Example:
>> -
>> -	bat: battery {
>> -		compatible = "simple-battery";
>> -		voltage-min-design-microvolt = <3200000>;
>> -		energy-full-design-microwatt-hours = <5290000>;
>> -		charge-full-design-microamp-hours = <1430000>;
>> -	};
>> -
>> -	bq27510g3: fuel-gauge@55 {
>> -		compatible = "ti,bq27510g3";
>> -		reg = <0x55>;
>> -		monitored-battery = <&bat>;
>> -	};
>> diff --git a/Documentation/devicetree/bindings/power/supply/bq27xxx.yaml b/Documentation/devicetree/bindings/power/supply/bq27xxx.yaml
>> new file mode 100644
>> index 000000000000..54f497c291f2
>> --- /dev/null
>> +++ b/Documentation/devicetree/bindings/power/supply/bq27xxx.yaml
>> @@ -0,0 +1,86 @@
>> +# SPDX-License-Identifier: GPL-2.0
>> +# Copyright (C) 2020 Texas Instruments Incorporated
>> +%YAML 1.2
>> +---
>> +$id: "http://devicetree.org/schemas/power/supply/bq27xxx.yaml#"
>> +$schema: "http://devicetree.org/meta-schemas/core.yaml#"
>> +
>> +title: TI BQ27XXX fuel gauge family
>> +
>> +maintainers:
>> +  - Pali Rohár <pali@kernel.org>
>> +  - Andrew F. Davis <afd@ti.com>
>> +  - Sebastian Reichel <sre@kernel.org>
>> +
>> +description: |
>> +  Support various Texas Instruments fuel gauge devices that share similar
>> +  register maps and power supply properties
> allOf:
>    - $ref: power-supply.yaml#
Ack
>
>> +properties:
>> +  compatible:
>> +    enum:
>> +      - ti,bq27200 - BQ27200
>> +      - ti,bq27210 - BQ27210
>> +      - ti,bq27500 - deprecated, use revision specific property below
>> +      - ti,bq27510 - deprecated, use revision specific property below
>> +      - ti,bq27520 - deprecated, use revision specific property below
> There is a deprecated property ("deprecated: true"), but IDK how to
> apply it to specific compatible values. Maybe Rob can help out here.
> Otherwise it's not a blocker, since the conversion is still an
> improvement without having explicit deprecation marks :)
>
I would prefer to do this in separate patches.

The code still contains these deprecated values.

So technically we should remove them in this conversion from the 
binding, code and the 2 bindings that they are associated with.

These have been marked deprecated since 2017.

I know we are not supposed to remove items from the bindings so at the 
very least we should remove them from the code and update the devicetree 
files and as you said mark these as deprecated and removed in this 
conversion.

>> +      - ti,bq27500-1 - BQ27500/1
>> +      - ti,bq27510g1 - BQ27510-g1
>> +      - ti,bq27510g2 - BQ27510-g2
>> +      - ti,bq27510g3 - BQ27510-g3
>> +      - ti,bq27520g1 - BQ27520-g1
>> +      - ti,bq27520g2 - BQ27520-g2
>> +      - ti,bq27520g3 - BQ27520-g3
>> +      - ti,bq27520g4 - BQ27520-g4
>> +      - ti,bq27521 - BQ27521
>> +      - ti,bq27530 - BQ27530
>> +      - ti,bq27531 - BQ27531
>> +      - ti,bq27541 - BQ27541
>> +      - ti,bq27542 - BQ27542
>> +      - ti,bq27546 - BQ27546
>> +      - ti,bq27742 - BQ27742
>> +      - ti,bq27545 - BQ27545
>> +      - ti,bq27411 - BQ27411
>> +      - ti,bq27421 - BQ27421
>> +      - ti,bq27425 - BQ27425
>> +      - ti,bq27426 - BQ27426
>> +      - ti,bq27441 - BQ27441
>> +      - ti,bq27621 - BQ27621
>> +
>> +  reg:
>> +    maxItems: 1
>> +    description: integer, I2C address of the fuel gauge.
>> +
>> +  monitored-battery:
>> +    description: |
>> +       phandle of battery characteristics node.
>> +       The fuel gauge uses the following battery properties:
>> +       - energy-full-design-microwatt-hours
>> +       - charge-full-design-microamp-hours
>> +       - voltage-min-design-microvolt
>> +       Both or neither of the *-full-design-*-hours properties must be set.
>> +       See Documentation/devicetree/bindings/power/supply/battery.txt
> power-supplies: true
Ack
>
>> +
>> +required:
>> +  - compatible
>> +  - reg
>> +additionalProperties: false
>> +
>> +examples:
>> +  - |
>> +    i2c0 {
>> +      #address-cells = <1>;
>> +      #size-cells = <0>;
>> +      bat: battery {
>> +        compatible = "simple-battery";
>> +        voltage-min-design-microvolt = <3200000>;
>> +        energy-full-design-microwatt-hours = <5290000>;
>> +        charge-full-design-microamp-hours = <1430000>;
>> +      };
>> +
>> +      bq27510g3: fuel-gauge@55 {
>> +        compatible = "ti,bq27510g3";
>> +        reg = <0x55>;
>> +        monitored-battery = <&bat>;
>> +      };
>> +    };
> Otherwise looks good to me.

Ack

Dan

>
> -- Sebastian
Dan Murphy May 11, 2020, 2:29 p.m. UTC | #3
Sebastian

On 5/11/20 9:32 AM, Sebastian Reichel wrote:
> Hi,
>
> On Mon, May 11, 2020 at 07:25:06AM -0500, Dan Murphy wrote:
>> On 5/10/20 11:17 AM, Sebastian Reichel wrote:
>>> This needs is missing the power-supplies property. The N900 DT
>>> contains a bq27200 referencing the charger, so it should fail the DT
>>> check without the property being listed here.
>> Hmm.  I ran the dt checker specifically on the binding and it did not fail.
>> Unless I need to build some other DTs as well.
>> Either I will have the power-supplies property
> I just tried it myself. The problem is the way you are specifying
> the compatible strings. This is the parsing result:
>
> enum: ['ti,bq27200 - BQ27200', 'ti,bq27210 - BQ27210', 'ti,bq27500 - deprecated,
>        use revision specific property below', ...
>
> You can see this in Documentation/devicetree/bindings/processed-schema.yaml, which
> is generated by running the check. The compatible comments need a # as separation
> character like this to generate proper bindings:
>
> properties:
>    compatible:
>      enum:
>        - ti,bq27200 # BQ27200
>        - ti,bq27210 # BQ27210
>        - ti,bq27500 # deprecated, use revision specific property below

Well honestly not sure why we need the comment either.   These are 
pretty self explanatory maybe we should just remove the additional comments

Any consideration on just removing the deprecated values?

Dan

>
> -- Sebastian
Sebastian Reichel May 11, 2020, 2:32 p.m. UTC | #4
Hi,

On Mon, May 11, 2020 at 07:25:06AM -0500, Dan Murphy wrote:
> On 5/10/20 11:17 AM, Sebastian Reichel wrote:
> > This needs is missing the power-supplies property. The N900 DT
> > contains a bq27200 referencing the charger, so it should fail the DT
> > check without the property being listed here.
> 
> Hmm.  I ran the dt checker specifically on the binding and it did not fail. 
> Unless I need to build some other DTs as well.
> Either I will have the power-supplies property

I just tried it myself. The problem is the way you are specifying
the compatible strings. This is the parsing result:

enum: ['ti,bq27200 - BQ27200', 'ti,bq27210 - BQ27210', 'ti,bq27500 - deprecated,
      use revision specific property below', ...

You can see this in Documentation/devicetree/bindings/processed-schema.yaml, which
is generated by running the check. The compatible comments need a # as separation
character like this to generate proper bindings:

properties:    
  compatible:    
    enum:    
      - ti,bq27200 # BQ27200    
      - ti,bq27210 # BQ27210    
      - ti,bq27500 # deprecated, use revision specific property below

-- Sebastian
Dan Murphy May 11, 2020, 2:55 p.m. UTC | #5
Sebastian

On 5/11/20 9:57 AM, Sebastian Reichel wrote:
> Hi,
>
> On Mon, May 11, 2020 at 09:29:59AM -0500, Dan Murphy wrote:
>> On 5/11/20 9:32 AM, Sebastian Reichel wrote:
>>> On Mon, May 11, 2020 at 07:25:06AM -0500, Dan Murphy wrote:
>>>> On 5/10/20 11:17 AM, Sebastian Reichel wrote:
>>>>> This needs is missing the power-supplies property. The N900 DT
>>>>> contains a bq27200 referencing the charger, so it should fail the DT
>>>>> check without the property being listed here.
>>>> Hmm.  I ran the dt checker specifically on the binding and it did not fail.
>>>> Unless I need to build some other DTs as well.
>>>> Either I will have the power-supplies property
>>> I just tried it myself. The problem is the way you are specifying
>>> the compatible strings. This is the parsing result:
>>>
>>> enum: ['ti,bq27200 - BQ27200', 'ti,bq27210 - BQ27210', 'ti,bq27500 - deprecated,
>>>         use revision specific property below', ...
>>>
>>> You can see this in Documentation/devicetree/bindings/processed-schema.yaml, which
>>> is generated by running the check. The compatible comments need a # as separation
>>> character like this to generate proper bindings:
>>>
>>> properties:
>>>     compatible:
>>>       enum:
>>>         - ti,bq27200 # BQ27200
>>>         - ti,bq27210 # BQ27210
>>>         - ti,bq27500 # deprecated, use revision specific property below
>> Well honestly not sure why we need the comment either. These are pretty
>> self explanatory maybe we should just remove the additional comments
> Fine with me.
Ack
>
>> Any consideration on just removing the deprecated values?
> Let's keep them with their comment for now. Removing them should
> start with marking them as depracated in the binding and generating
> a runtime warning in the driver, so that people become aware of the
> problem. At least for ti,bq27500 we have mainline users At least for
> ti,bq27500 we have mainline users.

There are only 2 dts files that have this reference unless we are not 
sure which device is actually in use.

Dan


> -- Sebastian
Sebastian Reichel May 11, 2020, 2:57 p.m. UTC | #6
Hi,

On Mon, May 11, 2020 at 09:29:59AM -0500, Dan Murphy wrote:
> On 5/11/20 9:32 AM, Sebastian Reichel wrote:
> > On Mon, May 11, 2020 at 07:25:06AM -0500, Dan Murphy wrote:
> > > On 5/10/20 11:17 AM, Sebastian Reichel wrote:
> > > > This needs is missing the power-supplies property. The N900 DT
> > > > contains a bq27200 referencing the charger, so it should fail the DT
> > > > check without the property being listed here.
> > > Hmm.  I ran the dt checker specifically on the binding and it did not fail.
> > > Unless I need to build some other DTs as well.
> > > Either I will have the power-supplies property
> > I just tried it myself. The problem is the way you are specifying
> > the compatible strings. This is the parsing result:
> > 
> > enum: ['ti,bq27200 - BQ27200', 'ti,bq27210 - BQ27210', 'ti,bq27500 - deprecated,
> >        use revision specific property below', ...
> > 
> > You can see this in Documentation/devicetree/bindings/processed-schema.yaml, which
> > is generated by running the check. The compatible comments need a # as separation
> > character like this to generate proper bindings:
> > 
> > properties:
> >    compatible:
> >      enum:
> >        - ti,bq27200 # BQ27200
> >        - ti,bq27210 # BQ27210
> >        - ti,bq27500 # deprecated, use revision specific property below
> 
> Well honestly not sure why we need the comment either. These are pretty
> self explanatory maybe we should just remove the additional comments

Fine with me.

> Any consideration on just removing the deprecated values?

Let's keep them with their comment for now. Removing them should
start with marking them as depracated in the binding and generating
a runtime warning in the driver, so that people become aware of the
problem. At least for ti,bq27500 we have mainline users At least for
ti,bq27500 we have mainline users.

-- Sebastian
Andrew Davis May 11, 2020, 3:22 p.m. UTC | #7
On 5/7/20 2:30 PM, Dan Murphy wrote:
> Convert the bq27xxx.txt to yaml format
> 
> CC: Pali Rohár <pali@kernel.org>
> CC: Andrew F. Davis <afd@ti.com>
> Signed-off-by: Dan Murphy <dmurphy@ti.com>
> ---
>  .../bindings/power/supply/bq27xxx.txt         | 56 ------------
>  .../bindings/power/supply/bq27xxx.yaml        | 86 +++++++++++++++++++
>  2 files changed, 86 insertions(+), 56 deletions(-)
>  delete mode 100644 Documentation/devicetree/bindings/power/supply/bq27xxx.txt
>  create mode 100644 Documentation/devicetree/bindings/power/supply/bq27xxx.yaml
> 
> diff --git a/Documentation/devicetree/bindings/power/supply/bq27xxx.txt b/Documentation/devicetree/bindings/power/supply/bq27xxx.txt
> deleted file mode 100644
> index 4fa8e08df2b6..000000000000
> --- a/Documentation/devicetree/bindings/power/supply/bq27xxx.txt
> +++ /dev/null
> @@ -1,56 +0,0 @@
> -TI BQ27XXX fuel gauge family
> -
> -Required properties:
> -- compatible: contains one of the following:
> - * "ti,bq27200" - BQ27200
> - * "ti,bq27210" - BQ27210
> - * "ti,bq27500" - deprecated, use revision specific property below
> - * "ti,bq27510" - deprecated, use revision specific property below
> - * "ti,bq27520" - deprecated, use revision specific property below
> - * "ti,bq27500-1" - BQ27500/1


This doesn't look right, these are two parts, we should be specific in
DT, so:

ti,bq27500
ti,bq27501

should be separate like that.

Andrew


> - * "ti,bq27510g1" - BQ27510-g1
> - * "ti,bq27510g2" - BQ27510-g2
> - * "ti,bq27510g3" - BQ27510-g3
> - * "ti,bq27520g1" - BQ27520-g1
> - * "ti,bq27520g2" - BQ27520-g2
> - * "ti,bq27520g3" - BQ27520-g3
> - * "ti,bq27520g4" - BQ27520-g4
> - * "ti,bq27521" - BQ27521
> - * "ti,bq27530" - BQ27530
> - * "ti,bq27531" - BQ27531
> - * "ti,bq27541" - BQ27541
> - * "ti,bq27542" - BQ27542
> - * "ti,bq27546" - BQ27546
> - * "ti,bq27742" - BQ27742
> - * "ti,bq27545" - BQ27545
> - * "ti,bq27411" - BQ27411
> - * "ti,bq27421" - BQ27421
> - * "ti,bq27425" - BQ27425
> - * "ti,bq27426" - BQ27426
> - * "ti,bq27441" - BQ27441
> - * "ti,bq27621" - BQ27621
> -- reg: integer, I2C address of the fuel gauge.
> -
> -Optional properties:
> -- monitored-battery: phandle of battery characteristics node
> -    The fuel gauge uses the following battery properties:
> -    + energy-full-design-microwatt-hours
> -    + charge-full-design-microamp-hours
> -    + voltage-min-design-microvolt
> -  Both or neither of the *-full-design-*-hours properties must be set.
> -  See Documentation/devicetree/bindings/power/supply/battery.txt
> -
> -Example:
> -
> -	bat: battery {
> -		compatible = "simple-battery";
> -		voltage-min-design-microvolt = <3200000>;
> -		energy-full-design-microwatt-hours = <5290000>;
> -		charge-full-design-microamp-hours = <1430000>;
> -	};
> -
> -	bq27510g3: fuel-gauge@55 {
> -		compatible = "ti,bq27510g3";
> -		reg = <0x55>;
> -		monitored-battery = <&bat>;
> -	};
> diff --git a/Documentation/devicetree/bindings/power/supply/bq27xxx.yaml b/Documentation/devicetree/bindings/power/supply/bq27xxx.yaml
> new file mode 100644
> index 000000000000..54f497c291f2
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/power/supply/bq27xxx.yaml
> @@ -0,0 +1,86 @@
> +# SPDX-License-Identifier: GPL-2.0
> +# Copyright (C) 2020 Texas Instruments Incorporated
> +%YAML 1.2
> +---
> +$id: "http://devicetree.org/schemas/power/supply/bq27xxx.yaml#"
> +$schema: "http://devicetree.org/meta-schemas/core.yaml#"
> +
> +title: TI BQ27XXX fuel gauge family
> +
> +maintainers:
> +  - Pali Rohár <pali@kernel.org>
> +  - Andrew F. Davis <afd@ti.com>
> +  - Sebastian Reichel <sre@kernel.org>
> +
> +description: |
> +  Support various Texas Instruments fuel gauge devices that share similar
> +  register maps and power supply properties
> +
> +properties:
> +  compatible:
> +    enum:
> +      - ti,bq27200 - BQ27200
> +      - ti,bq27210 - BQ27210
> +      - ti,bq27500 - deprecated, use revision specific property below
> +      - ti,bq27510 - deprecated, use revision specific property below
> +      - ti,bq27520 - deprecated, use revision specific property below
> +      - ti,bq27500-1 - BQ27500/1
> +      - ti,bq27510g1 - BQ27510-g1
> +      - ti,bq27510g2 - BQ27510-g2
> +      - ti,bq27510g3 - BQ27510-g3
> +      - ti,bq27520g1 - BQ27520-g1
> +      - ti,bq27520g2 - BQ27520-g2
> +      - ti,bq27520g3 - BQ27520-g3
> +      - ti,bq27520g4 - BQ27520-g4
> +      - ti,bq27521 - BQ27521
> +      - ti,bq27530 - BQ27530
> +      - ti,bq27531 - BQ27531
> +      - ti,bq27541 - BQ27541
> +      - ti,bq27542 - BQ27542
> +      - ti,bq27546 - BQ27546
> +      - ti,bq27742 - BQ27742
> +      - ti,bq27545 - BQ27545
> +      - ti,bq27411 - BQ27411
> +      - ti,bq27421 - BQ27421
> +      - ti,bq27425 - BQ27425
> +      - ti,bq27426 - BQ27426
> +      - ti,bq27441 - BQ27441
> +      - ti,bq27621 - BQ27621
> +
> +  reg:
> +    maxItems: 1
> +    description: integer, I2C address of the fuel gauge.
> +
> +  monitored-battery:
> +    description: |
> +       phandle of battery characteristics node.
> +       The fuel gauge uses the following battery properties:
> +       - energy-full-design-microwatt-hours
> +       - charge-full-design-microamp-hours
> +       - voltage-min-design-microvolt
> +       Both or neither of the *-full-design-*-hours properties must be set.
> +       See Documentation/devicetree/bindings/power/supply/battery.txt
> +
> +required:
> +  - compatible
> +  - reg
> +additionalProperties: false
> +
> +examples:
> +  - |
> +    i2c0 {
> +      #address-cells = <1>;
> +      #size-cells = <0>;
> +      bat: battery {
> +        compatible = "simple-battery";
> +        voltage-min-design-microvolt = <3200000>;
> +        energy-full-design-microwatt-hours = <5290000>;
> +        charge-full-design-microamp-hours = <1430000>;
> +      };
> +
> +      bq27510g3: fuel-gauge@55 {
> +        compatible = "ti,bq27510g3";
> +        reg = <0x55>;
> +        monitored-battery = <&bat>;
> +      };
> +    };
>
Dan Murphy May 11, 2020, 3:23 p.m. UTC | #8
Andrew

On 5/11/20 10:22 AM, Andrew F. Davis wrote:
> On 5/7/20 2:30 PM, Dan Murphy wrote:
>> Convert the bq27xxx.txt to yaml format
>>
>> CC: Pali Rohár <pali@kernel.org>
>> CC: Andrew F. Davis <afd@ti.com>
>> Signed-off-by: Dan Murphy <dmurphy@ti.com>
>> ---
>>   .../bindings/power/supply/bq27xxx.txt         | 56 ------------
>>   .../bindings/power/supply/bq27xxx.yaml        | 86 +++++++++++++++++++
>>   2 files changed, 86 insertions(+), 56 deletions(-)
>>   delete mode 100644 Documentation/devicetree/bindings/power/supply/bq27xxx.txt
>>   create mode 100644 Documentation/devicetree/bindings/power/supply/bq27xxx.yaml
>>
>> diff --git a/Documentation/devicetree/bindings/power/supply/bq27xxx.txt b/Documentation/devicetree/bindings/power/supply/bq27xxx.txt
>> deleted file mode 100644
>> index 4fa8e08df2b6..000000000000
>> --- a/Documentation/devicetree/bindings/power/supply/bq27xxx.txt
>> +++ /dev/null
>> @@ -1,56 +0,0 @@
>> -TI BQ27XXX fuel gauge family
>> -
>> -Required properties:
>> -- compatible: contains one of the following:
>> - * "ti,bq27200" - BQ27200
>> - * "ti,bq27210" - BQ27210
>> - * "ti,bq27500" - deprecated, use revision specific property below
>> - * "ti,bq27510" - deprecated, use revision specific property below
>> - * "ti,bq27520" - deprecated, use revision specific property below
>> - * "ti,bq27500-1" - BQ27500/1
>
> This doesn't look right, these are two parts, we should be specific in
> DT, so:
>
> ti,bq27500
> ti,bq27501
>
> should be separate like that.

I agree if they are 2 different parts but the code has

     { .compatible = "ti,bq27500-1" },

But it has no consumers.

So the ti,bq27500-1 compatible should be deprecated and ti,bq27501  
should be added and the ti,bq27500 should be reinstated.

Dan
Sebastian Reichel May 11, 2020, 3:30 p.m. UTC | #9
Hi,

On Mon, May 11, 2020 at 09:55:11AM -0500, Dan Murphy wrote:
> On 5/11/20 9:57 AM, Sebastian Reichel wrote:
> > On Mon, May 11, 2020 at 09:29:59AM -0500, Dan Murphy wrote:
> > > On 5/11/20 9:32 AM, Sebastian Reichel wrote:
> > > > On Mon, May 11, 2020 at 07:25:06AM -0500, Dan Murphy wrote:
> > > > > On 5/10/20 11:17 AM, Sebastian Reichel wrote:
> > > > > > This needs is missing the power-supplies property. The N900 DT
> > > > > > contains a bq27200 referencing the charger, so it should fail the DT
> > > > > > check without the property being listed here.
> > > > > Hmm.  I ran the dt checker specifically on the binding and it did not fail.
> > > > > Unless I need to build some other DTs as well.
> > > > > Either I will have the power-supplies property
> > > > I just tried it myself. The problem is the way you are specifying
> > > > the compatible strings. This is the parsing result:
> > > > 
> > > > enum: ['ti,bq27200 - BQ27200', 'ti,bq27210 - BQ27210', 'ti,bq27500 - deprecated,
> > > >         use revision specific property below', ...
> > > > 
> > > > You can see this in Documentation/devicetree/bindings/processed-schema.yaml, which
> > > > is generated by running the check. The compatible comments need a # as separation
> > > > character like this to generate proper bindings:
> > > > 
> > > > properties:
> > > >     compatible:
> > > >       enum:
> > > >         - ti,bq27200 # BQ27200
> > > >         - ti,bq27210 # BQ27210
> > > >         - ti,bq27500 # deprecated, use revision specific property below
> > > Well honestly not sure why we need the comment either. These are pretty
> > > self explanatory maybe we should just remove the additional comments
> > Fine with me.
> Ack
> > 
> > > Any consideration on just removing the deprecated values?
> > Let's keep them with their comment for now. Removing them should
> > start with marking them as depracated in the binding and generating
> > a runtime warning in the driver, so that people become aware of the
> > problem. At least for ti,bq27500 we have mainline users At least for
> > ti,bq27500 we have mainline users.
> 
> There are only 2 dts files that have this reference unless we are not sure
> which device is actually in use.

DT is considered ABI and one is supposed to be able to boot a new
kernel with an old DT. It's not enough to just update the in-tree
dts files. I suppose we can consider removing support for the old
compatible values after having the warning being printed for some
time and the mainline users being converted to the new binding.

-- Sebastian
Dan Murphy May 11, 2020, 7:06 p.m. UTC | #10
Sebastian

On 5/11/20 10:30 AM, Sebastian Reichel wrote:
> Hi,
>
> On Mon, May 11, 2020 at 09:55:11AM -0500, Dan Murphy wrote:
>> On 5/11/20 9:57 AM, Sebastian Reichel wrote:
>>> On Mon, May 11, 2020 at 09:29:59AM -0500, Dan Murphy wrote:
>>>> On 5/11/20 9:32 AM, Sebastian Reichel wrote:
>>>>> On Mon, May 11, 2020 at 07:25:06AM -0500, Dan Murphy wrote:
>>>>>> On 5/10/20 11:17 AM, Sebastian Reichel wrote:
>>>>>>> This needs is missing the power-supplies property. The N900 DT
>>>>>>> contains a bq27200 referencing the charger, so it should fail the DT
>>>>>>> check without the property being listed here.
>>>>>> Hmm.  I ran the dt checker specifically on the binding and it did not fail.
>>>>>> Unless I need to build some other DTs as well.
>>>>>> Either I will have the power-supplies property
>>>>> I just tried it myself. The problem is the way you are specifying
>>>>> the compatible strings. This is the parsing result:
>>>>>
>>>>> enum: ['ti,bq27200 - BQ27200', 'ti,bq27210 - BQ27210', 'ti,bq27500 - deprecated,
>>>>>          use revision specific property below', ...
>>>>>
>>>>> You can see this in Documentation/devicetree/bindings/processed-schema.yaml, which
>>>>> is generated by running the check. The compatible comments need a # as separation
>>>>> character like this to generate proper bindings:
>>>>>
>>>>> properties:
>>>>>      compatible:
>>>>>        enum:
>>>>>          - ti,bq27200 # BQ27200
>>>>>          - ti,bq27210 # BQ27210
>>>>>          - ti,bq27500 # deprecated, use revision specific property below
>>>> Well honestly not sure why we need the comment either. These are pretty
>>>> self explanatory maybe we should just remove the additional comments
>>> Fine with me.
>> Ack
>>>> Any consideration on just removing the deprecated values?
>>> Let's keep them with their comment for now. Removing them should
>>> start with marking them as depracated in the binding and generating
>>> a runtime warning in the driver, so that people become aware of the
>>> problem. At least for ti,bq27500 we have mainline users At least for
>>> ti,bq27500 we have mainline users.
>> There are only 2 dts files that have this reference unless we are not sure
>> which device is actually in use.
> DT is considered ABI and one is supposed to be able to boot a new
> kernel with an old DT. It's not enough to just update the in-tree
> dts files. I suppose we can consider removing support for the old
> compatible values after having the warning being printed for some
> time and the mainline users being converted to the new binding.

Yes I know. I may have said that before.

After looking at the driver and how this is all stitched together I 
think I am just going to stick to the DT conversion as is.

I will make the basic changes for conversion but any changes to the 
compatibles should be done later.

Dan


> -- Sebastian
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/power/supply/bq27xxx.txt b/Documentation/devicetree/bindings/power/supply/bq27xxx.txt
deleted file mode 100644
index 4fa8e08df2b6..000000000000
--- a/Documentation/devicetree/bindings/power/supply/bq27xxx.txt
+++ /dev/null
@@ -1,56 +0,0 @@ 
-TI BQ27XXX fuel gauge family
-
-Required properties:
-- compatible: contains one of the following:
- * "ti,bq27200" - BQ27200
- * "ti,bq27210" - BQ27210
- * "ti,bq27500" - deprecated, use revision specific property below
- * "ti,bq27510" - deprecated, use revision specific property below
- * "ti,bq27520" - deprecated, use revision specific property below
- * "ti,bq27500-1" - BQ27500/1
- * "ti,bq27510g1" - BQ27510-g1
- * "ti,bq27510g2" - BQ27510-g2
- * "ti,bq27510g3" - BQ27510-g3
- * "ti,bq27520g1" - BQ27520-g1
- * "ti,bq27520g2" - BQ27520-g2
- * "ti,bq27520g3" - BQ27520-g3
- * "ti,bq27520g4" - BQ27520-g4
- * "ti,bq27521" - BQ27521
- * "ti,bq27530" - BQ27530
- * "ti,bq27531" - BQ27531
- * "ti,bq27541" - BQ27541
- * "ti,bq27542" - BQ27542
- * "ti,bq27546" - BQ27546
- * "ti,bq27742" - BQ27742
- * "ti,bq27545" - BQ27545
- * "ti,bq27411" - BQ27411
- * "ti,bq27421" - BQ27421
- * "ti,bq27425" - BQ27425
- * "ti,bq27426" - BQ27426
- * "ti,bq27441" - BQ27441
- * "ti,bq27621" - BQ27621
-- reg: integer, I2C address of the fuel gauge.
-
-Optional properties:
-- monitored-battery: phandle of battery characteristics node
-    The fuel gauge uses the following battery properties:
-    + energy-full-design-microwatt-hours
-    + charge-full-design-microamp-hours
-    + voltage-min-design-microvolt
-  Both or neither of the *-full-design-*-hours properties must be set.
-  See Documentation/devicetree/bindings/power/supply/battery.txt
-
-Example:
-
-	bat: battery {
-		compatible = "simple-battery";
-		voltage-min-design-microvolt = <3200000>;
-		energy-full-design-microwatt-hours = <5290000>;
-		charge-full-design-microamp-hours = <1430000>;
-	};
-
-	bq27510g3: fuel-gauge@55 {
-		compatible = "ti,bq27510g3";
-		reg = <0x55>;
-		monitored-battery = <&bat>;
-	};
diff --git a/Documentation/devicetree/bindings/power/supply/bq27xxx.yaml b/Documentation/devicetree/bindings/power/supply/bq27xxx.yaml
new file mode 100644
index 000000000000..54f497c291f2
--- /dev/null
+++ b/Documentation/devicetree/bindings/power/supply/bq27xxx.yaml
@@ -0,0 +1,86 @@ 
+# SPDX-License-Identifier: GPL-2.0
+# Copyright (C) 2020 Texas Instruments Incorporated
+%YAML 1.2
+---
+$id: "http://devicetree.org/schemas/power/supply/bq27xxx.yaml#"
+$schema: "http://devicetree.org/meta-schemas/core.yaml#"
+
+title: TI BQ27XXX fuel gauge family
+
+maintainers:
+  - Pali Rohár <pali@kernel.org>
+  - Andrew F. Davis <afd@ti.com>
+  - Sebastian Reichel <sre@kernel.org>
+
+description: |
+  Support various Texas Instruments fuel gauge devices that share similar
+  register maps and power supply properties
+
+properties:
+  compatible:
+    enum:
+      - ti,bq27200 - BQ27200
+      - ti,bq27210 - BQ27210
+      - ti,bq27500 - deprecated, use revision specific property below
+      - ti,bq27510 - deprecated, use revision specific property below
+      - ti,bq27520 - deprecated, use revision specific property below
+      - ti,bq27500-1 - BQ27500/1
+      - ti,bq27510g1 - BQ27510-g1
+      - ti,bq27510g2 - BQ27510-g2
+      - ti,bq27510g3 - BQ27510-g3
+      - ti,bq27520g1 - BQ27520-g1
+      - ti,bq27520g2 - BQ27520-g2
+      - ti,bq27520g3 - BQ27520-g3
+      - ti,bq27520g4 - BQ27520-g4
+      - ti,bq27521 - BQ27521
+      - ti,bq27530 - BQ27530
+      - ti,bq27531 - BQ27531
+      - ti,bq27541 - BQ27541
+      - ti,bq27542 - BQ27542
+      - ti,bq27546 - BQ27546
+      - ti,bq27742 - BQ27742
+      - ti,bq27545 - BQ27545
+      - ti,bq27411 - BQ27411
+      - ti,bq27421 - BQ27421
+      - ti,bq27425 - BQ27425
+      - ti,bq27426 - BQ27426
+      - ti,bq27441 - BQ27441
+      - ti,bq27621 - BQ27621
+
+  reg:
+    maxItems: 1
+    description: integer, I2C address of the fuel gauge.
+
+  monitored-battery:
+    description: |
+       phandle of battery characteristics node.
+       The fuel gauge uses the following battery properties:
+       - energy-full-design-microwatt-hours
+       - charge-full-design-microamp-hours
+       - voltage-min-design-microvolt
+       Both or neither of the *-full-design-*-hours properties must be set.
+       See Documentation/devicetree/bindings/power/supply/battery.txt
+
+required:
+  - compatible
+  - reg
+additionalProperties: false
+
+examples:
+  - |
+    i2c0 {
+      #address-cells = <1>;
+      #size-cells = <0>;
+      bat: battery {
+        compatible = "simple-battery";
+        voltage-min-design-microvolt = <3200000>;
+        energy-full-design-microwatt-hours = <5290000>;
+        charge-full-design-microamp-hours = <1430000>;
+      };
+
+      bq27510g3: fuel-gauge@55 {
+        compatible = "ti,bq27510g3";
+        reg = <0x55>;
+        monitored-battery = <&bat>;
+      };
+    };