[android-common:android14-kiwi-6.1 232/232] drivers/video/fbdev/vt8500lcdfb.c:437:34: sparse: sparse: incorrect type in argument 3 (different address spaces)
kernel test robot <[email protected]>
| Newsgroups | dev.linux.lists.oe-kbuild-all |
|---|---|
| Message-ID | <[email protected]> |
tree: https://android.googlesource.com/kernel/common android14-kiwi-6.1 head: c61fd5b8b09deae047599969ab292b6bdb20b706 commit: e87e1071e5187807267aaf73d8daeb472299b1cc [232/232] fbdev: vt8500lcdfb: Fix dma_free_coherent() cpu_addr parameter config: arm-randconfig-r111-20260825 (https://download.01.org/0day-ci/archive/20260825/[email protected]/config) compiler: clang version 24.0.0git (https://github.com/llvm/llvm-project 935bfc708590c60147a79c7df145bb6e68b1d388) sparse: v0.6.5-rc1 reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260825/[email protected]/reproduce) If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot <[email protected]> | Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/ sparse warnings: (new ones prefixed by >>) drivers/video/fbdev/vt8500lcdfb.c:361:33: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected char [noderef] __iomem *screen_base @@ got void *[assigned] fb_mem_virt @@ drivers/video/fbdev/vt8500lcdfb.c:361:33: sparse: expected char [noderef] __iomem *screen_base drivers/video/fbdev/vt8500lcdfb.c:361:33: sparse: got void *[assigned] fb_mem_virt drivers/video/fbdev/vt8500lcdfb.c:364:33: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected void [noderef] __iomem *palette_cpu @@ got void * @@ drivers/video/fbdev/vt8500lcdfb.c:364:33: sparse: expected void [noderef] __iomem *palette_cpu drivers/video/fbdev/vt8500lcdfb.c:364:33: sparse: got void * drivers/video/fbdev/vt8500lcdfb.c:434:30: sparse: sparse: incorrect type in argument 3 (different address spaces) @@ expected void *cpu_addr @@ got void [noderef] __iomem *palette_cpu @@ drivers/video/fbdev/vt8500lcdfb.c:434:30: sparse: expected void *cpu_addr drivers/video/fbdev/vt8500lcdfb.c:434:30: sparse: got void [noderef] __iomem *palette_cpu >> drivers/video/fbdev/vt8500lcdfb.c:437:34: sparse: sparse: incorrect type in argument 3 (different address spaces) @@ expected void *cpu_addr @@ got char [noderef] __iomem *screen_base @@ drivers/video/fbdev/vt8500lcdfb.c:437:34: sparse: expected void *cpu_addr drivers/video/fbdev/vt8500lcdfb.c:437:34: sparse: got char [noderef] __iomem *screen_base drivers/video/fbdev/vt8500lcdfb.c:462:30: sparse: sparse: incorrect type in argument 3 (different address spaces) @@ expected void *cpu_addr @@ got void [noderef] __iomem *palette_cpu @@ drivers/video/fbdev/vt8500lcdfb.c:462:30: sparse: expected void *cpu_addr drivers/video/fbdev/vt8500lcdfb.c:462:30: sparse: got void [noderef] __iomem *palette_cpu vim +437 drivers/video/fbdev/vt8500lcdfb.c 265 266 static int vt8500lcd_probe(struct platform_device *pdev) 267 { 268 struct vt8500lcd_info *fbi; 269 struct resource *res; 270 struct display_timings *disp_timing; 271 void *addr; 272 int irq, ret; 273 274 struct fb_videomode of_mode; 275 u32 bpp; 276 dma_addr_t fb_mem_phys; 277 unsigned long fb_mem_len; 278 void *fb_mem_virt; 279 280 ret = -ENOMEM; 281 fbi = NULL; 282 283 fbi = devm_kzalloc(&pdev->dev, sizeof(struct vt8500lcd_info) 284 + sizeof(u32) * 16, GFP_KERNEL); 285 if (!fbi) 286 return -ENOMEM; 287 288 strcpy(fbi->fb.fix.id, "VT8500 LCD"); 289 290 fbi->fb.fix.type = FB_TYPE_PACKED_PIXELS; 291 fbi->fb.fix.xpanstep = 0; 292 fbi->fb.fix.ypanstep = 1; 293 fbi->fb.fix.ywrapstep = 0; 294 fbi->fb.fix.accel = FB_ACCEL_NONE; 295 296 fbi->fb.var.nonstd = 0; 297 fbi->fb.var.activate = FB_ACTIVATE_NOW; 298 fbi->fb.var.height = -1; 299 fbi->fb.var.width = -1; 300 fbi->fb.var.vmode = FB_VMODE_NONINTERLACED; 301 302 fbi->fb.fbops = &vt8500lcd_ops; 303 fbi->fb.flags = FBINFO_DEFAULT 304 | FBINFO_HWACCEL_COPYAREA 305 | FBINFO_HWACCEL_FILLRECT 306 | FBINFO_HWACCEL_YPAN 307 | FBINFO_VIRTFB 308 | FBINFO_PARTIAL_PAN_OK; 309 fbi->fb.node = -1; 310 311 addr = fbi; 312 addr = addr + sizeof(struct vt8500lcd_info); 313 fbi->fb.pseudo_palette = addr; 314 315 res = platform_get_resource(pdev, IORESOURCE_MEM, 0); 316 if (res == NULL) { 317 dev_err(&pdev->dev, "no I/O memory resource defined\n"); 318 return -ENODEV; 319 } 320 321 res = request_mem_region(res->start, resource_size(res), "vt8500lcd"); 322 if (res == NULL) { 323 dev_err(&pdev->dev, "failed to request I/O memory\n"); 324 return -EBUSY; 325 } 326 327 fbi->regbase = ioremap(res->start, resource_size(res)); 328 if (fbi->regbase == NULL) { 329 dev_err(&pdev->dev, "failed to map I/O memory\n"); 330 ret = -EBUSY; 331 goto failed_free_res; 332 } 333 334 disp_timing = of_get_display_timings(pdev->dev.of_node); 335 if (!disp_timing) { 336 ret = -EINVAL; 337 goto failed_free_io; 338 } 339 340 ret = of_get_fb_videomode(pdev->dev.of_node, &of_mode, 341 OF_USE_NATIVE_MODE); 342 if (ret) 343 goto failed_free_io; 344 345 ret = of_property_read_u32(pdev->dev.of_node, "bits-per-pixel", &bpp); 346 if (ret) 347 goto failed_free_io; 348 349 /* try allocating the framebuffer */ 350 fb_mem_len = of_mode.xres * of_mode.yres * 2 * (bpp / 8); 351 fb_mem_virt = dma_alloc_coherent(&pdev->dev, fb_mem_len, &fb_mem_phys, 352 GFP_KERNEL); 353 if (!fb_mem_virt) { 354 pr_err("%s: Failed to allocate framebuffer\n", __func__); 355 ret = -ENOMEM; 356 goto failed_free_io; 357 } 358 359 fbi->fb.fix.smem_start = fb_mem_phys; 360 fbi->fb.fix.smem_len = fb_mem_len; 361 fbi->fb.screen_base = fb_mem_virt; 362 363 fbi->palette_size = PAGE_ALIGN(512); 364 fbi->palette_cpu = dma_alloc_coherent(&pdev->dev, 365 fbi->palette_size, 366 &fbi->palette_phys, 367 GFP_KERNEL); 368 if (fbi->palette_cpu == NULL) { 369 dev_err(&pdev->dev, "Failed to allocate palette buffer\n"); 370 ret = -ENOMEM; 371 goto failed_free_mem_virt; 372 } 373 374 irq = platform_get_irq(pdev, 0); 375 if (irq < 0) { 376 dev_err(&pdev->dev, "no IRQ defined\n"); 377 ret = -ENODEV; 378 goto failed_free_palette; 379 } 380 381 ret = request_irq(irq, vt8500lcd_handle_irq, 0, "LCD", fbi); 382 if (ret) { 383 dev_err(&pdev->dev, "request_irq failed: %d\n", ret); 384 ret = -EBUSY; 385 goto failed_free_palette; 386 } 387 388 init_waitqueue_head(&fbi->wait); 389 390 if (fb_alloc_cmap(&fbi->fb.cmap, 256, 0) < 0) { 391 dev_err(&pdev->dev, "Failed to allocate color map\n"); 392 ret = -ENOMEM; 393 goto failed_free_irq; 394 } 395 396 fb_videomode_to_var(&fbi->fb.var, &of_mode); 397 398 fbi->fb.var.xres_virtual = of_mode.xres; 399 fbi->fb.var.yres_virtual = of_mode.yres * 2; 400 fbi->fb.var.bits_per_pixel = bpp; 401 402 ret = vt8500lcd_set_par(&fbi->fb); 403 if (ret) { 404 dev_err(&pdev->dev, "Failed to set parameters\n"); 405 goto failed_free_cmap; 406 } 407 408 writel(fbi->fb.fix.smem_start >> 22, fbi->regbase + 0x1c); 409 writel((fbi->palette_phys & 0xfffffe00) | 1, fbi->regbase + 0x18); 410 411 platform_set_drvdata(pdev, fbi); 412 413 ret = register_framebuffer(&fbi->fb); 414 if (ret < 0) { 415 dev_err(&pdev->dev, 416 "Failed to register framebuffer device: %d\n", ret); 417 goto failed_free_cmap; 418 } 419 420 /* 421 * Ok, now enable the LCD controller 422 */ 423 writel(readl(fbi->regbase) | 1, fbi->regbase); 424 425 return 0; 426 427 failed_free_cmap: 428 if (fbi->fb.cmap.len) 429 fb_dealloc_cmap(&fbi->fb.cmap); 430 failed_free_irq: 431 free_irq(irq, fbi); 432 failed_free_palette: 433 dma_free_coherent(&pdev->dev, fbi->palette_size, 434 fbi->palette_cpu, fbi->palette_phys); 435 failed_free_mem_virt: 436 dma_free_coherent(&pdev->dev, fbi->fb.fix.smem_len, > 437 fbi->fb.screen_base, fbi->fb.fix.smem_start); 438 failed_free_io: 439 iounmap(fbi->regbase); 440 failed_free_res: 441 release_mem_region(res->start, resource_size(res)); 442 return ret; 443 } 444 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki