For drivers that support backlight, LCD and fbdev devices, fbdev has
to be initialized last. See documentation for struct fbinfo.bl_dev.

Signed-off-by: Thomas Zimmermann <tzimmerm...@suse.de>
Cc: "Bruno Prémont" <bonb...@linux-vserver.org>
Reviewed-by: Javier Martinez Canillas <javi...@redhat.com>
---
 drivers/hid/hid-picolcd_core.c | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/drivers/hid/hid-picolcd_core.c b/drivers/hid/hid-picolcd_core.c
index bbda231a7ce30..5ddebe25eb91f 100644
--- a/drivers/hid/hid-picolcd_core.c
+++ b/drivers/hid/hid-picolcd_core.c
@@ -474,11 +474,6 @@ static int picolcd_probe_lcd(struct hid_device *hdev, 
struct picolcd_data *data)
        if (error)
                goto err;
 
-       /* Set up the framebuffer device */
-       error = picolcd_init_framebuffer(data);
-       if (error)
-               goto err;
-
        /* Setup lcd class device */
        error = picolcd_init_lcd(data, picolcd_out_report(REPORT_CONTRAST, 
hdev));
        if (error)
@@ -489,6 +484,11 @@ static int picolcd_probe_lcd(struct hid_device *hdev, 
struct picolcd_data *data)
        if (error)
                goto err;
 
+       /* Set up the framebuffer device */
+       error = picolcd_init_framebuffer(data);
+       if (error)
+               goto err;
+
        /* Setup the LED class devices */
        error = picolcd_init_leds(data, picolcd_out_report(REPORT_LED_STATE, 
hdev));
        if (error)
@@ -502,9 +502,9 @@ static int picolcd_probe_lcd(struct hid_device *hdev, 
struct picolcd_data *data)
        return 0;
 err:
        picolcd_exit_leds(data);
+       picolcd_exit_framebuffer(data);
        picolcd_exit_backlight(data);
        picolcd_exit_lcd(data);
-       picolcd_exit_framebuffer(data);
        picolcd_exit_cir(data);
        picolcd_exit_keys(data);
        return error;
@@ -623,9 +623,9 @@ static void picolcd_remove(struct hid_device *hdev)
        /* Cleanup LED */
        picolcd_exit_leds(data);
        /* Clean up the framebuffer */
+       picolcd_exit_framebuffer(data);
        picolcd_exit_backlight(data);
        picolcd_exit_lcd(data);
-       picolcd_exit_framebuffer(data);
        /* Cleanup input */
        picolcd_exit_cir(data);
        picolcd_exit_keys(data);
-- 
2.43.0

Reply via email to