All of lore.kernel.org
 help / color / mirror / Atom feed
* [chenxing:mstar_v6_5_reorder 427/700] drivers/dma/mstar/mstar-msc313-urdma.c:521:12: warning: 'msc313_urdma_resume' defined but not used
@ 2026-08-02 23:27 kernel test robot
  0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2026-08-02 23:27 UTC (permalink / raw)
  To: Daniel Palmer; +Cc: oe-kbuild-all

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/202608030728.TkDTzD0z-lkp@intel.com/config)
compiler: nios2-linux-gcc (GCC) 11.5.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260803/202608030728.TkDTzD0z-lkp@intel.com/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 <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202608030728.TkDTzD0z-lkp@intel.com/

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

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

only message in thread, other threads:[~2026-08-02 23:28 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-08-02 23:27 [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

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.