[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20200308214748.GL1094083@builder>
Date: Sun, 8 Mar 2020 14:47:48 -0700
From: Bjorn Andersson <bjorn.andersson@...aro.org>
To: Kiran Gunda <kgunda@...eaurora.org>
Cc: jingoohan1@...il.com, lee.jones@...aro.org,
b.zolnierkie@...sung.com, dri-devel@...ts.freedesktop.org,
daniel.thompson@...aro.org, jacek.anaszewski@...il.com,
pavel@....cz, robh+dt@...nel.org, mark.rutland@....com,
linux-leds@...r.kernel.org, devicetree@...r.kernel.org,
linux-kernel@...r.kernel.org, Dan Murphy <dmurphy@...com>,
Andy Gross <agross@...nel.org>, linux-arm-msm@...r.kernel.org,
linux-fbdev@...r.kernel.org
Subject: Re: [PATCH V1 2/2] backlight: qcom-wled: Add support for WLED5
peripheral in PM8150L
On Mon 02 Mar 04:55 PST 2020, Kiran Gunda wrote:
> diff --git a/drivers/video/backlight/qcom-wled.c b/drivers/video/backlight/qcom-wled.c
[..]
> @@ -147,14 +187,39 @@ struct wled {
> u32 max_brightness;
> u32 short_count;
> u32 auto_detect_count;
> + u32 version;
> bool disabled_by_short;
> bool has_short_detect;
> + bool cabc_disabled;
> int short_irq;
> int ovp_irq;
>
> struct wled_config cfg;
> struct delayed_work ovp_work;
> int (*wled_set_brightness)(struct wled *wled, u16 brightness);
> + int (*cabc_config)(struct wled *wled, bool enable);
> + int (*wled_sync_toggle)(struct wled *wled);
Please split this patch in one that adds these and breaks out the wled3
support, and then a second patch that adds wled5.
> +};
> +
[..]
> +static int wled5_set_brightness(struct wled *wled, u16 brightness)
> +{
> + int rc, offset;
> + u16 low_limit = wled->max_brightness * 1 / 1000;
> + u8 v[2], brightness_msb_mask;
> +
> + /* WLED5's lower limit is 0.1% */
> + if (brightness > 0 && brightness < low_limit)
> + brightness = low_limit;
> +
> + brightness_msb_mask = 0xf;
> + if (wled->max_brightness == WLED5_SINK_REG_BRIGHT_MAX_15B)
> + brightness_msb_mask = 0x7f;
Why not just brightness &= wled->max_brightness? But given that it seems
like the framework ensures that brightness <= max_brightness, why not
skip this altogether?
> +
> + v[0] = brightness & 0xff;
> + v[1] = (brightness >> 8) & brightness_msb_mask;
> +
> + offset = wled5_brightness_reg[wled->cfg.mod_sel];
> + rc = regmap_bulk_write(wled->regmap, wled->sink_addr + offset,
> + v, 2);
> + return rc;
> +}
> +
> static int wled4_set_brightness(struct wled *wled, u16 brightness)
> {
> int rc, i;
> @@ -237,7 +325,28 @@ static int wled_module_enable(struct wled *wled, int val)
> return 0;
> }
>
> -static int wled_sync_toggle(struct wled *wled)
> +static int wled5_sync_toggle(struct wled *wled)
> +{
> + int rc;
> + u8 val;
> +
> + val = (wled->cfg.mod_sel == MOD_A) ? WLED5_SINK_REG_SYNC_MOD_A_BIT :
> + WLED5_SINK_REG_SYNC_MOD_B_BIT;
> + rc = regmap_update_bits(wled->regmap,
> + wled->sink_addr + WLED5_SINK_REG_MOD_SYNC_BIT,
> + WLED5_SINK_REG_SYNC_MASK, val);
> + if (rc < 0)
> + return rc;
> +
> + val = 0;
Just plug 0 in the function call.
> + rc = regmap_update_bits(wled->regmap,
> + wled->sink_addr + WLED5_SINK_REG_MOD_SYNC_BIT,
> + WLED5_SINK_REG_SYNC_MASK, val);
> +
> + return rc;
And return regmap_update_bits(...);
> +}
> +
Regards,
Bjorn
Powered by blists - more mailing lists