From: Linus Walleij <linus.walleij@linaro.org>
To: Jakob Hauser <jahau@rocketmail.com>
Cc: Sebastian Reichel <sre@kernel.org>, Lee Jones <lee@kernel.org>,
Liam Girdwood <lgirdwood@gmail.com>,
Mark Brown <broonie@kernel.org>, Rob Herring <robh+dt@kernel.org>,
Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>,
Beomho Seo <beomho.seo@samsung.com>,
Chanwoo Choi <cw00.choi@samsung.com>,
Stephan Gerhold <stephan@gerhold.net>,
Raymond Hackley <raymondhackley@protonmail.com>,
Pavel Machek <pavel@ucw.cz>, Axel Lin <axel.lin@ingics.com>,
ChiYuan Huang <cy_huang@richtek.com>,
linux-pm@vger.kernel.org, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org, phone-devel@vger.kernel.org,
~postmarketos/upstreaming@lists.sr.ht
Subject: Re: [PATCH v2 9/9] dt-bindings: Add documentation for rt5033 mfd, regulator and charger
Date: Fri, 21 Apr 2023 11:20:09 +0200 [thread overview]
Message-ID: <CACRpkdaYaE+1GKNv5SczC+Xn8UuBonZcW4RSdbsU53HWTR_tTg@mail.gmail.com> (raw)
In-Reply-To: <662eeda8-8605-4124-75d3-9df6bd81bcb7@rocketmail.com>
Hi Jakob,
On Thu, Apr 20, 2023 at 11:16 PM Jakob Hauser <jahau@rocketmail.com> wrote:
> > On Thu, Apr 20, 2023 at 9:59 AM Linus Walleij <linus.walleij@linaro.org> wrote:
> > On second thought, these are really weird properties to have on the
> > *charger* isn't it?
> >
> > It is really *battery* restrictions.
> >
> > A charger can charge many different batteries with different CC/CV
> > settings.
(...)
> I was first a bit confused by the term "battery". I associated that term
> with the driver "rt5033-battery". But I think that thought was wrong.
> The driver "rt5033-battery" is just the fuel gauge.
Yeah that is a different thing altogether, it should be named
rt5033-fuel-gauge if I could turn back time, I would review it
and say this, perhaps the confusion can be fixed. Mistakes
were made.
> The properties we talk about here are the settings for the charger. They
> tell the charger how it should behave. It makes sense to process those
> settings within the charger driver.
It may make sense to *parse* this in the charger driver, by
following the monitored-battery phandle to inspect the battery
properties and get the information you need.
The architecture of any Linux driver does not really concern
the DT bindings, the bindings should reflect the hardware.
The hardware has a charger, and the charger is monitoring
a battery, so it needs to be its own DT node.
> The fuel gauge, on the other hand,
> returns information like actual voltage and percentage.
The fuel gauge should probably have a phandle to the same
battery for compleness sake, but may not need it. If it ever needs
any battery properties, it should definately have that.
> According to your remarks, the properties could be "outsourced" into a
> battery node. (Btw. I have double-checked the property names.)
>
> battery: battery {
> compatible = "simple-battery";
> precharge-current-microamp = <450000>;
> constant-charge-current-max-microamp = <1000000>;
> charge-term-current-microamp = <150000>;
> precharge-upper-limit-microvolt = <3500000>;
> constant-charge-voltage-max-microvolt = <4350000>;
> };
>
> pmic@34 {
> compatible = "richtek,rt5033";
> ....
> charger {
> compatible = "richtek,rt5033-charger";
> monitored-battery = <&battery>;
> extcon = <&muic>;
> };
> };
Yups this is how it should look :)
> Personally I would choose the current implementation for two reasons
> (possibly weak ones):
The device tree binding isn't any "implementation", and make sure
to not go into the trap that DT bindings should be done to be
convenient for any specific Linux driver to use.
> 2) At least in my mind it's still the setup for the charger. It sets up
> a the charging behavior of a certain consumer device. And the choice of
> their values is limited to the hardware of the charger. Accordingly the
> dt-bindings would say what the charger hardware is capable to do.
> Therefore I'd say it's reasonable to have those values in the charger
> node and use vendor properties.
>
> I agree to you that actually the physical battery is determining how
> these values should be set. In the end, as far as I can see, it is a
> representation thing in the devicetree. At least in our case here.
The DT bindings should reflect the hardware, and not what some
or any driver "would like to see" (to make its life easier...)
As these things are programmed into registers, clearly the
hardware is adoptable for different batteries, and the purpose
of these registers is to support different batteries. Ergo: they
belong in a battery node.
> Not sure how to proceed here. I would stick to the current
> implementation. If someone strongly prefers the "battery" representation
> style, I'm open to switch to this.
Again this is not an implementation but a hardware description.
It should use a phandle to a montored-battery and follow that to
read the battery properties.
> However, I'm not sure how the dt-bindings would look like in that case.
Just like you sketched above, just reuse simple-battery if the battery
is hardcoded into the platform, such as soldered in or has a form
factor such that no different battery can be fitted.
> Those battery properties would not be part of the RT5033 node, thus they
> basically would not be part of the RT5033 documentation. Again I think
> it makes sense to handle those properties within the charger node as
> "charger settings" properties.
Why?
This is like saying that the number of pixels on your monitor should
be part of the graphics card DT node as "configuration". And we
clearly do not do that.
Yours,
Linus Walleij
next prev parent reply other threads:[~2023-04-21 9:20 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <cover.1681646904.git.jahau.ref@rocketmail.com>
2023-04-16 12:44 ` [PATCH v2 0/9] Add RT5033 charger device driver Jakob Hauser
2023-04-16 12:44 ` [PATCH v2 1/9] mfd: rt5033: Drop rt5033-battery sub-device Jakob Hauser
2023-04-20 8:05 ` Linus Walleij
2023-04-16 12:44 ` [PATCH v2 2/9] mfd: rt5033: Fix chip revision readout Jakob Hauser
2023-04-16 12:44 ` [PATCH v2 3/9] mfd: rt5033: Fix STAT_MASK, HZ_MASK and AICR defines Jakob Hauser
2023-04-16 12:44 ` [PATCH v2 4/9] mfd: rt5033: Apply preparatory changes before adding rt5033-charger driver Jakob Hauser
2023-04-16 12:44 ` [PATCH v2 5/9] regulator: rt5033: Change regulator names to lowercase Jakob Hauser
2023-04-16 18:32 ` Krzysztof Kozlowski
2023-04-18 21:24 ` Jakob Hauser
2023-04-19 8:40 ` Krzysztof Kozlowski
2023-04-19 22:21 ` Jakob Hauser
2023-04-16 12:44 ` [PATCH v2 6/9] power: supply: rt5033_charger: Add RT5033 charger device driver Jakob Hauser
2023-04-23 1:22 ` kernel test robot
2023-04-23 9:55 ` Jakob Hauser
2023-04-16 12:44 ` [PATCH v2 7/9] power: supply: rt5033_charger: Add cable detection and USB OTG supply Jakob Hauser
2023-04-16 12:44 ` [PATCH v2 8/9] power: supply: rt5033_battery: Adopt status property from charger Jakob Hauser
2023-04-23 9:46 ` Jakob Hauser
2023-04-16 12:44 ` [PATCH v2 9/9] dt-bindings: Add documentation for rt5033 mfd, regulator and charger Jakob Hauser
2023-04-16 18:39 ` Krzysztof Kozlowski
2023-04-18 21:37 ` Jakob Hauser
2023-04-19 8:42 ` Krzysztof Kozlowski
2023-04-19 22:41 ` Jakob Hauser
2023-04-20 7:59 ` Linus Walleij
2023-04-20 8:03 ` Linus Walleij
2023-04-20 21:16 ` Jakob Hauser
2023-04-21 9:20 ` Linus Walleij [this message]
2023-04-21 22:15 ` Jakob Hauser
2023-04-16 18:29 ` [PATCH v2 0/9] Add RT5033 charger device driver Krzysztof Kozlowski
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=CACRpkdaYaE+1GKNv5SczC+Xn8UuBonZcW4RSdbsU53HWTR_tTg@mail.gmail.com \
--to=linus.walleij@linaro.org \
--cc=axel.lin@ingics.com \
--cc=beomho.seo@samsung.com \
--cc=broonie@kernel.org \
--cc=cw00.choi@samsung.com \
--cc=cy_huang@richtek.com \
--cc=devicetree@vger.kernel.org \
--cc=jahau@rocketmail.com \
--cc=krzysztof.kozlowski+dt@linaro.org \
--cc=lee@kernel.org \
--cc=lgirdwood@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=pavel@ucw.cz \
--cc=phone-devel@vger.kernel.org \
--cc=raymondhackley@protonmail.com \
--cc=robh+dt@kernel.org \
--cc=sre@kernel.org \
--cc=stephan@gerhold.net \
--cc=~postmarketos/upstreaming@lists.sr.ht \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).