Re: [PATCH v4 01/18] dt-bindings: power: battery: add constant-charge-current property

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On Wed, Mar 29, 2017 at 12:54 AM, Quentin Schulz
<quentin.schulz@xxxxxxxxxxxxxxxxxx> wrote:
> Hi,
>
> On 29/03/2017 09:39, Liam Breck wrote:
>> On Wed, Mar 29, 2017 at 12:09 AM, Quentin Schulz
>> <quentin.schulz@xxxxxxxxxxxxxxxxxx> wrote:
>>> Hi Liam,
>>>
>>> On 29/03/2017 08:55, Liam Breck wrote:
>>>> Hi Quentin,
>>>>
>>>> On Thu, Mar 16, 2017 at 12:42 AM, Liam Breck <liam@xxxxxxxxxxxxxxxxx> wrote:
>>>>> On Thu, Mar 16, 2017 at 12:03 AM, Quentin Schulz
>>>>> <quentin.schulz@xxxxxxxxxxxxxxxxxx> wrote:
>>>>>> Hi Liam,
>>>>>>
>>>>>> On 16/03/2017 07:27, Liam Breck wrote:
>>>>>>> Hi Rob,
>>>>>>>
>>>>>>> On Wed, Mar 15, 2017 at 6:10 AM, Quentin Schulz
>>>>>>> <quentin.schulz@xxxxxxxxxxxxxxxxxx> wrote:
>>>>>>>> Hi Liam,
>>>>>>>>
>>>>>>>> On 15/03/2017 13:08, Liam Breck wrote:
>>>>>>>>> I dropped most of the CCs, pls re-add anyone essential. Use Cc lines
>>>>>>>>> in patch description to direct a patch to interested parties and
>>>>>>>>> relevant lists. I don't want to see all 19 patches in this series.
>>>>>>>>>
>>>>>>>>> On Wed, Mar 15, 2017 at 3:55 AM, Quentin Schulz
>>>>>>>>> <quentin.schulz@xxxxxxxxxxxxxxxxxx> wrote:
>>>>>>>>>> This adds the constant-charge-current property to the list of optional
>>>>>>>>>> properties of the battery.
>>>>>>>>>>
>>>>>>>>>> The constant charge current is critical for batteries as they can't
>>>>>>>>>> handle all charge currents.
>>>>>>>>>>
>>>>>>>>>> Signed-off-by: Quentin Schulz <quentin.schulz@xxxxxxxxxxxxxxxxxx>
>>>>>>>>>> Acked-by: Rob Herring <robh@xxxxxxxxxx>
>>>>>>>>>> ---
>>>>>>>>>>
>>>>>>>>>> v4:
>>>>>>>>>>  - switch from constant-charge-current-microamp to constant-charge-microamp,
>>>>>>>
>>>>>>> Sebastian is on record supporting name alignment between DT:battery
>>>>>>> properties and enum power_supply_property.
>>>>>>>
>>>>>>> Could you OK a change back to constant-charge-current-microamp in this patch?
>>>>>>>
>>>>>>> Note that the following could appear in DT:battery in future:
>>>>>>>
>>>>>>> constant-charge-current-microamp
>>>>>>> constant-charge-current-max-microamp
>>>>>>
>>>>>> OK. I am actually setting max constant charge current and constant
>>>>>> current charge with the same DT property so I might need to adapt my
>>>>>> patches.
>>>>>
>>>>> I suspect you should set battery:*-current-max with DT, as -current is
>>>>> "programmed by charger" so seems to be a stat, not a fixed
>>>>> characteristic.
>>>>
>>>> Did you resolve this issue?
>>>>
>>>
>>> Sorry, completely missed your first mail.
>>>
>>> Constant charge current is actually what I set in the PMIC. The maximum
>>> constant charge current is completely PMIC-agnostic in my driver as it
>>> is used to tell the user that (s)he shouldn't really have a constant
>>> charge current over the maximum limit as the battery might not be able
>>> to handle such high current.
>>>
>>> What I suggest is to have both properties in DT. I'll set the maximum as
>>> I do today and we can give the user the ability to set a "default"
>>> constant charge current (below maximum constant charge current) in the
>>> DT. Maybe we do not want to recharge your battery with the maximum value
>>> by default?
>>
>> The scope here is just static battery characteristics. For the battery
>> node, I think constant-charge-current-max-microamp is the relevant
>> term.
>
> If it's only for static battery characteristics, I agree.
>
>
>> If we added both properties, one would be an alias for the
>> other, which doesn't seem useful.

Meaning if both properties describe static characteristics of the
battery, they wouldn't have different meaning.

> Hum. Not really an alias. In my driver, I have a maximum which avoids to
> set a constant charge current higher than what the battery is supposed
> to be able to handle. The maximum can be increased via sysfs if ever the
> user decides to go wild (or if (s)he changes the battery for example).
> The maximum is never input in any of PMIC registers, it is not dealing
> with the PMIC at all.

Using the battery's -max as the default for your user-adjustable max
sounds sensible. However the user-adjustable max should perhaps appear
in a custom sysfs attribute, not
/sys/class.../constant_charge_current_max (see comment re regulator).

If the battery changes, the DT battery node should also change, esp if
its -max drops. I realize that's not nec trivial.

> If I have only the max constant charge current in the DT, I'll set the
> max and constant charge current with the same DT entry. That's perfectly
> fine.

I assume the pmic ccc setting is adjustable via
/sys/class.../constant_charge_current?

> However, what I was thinking is to have a "default" value taken from DT
> for constant charge current (which will be below maximum ccc) if ever
> someone wants to set a maximum but use a lower ccc value. Anyway, I
> guess it's more a "fancy" feature than a requirement (unlike max-ccc).

Maybe a lower default ccc than battery's -max could be provided via a
% value in the pmic DT node? Then multiply battery -max by that to set
ccc.

>> The pmic can report both independently of the battery characteristic,
>> and take a driver-specific DT property for
>> constant-charge-current-microamp which it applies if less than the
>> battery's -max setting.
>
> Indeed.
>
>> Or you could set that in userspace via
>> /sys/class.../constant_charge_current.
>
> The goal is to have both. The DT for default values (given by the
> vendor/upstream) and sysfs for custom values (interesting if you don't
> want to/can't recompile a DT.
>
>> The charger's -max value would
>> be a characteristic of its regulator.
>>
>
> I don't really understand what you mean by that.

I believe the pmic's -max value is a characteristic of its electrical
design, the max current it can deliver. The power_supply_class docs
are not very clear - "maximum charge current supported by the power
supply object".


>> Or am I missing something...?
>>
>>>> Rob & Sebastian want me to merge all items for
>>>> bindings/power/supply/battery.txt. If I do that I'll also roll up
>>>> their counterparts in power_supply_core.c and submit a patchset for
>>>> those two files.
>>>>
>>>
>>> I guess that adding the two properties make sense, don't you think?
>>>
>>> Also, could you Cc me on your next version of your patches? So I know
>>> when to rebase and slightly rework my patches once your patch series is
>>> merged.
>>
>> Surely.
>>
>>> Thanks,
>>> Quentin
>>>
>>>>> You may program your charger's -current with the battery's
>>>>> -current-max, of course.
>>>>>
>>>>> Note that your charger also has a -current-max characteristic, likely
>>>>> different than your battery. You may not need that in DT tho.
>>>>>
>>>>>>> constant-charge-voltage-microvolt
>>>>>>> constant-charge-voltage-max-microvolt
>>>>>>>
>>>>>>> Thanks!
>>>>>>>
>>>>>>>>> Must be constant-charge-current-microamp for the reasons discussed in
>>>>>>>>> battery.txt - consistency with sysfs names.
>>>>>>>>>
>>>>>>>>
>>>>>>>> Hum. Just nitpicking, but I disagree with the use of 'must'. IIRC there
>>>>>>>> is nothing in the code that would require the property to be named after
>>>>>>>> a property from the enum power_supply_property.
>>>>>>>>
>>>>>>>> I would say that you _want_ it to be named like that because it
>>>>>>>> underlines the relation between the DT property and the actual impacted
>>>>>>>> property in the power supply subsystem. I'm fine with this reason but in
>>>>>>>> the end, the maintainer's opinion prevails (if (s)he does not want it,
>>>>>>>> (s)he will not take it). So, basically, I actually don't mind either
>>>>>>>> option and I see arguments on each side.
>>>>>>>>
>>>>>>>> So, just waiting for maintainer's opinion to make the final version of
>>>>>>>> this patch.
>>>>>>>>
>>>>>>>> Thanks,
>>>>>>>> Quentin
>>>>>>>>
>>>>>>>>> Also applies to power_supply_core.c patch.
>>>>>>>>>
>>>>>>>>> Rob: enum power_supply_property also lists constant-charge-voltage,
>>>>>>>>> hence the -current
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>> added in v3
>>>>>>>>>>
>>>>>>>>>>  Documentation/devicetree/bindings/power/supply/battery.txt | 2 ++
>>>>>>>>>>  1 file changed, 2 insertions(+)
>>>>>>>>>>
>>>>>>>>>> diff --git a/Documentation/devicetree/bindings/power/supply/battery.txt b/Documentation/devicetree/bindings/power/supply/battery.txt
>>>>>>>>>> index 0278617..9594e1e 100644
>>>>>>>>>> --- a/Documentation/devicetree/bindings/power/supply/battery.txt
>>>>>>>>>> +++ b/Documentation/devicetree/bindings/power/supply/battery.txt
>>>>>>>>>> @@ -7,6 +7,7 @@ Optional Properties:
>>>>>>>>>>   - voltage-min-design-microvolt: drained battery voltage
>>>>>>>>>>   - energy-full-design-microwatt-hours: battery design energy
>>>>>>>>>>   - charge-full-design-microamp-hours: battery design capacity
>>>>>>>>>> + - constant-charge-microamp: battery constant charge current
>>>>>>>>>>
>>>>>>>>>>  Because drivers surface properties in sysfs using names derived
>>>>>>>>>>  from enum power_supply_property, e.g.
>>>>>>>>>> @@ -30,6 +31,7 @@ Example:
>>>>>>>>>>                 voltage-min-design-microvolt = <3200000>;
>>>>>>>>>>                 energy-full-design-microwatt-hours = <5290000>;
>>>>>>>>>>                 charge-full-design-microamp-hours = <1430000>;
>>>>>>>>>> +               constant-charge-microamp = <300000>;
>>>>>>>>>>         };
>>>>>>>>>>
>>>>>>>>>>         charger: charger@11 {
>>>>>>>>>> --
>>>>>>>>>> 2.9.3
>>>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> Quentin Schulz, Free Electrons
>>>>>>>> Embedded Linux and Kernel engineering
>>>>>>>> http://free-electrons.com
>>>>>>
>>>>>> --
>>>>>> Quentin Schulz, Free Electrons
>>>>>> Embedded Linux and Kernel engineering
>>>>>> http://free-electrons.com
>>>
>>> --
>>> Quentin Schulz, Free Electrons
>>> Embedded Linux and Kernel engineering
>>> http://free-electrons.com
>
> --
> Quentin Schulz, Free Electrons
> Embedded Linux and Kernel engineering
> http://free-electrons.com
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Device Tree Compilter]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux PCI Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Yosemite Backpacking]
  Powered by Linux