[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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.