Hi Bence, kernel test robot noticed the following build errors: [auto build test ERROR on sunxi/sunxi/for-next] [also build test ERROR on vkoul-dmaengine/next broonie-sound/for-next arm64/for-next/core clk/clk-next kvmarm/next rockchip/for-next shawnguo/for-next soc/for-next arm/for-next arm/fixes linus/master v6.12-rc4 next-20241025] [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/Cs-k-s-Bence/dma-engine-sun4i-Add-has_reset-option-to-quirk/20241027-172307 base: https://git.kernel.org/pub/scm/linux/kernel/git/sunxi/linux.git sunxi/for-next patch link: https://lore.kernel.org/r/20241027091440.1913863-2-csokas.bence%40prolan.hu patch subject: [PATCH v2 02/10] dma-engine: sun4i: Add has_reset option to quirk config: arm-sunxi_defconfig (https://download.01.org/0day-ci/archive/20241028/202410280330.S1S4TKbz-lkp@xxxxxxxxx/config) compiler: arm-linux-gnueabi-gcc (GCC) 14.1.0 reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20241028/202410280330.S1S4TKbz-lkp@xxxxxxxxx/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@xxxxxxxxx> | Closes: https://lore.kernel.org/oe-kbuild-all/202410280330.S1S4TKbz-lkp@xxxxxxxxx/ All errors (new ones prefixed by >>): drivers/dma/sun4i-dma.c: In function 'sun4i_dma_probe': >> drivers/dma/sun4i-dma.c:1225:51: error: passing argument 2 of 'dev_err_probe' makes integer from pointer without a cast [-Wint-conversion] 1225 | dev_err_probe(&pdev->dev, "Failed to get reset control\n"); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | char * In file included from include/linux/device.h:15, from include/linux/dma-mapping.h:8, from drivers/dma/sun4i-dma.c:10: include/linux/dev_printk.h:278:64: note: expected 'int' but argument is of type 'char *' 278 | __printf(3, 4) int dev_err_probe(const struct device *dev, int err, const char *fmt, ...); | ~~~~^~~ drivers/dma/sun4i-dma.c:1225:25: error: too few arguments to function 'dev_err_probe' 1225 | dev_err_probe(&pdev->dev, "Failed to get reset control\n"); | ^~~~~~~~~~~~~ include/linux/dev_printk.h:278:20: note: declared here 278 | __printf(3, 4) int dev_err_probe(const struct device *dev, int err, const char *fmt, ...); | ^~~~~~~~~~~~~ vim +/dev_err_probe +1225 drivers/dma/sun4i-dma.c 1193 1194 static int sun4i_dma_probe(struct platform_device *pdev) 1195 { 1196 struct sun4i_dma_dev *priv; 1197 int i, j, ret; 1198 1199 priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL); 1200 if (!priv) 1201 return -ENOMEM; 1202 1203 priv->cfg = of_device_get_match_data(&pdev->dev); 1204 if (!priv->cfg) 1205 return -ENODEV; 1206 1207 priv->base = devm_platform_ioremap_resource(pdev, 0); 1208 if (IS_ERR(priv->base)) 1209 return PTR_ERR(priv->base); 1210 1211 priv->irq = platform_get_irq(pdev, 0); 1212 if (priv->irq < 0) 1213 return priv->irq; 1214 1215 priv->clk = devm_clk_get(&pdev->dev, NULL); 1216 if (IS_ERR(priv->clk)) { 1217 dev_err(&pdev->dev, "No clock specified\n"); 1218 return PTR_ERR(priv->clk); 1219 } 1220 1221 if (priv->cfg->has_reset) { 1222 priv->rst = devm_reset_control_get_exclusive(&pdev->dev, 1223 NULL); 1224 if (IS_ERR(priv->rst)) { > 1225 dev_err_probe(&pdev->dev, "Failed to get reset control\n"); 1226 return PTR_ERR(priv->rst); 1227 } 1228 } 1229 1230 platform_set_drvdata(pdev, priv); 1231 spin_lock_init(&priv->lock); 1232 1233 dma_set_max_seg_size(&pdev->dev, SUN4I_DMA_MAX_SEG_SIZE); 1234 1235 dma_cap_zero(priv->slave.cap_mask); 1236 dma_cap_set(DMA_PRIVATE, priv->slave.cap_mask); 1237 dma_cap_set(DMA_MEMCPY, priv->slave.cap_mask); 1238 dma_cap_set(DMA_CYCLIC, priv->slave.cap_mask); 1239 dma_cap_set(DMA_SLAVE, priv->slave.cap_mask); 1240 1241 INIT_LIST_HEAD(&priv->slave.channels); 1242 priv->slave.device_free_chan_resources = sun4i_dma_free_chan_resources; 1243 priv->slave.device_tx_status = sun4i_dma_tx_status; 1244 priv->slave.device_issue_pending = sun4i_dma_issue_pending; 1245 priv->slave.device_prep_slave_sg = sun4i_dma_prep_slave_sg; 1246 priv->slave.device_prep_dma_memcpy = sun4i_dma_prep_dma_memcpy; 1247 priv->slave.device_prep_dma_cyclic = sun4i_dma_prep_dma_cyclic; 1248 priv->slave.device_config = sun4i_dma_config; 1249 priv->slave.device_terminate_all = sun4i_dma_terminate_all; 1250 priv->slave.copy_align = 2; 1251 priv->slave.src_addr_widths = BIT(DMA_SLAVE_BUSWIDTH_1_BYTE) | 1252 BIT(DMA_SLAVE_BUSWIDTH_2_BYTES) | 1253 BIT(DMA_SLAVE_BUSWIDTH_4_BYTES); 1254 priv->slave.dst_addr_widths = BIT(DMA_SLAVE_BUSWIDTH_1_BYTE) | 1255 BIT(DMA_SLAVE_BUSWIDTH_2_BYTES) | 1256 BIT(DMA_SLAVE_BUSWIDTH_4_BYTES); 1257 priv->slave.directions = BIT(DMA_DEV_TO_MEM) | 1258 BIT(DMA_MEM_TO_DEV); 1259 priv->slave.residue_granularity = DMA_RESIDUE_GRANULARITY_BURST; 1260 1261 priv->slave.dev = &pdev->dev; 1262 1263 priv->pchans = devm_kcalloc(&pdev->dev, priv->cfg->dma_nr_max_channels, 1264 sizeof(struct sun4i_dma_pchan), GFP_KERNEL); 1265 priv->vchans = devm_kcalloc(&pdev->dev, SUN4I_DMA_NR_MAX_VCHANS, 1266 sizeof(struct sun4i_dma_vchan), GFP_KERNEL); 1267 priv->pchans_used = devm_kcalloc(&pdev->dev, 1268 BITS_TO_LONGS(priv->cfg->dma_nr_max_channels), 1269 sizeof(unsigned long), GFP_KERNEL); 1270 if (!priv->vchans || !priv->pchans || !priv->pchans_used) 1271 return -ENOMEM; 1272 1273 /* 1274 * [0..priv->cfg->ndma_nr_max_channels) are normal pchans, and 1275 * [priv->cfg->ndma_nr_max_channels..priv->cfg->dma_nr_max_channels) are 1276 * dedicated ones 1277 */ 1278 for (i = 0; i < priv->cfg->ndma_nr_max_channels; i++) 1279 priv->pchans[i].base = priv->base + 1280 SUN4I_NDMA_CHANNEL_REG_BASE(i); 1281 1282 for (j = 0; i < priv->cfg->dma_nr_max_channels; i++, j++) { 1283 priv->pchans[i].base = priv->base + 1284 SUN4I_DDMA_CHANNEL_REG_BASE(j); 1285 priv->pchans[i].is_dedicated = 1; 1286 } 1287 1288 for (i = 0; i < SUN4I_DMA_NR_MAX_VCHANS; i++) { 1289 struct sun4i_dma_vchan *vchan = &priv->vchans[i]; 1290 1291 spin_lock_init(&vchan->vc.lock); 1292 vchan->vc.desc_free = sun4i_dma_free_contract; 1293 vchan_init(&vchan->vc, &priv->slave); 1294 } 1295 1296 ret = clk_prepare_enable(priv->clk); 1297 if (ret) { 1298 dev_err(&pdev->dev, "Couldn't enable the clock\n"); 1299 return ret; 1300 } 1301 1302 /* Deassert the reset control */ 1303 ret = reset_control_deassert(priv->rst); 1304 if (ret) { 1305 dev_err(&pdev->dev, 1306 "Failed to deassert the reset control\n"); 1307 goto err_clk_disable; 1308 } 1309 1310 /* 1311 * Make sure the IRQs are all disabled and accounted for. The bootloader 1312 * likes to leave these dirty 1313 */ 1314 writel(0, priv->base + SUN4I_DMA_IRQ_ENABLE_REG); 1315 writel(0xFFFFFFFF, priv->base + SUN4I_DMA_IRQ_PENDING_STATUS_REG); 1316 1317 ret = devm_request_irq(&pdev->dev, priv->irq, sun4i_dma_interrupt, 1318 0, dev_name(&pdev->dev), priv); 1319 if (ret) { 1320 dev_err(&pdev->dev, "Cannot request IRQ\n"); 1321 goto err_clk_disable; 1322 } 1323 1324 ret = dma_async_device_register(&priv->slave); 1325 if (ret) { 1326 dev_warn(&pdev->dev, "Failed to register DMA engine device\n"); 1327 goto err_clk_disable; 1328 } 1329 1330 ret = of_dma_controller_register(pdev->dev.of_node, sun4i_dma_of_xlate, 1331 priv); 1332 if (ret) { 1333 dev_err(&pdev->dev, "of_dma_controller_register failed\n"); 1334 goto err_dma_unregister; 1335 } 1336 1337 dev_dbg(&pdev->dev, "Successfully probed SUN4I_DMA\n"); 1338 1339 return 0; 1340 1341 err_dma_unregister: 1342 dma_async_device_unregister(&priv->slave); 1343 err_clk_disable: 1344 clk_disable_unprepare(priv->clk); 1345 return ret; 1346 } 1347 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki