Merge branches 'ib-backlight-auxdisplay-staging-omap-6.9', 'ib-backlight-auxdisplay...
[linux-2.6-block.git] / drivers / hid / hid-picolcd_core.c
index bbda231a7ce3030055082806996667fb4864c3e8..5ddebe25eb91f31597a9bc713819964d94765a2c 100644 (file)
@@ -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);