The driver's backlight code requires the framebuffer to be
registered. Therefore reorder the init and cleanup calls for
both data structures.

Signed-off-by: Thomas Zimmermann <tzimmerm...@suse.de>
---
 drivers/video/fbdev/aty/atyfb_base.c | 16 +++++++++-------
 1 file changed, 9 insertions(+), 7 deletions(-)

diff --git a/drivers/video/fbdev/aty/atyfb_base.c 
b/drivers/video/fbdev/aty/atyfb_base.c
index cba2b113b28b..51504fe39054 100644
--- a/drivers/video/fbdev/aty/atyfb_base.c
+++ b/drivers/video/fbdev/aty/atyfb_base.c
@@ -2654,11 +2654,6 @@ static int aty_init(struct fb_info *info)
                           USE_F32KHZ | TRISTATE_MEM_EN, par);
        } else
 #endif
-       if (M64_HAS(MOBIL_BUS) && backlight) {
-#ifdef CONFIG_FB_ATY_BACKLIGHT
-               aty_bl_init(par);
-#endif
-       }
 
        memset(&var, 0, sizeof(var));
 #ifdef CONFIG_PPC
@@ -2751,6 +2746,12 @@ static int aty_init(struct fb_info *info)
                goto aty_init_exit;
        }
 
+       if (M64_HAS(MOBIL_BUS) && backlight) {
+#ifdef CONFIG_FB_ATY_BACKLIGHT
+               aty_bl_init(par);
+#endif
+       }
+
        fb_list = info;
 
        PRINTKI("fb%d: %s frame buffer device on %s\n",
@@ -3716,12 +3717,13 @@ static void atyfb_remove(struct fb_info *info)
        aty_set_crtc(par, &par->saved_crtc);
        par->pll_ops->set_pll(info, &par->saved_pll);
 
-       unregister_framebuffer(info);
-
 #ifdef CONFIG_FB_ATY_BACKLIGHT
        if (M64_HAS(MOBIL_BUS))
                aty_bl_exit(info->bl_dev);
 #endif
+
+       unregister_framebuffer(info);
+
        arch_phys_wc_del(par->wc_cookie);
 
 #ifndef __sparc__
-- 
2.40.1

Reply via email to