auxdisplay: ht16k33: Extract ht16k33_brightness_set()
authorGeert Uytterhoeven <geert@linux-m68k.org>
Tue, 19 Oct 2021 14:45:15 +0000 (16:45 +0200)
committerMiguel Ojeda <ojeda@kernel.org>
Thu, 21 Oct 2021 21:36:29 +0000 (23:36 +0200)
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>
drivers/auxdisplay/ht16k33.c

index b50cbf7..60e616c 100644 (file)
@@ -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)