Re: [PATCH v8] hwmon:Driver for Delta power supplies Q54SJ108A2
From: kernel test robot
Date: Tue Nov 10 2020 - 09:31:52 EST
Hi "xiao.ma",
Thank you for the patch! Perhaps something to improve:
[auto build test WARNING on hwmon/hwmon-next]
[also build test WARNING on v5.10-rc3 next-20201110]
[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]
url: https://github.com/0day-ci/linux/commits/xiao-ma/hwmon-Driver-for-Delta-power-supplies-Q54SJ108A2/20201109-153125
base: https://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging.git hwmon-next
config: powerpc-randconfig-r024-20201110 (attached as .config)
compiler: clang version 12.0.0 (https://github.com/llvm/llvm-project 4d81c8adb6ed9840257f6cb6b93f60856d422a15)
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# install powerpc cross compiling tool for clang build
# apt-get install binutils-powerpc-linux-gnu
# https://github.com/0day-ci/linux/commit/f47495409701f52f17c950668c73b20ba8ab3f66
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review xiao-ma/hwmon-Driver-for-Delta-power-supplies-Q54SJ108A2/20201109-153125
git checkout f47495409701f52f17c950668c73b20ba8ab3f66
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=powerpc
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@xxxxxxxxx>
All warnings (new ones prefixed by >>):
In file included from include/linux/kernel_stat.h:9:
In file included from include/linux/interrupt.h:11:
In file included from include/linux/hardirq.h:10:
In file included from arch/powerpc/include/asm/hardirq.h:6:
In file included from include/linux/irq.h:20:
In file included from include/linux/io.h:13:
In file included from arch/powerpc/include/asm/io.h:604:
arch/powerpc/include/asm/io-defs.h:47:1: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
DEF_PCI_AC_NORET(insl, (unsigned long p, void *b, unsigned long c),
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
arch/powerpc/include/asm/io.h:601:3: note: expanded from macro 'DEF_PCI_AC_NORET'
__do_##name al; \
^~~~~~~~~~~~~~
<scratch space>:127:1: note: expanded from here
__do_insl
^
arch/powerpc/include/asm/io.h:543:56: note: expanded from macro '__do_insl'
#define __do_insl(p, b, n) readsl((PCI_IO_ADDR)_IO_BASE+(p), (b), (n))
~~~~~~~~~~~~~~~~~~~~~^
In file included from drivers/hwmon/pmbus/q54sj108a2.c:13:
In file included from drivers/hwmon/pmbus/pmbus.h:13:
In file included from include/linux/regulator/driver.h:18:
In file included from include/linux/regulator/consumer.h:35:
In file included from include/linux/suspend.h:5:
In file included from include/linux/swap.h:9:
In file included from include/linux/memcontrol.h:13:
In file included from include/linux/cgroup.h:26:
In file included from include/linux/kernel_stat.h:9:
In file included from include/linux/interrupt.h:11:
In file included from include/linux/hardirq.h:10:
In file included from arch/powerpc/include/asm/hardirq.h:6:
In file included from include/linux/irq.h:20:
In file included from include/linux/io.h:13:
In file included from arch/powerpc/include/asm/io.h:604:
arch/powerpc/include/asm/io-defs.h:49:1: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
DEF_PCI_AC_NORET(outsb, (unsigned long p, const void *b, unsigned long c),
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
arch/powerpc/include/asm/io.h:601:3: note: expanded from macro 'DEF_PCI_AC_NORET'
__do_##name al; \
^~~~~~~~~~~~~~
<scratch space>:129:1: note: expanded from here
__do_outsb
^
arch/powerpc/include/asm/io.h:544:58: note: expanded from macro '__do_outsb'
#define __do_outsb(p, b, n) writesb((PCI_IO_ADDR)_IO_BASE+(p),(b),(n))
~~~~~~~~~~~~~~~~~~~~~^
In file included from drivers/hwmon/pmbus/q54sj108a2.c:13:
In file included from drivers/hwmon/pmbus/pmbus.h:13:
In file included from include/linux/regulator/driver.h:18:
In file included from include/linux/regulator/consumer.h:35:
In file included from include/linux/suspend.h:5:
In file included from include/linux/swap.h:9:
In file included from include/linux/memcontrol.h:13:
In file included from include/linux/cgroup.h:26:
In file included from include/linux/kernel_stat.h:9:
In file included from include/linux/interrupt.h:11:
In file included from include/linux/hardirq.h:10:
In file included from arch/powerpc/include/asm/hardirq.h:6:
In file included from include/linux/irq.h:20:
In file included from include/linux/io.h:13:
In file included from arch/powerpc/include/asm/io.h:604:
arch/powerpc/include/asm/io-defs.h:51:1: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
DEF_PCI_AC_NORET(outsw, (unsigned long p, const void *b, unsigned long c),
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
arch/powerpc/include/asm/io.h:601:3: note: expanded from macro 'DEF_PCI_AC_NORET'
__do_##name al; \
^~~~~~~~~~~~~~
<scratch space>:131:1: note: expanded from here
__do_outsw
^
arch/powerpc/include/asm/io.h:545:58: note: expanded from macro '__do_outsw'
#define __do_outsw(p, b, n) writesw((PCI_IO_ADDR)_IO_BASE+(p),(b),(n))
~~~~~~~~~~~~~~~~~~~~~^
In file included from drivers/hwmon/pmbus/q54sj108a2.c:13:
In file included from drivers/hwmon/pmbus/pmbus.h:13:
In file included from include/linux/regulator/driver.h:18:
In file included from include/linux/regulator/consumer.h:35:
In file included from include/linux/suspend.h:5:
In file included from include/linux/swap.h:9:
In file included from include/linux/memcontrol.h:13:
In file included from include/linux/cgroup.h:26:
In file included from include/linux/kernel_stat.h:9:
In file included from include/linux/interrupt.h:11:
In file included from include/linux/hardirq.h:10:
In file included from arch/powerpc/include/asm/hardirq.h:6:
In file included from include/linux/irq.h:20:
In file included from include/linux/io.h:13:
In file included from arch/powerpc/include/asm/io.h:604:
arch/powerpc/include/asm/io-defs.h:53:1: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
DEF_PCI_AC_NORET(outsl, (unsigned long p, const void *b, unsigned long c),
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
arch/powerpc/include/asm/io.h:601:3: note: expanded from macro 'DEF_PCI_AC_NORET'
__do_##name al; \
^~~~~~~~~~~~~~
<scratch space>:133:1: note: expanded from here
__do_outsl
^
arch/powerpc/include/asm/io.h:546:58: note: expanded from macro '__do_outsl'
#define __do_outsl(p, b, n) writesl((PCI_IO_ADDR)_IO_BASE+(p),(b),(n))
~~~~~~~~~~~~~~~~~~~~~^
>> drivers/hwmon/pmbus/q54sj108a2.c:293:13: warning: cast to smaller integer type 'enum chips' from 'const void *' [-Wvoid-pointer-to-enum-cast]
chip_id = (enum chips)of_device_get_match_data(dev);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/hwmon/pmbus/q54sj108a2.c:333:56: error: too many arguments to function call, expected 2, have 3
ret = pmbus_do_probe(client, &q54sj108a2_id[chip_id], &q54sj108a2_info[chip_id]);
~~~~~~~~~~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~
drivers/hwmon/pmbus/pmbus.h:492:5: note: 'pmbus_do_probe' declared here
int pmbus_do_probe(struct i2c_client *client, struct pmbus_driver_info *info);
^
13 warnings and 1 error generated.
vim +293 drivers/hwmon/pmbus/q54sj108a2.c
275
276 static int q54sj108a2_probe(struct i2c_client *client)
277 {
278 struct device *dev = &client->dev;
279 u8 buf[I2C_SMBUS_BLOCK_MAX + 1];
280 enum chips chip_id;
281 int ret, i;
282 struct dentry *debugfs;
283 struct dentry *q54sj108a2_dir;
284 struct q54sj108a2_data *psu;
285
286 if (!i2c_check_functionality(client->adapter,
287 I2C_FUNC_SMBUS_BYTE_DATA |
288 I2C_FUNC_SMBUS_WORD_DATA |
289 I2C_FUNC_SMBUS_BLOCK_DATA))
290 return -ENODEV;
291
292 if (client->dev.of_node)
> 293 chip_id = (enum chips)of_device_get_match_data(dev);
294 else
295 chip_id = i2c_match_id(q54sj108a2_id, client)->driver_data;
296
297 ret = i2c_smbus_read_block_data(client, PMBUS_MFR_ID, buf);
298 if (ret < 0) {
299 dev_err(&client->dev, "Failed to read Manufacturer ID\n");
300 return ret;
301 }
302 if (ret != 5 || strncmp(buf, "DELTA", 5)) {
303 buf[ret] = '\0';
304 dev_err(dev, "Unsupported Manufacturer ID '%s'\n", buf);
305 return -ENODEV;
306 }
307
308 /*
309 * The chips support reading PMBUS_MFR_MODEL.
310 */
311 ret = i2c_smbus_read_block_data(client, PMBUS_MFR_MODEL, buf);
312 if (ret < 0) {
313 dev_err(dev, "Failed to read Manufacturer Model\n");
314 return ret;
315 }
316 if (ret != 14 || strncmp(buf, "Q54SJ108A2", 10)) {
317 buf[ret] = '\0';
318 dev_err(dev, "Unsupported Manufacturer Model '%s'\n", buf);
319 return -ENODEV;
320 }
321
322 ret = i2c_smbus_read_block_data(client, PMBUS_MFR_REVISION, buf);
323 if (ret < 0) {
324 dev_err(dev, "Failed to read Manufacturer Revision\n");
325 return ret;
326 }
327 if (ret != 4 || buf[0] != 'S') {
328 buf[ret] = '\0';
329 dev_err(dev, "Unsupported Manufacturer Revision '%s'\n", buf);
330 return -ENODEV;
331 }
332
333 ret = pmbus_do_probe(client, &q54sj108a2_id[chip_id], &q54sj108a2_info[chip_id]);
334 if (ret)
335 return ret;
336
337 psu = devm_kzalloc(&client->dev, sizeof(*psu), GFP_KERNEL);
338 if (!psu)
339 return 0;
340
341 psu->client = client;
342
343 debugfs = pmbus_get_debugfs_dir(client);
344
345 q54sj108a2_dir = debugfs_create_dir(client->name, debugfs);
346
347 for (i = 0; i < Q54SJ108A2_DEBUGFS_NUM_ENTRIES; ++i)
348 psu->debugfs_entries[i] = i;
349
350 debugfs_create_file("operation", 0644, q54sj108a2_dir,
351 &psu->debugfs_entries[Q54SJ108A2_DEBUGFS_OPERATION],
352 &q54sj108a2_fops);
353 debugfs_create_file("clear_fault", 0200, q54sj108a2_dir,
354 &psu->debugfs_entries[Q54SJ108A2_DEBUGFS_CLEARFAULT],
355 &q54sj108a2_fops);
356 debugfs_create_file("write_protect", 0444, q54sj108a2_dir,
357 &psu->debugfs_entries[Q54SJ108A2_DEBUGFS_WRITEPROTECT],
358 &q54sj108a2_fops);
359 debugfs_create_file("store_default", 0200, q54sj108a2_dir,
360 &psu->debugfs_entries[Q54SJ108A2_DEBUGFS_STOREDEFAULT],
361 &q54sj108a2_fops);
362 debugfs_create_file("vo_ov_response", 0644, q54sj108a2_dir,
363 &psu->debugfs_entries[Q54SJ108A2_DEBUGFS_VOOV_RESPONSE],
364 &q54sj108a2_fops);
365 debugfs_create_file("io_oc_response", 0644, q54sj108a2_dir,
366 &psu->debugfs_entries[Q54SJ108A2_DEBUGFS_IOOC_RESPONSE],
367 &q54sj108a2_fops);
368 debugfs_create_file("pmbus_revision", 0444, q54sj108a2_dir,
369 &psu->debugfs_entries[Q54SJ108A2_DEBUGFS_PMBUS_VERSION],
370 &q54sj108a2_fops);
371 debugfs_create_file("mfr_id", 0444, q54sj108a2_dir,
372 &psu->debugfs_entries[Q54SJ108A2_DEBUGFS_MFR_ID],
373 &q54sj108a2_fops);
374 debugfs_create_file("mfr_model", 0444, q54sj108a2_dir,
375 &psu->debugfs_entries[Q54SJ108A2_DEBUGFS_MFR_MODEL],
376 &q54sj108a2_fops);
377 debugfs_create_file("mfr_revision", 0444, q54sj108a2_dir,
378 &psu->debugfs_entries[Q54SJ108A2_DEBUGFS_MFR_REVISION],
379 &q54sj108a2_fops);
380 debugfs_create_file("mfr_location", 0444, q54sj108a2_dir,
381 &psu->debugfs_entries[Q54SJ108A2_DEBUGFS_MFR_LOCATION],
382 &q54sj108a2_fops);
383 debugfs_create_file("blackbox_erase", 0200, q54sj108a2_dir,
384 &psu->debugfs_entries[Q54SJ108A2_DEBUGFS_BLACKBOX_ERASE],
385 &q54sj108a2_fops);
386 debugfs_create_file("blackbox_read_offset", 0444, q54sj108a2_dir,
387 &psu->debugfs_entries[Q54SJ108A2_DEBUGFS_BLACKBOX_READ_OFFSET],
388 &q54sj108a2_fops);
389 debugfs_create_file("blackbox_set_offset", 0200, q54sj108a2_dir,
390 &psu->debugfs_entries[Q54SJ108A2_DEBUGFS_BLACKBOX_SET_OFFSET],
391 &q54sj108a2_fops);
392 debugfs_create_file("blackbox_read", 0444, q54sj108a2_dir,
393 &psu->debugfs_entries[Q54SJ108A2_DEBUGFS_BLACKBOX_READ],
394 &q54sj108a2_fops);
395 debugfs_create_file("flash_key", 0444, q54sj108a2_dir,
396 &psu->debugfs_entries[Q54SJ108A2_DEBUGFS_FLASH_KEY],
397 &q54sj108a2_fops);
398
399 return 0;
400 }
401
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx
Attachment:
.config.gz
Description: application/gzip