All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
	linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org
Cc: llvm@lists.linux.dev, oe-kbuild-all@lists.linux.dev,
	Heikki Krogerus <heikki.krogerus@linux.intel.com>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Subject: Re: [PATCH v1 1/1] usb: typec: stusb160x: Make use of i2c_get_match_data()
Date: Thu, 26 Sep 2024 03:53:35 +0800	[thread overview]
Message-ID: <202409260316.cTVWA6xM-lkp@intel.com> (raw)
In-Reply-To: <20240925133952.1067949-1-andriy.shevchenko@linux.intel.com>

Hi Andy,

kernel test robot noticed the following build errors:

[auto build test ERROR on usb/usb-testing]
[also build test ERROR on usb/usb-next usb/usb-linus linus/master v6.11 next-20240925]
[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/Andy-Shevchenko/usb-typec-stusb160x-Make-use-of-i2c_get_match_data/20240925-223551
base:   https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git usb-testing
patch link:    https://lore.kernel.org/r/20240925133952.1067949-1-andriy.shevchenko%40linux.intel.com
patch subject: [PATCH v1 1/1] usb: typec: stusb160x: Make use of i2c_get_match_data()
config: s390-allmodconfig (https://download.01.org/0day-ci/archive/20240926/202409260316.cTVWA6xM-lkp@intel.com/config)
compiler: clang version 20.0.0git (https://github.com/llvm/llvm-project 7773243d9916f98ba0ffce0c3a960e4aa9f03e81)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240926/202409260316.cTVWA6xM-lkp@intel.com/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@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202409260316.cTVWA6xM-lkp@intel.com/

All errors (new ones prefixed by >>):

   In file included from drivers/usb/typec/stusb160x.c:10:
   In file included from include/linux/i2c.h:13:
   In file included from include/linux/acpi.h:14:
   In file included from include/linux/device.h:32:
   In file included from include/linux/device/driver.h:21:
   In file included from include/linux/module.h:19:
   In file included from include/linux/elf.h:6:
   In file included from arch/s390/include/asm/elf.h:181:
   In file included from arch/s390/include/asm/mmu_context.h:11:
   In file included from arch/s390/include/asm/pgalloc.h:18:
   In file included from include/linux/mm.h:2232:
   include/linux/vmstat.h:503:43: warning: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Wenum-enum-conversion]
     503 |         return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
         |                            ~~~~~~~~~~~~~~~~~~~~~ ^
     504 |                            item];
         |                            ~~~~
   include/linux/vmstat.h:510:43: warning: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Wenum-enum-conversion]
     510 |         return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
         |                            ~~~~~~~~~~~~~~~~~~~~~ ^
     511 |                            NR_VM_NUMA_EVENT_ITEMS +
         |                            ~~~~~~~~~~~~~~~~~~~~~~
   include/linux/vmstat.h:517:36: warning: arithmetic between different enumeration types ('enum node_stat_item' and 'enum lru_list') [-Wenum-enum-conversion]
     517 |         return node_stat_name(NR_LRU_BASE + lru) + 3; // skip "nr_"
         |                               ~~~~~~~~~~~ ^ ~~~
   include/linux/vmstat.h:523:43: warning: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Wenum-enum-conversion]
     523 |         return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
         |                            ~~~~~~~~~~~~~~~~~~~~~ ^
     524 |                            NR_VM_NUMA_EVENT_ITEMS +
         |                            ~~~~~~~~~~~~~~~~~~~~~~
   In file included from drivers/usb/typec/stusb160x.c:14:
   In file included from include/linux/regmap.h:20:
   In file included from include/linux/iopoll.h:14:
   In file included from include/linux/io.h:14:
   In file included from arch/s390/include/asm/io.h:93:
   include/asm-generic/io.h:548:31: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
     548 |         val = __raw_readb(PCI_IOBASE + addr);
         |                           ~~~~~~~~~~ ^
   include/asm-generic/io.h:561:61: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
     561 |         val = __le16_to_cpu((__le16 __force)__raw_readw(PCI_IOBASE + addr));
         |                                                         ~~~~~~~~~~ ^
   include/uapi/linux/byteorder/big_endian.h:37:59: note: expanded from macro '__le16_to_cpu'
      37 | #define __le16_to_cpu(x) __swab16((__force __u16)(__le16)(x))
         |                                                           ^
   include/uapi/linux/swab.h:102:54: note: expanded from macro '__swab16'
     102 | #define __swab16(x) (__u16)__builtin_bswap16((__u16)(x))
         |                                                      ^
   In file included from drivers/usb/typec/stusb160x.c:14:
   In file included from include/linux/regmap.h:20:
   In file included from include/linux/iopoll.h:14:
   In file included from include/linux/io.h:14:
   In file included from arch/s390/include/asm/io.h:93:
   include/asm-generic/io.h:574:61: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
     574 |         val = __le32_to_cpu((__le32 __force)__raw_readl(PCI_IOBASE + addr));
         |                                                         ~~~~~~~~~~ ^
   include/uapi/linux/byteorder/big_endian.h:35:59: note: expanded from macro '__le32_to_cpu'
      35 | #define __le32_to_cpu(x) __swab32((__force __u32)(__le32)(x))
         |                                                           ^
   include/uapi/linux/swab.h:115:54: note: expanded from macro '__swab32'
     115 | #define __swab32(x) (__u32)__builtin_bswap32((__u32)(x))
         |                                                      ^
   In file included from drivers/usb/typec/stusb160x.c:14:
   In file included from include/linux/regmap.h:20:
   In file included from include/linux/iopoll.h:14:
   In file included from include/linux/io.h:14:
   In file included from arch/s390/include/asm/io.h:93:
   include/asm-generic/io.h:585:33: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
     585 |         __raw_writeb(value, PCI_IOBASE + addr);
         |                             ~~~~~~~~~~ ^
   include/asm-generic/io.h:595:59: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
     595 |         __raw_writew((u16 __force)cpu_to_le16(value), PCI_IOBASE + addr);
         |                                                       ~~~~~~~~~~ ^
   include/asm-generic/io.h:605:59: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
     605 |         __raw_writel((u32 __force)cpu_to_le32(value), PCI_IOBASE + addr);
         |                                                       ~~~~~~~~~~ ^
   include/asm-generic/io.h:693:20: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
     693 |         readsb(PCI_IOBASE + addr, buffer, count);
         |                ~~~~~~~~~~ ^
   include/asm-generic/io.h:701:20: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
     701 |         readsw(PCI_IOBASE + addr, buffer, count);
         |                ~~~~~~~~~~ ^
   include/asm-generic/io.h:709:20: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
     709 |         readsl(PCI_IOBASE + addr, buffer, count);
         |                ~~~~~~~~~~ ^
   include/asm-generic/io.h:718:21: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
     718 |         writesb(PCI_IOBASE + addr, buffer, count);
         |                 ~~~~~~~~~~ ^
   include/asm-generic/io.h:727:21: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
     727 |         writesw(PCI_IOBASE + addr, buffer, count);
         |                 ~~~~~~~~~~ ^
   include/asm-generic/io.h:736:21: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
     736 |         writesl(PCI_IOBASE + addr, buffer, count);
         |                 ~~~~~~~~~~ ^
>> drivers/usb/typec/stusb160x.c:647:37: error: incompatible pointer types passing 'struct device *' to parameter of type 'const struct i2c_client *' [-Werror,-Wincompatible-pointer-types]
     647 |         regmap_config = i2c_get_match_data(&client->dev);
         |                                            ^~~~~~~~~~~~
   include/linux/i2c.h:360:57: note: passing argument to parameter 'client' here
     360 | const void *i2c_get_match_data(const struct i2c_client *client);
         |                                                         ^
   16 warnings and 1 error generated.


vim +647 drivers/usb/typec/stusb160x.c

   633	
   634	static int stusb160x_probe(struct i2c_client *client)
   635	{
   636		const struct regmap_config *regmap_config;
   637		struct stusb160x *chip;
   638		struct fwnode_handle *fwnode;
   639		int ret;
   640	
   641		chip = devm_kzalloc(&client->dev, sizeof(struct stusb160x), GFP_KERNEL);
   642		if (!chip)
   643			return -ENOMEM;
   644	
   645		i2c_set_clientdata(client, chip);
   646	
 > 647		regmap_config = i2c_get_match_data(&client->dev);
   648	
   649		chip->regmap = devm_regmap_init_i2c(client, regmap_config);
   650		if (IS_ERR(chip->regmap)) {
   651			ret = PTR_ERR(chip->regmap);
   652			dev_err(&client->dev,
   653				"Failed to allocate register map:%d\n", ret);
   654			return ret;
   655		}
   656	
   657		chip->dev = &client->dev;
   658	
   659		chip->vsys_supply = devm_regulator_get_optional(chip->dev, "vsys");
   660		if (IS_ERR(chip->vsys_supply)) {
   661			ret = PTR_ERR(chip->vsys_supply);
   662			if (ret != -ENODEV)
   663				return ret;
   664			chip->vsys_supply = NULL;
   665		}
   666	
   667		chip->vdd_supply = devm_regulator_get_optional(chip->dev, "vdd");
   668		if (IS_ERR(chip->vdd_supply)) {
   669			ret = PTR_ERR(chip->vdd_supply);
   670			if (ret != -ENODEV)
   671				return ret;
   672			chip->vdd_supply = NULL;
   673		}
   674	
   675		chip->vconn_supply = devm_regulator_get_optional(chip->dev, "vconn");
   676		if (IS_ERR(chip->vconn_supply)) {
   677			ret = PTR_ERR(chip->vconn_supply);
   678			if (ret != -ENODEV)
   679				return ret;
   680			chip->vconn_supply = NULL;
   681		}
   682	
   683		fwnode = device_get_named_child_node(chip->dev, "connector");
   684		if (!fwnode)
   685			return -ENODEV;
   686	
   687		/*
   688		 * This fwnode has a "compatible" property, but is never populated as a
   689		 * struct device. Instead we simply parse it to read the properties.
   690		 * This it breaks fw_devlink=on. To maintain backward compatibility
   691		 * with existing DT files, we work around this by deleting any
   692		 * fwnode_links to/from this fwnode.
   693		 */
   694		fw_devlink_purge_absent_suppliers(fwnode);
   695	
   696		/*
   697		 * When both VDD and VSYS power supplies are present, the low power
   698		 * supply VSYS is selected when VSYS voltage is above 3.1 V.
   699		 * Otherwise VDD is selected.
   700		 */
   701		if (chip->vdd_supply &&
   702		    (!chip->vsys_supply ||
   703		     (regulator_get_voltage(chip->vsys_supply) <= 3100000)))
   704			chip->main_supply = chip->vdd_supply;
   705		else
   706			chip->main_supply = chip->vsys_supply;
   707	
   708		if (chip->main_supply) {
   709			ret = regulator_enable(chip->main_supply);
   710			if (ret) {
   711				dev_err(chip->dev,
   712					"Failed to enable main supply: %d\n", ret);
   713				goto fwnode_put;
   714			}
   715		}
   716	
   717		/* Get configuration from chip */
   718		ret = stusb160x_get_caps(chip);
   719		if (ret) {
   720			dev_err(chip->dev, "Failed to get port caps: %d\n", ret);
   721			goto main_reg_disable;
   722		}
   723	
   724		/* Get optional re-configuration from device tree */
   725		ret = stusb160x_get_fw_caps(chip, fwnode);
   726		if (ret) {
   727			dev_err(chip->dev, "Failed to get connector caps: %d\n", ret);
   728			goto main_reg_disable;
   729		}
   730	
   731		ret = stusb160x_chip_init(chip);
   732		if (ret) {
   733			dev_err(chip->dev, "Failed to init port: %d\n", ret);
   734			goto main_reg_disable;
   735		}
   736	
   737		chip->port = typec_register_port(chip->dev, &chip->capability);
   738		if (IS_ERR(chip->port)) {
   739			ret = PTR_ERR(chip->port);
   740			goto all_reg_disable;
   741		}
   742	
   743		/*
   744		 * Default power operation mode initialization: will be updated upon
   745		 * attach/detach interrupt
   746		 */
   747		typec_set_pwr_opmode(chip->port, chip->pwr_opmode);
   748	
   749		if (client->irq) {
   750			chip->role_sw = fwnode_usb_role_switch_get(fwnode);
   751			if (IS_ERR(chip->role_sw)) {
   752				ret = dev_err_probe(chip->dev, PTR_ERR(chip->role_sw),
   753						    "Failed to get usb role switch\n");
   754				goto port_unregister;
   755			}
   756	
   757			ret = stusb160x_irq_init(chip, client->irq);
   758			if (ret)
   759				goto role_sw_put;
   760		} else {
   761			/*
   762			 * If Source or Dual power role, need to enable VDD supply
   763			 * providing Vbus if present. In case of interrupt support,
   764			 * VDD supply will be dynamically managed upon attach/detach
   765			 * interrupt.
   766			 */
   767			if (chip->port_type != TYPEC_PORT_SNK && chip->vdd_supply) {
   768				ret = regulator_enable(chip->vdd_supply);
   769				if (ret) {
   770					dev_err(chip->dev,
   771						"Failed to enable VDD supply: %d\n",
   772						ret);
   773					goto port_unregister;
   774				}
   775				chip->vbus_on = true;
   776			}
   777		}
   778	
   779		fwnode_handle_put(fwnode);
   780	
   781		return 0;
   782	
   783	role_sw_put:
   784		if (chip->role_sw)
   785			usb_role_switch_put(chip->role_sw);
   786	port_unregister:
   787		typec_unregister_port(chip->port);
   788	all_reg_disable:
   789		if (stusb160x_get_vconn(chip))
   790			stusb160x_set_vconn(chip, false);
   791	main_reg_disable:
   792		if (chip->main_supply)
   793			regulator_disable(chip->main_supply);
   794	fwnode_put:
   795		fwnode_handle_put(fwnode);
   796	
   797		return ret;
   798	}
   799	

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

      parent reply	other threads:[~2024-09-25 19:54 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-09-25 13:39 [PATCH v1 1/1] usb: typec: stusb160x: Make use of i2c_get_match_data() Andy Shevchenko
2024-09-25 19:22 ` kernel test robot
2024-09-25 19:53 ` kernel test robot [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202409260316.cTVWA6xM-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=andriy.shevchenko@linux.intel.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=heikki.krogerus@linux.intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=llvm@lists.linux.dev \
    --cc=oe-kbuild-all@lists.linux.dev \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.