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 11:41 PM, Quentin Schulz
<quentin.schulz@xxxxxxxxxxxxxxxxxx> wrote:
> Hi,
>
> On 29/03/2017 11:26, Liam Breck wrote:
>> 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).
>>
>
> Why?

Because charger's ccc_max should refer to its electrical
characteristics, not a user-adjustable setting. Maybe
/sys/class.../constant_charge_current_max_local or similar.

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

There are ways to field-upgrade the dtb, tho that might not be
workable in all cases :-)

>>> 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?
>>
>
> Yes, it is then limited by a user-modifiable constant_charge_current_max.
>
>>> 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.
>>
>
> That's battery-specific, why would you want to put it in the PMIC node?

A % modifier is not too battery-specific. If you want a specific
alternate default ccc, you could certainly put it in the battery node,
and read it from your driver the way power_supply_get_battery_info()
does. But if you are expecting battery changes which alter
characteristics, the less you hard-wire into DT, the better.

>>>> 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".
>>
>
> This PMIC can deliver a maximum of 1.8A or 2.5A depending on the variant
> for constant charge current but you do not want to easily allow your
> user to put such a high value as the battery is most likely not able to
> handle such a high current.

Right, and /sys/class.../constant_charge_current_max should probably
report exactly that. Hence the suggestion for ccc_max_local for the
adjustable ccc_max.

We really shouldn't be wondering what do do here, but alas, the kernel
power-supply framework is a bit under-developed :-p

Anyway I plan to add constant-charge-current-max-microamp in the
forthcoming patchset.

>>>> 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
>
> --
> 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