Merge tag 'fbdev-v4.13' of git://github.com/bzolnier/linux
authorLinus Torvalds <torvalds@linux-foundation.org>
Thu, 13 Jul 2017 18:52:00 +0000 (11:52 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 13 Jul 2017 18:52:00 +0000 (11:52 -0700)
Pull fbdev updates from Bartlomiej Zolnierkiewicz:
 "There is nothing really major here, just a couple of small bugfixes,
  improvements and cleanups.

   - fix get_fb_unmapped_area() helper handling (Benjamin Gaignard)

   - check return value of clk_prepare_enable() in pxafb driver (Arvind
     Yadav)

   - fix error path handling in vmlfb driver (Alexey Khoroshilov)

   - printks fixes/cleanups for uvesafb driver (Joe Perches)

   - fix unusued variable warning in atyfb driver (Arnd Bergmann)

   - constifications for sh_mobile_lcdcfb, fsl-diu-fb, omapfb (Arvind
     Yadav)

   - mdacon driver cleanups (Jiri Slaby)

   - misc cleanups (Andy Shevchenko, Karim Eshapa, Gustavo A. R. Silva,
     Dan Carpenter)"

* tag 'fbdev-v4.13' of git://github.com/bzolnier/linux:
  fbdev: make get_fb_unmapped_area depends of !MMU
  atyfb: hide unused variable
  video: fbdev: matrox: the list iterator can't be NULL
  video: fbdev: aty: remove useless variable assignments in aty_var_to_crtc()
  fbdev: omapfb: constify ctrl_caps, color_caps, panel_attr_grp and ctrl_attr_grp
  omapfb: panel-dsi-cm: constify dsicm_attr_group
  vmlfb: Fix error handling in cr_pll_init()
  video: fbdev: fsl-diu-fb: constify mfb_template and fsl_diu_match.
  uvesafb: Fix continuation printks without KERN_LEVEL to pr_cont, neatening
  video: fbdev: sh_mobile_lcdcfb: constify sh_mobile_lcdc_bl_ops.
  omapfb: Use sysfs_match_string() helper
  video: fbdev: pxafb: Handle return value of clk_prepare_enable
  video: fbdev: omap2: omapfb: displays: panel-dsi-cm: Use time comparison kernel macro.
  mdacon: replace MDA_ADDR macro by inline function
  mdacon: make mda_vram_base u16 *
  mdacon: align code in mda_detect properly

12 files changed:
drivers/video/console/mdacon.c
drivers/video/fbdev/aty/atyfb_base.c
drivers/video/fbdev/core/fbmem.c
drivers/video/fbdev/fsl-diu-fb.c
drivers/video/fbdev/matrox/matroxfb_base.c
drivers/video/fbdev/omap/omapfb_main.c
drivers/video/fbdev/omap2/omapfb/displays/panel-dsi-cm.c
drivers/video/fbdev/omap2/omapfb/dss/manager-sysfs.c
drivers/video/fbdev/pxafb.c
drivers/video/fbdev/sh_mobile_lcdcfb.c
drivers/video/fbdev/uvesafb.c
drivers/video/fbdev/vermilion/cr_pll.c

index ec192a1bf297232a183e1ae2f51f83b601649c15..d0d427a2f1a3e2dc70ca000331143c0acf65b5c6 100644 (file)
@@ -48,7 +48,7 @@ static DEFINE_SPINLOCK(mda_lock);
 
 /* description of the hardware layout */
 
-static unsigned long   mda_vram_base;          /* Base of video memory */
+static u16             *mda_vram_base;         /* Base of video memory */
 static unsigned long   mda_vram_len;           /* Size of video memory */
 static unsigned int    mda_num_columns;        /* Number of text columns */
 static unsigned int    mda_num_lines;          /* Number of text lines */
@@ -205,13 +205,20 @@ static int mda_detect(void)
 
        /* do a memory check */
 
-       p = (u16 *) mda_vram_base;
-       q = (u16 *) (mda_vram_base + 0x01000);
+       p = mda_vram_base;
+       q = mda_vram_base + 0x01000 / 2;
 
-       p_save = scr_readw(p); q_save = scr_readw(q);
+       p_save = scr_readw(p);
+       q_save = scr_readw(q);
+
+       scr_writew(0xAA55, p);
+       if (scr_readw(p) == 0xAA55)
+               count++;
+
+       scr_writew(0x55AA, p);
+       if (scr_readw(p) == 0x55AA)
+               count++;
 
-       scr_writew(0xAA55, p); if (scr_readw(p) == 0xAA55) count++;
-       scr_writew(0x55AA, p); if (scr_readw(p) == 0x55AA) count++;
        scr_writew(p_save, p);
 
        if (count != 2) {
@@ -220,13 +227,18 @@ static int mda_detect(void)
 
        /* check if we have 4K or 8K */
 
-       scr_writew(0xA55A, q); scr_writew(0x0000, p);
-       if (scr_readw(q) == 0xA55A) count++;
+       scr_writew(0xA55A, q);
+       scr_writew(0x0000, p);
+       if (scr_readw(q) == 0xA55A)
+               count++;
        
-       scr_writew(0x5AA5, q); scr_writew(0x0000, p);
-       if (scr_readw(q) == 0x5AA5) count++;
+       scr_writew(0x5AA5, q);
+       scr_writew(0x0000, p);
+       if (scr_readw(q) == 0x5AA5)
+               count++;
 
-       scr_writew(p_save, p); scr_writew(q_save, q);
+       scr_writew(p_save, p);
+       scr_writew(q_save, q);
        
        if (count == 4) {
                mda_vram_len = 0x02000;
@@ -240,14 +252,12 @@ static int mda_detect(void)
        /* Edward: These two mess `tests' mess up my cursor on bootup */
 
        /* cursor low register */
-       if (! test_mda_b(0x66, 0x0f)) {
+       if (!test_mda_b(0x66, 0x0f))
                return 0;
-       }
 
        /* cursor low register */
-       if (! test_mda_b(0x99, 0x0f)) {
+       if (!test_mda_b(0x99, 0x0f))
                return 0;
-       }
 #endif
 
        /* See if the card is a Hercules, by checking whether the vsync
@@ -257,25 +267,25 @@ static int mda_detect(void)
        
        p_save = q_save = inb_p(mda_status_port) & MDA_STATUS_VSYNC;
 
-       for (count=0; count < 50000 && p_save == q_save; count++) {
+       for (count = 0; count < 50000 && p_save == q_save; count++) {
                q_save = inb(mda_status_port) & MDA_STATUS_VSYNC;
                udelay(2);
        }
 
        if (p_save != q_save) {
                switch (inb_p(mda_status_port) & 0x70) {
-                       case 0x10:
-                               mda_type = TYPE_HERCPLUS;
-                               mda_type_name = "HerculesPlus";
-                               break;
-                       case 0x50:
-                               mda_type = TYPE_HERCCOLOR;
-                               mda_type_name = "HerculesColor";
-                               break;
-                       default:
-                               mda_type = TYPE_HERC;
-                               mda_type_name = "Hercules";
-                               break;
+               case 0x10:
+                       mda_type = TYPE_HERCPLUS;
+                       mda_type_name = "HerculesPlus";
+                       break;
+               case 0x50:
+                       mda_type = TYPE_HERCCOLOR;
+                       mda_type_name = "HerculesColor";
+                       break;
+               default:
+                       mda_type = TYPE_HERC;
+                       mda_type_name = "Hercules";
+                       break;
                }
        }
 
@@ -313,7 +323,7 @@ static const char *mdacon_startup(void)
        mda_num_lines   = 25;
 
        mda_vram_len  = 0x01000;
-       mda_vram_base = VGA_MAP_MEM(0xb0000, mda_vram_len);
+       mda_vram_base = (u16 *)VGA_MAP_MEM(0xb0000, mda_vram_len);
 
        mda_index_port  = 0x3b4;
        mda_value_port  = 0x3b5;
@@ -410,17 +420,20 @@ static void mdacon_invert_region(struct vc_data *c, u16 *p, int count)
        }
 }
 
-#define MDA_ADDR(x,y)  ((u16 *) mda_vram_base + (y)*mda_num_columns + (x))
+static inline u16 *mda_addr(unsigned int x, unsigned int y)
+{
+       return mda_vram_base + y * mda_num_columns + x;
+}
 
 static void mdacon_putc(struct vc_data *c, int ch, int y, int x)
 {
-       scr_writew(mda_convert_attr(ch), MDA_ADDR(x, y));
+       scr_writew(mda_convert_attr(ch), mda_addr(x, y));
 }
 
 static void mdacon_putcs(struct vc_data *c, const unsigned short *s,
                         int count, int y, int x)
 {
-       u16 *dest = MDA_ADDR(x, y);
+       u16 *dest = mda_addr(x, y);
 
        for (; count > 0; count--) {
                scr_writew(mda_convert_attr(scr_readw(s++)), dest++);
@@ -430,7 +443,7 @@ static void mdacon_putcs(struct vc_data *c, const unsigned short *s,
 static void mdacon_clear(struct vc_data *c, int y, int x, 
                          int height, int width)
 {
-       u16 *dest = MDA_ADDR(x, y);
+       u16 *dest = mda_addr(x, y);
        u16 eattr = mda_convert_attr(c->vc_video_erase_char);
 
        if (width <= 0 || height <= 0)
@@ -453,7 +466,7 @@ static int mdacon_blank(struct vc_data *c, int blank, int mode_switch)
 {
        if (mda_type == TYPE_MDA) {
                if (blank) 
-                       scr_memsetw((void *)mda_vram_base, 
+                       scr_memsetw(mda_vram_base,
                                mda_convert_attr(c->vc_video_erase_char),
                                c->vc_screenbuf_size);
                /* Tell console.c that it has to restore the screen itself */
@@ -502,16 +515,16 @@ static bool mdacon_scroll(struct vc_data *c, unsigned int t, unsigned int b,
        switch (dir) {
 
        case SM_UP:
-               scr_memmovew(MDA_ADDR(0,t), MDA_ADDR(0,t+lines),
+               scr_memmovew(mda_addr(0, t), mda_addr(0, t + lines),
                                (b-t-lines)*mda_num_columns*2);
-               scr_memsetw(MDA_ADDR(0,b-lines), eattr,
+               scr_memsetw(mda_addr(0, b - lines), eattr,
                                lines*mda_num_columns*2);
                break;
 
        case SM_DOWN:
-               scr_memmovew(MDA_ADDR(0,t+lines), MDA_ADDR(0,t),
+               scr_memmovew(mda_addr(0, t + lines), mda_addr(0, t),
                                (b-t-lines)*mda_num_columns*2);
-               scr_memsetw(MDA_ADDR(0,t), eattr, lines*mda_num_columns*2);
+               scr_memsetw(mda_addr(0, t), eattr, lines*mda_num_columns*2);
                break;
        }
 
index 11026e726b68468d2e8de7e159ad5003001b5610..b55fdac9c9f51a7b0b6d9fe5d2c804b3046f2f05 100644 (file)
@@ -802,7 +802,7 @@ static int aty_var_to_crtc(const struct fb_info *info,
 {
        struct atyfb_par *par = (struct atyfb_par *) info->par;
        u32 xres, yres, vxres, vyres, xoffset, yoffset, bpp;
-       u32 sync, vmode, vdisplay;
+       u32 sync, vmode;
        u32 h_total, h_disp, h_sync_strt, h_sync_end, h_sync_dly, h_sync_wid, h_sync_pol;
        u32 v_total, v_disp, v_sync_strt, v_sync_end, v_sync_wid, v_sync_pol, c_sync;
        u32 pix_width, dp_pix_width, dp_chain_mask;
@@ -984,12 +984,6 @@ static int aty_var_to_crtc(const struct fb_info *info,
                v_total <<= 1;
        }
 
-       vdisplay = yres;
-#ifdef CONFIG_FB_ATY_GENERIC_LCD
-       if ((par->lcd_table != 0) && (crtc->lcd_gen_cntl & LCD_ON))
-               vdisplay  = par->lcd_height;
-#endif
-
        v_disp--;
        v_sync_strt--;
        v_sync_end--;
@@ -1036,7 +1030,7 @@ static int aty_var_to_crtc(const struct fb_info *info,
                crtc->gen_cntl |= CRTC_INTERLACE_EN;
 #ifdef CONFIG_FB_ATY_GENERIC_LCD
        if (par->lcd_table != 0) {
-               vdisplay = yres;
+               u32 vdisplay = yres;
                if (vmode & FB_VMODE_DOUBLE)
                        vdisplay <<= 1;
                crtc->gen_cntl &= ~(CRTC2_EN | CRTC2_PIX_WIDTH);
index 5324358f110fa6e52e5c004a1bf59125b3b36753..7a42238db446b0093323505b710963ac94a53e15 100644 (file)
@@ -1483,7 +1483,7 @@ __releases(&info->lock)
        return 0;
 }
 
-#ifdef CONFIG_FB_PROVIDE_GET_FB_UNMAPPED_AREA
+#if defined(CONFIG_FB_PROVIDE_GET_FB_UNMAPPED_AREA) && !defined(CONFIG_MMU)
 unsigned long get_fb_unmapped_area(struct file *filp,
                                   unsigned long addr, unsigned long len,
                                   unsigned long pgoff, unsigned long flags)
@@ -1510,7 +1510,8 @@ static const struct file_operations fb_fops = {
        .open =         fb_open,
        .release =      fb_release,
 #if defined(HAVE_ARCH_FB_UNMAPPED_AREA) || \
-    defined(CONFIG_FB_PROVIDE_GET_FB_UNMAPPED_AREA)
+       (defined(CONFIG_FB_PROVIDE_GET_FB_UNMAPPED_AREA) && \
+        !defined(CONFIG_MMU))
        .get_unmapped_area = get_fb_unmapped_area,
 #endif
 #ifdef CONFIG_FB_DEFERRED_IO
index ca3d6b36647155abfe2c587df6f8b8155f649edf..25abbcf389134201c47e2a729523d97dc344df9b 100644 (file)
@@ -388,7 +388,7 @@ struct fsl_diu_data {
 /* Determine the DMA address of a member of the fsl_diu_data structure */
 #define DMA_ADDR(p, f) ((p)->dma_addr + offsetof(struct fsl_diu_data, f))
 
-static struct mfb_info mfb_template[] = {
+static const struct mfb_info mfb_template[] = {
        {
                .index = PLANE0,
                .id = "Panel0",
@@ -1868,7 +1868,7 @@ static int __init fsl_diu_setup(char *options)
 }
 #endif
 
-static struct of_device_id fsl_diu_match[] = {
+static const struct of_device_id fsl_diu_match[] = {
 #ifdef CONFIG_PPC_MPC512x
        {
                .compatible = "fsl,mpc5121-diu",
index 11eb094396aea32f206b60ab2b99df90c3c8d2c4..f6a0b9af97a90b3fa3989c480b3934d9bec0ed9b 100644 (file)
@@ -2001,7 +2001,7 @@ static void matroxfb_register_device(struct matrox_fb_info* minfo) {
        for (drv = matroxfb_driver_l(matroxfb_driver_list.next);
             drv != matroxfb_driver_l(&matroxfb_driver_list);
             drv = matroxfb_driver_l(drv->node.next)) {
-               if (drv && drv->probe) {
+               if (drv->probe) {
                        void *p = drv->probe(minfo);
                        if (p) {
                                minfo->drivers_data[i] = p;
index f4cbfb3b8a0980030e2a0c2bbd78348968d6b8a1..3479a47a308208f3c414efde067f9cf8cfecd17c 100644 (file)
@@ -62,7 +62,7 @@ struct caps_table_struct {
        const char *name;
 };
 
-static struct caps_table_struct ctrl_caps[] = {
+static const struct caps_table_struct ctrl_caps[] = {
        { OMAPFB_CAPS_MANUAL_UPDATE,  "manual update" },
        { OMAPFB_CAPS_TEARSYNC,       "tearing synchronization" },
        { OMAPFB_CAPS_PLANE_RELOCATE_MEM, "relocate plane memory" },
@@ -74,7 +74,7 @@ static struct caps_table_struct ctrl_caps[] = {
        { OMAPFB_CAPS_SET_BACKLIGHT,  "backlight setting" },
 };
 
-static struct caps_table_struct color_caps[] = {
+static const struct caps_table_struct color_caps[] = {
        { 1 << OMAPFB_COLOR_RGB565,     "RGB565", },
        { 1 << OMAPFB_COLOR_YUV422,     "YUV422", },
        { 1 << OMAPFB_COLOR_YUV420,     "YUV420", },
@@ -1384,7 +1384,7 @@ static struct attribute *panel_attrs[] = {
        NULL,
 };
 
-static struct attribute_group panel_attr_grp = {
+static const struct attribute_group panel_attr_grp = {
        .name  = "panel",
        .attrs = panel_attrs,
 };
@@ -1406,7 +1406,7 @@ static struct attribute *ctrl_attrs[] = {
        NULL,
 };
 
-static struct attribute_group ctrl_attr_grp = {
+static const struct attribute_group ctrl_attr_grp = {
        .name  = "ctrl",
        .attrs = ctrl_attrs,
 };
index fd2b372d0264de94aea6f3789738d1809c19c8a7..bef4315300905a691c32373feb29e70ab1ff421e 100644 (file)
@@ -100,7 +100,7 @@ static void hw_guard_wait(struct panel_drv_data *ddata)
 {
        unsigned long wait = ddata->hw_guard_end - jiffies;
 
-       if ((long)wait > 0 && wait <= ddata->hw_guard_wait) {
+       if ((long)wait > 0 && time_before_eq(wait, ddata->hw_guard_wait)) {
                set_current_state(TASK_UNINTERRUPTIBLE);
                schedule_timeout(wait);
        }
@@ -559,7 +559,7 @@ static struct attribute *dsicm_attrs[] = {
        NULL,
 };
 
-static struct attribute_group dsicm_attr_group = {
+static const struct attribute_group dsicm_attr_group = {
        .attrs = dsicm_attrs,
 };
 
index 9e2a67fdf4d20129a581b40da118a72628d30372..44b96af4ef4ef7927130dd73c6871330d781ebbf 100644 (file)
@@ -182,22 +182,16 @@ static ssize_t manager_trans_key_type_show(struct omap_overlay_manager *mgr,
 static ssize_t manager_trans_key_type_store(struct omap_overlay_manager *mgr,
                                            const char *buf, size_t size)
 {
-       enum omap_dss_trans_key_type key_type;
        struct omap_overlay_manager_info info;
        int r;
 
-       for (key_type = OMAP_DSS_COLOR_KEY_GFX_DST;
-                       key_type < ARRAY_SIZE(trans_key_type_str); key_type++) {
-               if (sysfs_streq(buf, trans_key_type_str[key_type]))
-                       break;
-       }
-
-       if (key_type == ARRAY_SIZE(trans_key_type_str))
-               return -EINVAL;
+       r = sysfs_match_string(trans_key_type_str, buf);
+       if (r < 0)
+               return r;
 
        mgr->get_manager_info(mgr, &info);
 
-       info.trans_key_type = key_type;
+       info.trans_key_type = r;
 
        r = mgr->set_manager_info(mgr, &info);
        if (r)
index b21a89b03fb474a4a1c5b8821ad8861cd55b7e35..c3d49e13643cd21504d7ffa62f1231d6a9a8ef38 100644 (file)
@@ -1436,7 +1436,10 @@ static void pxafb_enable_controller(struct pxafb_info *fbi)
        pr_debug("reg_lccr3 0x%08x\n", (unsigned int) fbi->reg_lccr3);
 
        /* enable LCD controller clock */
-       clk_prepare_enable(fbi->clk);
+       if (clk_prepare_enable(fbi->clk)) {
+               pr_err("%s: Failed to prepare clock\n", __func__);
+               return;
+       }
 
        if (fbi->lccr0 & LCCR0_LCDT)
                return;
index 885ee3a563aa3cb06da934c822232369a05fb9f9..c3a46506e47e2997122e54c36510f8aca8c2f066 100644 (file)
@@ -2301,7 +2301,7 @@ static int sh_mobile_lcdc_check_fb(struct backlight_device *bdev,
        return (info->bl_dev == bdev);
 }
 
-static struct backlight_ops sh_mobile_lcdc_bl_ops = {
+static const struct backlight_ops sh_mobile_lcdc_bl_ops = {
        .options        = BL_CORE_SUSPENDRESUME,
        .update_status  = sh_mobile_lcdc_update_bl,
        .get_brightness = sh_mobile_lcdc_get_brightness,
index 98af9e02959b43d87758903dfd72a81641261785..dc0e8d90d9cc35616c27419a0530e2cebc871a3d 100644 (file)
@@ -5,6 +5,9 @@
  *     Loosely based upon the vesafb driver.
  *
  */
+
+#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+
 #include <linux/init.h>
 #include <linux/module.h>
 #include <linux/moduleparam.h>
@@ -149,8 +152,8 @@ static int uvesafb_exec(struct uvesafb_ktask *task)
         * allowed by connector.
         */
        if (sizeof(*m) + len > CONNECTOR_MAX_MSG_SIZE) {
-               printk(KERN_WARNING "uvesafb: message too long (%d), "
-                       "can't execute task\n", (int)(sizeof(*m) + len));
+               pr_warn("message too long (%d), can't execute task\n",
+                       (int)(sizeof(*m) + len));
                return -E2BIG;
        }
 
@@ -198,10 +201,8 @@ static int uvesafb_exec(struct uvesafb_ktask *task)
                 */
                err = uvesafb_helper_start();
                if (err) {
-                       printk(KERN_ERR "uvesafb: failed to execute %s\n",
-                                       v86d_path);
-                       printk(KERN_ERR "uvesafb: make sure that the v86d "
-                                       "helper is installed and executable\n");
+                       pr_err("failed to execute %s\n", v86d_path);
+                       pr_err("make sure that the v86d helper is installed and executable\n");
                } else {
                        v86d_started = 1;
                        err = cn_netlink_send(m, 0, 0, gfp_any());
@@ -375,9 +376,8 @@ static u8 *uvesafb_vbe_state_save(struct uvesafb_par *par)
        err = uvesafb_exec(task);
 
        if (err || (task->t.regs.eax & 0xffff) != 0x004f) {
-               printk(KERN_WARNING "uvesafb: VBE get state call "
-                               "failed (eax=0x%x, err=%d)\n",
-                               task->t.regs.eax, err);
+               pr_warn("VBE get state call failed (eax=0x%x, err=%d)\n",
+                       task->t.regs.eax, err);
                kfree(state);
                state = NULL;
        }
@@ -407,9 +407,8 @@ static void uvesafb_vbe_state_restore(struct uvesafb_par *par, u8 *state_buf)
 
        err = uvesafb_exec(task);
        if (err || (task->t.regs.eax & 0xffff) != 0x004f)
-               printk(KERN_WARNING "uvesafb: VBE state restore call "
-                               "failed (eax=0x%x, err=%d)\n",
-                               task->t.regs.eax, err);
+               pr_warn("VBE state restore call failed (eax=0x%x, err=%d)\n",
+                       task->t.regs.eax, err);
 
        uvesafb_free(task);
 }
@@ -427,24 +426,22 @@ static int uvesafb_vbe_getinfo(struct uvesafb_ktask *task,
 
        err = uvesafb_exec(task);
        if (err || (task->t.regs.eax & 0xffff) != 0x004f) {
-               printk(KERN_ERR "uvesafb: Getting VBE info block failed "
-                               "(eax=0x%x, err=%d)\n", (u32)task->t.regs.eax,
-                               err);
+               pr_err("Getting VBE info block failed (eax=0x%x, err=%d)\n",
+                      (u32)task->t.regs.eax, err);
                return -EINVAL;
        }
 
        if (par->vbe_ib.vbe_version < 0x0200) {
-               printk(KERN_ERR "uvesafb: Sorry, pre-VBE 2.0 cards are "
-                               "not supported.\n");
+               pr_err("Sorry, pre-VBE 2.0 cards are not supported\n");
                return -EINVAL;
        }
 
        if (!par->vbe_ib.mode_list_ptr) {
-               printk(KERN_ERR "uvesafb: Missing mode list!\n");
+               pr_err("Missing mode list!\n");
                return -EINVAL;
        }
 
-       printk(KERN_INFO "uvesafb: ");
+       pr_info("");
 
        /*
         * Convert string pointers and the mode list pointer into
@@ -452,23 +449,24 @@ static int uvesafb_vbe_getinfo(struct uvesafb_ktask *task,
         * video adapter and its vendor.
         */
        if (par->vbe_ib.oem_vendor_name_ptr)
-               printk("%s, ",
+               pr_cont("%s, ",
                        ((char *)task->buf) + par->vbe_ib.oem_vendor_name_ptr);
 
        if (par->vbe_ib.oem_product_name_ptr)
-               printk("%s, ",
+               pr_cont("%s, ",
                        ((char *)task->buf) + par->vbe_ib.oem_product_name_ptr);
 
        if (par->vbe_ib.oem_product_rev_ptr)
-               printk("%s, ",
+               pr_cont("%s, ",
                        ((char *)task->buf) + par->vbe_ib.oem_product_rev_ptr);
 
        if (par->vbe_ib.oem_string_ptr)
-               printk("OEM: %s, ",
+               pr_cont("OEM: %s, ",
                        ((char *)task->buf) + par->vbe_ib.oem_string_ptr);
 
-       printk("VBE v%d.%d\n", ((par->vbe_ib.vbe_version & 0xff00) >> 8),
-                       par->vbe_ib.vbe_version & 0xff);
+       pr_cont("VBE v%d.%d\n",
+               (par->vbe_ib.vbe_version & 0xff00) >> 8,
+               par->vbe_ib.vbe_version & 0xff);
 
        return 0;
 }
@@ -507,8 +505,7 @@ static int uvesafb_vbe_getmodes(struct uvesafb_ktask *task,
 
                err = uvesafb_exec(task);
                if (err || (task->t.regs.eax & 0xffff) != 0x004f) {
-                       printk(KERN_WARNING "uvesafb: Getting mode info block "
-                               "for mode 0x%x failed (eax=0x%x, err=%d)\n",
+                       pr_warn("Getting mode info block for mode 0x%x failed (eax=0x%x, err=%d)\n",
                                *mode, (u32)task->t.regs.eax, err);
                        mode++;
                        par->vbe_modes_cnt--;
@@ -569,23 +566,20 @@ static int uvesafb_vbe_getpmi(struct uvesafb_ktask *task,
                                                + task->t.regs.edi);
                par->pmi_start = (u8 *)par->pmi_base + par->pmi_base[1];
                par->pmi_pal = (u8 *)par->pmi_base + par->pmi_base[2];
-               printk(KERN_INFO "uvesafb: protected mode interface info at "
-                                "%04x:%04x\n",
-                                (u16)task->t.regs.es, (u16)task->t.regs.edi);
-               printk(KERN_INFO "uvesafb: pmi: set display start = %p, "
-                                "set palette = %p\n", par->pmi_start,
-                                par->pmi_pal);
+               pr_info("protected mode interface info at %04x:%04x\n",
+                       (u16)task->t.regs.es, (u16)task->t.regs.edi);
+               pr_info("pmi: set display start = %p, set palette = %p\n",
+                       par->pmi_start, par->pmi_pal);
 
                if (par->pmi_base[3]) {
-                       printk(KERN_INFO "uvesafb: pmi: ports = ");
+                       pr_info("pmi: ports =");
                        for (i = par->pmi_base[3]/2;
                                        par->pmi_base[i] != 0xffff; i++)
-                               printk("%x ", par->pmi_base[i]);
-                       printk("\n");
+                               pr_cont(" %x", par->pmi_base[i]);
+                       pr_cont("\n");
 
                        if (par->pmi_base[i] != 0xffff) {
-                               printk(KERN_INFO "uvesafb: can't handle memory"
-                                                " requests, pmi disabled\n");
+                               pr_info("can't handle memory requests, pmi disabled\n");
                                par->ypan = par->pmi_setpal = 0;
                        }
                }
@@ -634,17 +628,13 @@ static int uvesafb_vbe_getedid(struct uvesafb_ktask *task, struct fb_info *info)
                return -EINVAL;
 
        if ((task->t.regs.ebx & 0x3) == 3) {
-               printk(KERN_INFO "uvesafb: VBIOS/hardware supports both "
-                                "DDC1 and DDC2 transfers\n");
+               pr_info("VBIOS/hardware supports both DDC1 and DDC2 transfers\n");
        } else if ((task->t.regs.ebx & 0x3) == 2) {
-               printk(KERN_INFO "uvesafb: VBIOS/hardware supports DDC2 "
-                                "transfers\n");
+               pr_info("VBIOS/hardware supports DDC2 transfers\n");
        } else if ((task->t.regs.ebx & 0x3) == 1) {
-               printk(KERN_INFO "uvesafb: VBIOS/hardware supports DDC1 "
-                                "transfers\n");
+               pr_info("VBIOS/hardware supports DDC1 transfers\n");
        } else {
-               printk(KERN_INFO "uvesafb: VBIOS/hardware doesn't support "
-                                "DDC transfers\n");
+               pr_info("VBIOS/hardware doesn't support DDC transfers\n");
                return -EINVAL;
        }
 
@@ -718,14 +708,12 @@ static void uvesafb_vbe_getmonspecs(struct uvesafb_ktask *task,
        }
 
        if (info->monspecs.gtf)
-               printk(KERN_INFO
-                       "uvesafb: monitor limits: vf = %d Hz, hf = %d kHz, "
-                       "clk = %d MHz\n", info->monspecs.vfmax,
+               pr_info("monitor limits: vf = %d Hz, hf = %d kHz, clk = %d MHz\n",
+                       info->monspecs.vfmax,
                        (int)(info->monspecs.hfmax / 1000),
                        (int)(info->monspecs.dclkmax / 1000000));
        else
-               printk(KERN_INFO "uvesafb: no monitor limits have been set, "
-                                "default refresh rate will be used\n");
+               pr_info("no monitor limits have been set, default refresh rate will be used\n");
 
        /* Add VBE modes to the modelist. */
        for (i = 0; i < par->vbe_modes_cnt; i++) {
@@ -779,8 +767,7 @@ static void uvesafb_vbe_getstatesize(struct uvesafb_ktask *task,
        err = uvesafb_exec(task);
 
        if (err || (task->t.regs.eax & 0xffff) != 0x004f) {
-               printk(KERN_WARNING "uvesafb: VBE state buffer size "
-                       "cannot be determined (eax=0x%x, err=%d)\n",
+               pr_warn("VBE state buffer size cannot be determined (eax=0x%x, err=%d)\n",
                        task->t.regs.eax, err);
                par->vbe_state_size = 0;
                return;
@@ -815,8 +802,7 @@ static int uvesafb_vbe_init(struct fb_info *info)
        if (par->pmi_setpal || par->ypan) {
                if (__supported_pte_mask & _PAGE_NX) {
                        par->pmi_setpal = par->ypan = 0;
-                       printk(KERN_WARNING "uvesafb: NX protection is active, "
-                                           "better not use the PMI.\n");
+                       pr_warn("NX protection is active, better not use the PMI\n");
                } else {
                        uvesafb_vbe_getpmi(task, par);
                }
@@ -859,8 +845,7 @@ static int uvesafb_vbe_init_mode(struct fb_info *info)
                                goto gotmode;
                        }
                }
-               printk(KERN_INFO "uvesafb: requested VBE mode 0x%x is "
-                                "unavailable\n", vbemode);
+               pr_info("requested VBE mode 0x%x is unavailable\n", vbemode);
                vbemode = 0;
        }
 
@@ -1181,8 +1166,8 @@ static int uvesafb_open(struct fb_info *info, int user)
        if (!cnt && par->vbe_state_size) {
                buf =  uvesafb_vbe_state_save(par);
                if (IS_ERR(buf)) {
-                       printk(KERN_WARNING "uvesafb: save hardware state"
-                               "failed, error code is %ld!\n", PTR_ERR(buf));
+                       pr_warn("save hardware state failed, error code is %ld!\n",
+                               PTR_ERR(buf));
                } else {
                        par->vbe_state_orig = buf;
                }
@@ -1293,17 +1278,16 @@ setmode:
                 * use our own timings.  Try again with the default timings.
                 */
                if (crtc != NULL) {
-                       printk(KERN_WARNING "uvesafb: mode switch failed "
-                               "(eax=0x%x, err=%d). Trying again with "
-                               "default timings.\n", task->t.regs.eax, err);
+                       pr_warn("mode switch failed (eax=0x%x, err=%d) - trying again with default timings\n",
+                               task->t.regs.eax, err);
                        uvesafb_reset(task);
                        kfree(crtc);
                        crtc = NULL;
                        info->var.pixclock = 0;
                        goto setmode;
                } else {
-                       printk(KERN_ERR "uvesafb: mode switch failed (eax="
-                               "0x%x, err=%d)\n", task->t.regs.eax, err);
+                       pr_err("mode switch failed (eax=0x%x, err=%d)\n",
+                              task->t.regs.eax, err);
                        err = -EINVAL;
                        goto out;
                }
@@ -1510,13 +1494,11 @@ static void uvesafb_init_info(struct fb_info *info, struct vbe_mode_ib *mode)
                                 mode->bytes_per_scan_line;
 
        if (par->ypan && info->var.yres_virtual > info->var.yres) {
-               printk(KERN_INFO "uvesafb: scrolling: %s "
-                       "using protected mode interface, "
-                       "yres_virtual=%d\n",
+               pr_info("scrolling: %s using protected mode interface, yres_virtual=%d\n",
                        (par->ypan > 1) ? "ywrap" : "ypan",
                        info->var.yres_virtual);
        } else {
-               printk(KERN_INFO "uvesafb: scrolling: redraw\n");
+               pr_info("scrolling: redraw\n");
                info->var.yres_virtual = info->var.yres;
                par->ypan = 0;
        }
@@ -1704,7 +1686,7 @@ static int uvesafb_probe(struct platform_device *dev)
 
        err = uvesafb_vbe_init(info);
        if (err) {
-               printk(KERN_ERR "uvesafb: vbe_init() failed with %d\n", err);
+               pr_err("vbe_init() failed with %d\n", err);
                goto out;
        }
 
@@ -1726,15 +1708,15 @@ static int uvesafb_probe(struct platform_device *dev)
        uvesafb_init_info(info, mode);
 
        if (!request_region(0x3c0, 32, "uvesafb")) {
-               printk(KERN_ERR "uvesafb: request region 0x3c0-0x3e0 failed\n");
+               pr_err("request region 0x3c0-0x3e0 failed\n");
                err = -EIO;
                goto out_mode;
        }
 
        if (!request_mem_region(info->fix.smem_start, info->fix.smem_len,
                                "uvesafb")) {
-               printk(KERN_ERR "uvesafb: cannot reserve video memory at "
-                               "0x%lx\n", info->fix.smem_start);
+               pr_err("cannot reserve video memory at 0x%lx\n",
+                      info->fix.smem_start);
                err = -EIO;
                goto out_reg;
        }
@@ -1743,10 +1725,8 @@ static int uvesafb_probe(struct platform_device *dev)
        uvesafb_ioremap(info);
 
        if (!info->screen_base) {
-               printk(KERN_ERR
-                       "uvesafb: abort, cannot ioremap 0x%x bytes of video "
-                       "memory at 0x%lx\n",
-                       info->fix.smem_len, info->fix.smem_start);
+               pr_err("abort, cannot ioremap 0x%x bytes of video memory at 0x%lx\n",
+                      info->fix.smem_len, info->fix.smem_start);
                err = -EIO;
                goto out_mem;
        }
@@ -1754,16 +1734,14 @@ static int uvesafb_probe(struct platform_device *dev)
        platform_set_drvdata(dev, info);
 
        if (register_framebuffer(info) < 0) {
-               printk(KERN_ERR
-                       "uvesafb: failed to register framebuffer device\n");
+               pr_err("failed to register framebuffer device\n");
                err = -EINVAL;
                goto out_unmap;
        }
 
-       printk(KERN_INFO "uvesafb: framebuffer at 0x%lx, mapped to 0x%p, "
-                       "using %dk, total %dk\n", info->fix.smem_start,
-                       info->screen_base, info->fix.smem_len/1024,
-                       par->vbe_ib.total_memory * 64);
+       pr_info("framebuffer at 0x%lx, mapped to 0x%p, using %dk, total %dk\n",
+               info->fix.smem_start, info->screen_base,
+               info->fix.smem_len / 1024, par->vbe_ib.total_memory * 64);
        fb_info(info, "%s frame buffer device\n", info->fix.id);
 
        err = sysfs_create_group(&dev->dev.kobj, &uvesafb_dev_attgrp);
@@ -1871,8 +1849,7 @@ static int uvesafb_setup(char *options)
                else if (this_opt[0] >= '0' && this_opt[0] <= '9') {
                        mode_option = this_opt;
                } else {
-                       printk(KERN_WARNING
-                               "uvesafb: unrecognized option %s\n", this_opt);
+                       pr_warn("unrecognized option %s\n", this_opt);
                }
        }
 
@@ -1931,8 +1908,7 @@ static int uvesafb_init(void)
                err = driver_create_file(&uvesafb_driver.driver,
                                &driver_attr_v86d);
                if (err) {
-                       printk(KERN_WARNING "uvesafb: failed to register "
-                                       "attributes\n");
+                       pr_warn("failed to register attributes\n");
                        err = 0;
                }
        }
index ebc6e6e0dd0f4241f8c0bdba838ffe8f98265f1a..ba105c876bed5c08c731036009751e278a8bab2d 100644 (file)
@@ -185,6 +185,7 @@ static int __init cr_pll_init(void)
        if (err) {
                printk(KERN_ERR
                       "Carillo Ranch failed to initialize vml_sys.\n");
+               iounmap(mch_regs_base);
                pci_dev_put(mch_dev);
                return err;
        }