Re: [PATCH] staging: fbtft: fix checkpatch.pl struct should normally be const

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Uri,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on staging/staging-testing]

url:    https://github.com/intel-lab-lkp/linux/commits/Uri-Arev/staging-fbtft-fix-checkpatch-pl-struct-should-normally-be-const/20220520-012948
base:   https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git 4d0cc9e0e53e9946d7b8dc58279c62dfa7a2191b
config: arm64-randconfig-r011-20220519 (https://download.01.org/0day-ci/archive/20220520/202205200821.nJQ0IfFt-lkp@xxxxxxxxx/config)
compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project e00cbbec06c08dc616a0d52a20f678b8fbd4e304)
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # install arm64 cross compiling tool for clang build
        # apt-get install binutils-aarch64-linux-gnu
        # https://github.com/intel-lab-lkp/linux/commit/d26e139bfc29011b0a147df71f0b91485189c66e
        git remote add linux-review https://github.com/intel-lab-lkp/linux
        git fetch --no-tags linux-review Uri-Arev/staging-fbtft-fix-checkpatch-pl-struct-should-normally-be-const/20220520-012948
        git checkout d26e139bfc29011b0a147df71f0b91485189c66e
        # save the config file
        mkdir build_dir && cp config build_dir/.config
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=arm64 SHELL=/bin/bash drivers/staging/fbtft/

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@xxxxxxxxx>

All error/warnings (new ones prefixed by >>):

   drivers/staging/fbtft/fbtft-core.c:332:6: warning: variable 'count' set but not used [-Wunused-but-set-variable]
           int count = 0;
               ^
>> drivers/staging/fbtft/fbtft-core.c:617:8: error: type specifier missing, defaults to 'int'; ISO C99 and later do not support implicit int [-Wimplicit-int]
           const fbops = devm_kzalloc(dev, sizeof(struct fb_ops), GFP_KERNEL);
           ~~~~~ ^
           int
>> drivers/staging/fbtft/fbtft-core.c:617:8: error: redefinition of 'fbops' with a different type: 'const int' vs 'const struct fb_ops *'
   drivers/staging/fbtft/fbtft-core.c:542:23: note: previous definition is here
           const struct fb_ops *fbops = NULL;
                                ^
>> drivers/staging/fbtft/fbtft-core.c:647:22: error: cannot assign to variable 'fbops' with const-qualified type 'const struct fb_ops *'
           fbops->owner        =      dev->driver->owner;
           ~~~~~~~~~~~~        ^
   drivers/staging/fbtft/fbtft-core.c:542:23: note: variable 'fbops' declared const here
           const struct fb_ops *fbops = NULL;
           ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
   drivers/staging/fbtft/fbtft-core.c:648:22: error: cannot assign to variable 'fbops' with const-qualified type 'const struct fb_ops *'
           fbops->fb_read      =      fb_sys_read;
           ~~~~~~~~~~~~~~      ^
   drivers/staging/fbtft/fbtft-core.c:542:23: note: variable 'fbops' declared const here
           const struct fb_ops *fbops = NULL;
           ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
   drivers/staging/fbtft/fbtft-core.c:649:22: error: cannot assign to variable 'fbops' with const-qualified type 'const struct fb_ops *'
           fbops->fb_write     =      fbtft_fb_write;
           ~~~~~~~~~~~~~~~     ^
   drivers/staging/fbtft/fbtft-core.c:542:23: note: variable 'fbops' declared const here
           const struct fb_ops *fbops = NULL;
           ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
   drivers/staging/fbtft/fbtft-core.c:650:22: error: cannot assign to variable 'fbops' with const-qualified type 'const struct fb_ops *'
           fbops->fb_fillrect  =      fbtft_fb_fillrect;
           ~~~~~~~~~~~~~~~~~~  ^
   drivers/staging/fbtft/fbtft-core.c:542:23: note: variable 'fbops' declared const here
           const struct fb_ops *fbops = NULL;
           ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
   drivers/staging/fbtft/fbtft-core.c:651:22: error: cannot assign to variable 'fbops' with const-qualified type 'const struct fb_ops *'
           fbops->fb_copyarea  =      fbtft_fb_copyarea;
           ~~~~~~~~~~~~~~~~~~  ^
   drivers/staging/fbtft/fbtft-core.c:542:23: note: variable 'fbops' declared const here
           const struct fb_ops *fbops = NULL;
           ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
   drivers/staging/fbtft/fbtft-core.c:652:22: error: cannot assign to variable 'fbops' with const-qualified type 'const struct fb_ops *'
           fbops->fb_imageblit =      fbtft_fb_imageblit;
           ~~~~~~~~~~~~~~~~~~~ ^
   drivers/staging/fbtft/fbtft-core.c:542:23: note: variable 'fbops' declared const here
           const struct fb_ops *fbops = NULL;
           ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
   drivers/staging/fbtft/fbtft-core.c:653:22: error: cannot assign to variable 'fbops' with const-qualified type 'const struct fb_ops *'
           fbops->fb_setcolreg =      fbtft_fb_setcolreg;
           ~~~~~~~~~~~~~~~~~~~ ^
   drivers/staging/fbtft/fbtft-core.c:542:23: note: variable 'fbops' declared const here
           const struct fb_ops *fbops = NULL;
           ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
   drivers/staging/fbtft/fbtft-core.c:654:22: error: cannot assign to variable 'fbops' with const-qualified type 'const struct fb_ops *'
           fbops->fb_blank     =      fbtft_fb_blank;
           ~~~~~~~~~~~~~~~     ^
   drivers/staging/fbtft/fbtft-core.c:542:23: note: variable 'fbops' declared const here
           const struct fb_ops *fbops = NULL;
           ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
>> drivers/staging/fbtft/fbtft-core.c:617:8: warning: mixing declarations and code is incompatible with standards before C99 [-Wdeclaration-after-statement]
           const fbops = devm_kzalloc(dev, sizeof(struct fb_ops), GFP_KERNEL);
                 ^
   2 warnings and 10 errors generated.


vim +/int +617 drivers/staging/fbtft/fbtft-core.c

   516	
   517	/**
   518	 * fbtft_framebuffer_alloc - creates a new frame buffer info structure
   519	 *
   520	 * @display: pointer to structure describing the display
   521	 * @dev: pointer to the device for this fb, this can be NULL
   522	 * @pdata: platform data for the display in use
   523	 *
   524	 * Creates a new frame buffer info structure.
   525	 *
   526	 * Also creates and populates the following structures:
   527	 *   info->fbops
   528	 *   info->fbdefio
   529	 *   info->pseudo_palette
   530	 *   par->fbtftops
   531	 *   par->txbuf
   532	 *
   533	 * Returns the new structure, or NULL if an error occurred.
   534	 *
   535	 */
   536	struct fb_info *fbtft_framebuffer_alloc(struct fbtft_display *display,
   537						struct device *dev,
   538						struct fbtft_platform_data *pdata)
   539	{
   540		struct fb_info *info;
   541		struct fbtft_par *par;
   542		const struct fb_ops *fbops = NULL;
   543		struct fb_deferred_io *fbdefio = NULL;
   544		u8 *vmem = NULL;
   545		void *txbuf = NULL;
   546		void *buf = NULL;
   547		unsigned int width;
   548		unsigned int height;
   549		int txbuflen = display->txbuflen;
   550		unsigned int bpp = display->bpp;
   551		unsigned int fps = display->fps;
   552		int vmem_size;
   553		const s16 *init_sequence = display->init_sequence;
   554		char *gamma = display->gamma;
   555		u32 *gamma_curves = NULL;
   556	
   557		/* sanity check */
   558		if (display->gamma_num * display->gamma_len >
   559				FBTFT_GAMMA_MAX_VALUES_TOTAL) {
   560			dev_err(dev, "FBTFT_GAMMA_MAX_VALUES_TOTAL=%d is exceeded\n",
   561				FBTFT_GAMMA_MAX_VALUES_TOTAL);
   562			return NULL;
   563		}
   564	
   565		/* defaults */
   566		if (!fps)
   567			fps = 20;
   568		if (!bpp)
   569			bpp = 16;
   570	
   571		if (!pdata) {
   572			dev_err(dev, "platform data is missing\n");
   573			return NULL;
   574		}
   575	
   576		/* override driver values? */
   577		if (pdata->fps)
   578			fps = pdata->fps;
   579		if (pdata->txbuflen)
   580			txbuflen = pdata->txbuflen;
   581		if (pdata->display.init_sequence)
   582			init_sequence = pdata->display.init_sequence;
   583		if (pdata->gamma)
   584			gamma = pdata->gamma;
   585		if (pdata->display.debug)
   586			display->debug = pdata->display.debug;
   587		if (pdata->display.backlight)
   588			display->backlight = pdata->display.backlight;
   589		if (pdata->display.width)
   590			display->width = pdata->display.width;
   591		if (pdata->display.height)
   592			display->height = pdata->display.height;
   593		if (pdata->display.buswidth)
   594			display->buswidth = pdata->display.buswidth;
   595		if (pdata->display.regwidth)
   596			display->regwidth = pdata->display.regwidth;
   597	
   598		display->debug |= debug;
   599		fbtft_expand_debug_value(&display->debug);
   600	
   601		switch (pdata->rotate) {
   602		case 90:
   603		case 270:
   604			width =  display->height;
   605			height = display->width;
   606			break;
   607		default:
   608			width =  display->width;
   609			height = display->height;
   610		}
   611	
   612		vmem_size = display->width * display->height * bpp / 8;
   613		vmem = vzalloc(vmem_size);
   614		if (!vmem)
   615			goto alloc_fail;
   616	
 > 617		const fbops = devm_kzalloc(dev, sizeof(struct fb_ops), GFP_KERNEL);
   618		if (!fbops)
   619			goto alloc_fail;
   620	
   621		fbdefio = devm_kzalloc(dev, sizeof(struct fb_deferred_io), GFP_KERNEL);
   622		if (!fbdefio)
   623			goto alloc_fail;
   624	
   625		buf = devm_kzalloc(dev, 128, GFP_KERNEL);
   626		if (!buf)
   627			goto alloc_fail;
   628	
   629		if (display->gamma_num && display->gamma_len) {
   630			gamma_curves = devm_kcalloc(dev,
   631						    display->gamma_num *
   632						    display->gamma_len,
   633						    sizeof(gamma_curves[0]),
   634						    GFP_KERNEL);
   635			if (!gamma_curves)
   636				goto alloc_fail;
   637		}
   638	
   639		info = framebuffer_alloc(sizeof(struct fbtft_par), dev);
   640		if (!info)
   641			goto alloc_fail;
   642	
   643		info->screen_buffer = vmem;
   644		info->fbops = fbops;
   645		info->fbdefio = fbdefio;
   646	
 > 647		fbops->owner        =      dev->driver->owner;
   648		fbops->fb_read      =      fb_sys_read;
   649		fbops->fb_write     =      fbtft_fb_write;
   650		fbops->fb_fillrect  =      fbtft_fb_fillrect;
   651		fbops->fb_copyarea  =      fbtft_fb_copyarea;
   652		fbops->fb_imageblit =      fbtft_fb_imageblit;
   653		fbops->fb_setcolreg =      fbtft_fb_setcolreg;
   654		fbops->fb_blank     =      fbtft_fb_blank;
   655	
   656		fbdefio->delay =           HZ / fps;
   657		fbdefio->sort_pagelist =   true;
   658		fbdefio->deferred_io =     fbtft_deferred_io;
   659		fb_deferred_io_init(info);
   660	
   661		snprintf(info->fix.id, sizeof(info->fix.id), "%s", dev->driver->name);
   662		info->fix.type =           FB_TYPE_PACKED_PIXELS;
   663		info->fix.visual =         FB_VISUAL_TRUECOLOR;
   664		info->fix.xpanstep =	   0;
   665		info->fix.ypanstep =	   0;
   666		info->fix.ywrapstep =	   0;
   667		info->fix.line_length =    width * bpp / 8;
   668		info->fix.accel =          FB_ACCEL_NONE;
   669		info->fix.smem_len =       vmem_size;
   670	
   671		info->var.rotate =         pdata->rotate;
   672		info->var.xres =           width;
   673		info->var.yres =           height;
   674		info->var.xres_virtual =   info->var.xres;
   675		info->var.yres_virtual =   info->var.yres;
   676		info->var.bits_per_pixel = bpp;
   677		info->var.nonstd =         1;
   678	
   679		/* RGB565 */
   680		info->var.red.offset =     11;
   681		info->var.red.length =     5;
   682		info->var.green.offset =   5;
   683		info->var.green.length =   6;
   684		info->var.blue.offset =    0;
   685		info->var.blue.length =    5;
   686		info->var.transp.offset =  0;
   687		info->var.transp.length =  0;
   688	
   689		info->flags =              FBINFO_FLAG_DEFAULT | FBINFO_VIRTFB;
   690	
   691		par = info->par;
   692		par->info = info;
   693		par->pdata = pdata;
   694		par->debug = display->debug;
   695		par->buf = buf;
   696		spin_lock_init(&par->dirty_lock);
   697		par->bgr = pdata->bgr;
   698		par->startbyte = pdata->startbyte;
   699		par->init_sequence = init_sequence;
   700		par->gamma.curves = gamma_curves;
   701		par->gamma.num_curves = display->gamma_num;
   702		par->gamma.num_values = display->gamma_len;
   703		mutex_init(&par->gamma.lock);
   704		info->pseudo_palette = par->pseudo_palette;
   705	
   706		if (par->gamma.curves && gamma) {
   707			if (fbtft_gamma_parse_str(par, par->gamma.curves, gamma,
   708						  strlen(gamma)))
   709				goto release_framebuf;
   710		}
   711	
   712		/* Transmit buffer */
   713		if (txbuflen == -1)
   714			txbuflen = vmem_size + 2; /* add in case startbyte is used */
   715		if (txbuflen >= vmem_size + 2)
   716			txbuflen = 0;
   717	

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp



[Index of Archives]     [Linux DRI Users]     [Linux Intel Graphics]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux