Re: [PATCH] regulator: bd718x7, bd71828, Fix dvs voltage levels

From: Lee Jones
Date: Fri Jan 15 2021 - 09:42:34 EST


On Fri, 15 Jan 2021, Matti Vaittinen wrote:

> The ROHM BD718x7 and BD71828 drivers support setting HW state
> specific voltages from device-tree. This is used also by various
> in-tree DTS files.
>
> These drivers do incorrectly try to compose bit-map using enum
> values. By a chance this works for first two valid levels having
> values 1 and 2 - but setting values for the rest of the levels
> do indicate capbility of setting values for first levels as
> well. Luckily the regulators which support settin values for
> SUSPEND/LPSR do usually also support setting values for RUN
> and IDLE too - thus this has not been such a fatal issue.
>
> Fix this by defining the old enum values as bits and using
> new enum in parsing code. This allows keeping existing IC
> specific drivers intact and only adding the defines and
> slightly changing the rohm-regulator.c
>
> Fixes: 21b72156ede8b ("regulator: bd718x7: Split driver to common and bd718x7 specific parts")
> Signed-off-by: Matti Vaittinen <matti.vaittinen@xxxxxxxxxxxxxxxxx>
> ---
>
> One more attempt today. I did test the driver is not causing a crash
> when load but no further tests concluded as I don't have BD71837/47/50
> at home. This looks now trivial though so I decided to give it a go.
> Sorry for all the trouble this far - and also for the mistakes to come.

Why don't you wait until next week when you can run this on real h/w
with some pretty debug to ensure it does the right thing?

> drivers/regulator/rohm-regulator.c | 9 ++++++---
> include/linux/mfd/rohm-generic.h | 14 ++++++--------
> 2 files changed, 12 insertions(+), 11 deletions(-)

--
Lee Jones [李琼斯]
Senior Technical Lead - Developer Services
Linaro.org │ Open source software for Arm SoCs
Follow Linaro: Facebook | Twitter | Blog