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-...@intel.com/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 <l...@intel.com>

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

Reply via email to