Re: [PATCH v8] hwmon:Driver for Delta power supplies Q54SJ108A2

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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


[Index of Archives]     [LM Sensors]     [Linux Sound]     [ALSA Users]     [ALSA Devel]     [Linux Audio Users]     [Linux Media]     [Kernel]     [Gimp]     [Yosemite News]     [Linux Media]

  Powered by Linux