diff options
author | Geert Uytterhoeven <geert@linux-m68k.org> | 2021-10-19 16:45:15 +0200 |
---|---|---|
committer | Miguel Ojeda <ojeda@kernel.org> | 2021-10-21 23:36:29 +0200 |
commit | b37cc2202705a791ab0e3d1ce72789ae97566484 (patch) | |
tree | 4fa90329d5ef771cf05dfe3bde9c96814f925fe0 /drivers/auxdisplay | |
parent | 85d93b165f81ffb93745325efdf3df2b2df1a0e6 (diff) | |
download | linux-b37cc2202705a791ab0e3d1ce72789ae97566484.tar.gz linux-b37cc2202705a791ab0e3d1ce72789ae97566484.tar.bz2 linux-b37cc2202705a791ab0e3d1ce72789ae97566484.zip |
auxdisplay: ht16k33: Extract ht16k33_brightness_set()
Extract brightness handling into a helper function, so it can be called
from multiple places.
Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
Reviewed-by: Robin van der Gracht <robin@protonic.nl>
Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
Diffstat (limited to 'drivers/auxdisplay')
-rw-r--r-- | drivers/auxdisplay/ht16k33.c | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/drivers/auxdisplay/ht16k33.c b/drivers/auxdisplay/ht16k33.c index b50cbf7e57ba..60e616c0e932 100644 --- a/drivers/auxdisplay/ht16k33.c +++ b/drivers/auxdisplay/ht16k33.c @@ -113,6 +113,22 @@ static int ht16k33_display_off(struct ht16k33_priv *priv) return i2c_smbus_write_byte(priv->client, REG_DISPLAY_SETUP); } +static int ht16k33_brightness_set(struct ht16k33_priv *priv, + unsigned int brightness) +{ + int err; + + if (brightness == 0) + return ht16k33_display_off(priv); + + err = ht16k33_display_on(priv); + if (err) + return err; + + return i2c_smbus_write_byte(priv->client, + REG_BRIGHTNESS | (brightness - 1)); +} + static void ht16k33_fb_queue(struct ht16k33_priv *priv) { struct ht16k33_fbdev *fbdev = &priv->fbdev; @@ -197,13 +213,10 @@ static int ht16k33_bl_update_status(struct backlight_device *bl) if (bl->props.power != FB_BLANK_UNBLANK || bl->props.fb_blank != FB_BLANK_UNBLANK || - bl->props.state & BL_CORE_FBBLANK || brightness == 0) { - return ht16k33_display_off(priv); - } + bl->props.state & BL_CORE_FBBLANK) + brightness = 0; - ht16k33_display_on(priv); - return i2c_smbus_write_byte(priv->client, - REG_BRIGHTNESS | (brightness - 1)); + return ht16k33_brightness_set(priv, brightness); } static int ht16k33_bl_check_fb(struct backlight_device *bl, struct fb_info *fi) |