Hi! On 2021-03-26 18:23, Andy Shevchenko wrote: > Assigning bitmaps like it's done in the driver might be error prone. > Fix this by using bitmap API.
A bit strongly worded perhaps, since the size of a mux chip with anywhere near 31 inputs and 2^31 possible selections is a bit ridiculous. Please send a photo of that HW if someone is producing one :-) But there's always the someone-borrows-code-factor, so I guess it's fine as-is. > Signed-off-by: Andy Shevchenko <andriy.shevche...@linux.intel.com> > --- > drivers/mux/gpio.c | 7 ++++--- > 1 file changed, 4 insertions(+), 3 deletions(-) > > diff --git a/drivers/mux/gpio.c b/drivers/mux/gpio.c > index 02c1f2c014e8..891ee0274733 100644 > --- a/drivers/mux/gpio.c > +++ b/drivers/mux/gpio.c > @@ -6,7 +6,7 @@ > * > * Author: Peter Rosin <p...@axentia.se> > */ > - Nit, please keep the empty line here. With that, Acked-by: Peter Rosin <p...@axentia.se> And please send directly to Greg, that would be excellent, thanks! Cheers, Peter > +#include <linux/bitmap.h> > #include <linux/err.h> > #include <linux/gpio/consumer.h> > #include <linux/module.h> > @@ -23,8 +23,9 @@ static int mux_gpio_set(struct mux_control *mux, int state) > { > struct mux_gpio *mux_gpio = mux_chip_priv(mux->chip); > DECLARE_BITMAP(values, BITS_PER_TYPE(state)); > + u32 value = state; > > - values[0] = state; > + bitmap_from_arr32(values, &value, BITS_PER_TYPE(value)); > > gpiod_set_array_value_cansleep(mux_gpio->gpios->ndescs, > mux_gpio->gpios->desc, > @@ -71,7 +72,7 @@ static int mux_gpio_probe(struct platform_device *pdev) > return ret; > } > WARN_ON(pins != mux_gpio->gpios->ndescs); > - mux_chip->mux->states = 1 << pins; > + mux_chip->mux->states = BIT(pins); > > ret = device_property_read_u32(dev, "idle-state", (u32 *)&idle_state); > if (ret >= 0 && idle_state != MUX_IDLE_AS_IS) { >