Hi Piotr,
kernel test robot noticed the following build warnings:
[auto build test WARNING on vkoul-dmaengine/next] [also build test WARNING on robh/for-next linus/master v6.10-rc6] [cannot apply to broonie-sound/for-next next-20240701] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Piotr-Wojtaszczyk/dt-bindings... base: https://git.kernel.org/pub/scm/linux/kernel/git/vkoul/dmaengine.git next patch link: https://lore.kernel.org/r/20240620175657.358273-7-piotr.wojtaszczyk%40timesy... patch subject: [Patch v4 06/10] dmaengine: Add dma router for pl08x in LPC32XX SoC config: arm-allmodconfig compiler: arm-linux-gnueabi-gcc (GCC) 13.2.0 reproduce (this is a W=1 build):
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/202407021100.XiZcQQ0k-lkp@intel.com/
All warnings (new ones prefixed by >>):
drivers/dma/lpc32xx-dmamux.c: In function 'lpc32xx_dmamux_release':
drivers/dma/lpc32xx-dmamux.c:81:23: warning: unused variable 'flags' [-Wunused-variable]
81 | unsigned long flags; | ^~~~~ drivers/dma/lpc32xx-dmamux.c: In function 'lpc32xx_dmamux_probe':
drivers/dma/lpc32xx-dmamux.c:157:13: warning: unused variable 'ret' [-Wunused-variable]
157 | int ret; | ^~~
vim +/flags +81 drivers/dma/lpc32xx-dmamux.c
76 77 static void lpc32xx_dmamux_release(struct device *dev, void *route_data) 78 { 79 struct lpc32xx_dmamux_data *dmamux = dev_get_drvdata(dev); 80 struct lpc32xx_dmamux *mux = route_data;
81 unsigned long flags;
82 83 dev_dbg(dev, "releasing dma request signal %d routed to %s\n", 84 mux->signal, mux->muxval ? mux->name_sel1 : mux->name_sel1); 85 86 guard(spinlock)(&dmamux->lock); 87 88 mux->busy = false; 89 } 90 91 static void *lpc32xx_dmamux_reserve(struct of_phandle_args *dma_spec, 92 struct of_dma *ofdma) 93 { 94 struct platform_device *pdev = of_find_device_by_node(ofdma->of_node); 95 struct device *dev = &pdev->dev; 96 struct lpc32xx_dmamux_data *dmamux = platform_get_drvdata(pdev); 97 unsigned long flags; 98 struct lpc32xx_dmamux *mux = NULL; 99 int i; 100 101 if (dma_spec->args_count != 3) { 102 dev_err(&pdev->dev, "invalid number of dma mux args\n"); 103 return ERR_PTR(-EINVAL); 104 } 105 106 for (i = 0; i < ARRAY_SIZE(lpc32xx_muxes); i++) { 107 if (lpc32xx_muxes[i].signal == dma_spec->args[0]) 108 mux = &lpc32xx_muxes[i]; 109 } 110 if (!mux) { 111 dev_err(&pdev->dev, "invalid mux request number: %d\n", 112 dma_spec->args[0]); 113 return ERR_PTR(-EINVAL); 114 } 115 116 if (dma_spec->args[2] > 1) { 117 dev_err(&pdev->dev, "invalid dma mux value: %d\n", 118 dma_spec->args[1]); 119 return ERR_PTR(-EINVAL); 120 } 121 122 /* The of_node_put() will be done in the core for the node */ 123 dma_spec->np = of_parse_phandle(ofdma->of_node, "dma-masters", 0); 124 if (!dma_spec->np) { 125 dev_err(&pdev->dev, "can't get dma master\n"); 126 return ERR_PTR(-EINVAL); 127 } 128 129 spin_lock_irqsave(&dmamux->lock, flags); 130 if (mux->busy) { 131 spin_unlock_irqrestore(&dmamux->lock, flags); 132 dev_err(dev, "dma request signal %d busy, routed to %s\n", 133 mux->signal, mux->muxval ? mux->name_sel1 : mux->name_sel1); 134 of_node_put(dma_spec->np); 135 return ERR_PTR(-EBUSY); 136 } 137 138 mux->busy = true; 139 mux->muxval = dma_spec->args[2] ? BIT(mux->bit) : 0; 140 141 regmap_update_bits(dmamux->reg, mux->muxreg, BIT(mux->bit), mux->muxval); 142 spin_unlock_irqrestore(&dmamux->lock, flags); 143 144 dma_spec->args[2] = 0; 145 dma_spec->args_count = 2; 146 147 dev_dbg(dev, "dma request signal %d routed to %s\n", 148 mux->signal, mux->muxval ? mux->name_sel1 : mux->name_sel1); 149 150 return mux; 151 } 152 153 static int lpc32xx_dmamux_probe(struct platform_device *pdev) 154 { 155 struct device_node *np = pdev->dev.of_node; 156 struct lpc32xx_dmamux_data *dmamux;
157 int ret;
158 159 dmamux = devm_kzalloc(&pdev->dev, sizeof(*dmamux), GFP_KERNEL); 160 if (!dmamux) 161 return -ENOMEM; 162 163 dmamux->reg = syscon_node_to_regmap(np->parent); 164 if (IS_ERR(dmamux->reg)) { 165 dev_err(&pdev->dev, "syscon lookup failed\n"); 166 return PTR_ERR(dmamux->reg); 167 } 168 169 spin_lock_init(&dmamux->lock); 170 platform_set_drvdata(pdev, dmamux); 171 dmamux->dmarouter.dev = &pdev->dev; 172 dmamux->dmarouter.route_free = lpc32xx_dmamux_release; 173 174 return of_dma_router_register(np, lpc32xx_dmamux_reserve, 175 &dmamux->dmarouter); 176 } 177