Re: [PATCH v14] i2c: Add drivers for the AMD PCIe MP2 I2C controller

From: kbuild test robot
Date: Wed Dec 26 2018 - 15:52:13 EST


Hi Elie,

I love your patch! Yet something to improve:

[auto build test ERROR on wsa/i2c/for-next]
[also build test ERROR on v4.20 next-20181224]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url: https://github.com/0day-ci/linux/commits/Elie-Morisse/i2c-Add-drivers-for-the-AMD-PCIe-MP2-I2C-controller/20181223-034458
base: https://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux.git i2c/for-next
config: i386-randconfig-x013-12261115 (attached as .config)
compiler: gcc-7 (Debian 7.3.0-1) 7.3.0
reproduce:
# save the attached .config to linux build tree
make ARCH=i386

All errors (new ones prefixed by >>):

drivers/i2c/busses/i2c-amd-mp2-plat.c: In function 'i2c_amd_probe':
>> drivers/i2c/busses/i2c-amd-mp2-plat.c:294:17: error: 'struct amd_i2c_common' has no member named 'suspend'
i2c_dev->common.suspend = &i2c_amd_suspend;
^
>> drivers/i2c/busses/i2c-amd-mp2-plat.c:294:29: error: 'i2c_amd_suspend' undeclared (first use in this function); did you mean 'i2c_amd_func'?
i2c_dev->common.suspend = &i2c_amd_suspend;
^~~~~~~~~~~~~~~
i2c_amd_func
drivers/i2c/busses/i2c-amd-mp2-plat.c:294:29: note: each undeclared identifier is reported only once for each function it appears in
>> drivers/i2c/busses/i2c-amd-mp2-plat.c:295:18: error: 'struct amd_i2c_common' has no member named 'resume'; did you mean 'reqcmd'?
i2c_dev->common.resume = &i2c_amd_resume;
^~~~~~
reqcmd
>> drivers/i2c/busses/i2c-amd-mp2-plat.c:295:28: error: 'i2c_amd_resume' undeclared (first use in this function); did you mean 'i2c_amd_probe'?
i2c_dev->common.resume = &i2c_amd_resume;
^~~~~~~~~~~~~~
i2c_amd_probe

vim +294 drivers/i2c/busses/i2c-amd-mp2-plat.c

263
264 static int i2c_amd_probe(struct platform_device *pdev)
265 {
266 int ret;
267 struct amd_i2c_dev *i2c_dev;
268 acpi_handle handle = ACPI_HANDLE(&pdev->dev);
269 struct acpi_device *adev;
270 struct amd_mp2_dev *mp2_dev;
271 const char *uid;
272
273 if (acpi_bus_get_device(handle, &adev))
274 return -ENODEV;
275
276 /* The ACPI namespace doesn't contain information about which MP2 PCI
277 * device an AMDI0011 ACPI device is related to, so assume that there's
278 * only one MP2 PCI device per system.
279 */
280 mp2_dev = amd_mp2_find_device();
281 if (!mp2_dev)
282 /* The MP2 PCI device might get probed later */
283 return -EPROBE_DEFER;
284
285 i2c_dev = devm_kzalloc(&pdev->dev, sizeof(*i2c_dev), GFP_KERNEL);
286 if (!i2c_dev)
287 return -ENOMEM;
288
289 i2c_dev->common.mp2_dev = mp2_dev;
290 i2c_dev->pdev = pdev;
291 platform_set_drvdata(pdev, i2c_dev);
292
293 i2c_dev->common.cmd_completion = &i2c_amd_cmd_completion;
> 294 i2c_dev->common.suspend = &i2c_amd_suspend;
> 295 i2c_dev->common.resume = &i2c_amd_resume;
296
297 uid = adev->pnp.unique_id;
298 if (!uid) {
299 dev_err(&pdev->dev, "missing UID/bus id!\n");
300 return -EINVAL;
301 } else if (strcmp(uid, "0") == 0) {
302 i2c_dev->common.bus_id = 0;
303 } else if (strcmp(uid, "1") == 0) {
304 i2c_dev->common.bus_id = 1;
305 } else {
306 dev_err(&pdev->dev, "incorrect UID/bus id \"%s\"!\n", uid);
307 return -EINVAL;
308 }
309 dev_dbg(&pdev->dev, "bus id is %u\n", i2c_dev->common.bus_id);
310
311 /* Register the adapter */
312 amd_mp2_pm_runtime_get(mp2_dev);
313
314 i2c_dev->common.reqcmd = i2c_none;
315 if (amd_mp2_register_cb(&i2c_dev->common))
316 return -EINVAL;
317 device_link_add(&i2c_dev->pdev->dev, &mp2_dev->pci_dev->dev,
318 DL_FLAG_AUTOREMOVE_CONSUMER);
319
320 i2c_dev->common.i2c_speed = i2c_amd_get_bus_speed(pdev);
321
322 /* Setup i2c adapter description */
323 i2c_dev->adap.owner = THIS_MODULE;
324 i2c_dev->adap.algo = &i2c_amd_algorithm;
325 i2c_dev->adap.quirks = &amd_i2c_dev_quirks;
326 i2c_dev->adap.dev.parent = &pdev->dev;
327 i2c_dev->adap.algo_data = i2c_dev;
328 i2c_dev->adap.nr = pdev->id;
329 i2c_dev->adap.timeout = AMD_I2C_TIMEOUT;
330 ACPI_COMPANION_SET(&i2c_dev->adap.dev, ACPI_COMPANION(&pdev->dev));
331 i2c_dev->adap.dev.of_node = pdev->dev.of_node;
332 snprintf(i2c_dev->adap.name, sizeof(i2c_dev->adap.name),
333 "AMD MP2 i2c bus %u", i2c_dev->common.bus_id);
334 i2c_set_adapdata(&i2c_dev->adap, i2c_dev);
335
336 init_completion(&i2c_dev->cmd_complete);
337
338 /* Enable the bus */
339 if (i2c_amd_enable_set(i2c_dev, true))
340 dev_err(&pdev->dev, "initial bus enable failed\n");
341
342 /* Attach to the i2c layer */
343 ret = i2c_add_numbered_adapter(&i2c_dev->adap);
344
345 amd_mp2_pm_runtime_put(mp2_dev);
346
347 if (ret < 0)
348 dev_err(&pdev->dev, "i2c add adapter failed = %d\n", ret);
349
350 return ret;
351 }
352

---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation

Attachment: .config.gz
Description: application/gzip