[chenxing:mstar_v6_5_reorder 427/700] drivers/dma/mstar/mstar-msc313-urdma.c:521:12: warning: 'msc313_urdma_resume' defined but not used

kernel test robot <[email protected]> Mon, 03 Aug 2026 07:27:18 +0800
Newsgroups dev.linux.lists.oe-kbuild-all
Message-ID <[email protected]>
tree:   https://github.com/linux-chenxing/linux.git mstar_v6_5_reorder
head:   1a5c60e65ea399670a5384b869c4958338af2799
commit: dd0b6f7ae8093e4530b7ab362c99150b1f714487 [427/700] dma: mstar: urdma
config: nios2-allmodconfig (https://download.01.org/0day-ci/archive/20260803/[email protected]/config)
compiler: nios2-linux-gcc (GCC) 11.5.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260803/[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]/

All warnings (new ones prefixed by >>):

   drivers/dma/mstar/mstar-msc313-urdma.c: In function 'msc313_urdma_prep_slave_sg':
   drivers/dma/mstar/mstar-msc313-urdma.c:322:24: warning: returning 'int' from a function with return type 'struct dma_async_tx_descriptor *' makes pointer from integer without a cast [-Wint-conversion]
     322 |                 return -EINVAL;
         |                        ^
   drivers/dma/mstar/mstar-msc313-urdma.c:326:24: warning: returning 'int' from a function with return type 'struct dma_async_tx_descriptor *' makes pointer from integer without a cast [-Wint-conversion]
     326 |                 return -EINVAL;
         |                        ^
   drivers/dma/mstar/mstar-msc313-urdma.c: In function 'msc313_urdma_tasklet':
   drivers/dma/mstar/mstar-msc313-urdma.c:355:33: warning: unused variable 'tmp' [-Wunused-variable]
     355 |         struct list_head *cur, *tmp;
         |                                 ^~~
   drivers/dma/mstar/mstar-msc313-urdma.c:355:27: warning: unused variable 'cur' [-Wunused-variable]
     355 |         struct list_head *cur, *tmp;
         |                           ^~~
   At top level:
>> drivers/dma/mstar/mstar-msc313-urdma.c:521:12: warning: 'msc313_urdma_resume' defined but not used [-Wunused-function]
     521 | static int msc313_urdma_resume(struct device *dev)
         |            ^~~~~~~~~~~~~~~~~~~
>> drivers/dma/mstar/mstar-msc313-urdma.c:511:12: warning: 'msc313_urdma_suspend' defined but not used [-Wunused-function]
     511 | static int msc313_urdma_suspend(struct device *dev)
         |            ^~~~~~~~~~~~~~~~~~~~
>> drivers/dma/mstar/mstar-msc313-urdma.c:29:31: warning: 'ctrl_rx_op_mode' defined but not used [-Wunused-const-variable=]
      29 | static const struct reg_field ctrl_rx_op_mode = REG_FIELD(REG_CTRL, 11, 11);
         |                               ^~~~~~~~~~~~~~~


vim +/msc313_urdma_resume +521 drivers/dma/mstar/mstar-msc313-urdma.c

   350	
   351	static void msc313_urdma_tasklet(unsigned long data)
   352	{
   353		struct msc313_urdma_chan *chan = (struct msc313_urdma_chan*) data;
   354		struct device *dev = chan->chan.device->dev;
 > 355		struct list_head *cur, *tmp;
   356		unsigned long flags;
   357	
   358		printk("%s:%d %d\n", __func__, __LINE__, chan->rxchan);
   359	
   360		while (true) {
   361			struct msc313_urdma_desc *desc;
   362	
   363			spin_lock_irqsave(&chan->lock, flags);
   364			desc = list_first_entry_or_null(&chan->complete, struct msc313_urdma_desc, queue_node);
   365			if (desc)
   366				list_del(&desc->queue_node);
   367			spin_unlock_irqrestore(&chan->lock, flags);
   368	
   369			if (!desc)
   370				break;
   371	
   372			dma_cookie_complete(&desc->tx);
   373			dma_descriptor_unmap(&desc->tx);
   374			printk("%s:%d\n", __func__, __LINE__);
   375			//&desc->result
   376			dmaengine_desc_get_callback_invoke(&desc->tx, NULL);
   377			printk("%s:%d\n", __func__, __LINE__);
   378			dma_run_dependencies(&desc->tx);
   379			printk("%s:%d\n", __func__, __LINE__);
   380			this_cpu_ptr(chan->chan.local)->bytes_transferred += desc->len;
   381			kfree(desc);
   382			printk("%s:%d\n", __func__, __LINE__);
   383			pm_runtime_mark_last_busy(dev);
   384			pm_runtime_put_autosuspend(dev);
   385		}
   386	}
   387	
   388	static int msc313_urdma_probe(struct platform_device *pdev)
   389	{
   390		struct device *dev = &pdev->dev;
   391		struct msc313_urdma *urdma;
   392		struct regmap *regmap;
   393		void __iomem *base;
   394		int i, irq, ret;
   395	
   396		printk("urdma probe\n");
   397	
   398		urdma = devm_kzalloc(dev, sizeof(*urdma), GFP_KERNEL);
   399		if (!urdma)
   400			return -ENOMEM;
   401	
   402		spin_lock_init(&urdma->lock);
   403		platform_set_drvdata(pdev, urdma);
   404	
   405		base = devm_platform_ioremap_resource(pdev, 0);
   406		if (IS_ERR(base))
   407			return PTR_ERR(base);
   408	
   409		regmap = devm_regmap_init_mmio(dev, base,
   410				&msc313_urdma_regmap_config);
   411		if (IS_ERR(regmap))
   412			return PTR_ERR(regmap);
   413	
   414		urdma->clk = devm_clk_get_enabled(dev, NULL);
   415		if (IS_ERR(urdma->clk))
   416			return PTR_ERR(urdma->clk);
   417	
   418		urdma->dma_device.dev = dev;
   419		urdma->dma_device.device_tx_status = msc313_urdma_tx_status;
   420		urdma->dma_device.device_issue_pending = msc313_urdma_issue_pending;
   421		urdma->dma_device.device_prep_slave_sg = msc313_urdma_prep_slave_sg;
   422		urdma->dma_device.device_terminate_all = msc313_urdma_terminate_all;
   423		urdma->dma_device.device_config = msc313_urdma_chan_config;
   424		urdma->dma_device.device_pause = msc313_urdma_chan_pause;
   425		urdma->dma_device.device_resume = msc313_urdma_chan_resume;
   426		urdma->dma_device.src_addr_widths = BIT(4);
   427		urdma->dma_device.dst_addr_widths = BIT(4);
   428		urdma->dma_device.directions = BIT(DMA_MEM_TO_DEV) | BIT(DMA_DEV_TO_MEM);
   429		urdma->dma_device.residue_granularity = DMA_RESIDUE_GRANULARITY_SEGMENT;
   430	
   431		dma_cap_set(DMA_SLAVE, urdma->dma_device.cap_mask);
   432	
   433		INIT_LIST_HEAD(&urdma->dma_device.channels);
   434	
   435		irq = irq_of_parse_and_map(dev->of_node, i);
   436		if (!irq)
   437			return -EINVAL;
   438		ret = devm_request_irq(dev, irq, msc313_urdma_irq, IRQF_SHARED, dev_name(dev), urdma);
   439		if (ret)
   440			return ret;
   441	
   442		/* global regfields */
   443		urdma->sw_rst = devm_regmap_field_alloc(dev, regmap, ctrl_sw_rst);
   444		urdma->urdma_mode = devm_regmap_field_alloc(dev, regmap, ctrl_urdma_mode);
   445	
   446		for (i = 0; i < CHANNELS; i++) {
   447			struct msc313_urdma_chan *chan = &urdma->chans[i];
   448	
   449			chan->urdma = urdma;
   450			spin_lock_init(&chan->lock);
   451			INIT_LIST_HEAD(&chan->queue);
   452			INIT_LIST_HEAD(&chan->complete);
   453			chan->chan.device = &urdma->dma_device;
   454			tasklet_init(&chan->tasklet, msc313_urdma_tasklet, (unsigned long) chan);
   455	
   456			if (i == 0) {
   457				chan->en = devm_regmap_field_alloc(dev, regmap, ctrl_tx_urdma_en);
   458				chan->endian = devm_regmap_field_alloc(dev, regmap, ctrl_tx_endian);
   459				chan->sw_rst = devm_regmap_field_alloc(dev, regmap, ctrl_tx_sw_rst);
   460				chan->busy = devm_regmap_field_alloc(dev, regmap, ctrl_tx_busy);
   461	
   462				chan->int_clr = devm_regmap_field_alloc(dev, regmap, status_tx_intr_clr_field);
   463				chan->int_en1 = devm_regmap_field_alloc(dev, regmap, status_tx_intr_en_field);
   464				chan->mcu_int = devm_regmap_field_alloc(dev, regmap, status_tx_mcu_intr_field);
   465	
   466				chan->buf_h = devm_regmap_field_alloc(dev, regmap, tx_buf_h_field);
   467				chan->buf_l = devm_regmap_field_alloc(dev, regmap, tx_buf_l_field);
   468				chan->buf_sz = devm_regmap_field_alloc(dev, regmap, tx_buf_sz_field);
   469				chan->rptr = devm_regmap_field_alloc(dev, regmap, tx_buf_rptr_field);
   470				chan->wptr = devm_regmap_field_alloc(dev, regmap, tx_buf_wptr_field);
   471			}
   472			else {
   473				chan->en = devm_regmap_field_alloc(dev, regmap, ctrl_rx_urdma_en);
   474				chan->endian = devm_regmap_field_alloc(dev, regmap, ctrl_rx_endian);
   475				chan->sw_rst = devm_regmap_field_alloc(dev, regmap, ctrl_rx_sw_rst);
   476				chan->busy = devm_regmap_field_alloc(dev, regmap, ctrl_rx_busy);
   477	
   478				chan->int_clr = devm_regmap_field_alloc(dev, regmap, status_rx_intr_clr_field);
   479				chan->int_en1 = devm_regmap_field_alloc(dev, regmap, status_rx_intr_en1_field);
   480				chan->int_en2 = devm_regmap_field_alloc(dev, regmap, status_rx_intr_en2_field);
   481				chan->int1 = devm_regmap_field_alloc(dev, regmap, status_rx_intr1_field);
   482				chan->int2 = devm_regmap_field_alloc(dev, regmap, status_rx_intr2_field);
   483				chan->mcu_int = devm_regmap_field_alloc(dev, regmap, status_rx_mcu_intr_field);
   484	
   485				chan->buf_h = devm_regmap_field_alloc(dev, regmap, rx_buf_h_field);
   486				chan->buf_l = devm_regmap_field_alloc(dev, regmap, rx_buf_l_field);
   487				chan->buf_sz = devm_regmap_field_alloc(dev, regmap, rx_buf_sz_field);
   488	
   489				chan->rxchan = true;
   490			}
   491	
   492			list_add_tail(&chan->chan.device_node, &urdma->dma_device.channels);
   493		}
   494	
   495		ret = dma_async_device_register(&urdma->dma_device);
   496		if (ret)
   497			return ret;
   498	
   499		/* runtime pm */
   500		pm_runtime_irq_safe(dev);
   501		pm_runtime_set_autosuspend_delay(dev, AUTOSUSPEND_DELAY);
   502		pm_runtime_use_autosuspend(dev);
   503		pm_runtime_mark_last_busy(dev);
   504		pm_runtime_set_active(dev);
   505		pm_runtime_enable(dev);
   506	
   507		return of_dma_controller_register(pdev->dev.of_node,
   508				of_dma_xlate_by_chan_id, &urdma->dma_device);
   509	}
   510	
 > 511	static int msc313_urdma_suspend(struct device *dev)
   512	{
   513		struct msc313_urdma *urdma = dev_get_drvdata(dev);
   514	
   515		printk("%s:%d\n", __func__, __LINE__);
   516		regmap_field_write(urdma->sw_rst, 1);
   517	
   518		return 0;
   519	}
   520	
 > 521	static int msc313_urdma_resume(struct device *dev)
   522	{
   523		struct msc313_urdma *urdma = dev_get_drvdata(dev);
   524	
   525		printk("%s:%d\n", __func__, __LINE__);
   526	
   527		/* global rst */
   528		regmap_field_write(urdma->sw_rst, 1);
   529		mdelay(10);
   530		regmap_field_write(urdma->sw_rst, 0);
   531	
   532		for (int i = 0; i < CHANNELS; i++) {
   533			struct msc313_urdma_chan *chan = &urdma->chans[i];
   534	
   535			/* reset channel */
   536			regmap_field_write(chan->sw_rst, 1);
   537			mdelay(10);
   538			regmap_field_write(chan->sw_rst, 0);
   539	
   540			regmap_field_write(chan->int_en1, 1);
   541	
   542			regmap_field_write(chan->buf_h, chan->kern_buff_addr >> 16);
   543			regmap_field_write(chan->buf_l, chan->kern_buff_addr);
   544			regmap_field_write(chan->buf_sz, chan->kern_buff_size / 8);
   545		}
   546	
   547		return 0;
   548	}
   549	

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki