Hi, On Mon, Dec 15, 2025 at 03:21:03PM +0200, Matti Vaittinen wrote: > From: Matti Vaittinen > > The BD71828 power-supply driver assumes register addresses to be 8-bit. > The new BD72720 will use stacked register maps to hide paging which is > done using secondary I2C slave address. This requires use of 9-bit > register addresses in the power-supply driver (added offset 0x100 to > the 8-bit hardware register addresses). > > The cost is slightly used memory consumption as the members in the > struct pwr_regs will be changed from u8 to unsigned int, which means 3 > byte increase / member / instance. > This is currently 14 members (expected to possibly be increased when > adding new variants / new functionality which may introduce new > registers, but not expected to grow much) and 2 instances (will be 3 > instances when BD72720 gets added). > > So, even if the number of registers grew to 50 it'd be 150 bytes / > instance. Assuming we eventually supported 5 variants, it'd be > 5 * 150 bytes, which stays very reasonable considering systems we are > dealing with. > > As a side note, we can reduce the "wasted space / member / instance" from > 3 bytes to 1 byte, by using u16 instead of the unsigned int if needed. I > rather use unsigned int to be initially prepared for devices with 32 bit > registers if there is no need to count bytes. > > Signed-off-by: Matti Vaittinen > --- Reviewed-by: Sebastian Reichel Greetings, -- Sebastian > Revision history: > v2 => : > - No changes > > RFCv1 => v2: > - New patch > --- > drivers/power/supply/bd71828-power.c | 26 +++++++++++++------------- > 1 file changed, 13 insertions(+), 13 deletions(-) > > diff --git a/drivers/power/supply/bd71828-power.c b/drivers/power/supply/bd71828-power.c > index f667baedeb77..ce73c0f48397 100644 > --- a/drivers/power/supply/bd71828-power.c > +++ b/drivers/power/supply/bd71828-power.c > @@ -44,19 +44,19 @@ > #define VBAT_LOW_TH 0x00D4 > > struct pwr_regs { > - u8 vbat_avg; > - u8 ibat; > - u8 ibat_avg; > - u8 btemp_vth; > - u8 chg_state; > - u8 bat_temp; > - u8 dcin_stat; > - u8 dcin_collapse_limit; > - u8 chg_set1; > - u8 chg_en; > - u8 vbat_alm_limit_u; > - u8 conf; > - u8 vdcin; > + unsigned int vbat_avg; > + unsigned int ibat; > + unsigned int ibat_avg; > + unsigned int btemp_vth; > + unsigned int chg_state; > + unsigned int bat_temp; > + unsigned int dcin_stat; > + unsigned int dcin_collapse_limit; > + unsigned int chg_set1; > + unsigned int chg_en; > + unsigned int vbat_alm_limit_u; > + unsigned int conf; > + unsigned int vdcin; > }; > > static const struct pwr_regs pwr_regs_bd71828 = { > -- > 2.52.0 >