Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

video: fbdev: mmp: fix sparse warnings about using incorrect types

Use ->screen_buffer instead of ->screen_base in mmpfb driver.

[ Please see commit 17a7b0b4d974 ("fb.h: Provide alternate screen_base
pointer") for details. ]

Also fix all other sparse warnings about using incorrect types in
mmp display subsystem.

Reviewed-by: Andrzej Hajda <a.hajda@samsung.com>
Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
Link: https://patchwork.freedesktop.org/patch/msgid/ee796b43-f200-d41a-b18c-ae3d6bcaaa67@samsung.com

+40 -31
+1 -1
drivers/video/fbdev/mmp/fb/mmpfb.c
··· 522 522 info->var.bits_per_pixel / 8; 523 523 info->fbops = &mmpfb_ops; 524 524 info->pseudo_palette = fbi->pseudo_palette; 525 - info->screen_base = fbi->fb_start; 525 + info->screen_buffer = fbi->fb_start; 526 526 info->screen_size = fbi->fb_size; 527 527 528 528 /* For FB framework: Allocate color map and Register framebuffer*/
+31 -22
drivers/video/fbdev/mmp/hw/mmp_ctrl.c
··· 136 136 mutex_lock(&overlay->access_ok); 137 137 138 138 if (overlay_is_vid(overlay)) { 139 - writel_relaxed(win->pitch[0], &regs->v_pitch_yc); 140 - writel_relaxed(win->pitch[2] << 16 | 141 - win->pitch[1], &regs->v_pitch_uv); 139 + writel_relaxed(win->pitch[0], 140 + (void __iomem *)&regs->v_pitch_yc); 141 + writel_relaxed(win->pitch[2] << 16 | win->pitch[1], 142 + (void __iomem *)&regs->v_pitch_uv); 142 143 143 - writel_relaxed((win->ysrc << 16) | win->xsrc, &regs->v_size); 144 - writel_relaxed((win->ydst << 16) | win->xdst, &regs->v_size_z); 145 - writel_relaxed(win->ypos << 16 | win->xpos, &regs->v_start); 144 + writel_relaxed((win->ysrc << 16) | win->xsrc, 145 + (void __iomem *)&regs->v_size); 146 + writel_relaxed((win->ydst << 16) | win->xdst, 147 + (void __iomem *)&regs->v_size_z); 148 + writel_relaxed(win->ypos << 16 | win->xpos, 149 + (void __iomem *)&regs->v_start); 146 150 } else { 147 - writel_relaxed(win->pitch[0], &regs->g_pitch); 151 + writel_relaxed(win->pitch[0], (void __iomem *)&regs->g_pitch); 148 152 149 - writel_relaxed((win->ysrc << 16) | win->xsrc, &regs->g_size); 150 - writel_relaxed((win->ydst << 16) | win->xdst, &regs->g_size_z); 151 - writel_relaxed(win->ypos << 16 | win->xpos, &regs->g_start); 153 + writel_relaxed((win->ysrc << 16) | win->xsrc, 154 + (void __iomem *)&regs->g_size); 155 + writel_relaxed((win->ydst << 16) | win->xdst, 156 + (void __iomem *)&regs->g_size_z); 157 + writel_relaxed(win->ypos << 16 | win->xpos, 158 + (void __iomem *)&regs->g_start); 152 159 } 153 160 154 161 dmafetch_set_fmt(overlay); ··· 240 233 memcpy(&overlay->addr, addr, sizeof(struct mmp_addr)); 241 234 242 235 if (overlay_is_vid(overlay)) { 243 - writel_relaxed(addr->phys[0], &regs->v_y0); 244 - writel_relaxed(addr->phys[1], &regs->v_u0); 245 - writel_relaxed(addr->phys[2], &regs->v_v0); 236 + writel_relaxed(addr->phys[0], (void __iomem *)&regs->v_y0); 237 + writel_relaxed(addr->phys[1], (void __iomem *)&regs->v_u0); 238 + writel_relaxed(addr->phys[2], (void __iomem *)&regs->v_v0); 246 239 } else 247 - writel_relaxed(addr->phys[0], &regs->g_0); 240 + writel_relaxed(addr->phys[0], (void __iomem *)&regs->g_0); 248 241 249 242 return overlay->addr.phys[0]; 250 243 } ··· 275 268 tmp |= dsi_rbswap & CFG_INTFRBSWAP_MASK; 276 269 writel_relaxed(tmp, ctrl_regs(path) + intf_rbswap_ctrl(path->id)); 277 270 278 - writel_relaxed((mode->yres << 16) | mode->xres, &regs->screen_active); 271 + writel_relaxed((mode->yres << 16) | mode->xres, 272 + (void __iomem *)&regs->screen_active); 279 273 writel_relaxed((mode->left_margin << 16) | mode->right_margin, 280 - &regs->screen_h_porch); 274 + (void __iomem *)&regs->screen_h_porch); 281 275 writel_relaxed((mode->upper_margin << 16) | mode->lower_margin, 282 - &regs->screen_v_porch); 276 + (void __iomem *)&regs->screen_v_porch); 283 277 total_x = mode->xres + mode->left_margin + mode->right_margin + 284 278 mode->hsync_len; 285 279 total_y = mode->yres + mode->upper_margin + mode->lower_margin + 286 280 mode->vsync_len; 287 - writel_relaxed((total_y << 16) | total_x, &regs->screen_size); 281 + writel_relaxed((total_y << 16) | total_x, 282 + (void __iomem *)&regs->screen_size); 288 283 289 284 /* vsync ctrl */ 290 285 if (path->output_type == PATH_OUT_DSI) ··· 294 285 else 295 286 vsync_ctrl = ((mode->xres + mode->right_margin) << 16) 296 287 | (mode->xres + mode->right_margin); 297 - writel_relaxed(vsync_ctrl, &regs->vsync_ctrl); 288 + writel_relaxed(vsync_ctrl, (void __iomem *)&regs->vsync_ctrl); 298 289 299 290 /* set pixclock div */ 300 291 sclk_src = clk_get_rate(path_to_ctrl(path)->clk); ··· 375 366 writel_relaxed(dma_ctrl1, ctrl_regs(path) + dma_ctrl(1, path->id)); 376 367 377 368 /* Configure default register values */ 378 - writel_relaxed(0x00000000, &regs->blank_color); 379 - writel_relaxed(0x00000000, &regs->g_1); 380 - writel_relaxed(0x00000000, &regs->g_start); 369 + writel_relaxed(0x00000000, (void __iomem *)&regs->blank_color); 370 + writel_relaxed(0x00000000, (void __iomem *)&regs->g_1); 371 + writel_relaxed(0x00000000, (void __iomem *)&regs->g_start); 381 372 382 373 /* 383 374 * 1.enable multiple burst request in DMA AXI
+5 -5
drivers/video/fbdev/mmp/hw/mmp_ctrl.h
··· 1393 1393 /* platform related, get from config */ 1394 1394 const char *name; 1395 1395 int irq; 1396 - void *reg_base; 1396 + void __iomem *reg_base; 1397 1397 struct clk *clk; 1398 1398 1399 1399 /* sys info */ ··· 1429 1429 return path_to_ctrl(overlay->path); 1430 1430 } 1431 1431 1432 - static inline void *ctrl_regs(struct mmp_path *path) 1432 + static inline void __iomem *ctrl_regs(struct mmp_path *path) 1433 1433 { 1434 1434 return path_to_ctrl(path)->reg_base; 1435 1435 } ··· 1438 1438 static inline struct lcd_regs *path_regs(struct mmp_path *path) 1439 1439 { 1440 1440 if (path->id == PATH_PN) 1441 - return (struct lcd_regs *)(ctrl_regs(path) + 0xc0); 1441 + return (struct lcd_regs __force *)(ctrl_regs(path) + 0xc0); 1442 1442 else if (path->id == PATH_TV) 1443 - return (struct lcd_regs *)ctrl_regs(path); 1443 + return (struct lcd_regs __force *)ctrl_regs(path); 1444 1444 else if (path->id == PATH_P2) 1445 - return (struct lcd_regs *)(ctrl_regs(path) + 0x200); 1445 + return (struct lcd_regs __force *)(ctrl_regs(path) + 0x200); 1446 1446 else { 1447 1447 dev_err(path->dev, "path id %d invalid\n", path->id); 1448 1448 BUG_ON(1);
+3 -3
drivers/video/fbdev/mmp/hw/mmp_spi.c
··· 31 31 { 32 32 int timeout = 100000, isr, ret = 0; 33 33 u32 tmp; 34 - void *reg_base = 34 + void __iomem *reg_base = (void __iomem *) 35 35 *(void **)spi_master_get_devdata(spi->master); 36 36 37 37 /* clear ISR */ ··· 80 80 81 81 static int lcd_spi_setup(struct spi_device *spi) 82 82 { 83 - void *reg_base = 83 + void __iomem *reg_base = (void __iomem *) 84 84 *(void **)spi_master_get_devdata(spi->master); 85 85 u32 tmp; 86 86 ··· 146 146 return -ENOMEM; 147 147 } 148 148 p_regbase = spi_master_get_devdata(master); 149 - *p_regbase = ctrl->reg_base; 149 + *p_regbase = (void __force *)ctrl->reg_base; 150 150 151 151 /* set bus num to 5 to avoid conflict with other spi hosts */ 152 152 master->bus_num = 5;