Re: [PATCH v2 3/5] mfd: sprd-sc27xx: Switch to devm_mfd_add_devices()

From: kernel test robot

Date: Sat Mar 28 2026 - 22:46:12 EST


Hi Otto,

kernel test robot noticed the following build warnings:

[auto build test WARNING on 85964cdcad0fac9a0eb7b87a0f9d88cc074b854c]

url: https://github.com/intel-lab-lkp/linux/commits/Otto-Pfl-ger/dt-bindings-rtc-sc2731-Add-compatible-for-SC2730/20260327-162827
base: 85964cdcad0fac9a0eb7b87a0f9d88cc074b854c
patch link: https://lore.kernel.org/r/20260325-sc27xx-mfd-cells-v2-3-d0ebb60aa4a7%40abscue.de
patch subject: [PATCH v2 3/5] mfd: sprd-sc27xx: Switch to devm_mfd_add_devices()
config: sparc64-allmodconfig (https://download.01.org/0day-ci/archive/20260329/202603291013.6DnmGjG3-lkp@xxxxxxxxx/config)
compiler: clang version 23.0.0git (https://github.com/llvm/llvm-project 054e11d1a17e5ba88bb1a8ef32fad3346e80b186)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260329/202603291013.6DnmGjG3-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/202603291013.6DnmGjG3-lkp@xxxxxxxxx/

All warnings (new ones prefixed by >>):

>> drivers/mfd/sprd-sc27xx-spi.c:188:14: warning: cast to smaller integer type 'enum sprd_pmic_type' from 'const void *' [-Wvoid-pointer-to-enum-cast]
188 | pmic_type = (enum sprd_pmic_type)of_device_get_match_data(&spi->dev);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 warning generated.


vim +188 drivers/mfd/sprd-sc27xx-spi.c

179
180 static int sprd_pmic_probe(struct spi_device *spi)
181 {
182 struct sprd_pmic *ddata;
183 enum sprd_pmic_type pmic_type;
184 const struct sprd_pmic_data *pdata;
185 const struct mfd_cell *cells;
186 int ret, i, num_cells;
187
> 188 pmic_type = (enum sprd_pmic_type)of_device_get_match_data(&spi->dev);
189
190 switch (pmic_type) {
191 case PMIC_TYPE_SC2730:
192 pdata = &sc2730_data;
193 cells = sc2730_devices;
194 num_cells = ARRAY_SIZE(sc2730_devices);
195 break;
196 case PMIC_TYPE_SC2731:
197 pdata = &sc2731_data;
198 cells = sc2731_devices;
199 num_cells = ARRAY_SIZE(sc2731_devices);
200 break;
201 default:
202 dev_err(&spi->dev, "Invalid device ID\n");
203 return -EINVAL;
204 }
205
206 ddata = devm_kzalloc(&spi->dev, sizeof(*ddata), GFP_KERNEL);
207 if (!ddata)
208 return -ENOMEM;
209
210 ddata->regmap = devm_regmap_init(&spi->dev, &sprd_pmic_regmap,
211 &spi->dev, &sprd_pmic_config);
212 if (IS_ERR(ddata->regmap)) {
213 ret = PTR_ERR(ddata->regmap);
214 dev_err(&spi->dev, "Failed to allocate register map %d\n", ret);
215 return ret;
216 }
217
218 spi_set_drvdata(spi, ddata);
219 ddata->dev = &spi->dev;
220 ddata->irq = spi->irq;
221 ddata->pdata = pdata;
222
223 ddata->irq_chip.name = dev_name(&spi->dev);
224 ddata->irq_chip.status_base =
225 pdata->irq_base + SPRD_PMIC_INT_MASK_STATUS;
226 ddata->irq_chip.unmask_base = pdata->irq_base + SPRD_PMIC_INT_EN;
227 ddata->irq_chip.ack_base = 0;
228 ddata->irq_chip.num_regs = 1;
229 ddata->irq_chip.num_irqs = pdata->num_irqs;
230
231 ddata->irqs = devm_kcalloc(&spi->dev,
232 pdata->num_irqs, sizeof(struct regmap_irq),
233 GFP_KERNEL);
234 if (!ddata->irqs)
235 return -ENOMEM;
236
237 ddata->irq_chip.irqs = ddata->irqs;
238 for (i = 0; i < pdata->num_irqs; i++)
239 ddata->irqs[i].mask = BIT(i);
240
241 ret = devm_regmap_add_irq_chip(&spi->dev, ddata->regmap, ddata->irq,
242 IRQF_ONESHOT, 0,
243 &ddata->irq_chip, &ddata->irq_data);
244 if (ret) {
245 dev_err(&spi->dev, "Failed to add PMIC irq chip %d\n", ret);
246 return ret;
247 }
248
249 ret = devm_mfd_add_devices(&spi->dev, PLATFORM_DEVID_AUTO,
250 cells, num_cells, NULL, 0,
251 regmap_irq_get_domain(ddata->irq_data));
252 if (ret) {
253 dev_err(&spi->dev, "Failed to populate sub-devices %d\n", ret);
254 return ret;
255 }
256
257 ret = devm_device_init_wakeup(&spi->dev);
258 if (ret)
259 return dev_err_probe(&spi->dev, ret, "Failed to init wakeup\n");
260
261 return 0;
262 }
263

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