[PATCH] mfd: bd71828: Add some missing charger related registers

Andreas Kemnade posted 1 patch 1 week, 5 days ago
include/linux/mfd/rohm-bd71828.h | 2 ++
1 file changed, 2 insertions(+)
[PATCH] mfd: bd71828: Add some missing charger related registers
Posted by Andreas Kemnade 1 week, 5 days ago
As there are some registers missing which are required for future charger
extensions, add them.

Signed-off-by: Andreas Kemnade <andreas@kemnade.info>
---
I have something in preparation for the power supply driver, but I am
sending this now if this might go in earlier e.g. via  BD72720 
immutable branch to avoid more immutable branches.
@Matti: Can you check the situation with the other chips supported
by that driver. Is that register there, too?

 include/linux/mfd/rohm-bd71828.h | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/include/linux/mfd/rohm-bd71828.h b/include/linux/mfd/rohm-bd71828.h
index 73a71ef69152..39fe275a8117 100644
--- a/include/linux/mfd/rohm-bd71828.h
+++ b/include/linux/mfd/rohm-bd71828.h
@@ -249,6 +249,8 @@ enum {
 #define BD71828_REG_BATCAP_MON_LIMIT_U	0xcc
 #define BD71828_REG_CONF		0x64
 
+#define BD71828_REG_ILIM_STAT		0x6d
+#define BD71828_REG_DCIN_SET		0x70
 #define BD71828_REG_DCIN_CLPS		0x71
 
 #define BD71828_REG_MEAS_CLEAR		0xaf
-- 
2.47.3
Re: [PATCH] mfd: bd71828: Add some missing charger related registers
Posted by Matti Vaittinen 1 week, 4 days ago
On 07/12/2025 10:50, Andreas Kemnade wrote:
> As there are some registers missing which are required for future charger
> extensions, add them.
> 
> Signed-off-by: Andreas Kemnade <andreas@kemnade.info>

Reviewed-by: Matti Vaittinen <mazziesaccount@gmail.com>

Thanks for working with this driver! Much appreciated :)

> ---
> I have something in preparation for the power supply driver, but I am
> sending this now if this might go in earlier e.g. via  BD72720
> immutable branch to avoid more immutable branches.
> @Matti: Can you check the situation with the other chips supported
> by that driver. Is that register there, too?

Sure.

Just purely based on the data-sheets:

- BD71815: I didn't find one.
- BD71879: (As you know) - basically the same as BD71828, so they can
   both use the BD71828_REG_ILIM_STAT and BD71828_REG_DCIN_SET.
- BD72720:
   1: I see 'CHG_ILIM_STAT' with ILIM_VBUS_STAT[6:0], which says:
	"Actual value of VBUS current-limitation. The VBUS current limit
	is increased or decreased automatically. The actual limit can be
	read from ILIM_VBUS_STAT register."
	This may, or may not be related to the stuff you are working
	with. I think I have this register included in the
	include/linux/mfd/rohm-bd72720.h. On top of that, the BD72720
	has OTP options to configure (time) "Interval for VBUS Current
	Limitation / Relaxation".
   2: I see a read-only 'CHG_VBUS_STAT' with 'ILIM_VBUS' bit and:
	"0 = Normal operation
	1 = Automatic limit control"
   3: I see enable/disable control for:
	"VBUS input current limit in Battery Assist"
   4: There is also: CHG_VBUS_SET with IBUS_INLIM[6:0], which says:
	"VBUS current limit setting for Charge. VBUS current limit is
	automatically changed to supply enough current to the Battery
	Charger. Present current limit is available to read from
	ILIM_VBUS_STAT register." This may be something similar to the
	DCIN_SET.

I asked for some clarification from the HQ folks - but they may be quite 
busy, and my request(s) may not be at the top of the priority list. So, 
let's see...

Are you planning to expose the current limit values to user-space? Allow 
setting the control to AUTO/fixed value? I suppose this is what enabled 
you to do some low-power charging, right?

Yours,
	-- Matti


---
Matti Vaittinen
Linux kernel developer at ROHM Semiconductors
Oulu Finland

~~ When things go utterly wrong vim users can always type :help! ~~
Re: [PATCH] mfd: bd71828: Add some missing charger related registers
Posted by Andreas Kemnade 1 week, 3 days ago
On Mon, 8 Dec 2025 09:47:43 +0200
Matti Vaittinen <mazziesaccount@gmail.com> wrote:

> On 07/12/2025 10:50, Andreas Kemnade wrote:
> > As there are some registers missing which are required for future charger
> > extensions, add them.
> > 
> > Signed-off-by: Andreas Kemnade <andreas@kemnade.info>  
> 
> Reviewed-by: Matti Vaittinen <mazziesaccount@gmail.com>
> 
> Thanks for working with this driver! Much appreciated :)
> 
[...]
> I asked for some clarification from the HQ folks - but they may be quite 
> busy, and my request(s) may not be at the top of the priority list. So, 
> let's see...
> 
> Are you planning to expose the current limit values to user-space? Allow 
> setting the control to AUTO/fixed value? I suppose this is what enabled 
> you to do some low-power charging, right?
> 
I am thinking about adding input_current_limit property and providing the
ILIM_DCIN_EN as a custom sysfs property like maybe "auto_input_current_limitation"

I had issues with using my bike hub dynamo and some solar panels
without any additional batteries in between, just  regulator (and
in the bike hub dynamo, of course a rectifier with a smoothing capacitor).
I would expect to just see the current limited so that voltage stays at the
anticollapse voltage, but that is not the case.
I have solved the problem with clearing ILIM_DCIN_EN and setting current
accordingly (often to something like 0.4A). I will try to use the next sun ray
arriving here to recheck. I have created a script to manipulate
things using i2cset in a lonely place in nature where I obviously
did not want to spend time with datasheets as short as possible.

The key point is not only low-power charging but also power sources with
changing properties.

Regards,
Andreas
Re: [PATCH] mfd: bd71828: Add some missing charger related registers
Posted by Matti Vaittinen 1 week, 4 days ago
Hi again,

It was faster than one could guess :) I got the response from the HQ. In 
a nutshell:

"BD72720 ILIM_VBUS_STAT and IBUS_INLIM provide the same functionality as 
BD71828 ILIM_DCIN_STAT and ILIM_DCIN, but note that the offset and 
resolution differ."

OTP settings for the time-interval aren't available for BD71828 (and 
variants). Furthermore, they can't be read/set at runtime on BD72720 
which makes them more or less 'invisible' for the SW.

The 'ILIM_VBUS' bit in 'CHG_VBUS_STAT' register (for BD72720) 
corresponds to the 'DCIN_ILIM_MOD' bit in 'DCIN_STAT' for BD71828.

Finally:
"The Anti-Collapse function present in BD71828 is implemented in analog 
circuitry on BD72720, so ILIM_VBUS_STAT does not fluctuate due to 
Anti-Collapse. On BD71828, ILIM_DCIN_STAT changes during Anti-Collapse."

Yours,
	-- Matti


On 08/12/2025 09:47, Matti Vaittinen wrote:
> On 07/12/2025 10:50, Andreas Kemnade wrote:
>> As there are some registers missing which are required for future charger
>> extensions, add them.
>>
>> Signed-off-by: Andreas Kemnade <andreas@kemnade.info>
> 
> Reviewed-by: Matti Vaittinen <mazziesaccount@gmail.com>
> 
> Thanks for working with this driver! Much appreciated :)
> 
>> ---
>> I have something in preparation for the power supply driver, but I am
>> sending this now if this might go in earlier e.g. via  BD72720
>> immutable branch to avoid more immutable branches.
>> @Matti: Can you check the situation with the other chips supported
>> by that driver. Is that register there, too?
> 
> Sure.
> 
> Just purely based on the data-sheets:
> 
> - BD71815: I didn't find one.
> - BD71879: (As you know) - basically the same as BD71828, so they can
>    both use the BD71828_REG_ILIM_STAT and BD71828_REG_DCIN_SET.
> - BD72720:
>    1: I see 'CHG_ILIM_STAT' with ILIM_VBUS_STAT[6:0], which says:
>      "Actual value of VBUS current-limitation. The VBUS current limit
>      is increased or decreased automatically. The actual limit can be
>      read from ILIM_VBUS_STAT register."
>      This may, or may not be related to the stuff you are working
>      with. I think I have this register included in the
>      include/linux/mfd/rohm-bd72720.h. On top of that, the BD72720
>      has OTP options to configure (time) "Interval for VBUS Current
>      Limitation / Relaxation".
>    2: I see a read-only 'CHG_VBUS_STAT' with 'ILIM_VBUS' bit and:
>      "0 = Normal operation
>      1 = Automatic limit control"
>    3: I see enable/disable control for:
>      "VBUS input current limit in Battery Assist"
>    4: There is also: CHG_VBUS_SET with IBUS_INLIM[6:0], which says:
>      "VBUS current limit setting for Charge. VBUS current limit is
>      automatically changed to supply enough current to the Battery
>      Charger. Present current limit is available to read from
>      ILIM_VBUS_STAT register." This may be something similar to the
>      DCIN_SET.
> 
> I asked for some clarification from the HQ folks - but they may be quite 
> busy, and my request(s) may not be at the top of the priority list. So, 
> let's see...
> 
> Are you planning to expose the current limit values to user-space? Allow 
> setting the control to AUTO/fixed value? I suppose this is what enabled 
> you to do some low-power charging, right?
> 
> Yours,
>      -- Matti
> 
> 
> ---
> Matti Vaittinen
> Linux kernel developer at ROHM Semiconductors
> Oulu Finland
> 
> ~~ When things go utterly wrong vim users can always type :help! ~~


-- 
---
Matti Vaittinen
Linux kernel developer at ROHM Semiconductors
Oulu Finland

~~ When things go utterly wrong vim users can always type :help! ~~