linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [linux-chenxing:mstar_v5_14_rebase 126/352] drivers/spi/spi-msc313-isp.c:303:13: warning: assignment discards 'const' qualifier from pointer target type
@ 2021-07-19 21:58 kernel test robot
  0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2021-07-19 21:58 UTC (permalink / raw)
  To: Daniel Palmer; +Cc: kbuild-all, linux-kernel

[-- Attachment #1: Type: text/plain, Size: 12085 bytes --]

tree:   git://github.com/linux-chenxing/linux.git mstar_v5_14_rebase
head:   651efd0e52f225e60faa8b30f9768021e2104d3c
commit: 6d6f48bcd3ec1e7fdc903a8a093da960b7b328b8 [126/352] ARM: mstar: msc313 bdma driver
config: arm-allyesconfig (attached as .config)
compiler: arm-linux-gnueabi-gcc (GCC) 10.3.0
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
        # https://github.com/linux-chenxing/linux/commit/6d6f48bcd3ec1e7fdc903a8a093da960b7b328b8
        git remote add linux-chenxing git://github.com/linux-chenxing/linux.git
        git fetch --no-tags linux-chenxing mstar_v5_14_rebase
        git checkout 6d6f48bcd3ec1e7fdc903a8a093da960b7b328b8
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-10.3.0 make.cross ARCH=arm 

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

All warnings (new ones prefixed by >>):

   drivers/spi/spi-msc313-isp.c: In function 'msc313_isp_setup':
   drivers/spi/spi-msc313-isp.c:173:21: warning: unused variable 'isp' [-Wunused-variable]
     173 |  struct msc313_isp *isp = spi_controller_get_devdata(spi->controller);
         |                     ^~~
   drivers/spi/spi-msc313-isp.c: In function 'msc313_isp_spi_mem_dirmap_create':
>> drivers/spi/spi-msc313-isp.c:303:13: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
     303 |  desc->priv = readmode;
         |             ^


vim +/const +303 drivers/spi/spi-msc313-isp.c

bbf791fd03997b Daniel Palmer 2020-06-13  170  
bbf791fd03997b Daniel Palmer 2020-06-13  171  static int msc313_isp_setup(struct spi_device *spi)
bbf791fd03997b Daniel Palmer 2020-06-13  172  {
bbf791fd03997b Daniel Palmer 2020-06-13 @173  	struct msc313_isp *isp = spi_controller_get_devdata(spi->controller);
bbf791fd03997b Daniel Palmer 2020-06-13  174  
bbf791fd03997b Daniel Palmer 2020-06-13  175  	//clk_set_rate(isp->spi_div_clk, spi->max_speed_hz);
bbf791fd03997b Daniel Palmer 2020-06-13  176  	//clk_set_rate(isp->spi_clk, spi->max_speed_hz);
bbf791fd03997b Daniel Palmer 2020-06-13  177  
bbf791fd03997b Daniel Palmer 2020-06-13  178  	return 0;
bbf791fd03997b Daniel Palmer 2020-06-13  179  }
bbf791fd03997b Daniel Palmer 2020-06-13  180  
bbf791fd03997b Daniel Palmer 2020-06-13  181  static int msc313_isp_transfer_one(struct spi_controller *ctlr, struct spi_device *spi,
bbf791fd03997b Daniel Palmer 2020-06-13  182  			    struct spi_transfer *transfer)
bbf791fd03997b Daniel Palmer 2020-06-13  183  {
bbf791fd03997b Daniel Palmer 2020-06-13  184  	struct msc313_isp *isp = spi_controller_get_devdata(ctlr);
bbf791fd03997b Daniel Palmer 2020-06-13  185  	const u8 *tx_buf = transfer->tx_buf;
bbf791fd03997b Daniel Palmer 2020-06-13  186  	u8 *rx_buf = transfer->rx_buf;
bbf791fd03997b Daniel Palmer 2020-06-13  187  	unsigned b = 0;
bbf791fd03997b Daniel Palmer 2020-06-13  188  
bbf791fd03997b Daniel Palmer 2020-06-13  189  	/*
bbf791fd03997b Daniel Palmer 2020-06-13  190  	 * this only really works for SPI NOR <cs low><write something><read something><cs high>
bbf791fd03997b Daniel Palmer 2020-06-13  191  	 * transactions
bbf791fd03997b Daniel Palmer 2020-06-13  192  	 */
bbf791fd03997b Daniel Palmer 2020-06-13  193  
bbf791fd03997b Daniel Palmer 2020-06-13  194  	for(b = 0; b < transfer->len; b++) {
bbf791fd03997b Daniel Palmer 2020-06-13  195  		if (tx_buf) {
bbf791fd03997b Daniel Palmer 2020-06-13  196  			msc313_isp_spi_writebyte(isp, *tx_buf++);
bbf791fd03997b Daniel Palmer 2020-06-13  197  			/* we don't do full duplex, there should be no rx buffer */
bbf791fd03997b Daniel Palmer 2020-06-13  198  			if(rx_buf){
bbf791fd03997b Daniel Palmer 2020-06-13  199  			}
bbf791fd03997b Daniel Palmer 2020-06-13  200  		}
bbf791fd03997b Daniel Palmer 2020-06-13  201  		else if(rx_buf){
bbf791fd03997b Daniel Palmer 2020-06-13  202  			msc313_isp_spi_readbyte(isp, rx_buf++);
bbf791fd03997b Daniel Palmer 2020-06-13  203  		}
bbf791fd03997b Daniel Palmer 2020-06-13  204  	}
bbf791fd03997b Daniel Palmer 2020-06-13  205  
bbf791fd03997b Daniel Palmer 2020-06-13  206  	return 0;
bbf791fd03997b Daniel Palmer 2020-06-13  207  }
bbf791fd03997b Daniel Palmer 2020-06-13  208  
bbf791fd03997b Daniel Palmer 2020-06-13  209  static void msc313_isp_set_cs(struct spi_device *spi, bool enable)
bbf791fd03997b Daniel Palmer 2020-06-13  210  {
bbf791fd03997b Daniel Palmer 2020-06-13  211  	/* cs is asserted by the controller, we can only deassert it */
bbf791fd03997b Daniel Palmer 2020-06-13  212  	struct msc313_isp *isp = spi_master_get_devdata(spi->master);
bbf791fd03997b Daniel Palmer 2020-06-13  213  	if(!enable)
bbf791fd03997b Daniel Palmer 2020-06-13  214  		msc313_isp_spi_clearcs(isp);
bbf791fd03997b Daniel Palmer 2020-06-13  215  }
bbf791fd03997b Daniel Palmer 2020-06-13  216  
bbf791fd03997b Daniel Palmer 2020-06-13  217  static const struct msc313_qspi_readmode* msc313_isp_spi_mem_op_to_readmode(const struct spi_mem_op *op)
bbf791fd03997b Daniel Palmer 2020-06-13  218  {
bbf791fd03997b Daniel Palmer 2020-06-13  219  	int i;
bbf791fd03997b Daniel Palmer 2020-06-13  220  
bbf791fd03997b Daniel Palmer 2020-06-13  221  	/*
bbf791fd03997b Daniel Palmer 2020-06-13  222  	 * The opcodes that the controller can execute are limited.
bbf791fd03997b Daniel Palmer 2020-06-13  223  	 * Check that the requested opcode is one we can use.
bbf791fd03997b Daniel Palmer 2020-06-13  224  	 */
bbf791fd03997b Daniel Palmer 2020-06-13  225  	for (i = 0; i < ARRAY_SIZE(opcode_mapping); i++){
bbf791fd03997b Daniel Palmer 2020-06-13  226  		if (opcode_mapping[i].opcode == op->cmd.opcode)
bbf791fd03997b Daniel Palmer 2020-06-13  227  			return &opcode_mapping[i];
bbf791fd03997b Daniel Palmer 2020-06-13  228  	}
bbf791fd03997b Daniel Palmer 2020-06-13  229  
bbf791fd03997b Daniel Palmer 2020-06-13  230  	return NULL;
bbf791fd03997b Daniel Palmer 2020-06-13  231  }
bbf791fd03997b Daniel Palmer 2020-06-13  232  
bbf791fd03997b Daniel Palmer 2020-06-13  233  static bool msc313_isp_spi_mem_supports_op(struct spi_mem *mem,
bbf791fd03997b Daniel Palmer 2020-06-13  234  			    const struct spi_mem_op *op)
bbf791fd03997b Daniel Palmer 2020-06-13  235  {
bbf791fd03997b Daniel Palmer 2020-06-13  236  /* Maybe we should filter commands qspi can't handle here? */
bbf791fd03997b Daniel Palmer 2020-06-13  237  #if 0
bbf791fd03997b Daniel Palmer 2020-06-13  238  	if (!msc313_isp_spi_mem_op_to_readmode(op)){
bbf791fd03997b Daniel Palmer 2020-06-13  239  		return false;
bbf791fd03997b Daniel Palmer 2020-06-13  240  	}
bbf791fd03997b Daniel Palmer 2020-06-13  241  #endif
bbf791fd03997b Daniel Palmer 2020-06-13  242  
bbf791fd03997b Daniel Palmer 2020-06-13  243  	return spi_mem_default_supports_op(mem, op);
bbf791fd03997b Daniel Palmer 2020-06-13  244  }
bbf791fd03997b Daniel Palmer 2020-06-13  245  
bbf791fd03997b Daniel Palmer 2020-06-13  246  static int msc313_isp_exec_op(struct spi_mem *mem, const struct spi_mem_op *op)
bbf791fd03997b Daniel Palmer 2020-06-13  247  {
bbf791fd03997b Daniel Palmer 2020-06-13  248  	struct msc313_isp *isp = spi_controller_get_devdata(mem->spi->controller);
bbf791fd03997b Daniel Palmer 2020-06-13  249  	int i, ret = 0;
bbf791fd03997b Daniel Palmer 2020-06-13  250  
bbf791fd03997b Daniel Palmer 2020-06-13  251  	if(op->cmd.opcode)
bbf791fd03997b Daniel Palmer 2020-06-13  252  		msc313_isp_spi_writebyte(isp, op->cmd.opcode);
bbf791fd03997b Daniel Palmer 2020-06-13  253  	if(op->addr.nbytes != 0)
bbf791fd03997b Daniel Palmer 2020-06-13  254  		for(i = op->addr.nbytes; i > 0; i--)
bbf791fd03997b Daniel Palmer 2020-06-13  255  			msc313_isp_spi_writebyte(isp, (op->addr.val >> (8 * (i - 1))) & 0xff);
bbf791fd03997b Daniel Palmer 2020-06-13  256  	if(op->dummy.nbytes != 0)
bbf791fd03997b Daniel Palmer 2020-06-13  257  		for(i = 0; i < op->dummy.nbytes; i++)
bbf791fd03997b Daniel Palmer 2020-06-13  258  			msc313_isp_spi_writebyte(isp, 0xff);
bbf791fd03997b Daniel Palmer 2020-06-13  259  	switch(op->data.dir){
bbf791fd03997b Daniel Palmer 2020-06-13  260  		case SPI_MEM_DATA_IN:
bbf791fd03997b Daniel Palmer 2020-06-13  261  			for(i = 0; i < op->data.nbytes; i++)
bbf791fd03997b Daniel Palmer 2020-06-13  262  				msc313_isp_spi_readbyte(isp, ((u8*)(op->data.buf.in + i)));
bbf791fd03997b Daniel Palmer 2020-06-13  263  			break;
bbf791fd03997b Daniel Palmer 2020-06-13  264  		case SPI_MEM_DATA_OUT:
bbf791fd03997b Daniel Palmer 2020-06-13  265  			for(i = 0; i < op->data.nbytes; i++)
bbf791fd03997b Daniel Palmer 2020-06-13  266  				msc313_isp_spi_writebyte(isp, *((u8*)(op->data.buf.out + i)));
bbf791fd03997b Daniel Palmer 2020-06-13  267  			break;
bbf791fd03997b Daniel Palmer 2020-06-13  268  		case SPI_MEM_NO_DATA:
bbf791fd03997b Daniel Palmer 2020-06-13  269  			break;
bbf791fd03997b Daniel Palmer 2020-06-13  270  	}
bbf791fd03997b Daniel Palmer 2020-06-13  271  
bbf791fd03997b Daniel Palmer 2020-06-13  272  	msc313_isp_spi_clearcs(isp);
bbf791fd03997b Daniel Palmer 2020-06-13  273  	return ret;
bbf791fd03997b Daniel Palmer 2020-06-13  274  }
bbf791fd03997b Daniel Palmer 2020-06-13  275  
bbf791fd03997b Daniel Palmer 2020-06-13  276  static int msc313_isp_spi_mem_dirmap_create(struct spi_mem_dirmap_desc *desc)
bbf791fd03997b Daniel Palmer 2020-06-13  277  {
bbf791fd03997b Daniel Palmer 2020-06-13  278  	const struct msc313_qspi_readmode *readmode = NULL;
bbf791fd03997b Daniel Palmer 2020-06-13  279  	struct spi_mem_op *tmpl = &desc->info.op_tmpl;
bbf791fd03997b Daniel Palmer 2020-06-13  280  
bbf791fd03997b Daniel Palmer 2020-06-13  281  	/*
bbf791fd03997b Daniel Palmer 2020-06-13  282  	 * The QSPI controller only supports reads, the FSP seems
bbf791fd03997b Daniel Palmer 2020-06-13  283  	 * to be for writing.
bbf791fd03997b Daniel Palmer 2020-06-13  284  	 */
bbf791fd03997b Daniel Palmer 2020-06-13  285  	if (tmpl->data.dir != SPI_MEM_DATA_IN)
bbf791fd03997b Daniel Palmer 2020-06-13  286  		return -ENOTSUPP;
bbf791fd03997b Daniel Palmer 2020-06-13  287  
bbf791fd03997b Daniel Palmer 2020-06-13  288  	/*
bbf791fd03997b Daniel Palmer 2020-06-13  289  	 * We can only do 2 or 3 address bytes
bbf791fd03997b Daniel Palmer 2020-06-13  290  	 */
bbf791fd03997b Daniel Palmer 2020-06-13  291  	if ((tmpl->addr.nbytes != 2) &&
bbf791fd03997b Daniel Palmer 2020-06-13  292  	    (tmpl->addr.nbytes != 3))
bbf791fd03997b Daniel Palmer 2020-06-13  293  		return -ENOTSUPP;
bbf791fd03997b Daniel Palmer 2020-06-13  294  
bbf791fd03997b Daniel Palmer 2020-06-13  295  
bbf791fd03997b Daniel Palmer 2020-06-13  296  	readmode = msc313_isp_spi_mem_op_to_readmode(&desc->info.op_tmpl);
bbf791fd03997b Daniel Palmer 2020-06-13  297  	if (!readmode){
bbf791fd03997b Daniel Palmer 2020-06-13  298  		pr_info("Opcode %x isn't supported by QSPI\n",
bbf791fd03997b Daniel Palmer 2020-06-13  299  				(unsigned) desc->info.op_tmpl.cmd.opcode);
bbf791fd03997b Daniel Palmer 2020-06-13  300  		return -ENOTSUPP;
bbf791fd03997b Daniel Palmer 2020-06-13  301  	}
bbf791fd03997b Daniel Palmer 2020-06-13  302  
bbf791fd03997b Daniel Palmer 2020-06-13 @303  	desc->priv = readmode;
bbf791fd03997b Daniel Palmer 2020-06-13  304  
bbf791fd03997b Daniel Palmer 2020-06-13  305  	pr_info("Opcode %x \n",
bbf791fd03997b Daniel Palmer 2020-06-13  306  			(unsigned) readmode->opcode);
bbf791fd03997b Daniel Palmer 2020-06-13  307  
bbf791fd03997b Daniel Palmer 2020-06-13  308  	desc->nodirmap = 0;
bbf791fd03997b Daniel Palmer 2020-06-13  309  
bbf791fd03997b Daniel Palmer 2020-06-13  310  	return 0;
bbf791fd03997b Daniel Palmer 2020-06-13  311  }
bbf791fd03997b Daniel Palmer 2020-06-13  312  

:::::: The code at line 303 was first introduced by commit
:::::: bbf791fd03997b4f5f9fb5af63cc60be07b7bf40 MSC313e: spinor driver

:::::: TO: Daniel Palmer <daniel@0x0f.com>
:::::: CC: Daniel Palmer <daniel@0x0f.com>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 78737 bytes --]

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2021-07-20  3:12 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-07-19 21:58 [linux-chenxing:mstar_v5_14_rebase 126/352] drivers/spi/spi-msc313-isp.c:303:13: warning: assignment discards 'const' qualifier from pointer target type kernel test robot

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).