On Mon, Oct 04, 2021 at 09:27:33PM +0200, Marijn Suijten wrote: > The kernel already provides appropriate primitives to perform endianness > conversion which should be used in favour of manual bit-wrangling. > > Signed-off-by: Marijn Suijten <marijn.suijten@xxxxxxxxxxxxxx> > Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@xxxxxxxxxxxxxx> Reviewed-by: Daniel Thompson <daniel.thompson@xxxxxxxxxx> > --- > drivers/video/backlight/qcom-wled.c | 25 +++++++++++-------------- > 1 file changed, 11 insertions(+), 14 deletions(-) > > diff --git a/drivers/video/backlight/qcom-wled.c b/drivers/video/backlight/qcom-wled.c > index 6af808af2328..9927ed98944a 100644 > --- a/drivers/video/backlight/qcom-wled.c > +++ b/drivers/video/backlight/qcom-wled.c > @@ -231,14 +231,14 @@ struct wled { > static int wled3_set_brightness(struct wled *wled, u16 brightness) > { > int rc, i; > - u8 v[2]; > + u16 v; > > - v[0] = brightness & 0xff; > - v[1] = (brightness >> 8) & 0xf; > + v = cpu_to_le16(brightness & WLED3_SINK_REG_BRIGHT_MAX); > > for (i = 0; i < wled->cfg.num_strings; ++i) { > rc = regmap_bulk_write(wled->regmap, wled->ctrl_addr + > - WLED3_SINK_REG_BRIGHT(i), v, 2); > + WLED3_SINK_REG_BRIGHT(i), > + &v, sizeof(v)); > if (rc < 0) > return rc; > } > @@ -249,19 +249,18 @@ static int wled3_set_brightness(struct wled *wled, u16 brightness) > static int wled4_set_brightness(struct wled *wled, u16 brightness) > { > int rc, i; > - u16 low_limit = wled->max_brightness * 4 / 1000; > - u8 v[2]; > + u16 v, low_limit = wled->max_brightness * 4 / 1000; > > /* WLED4's lower limit of operation is 0.4% */ > if (brightness > 0 && brightness < low_limit) > brightness = low_limit; > > - v[0] = brightness & 0xff; > - v[1] = (brightness >> 8) & 0xf; > + v = cpu_to_le16(brightness & WLED3_SINK_REG_BRIGHT_MAX); > > for (i = 0; i < wled->cfg.num_strings; ++i) { > rc = regmap_bulk_write(wled->regmap, wled->sink_addr + > - WLED4_SINK_REG_BRIGHT(i), v, 2); > + WLED4_SINK_REG_BRIGHT(i), > + &v, sizeof(v)); > if (rc < 0) > return rc; > } > @@ -272,22 +271,20 @@ static int wled4_set_brightness(struct wled *wled, u16 brightness) > static int wled5_set_brightness(struct wled *wled, u16 brightness) > { > int rc, offset; > - u16 low_limit = wled->max_brightness * 1 / 1000; > - u8 v[2]; > + u16 v, low_limit = wled->max_brightness * 1 / 1000; > > /* WLED5's lower limit is 0.1% */ > if (brightness < low_limit) > brightness = low_limit; > > - v[0] = brightness & 0xff; > - v[1] = (brightness >> 8) & 0x7f; > + v = cpu_to_le16(brightness & WLED5_SINK_REG_BRIGHT_MAX_15B); > > offset = (wled->cfg.mod_sel == MOD_A) ? > WLED5_SINK_REG_MOD_A_BRIGHTNESS_LSB : > WLED5_SINK_REG_MOD_B_BRIGHTNESS_LSB; > > rc = regmap_bulk_write(wled->regmap, wled->sink_addr + offset, > - v, 2); > + &v, sizeof(v)); > return rc; > } > > -- > 2.33.0 >