All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: Patrick Rudolph <patrick.rudolph@9elements.com>,
	Peter Rosin <peda@axentia.se>
Cc: llvm@lists.linux.dev, kbuild-all@lists.01.org,
	Patrick Rudolph <patrick.rudolph@9elements.com>,
	linux-i2c@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 4/4] i2c-mux-pca954x: Add regulator support
Date: Tue, 14 Dec 2021 21:12:27 +0800	[thread overview]
Message-ID: <202112142101.s4i5cHhd-lkp@intel.com> (raw)
In-Reply-To: <20211214095021.572799-4-patrick.rudolph@9elements.com>

Hi Patrick,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on wsa/i2c/for-next]
[also build test WARNING on robh/for-next linux/master linus/master v5.16-rc5]
[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/Patrick-Rudolph/dt-bindings-i2c-Update-PCA954x/20211214-175258
base:   https://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux.git i2c/for-next
config: riscv-randconfig-r042-20211214 (https://download.01.org/0day-ci/archive/20211214/202112142101.s4i5cHhd-lkp@intel.com/config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project b6a2ddb6c8ac29412b1361810972e15221fa021c)
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 riscv cross compiling tool for clang build
        # apt-get install binutils-riscv64-linux-gnu
        # https://github.com/0day-ci/linux/commit/3498c52eb6aec09c78a3f07cdcb042897960f8ef
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Patrick-Rudolph/dt-bindings-i2c-Update-PCA954x/20211214-175258
        git checkout 3498c52eb6aec09c78a3f07cdcb042897960f8ef
        # save the config file to linux build tree
        mkdir build_dir
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=riscv SHELL=/bin/bash drivers/i2c/muxes/

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All warnings (new ones prefixed by >>):

>> drivers/i2c/muxes/i2c-mux-pca954x.c:502:58: warning: variable 'ret' is uninitialized when used here [-Wuninitialized]
                   dev_warn(dev, "Failed to get regulator for vcc: %d\n", ret);
                                                                          ^~~
   include/linux/dev_printk.h:146:70: note: expanded from macro 'dev_warn'
           dev_printk_index_wrap(_dev_warn, KERN_WARNING, dev, dev_fmt(fmt), ##__VA_ARGS__)
                                                                               ^~~~~~~~~~~
   include/linux/dev_printk.h:110:23: note: expanded from macro 'dev_printk_index_wrap'
                   _p_func(dev, fmt, ##__VA_ARGS__);                       \
                                       ^~~~~~~~~~~
   drivers/i2c/muxes/i2c-mux-pca954x.c:483:9: note: initialize the variable 'ret' to silence this warning
           int ret;
                  ^
                   = 0
   1 warning generated.


vim +/ret +502 drivers/i2c/muxes/i2c-mux-pca954x.c

   470	
   471	/*
   472	 * I2C init/probing/exit functions
   473	 */
   474	static int pca954x_probe(struct i2c_client *client,
   475				 const struct i2c_device_id *id)
   476	{
   477		struct i2c_adapter *adap = client->adapter;
   478		struct device *dev = &client->dev;
   479		struct gpio_desc *gpio;
   480		struct i2c_mux_core *muxc;
   481		struct pca954x *data;
   482		int num;
   483		int ret;
   484	
   485		if (!i2c_check_functionality(adap, I2C_FUNC_SMBUS_BYTE))
   486			return -ENODEV;
   487	
   488		muxc = i2c_mux_alloc(adap, dev, PCA954X_MAX_NCHANS, sizeof(*data), 0,
   489				     pca954x_select_chan, pca954x_deselect_mux);
   490		if (!muxc)
   491			return -ENOMEM;
   492	
   493		data = i2c_mux_priv(muxc);
   494	
   495		i2c_set_clientdata(client, muxc);
   496		data->client = client;
   497	
   498		data->supply = devm_regulator_get(dev, "vcc");
   499		if (IS_ERR(data->supply)) {
   500			if ((PTR_ERR(data->supply) == -EPROBE_DEFER))
   501				return -EPROBE_DEFER;
 > 502			dev_warn(dev, "Failed to get regulator for vcc: %d\n", ret);
   503		} else {
   504			ret = regulator_enable(data->supply);
   505			if (ret) {
   506				dev_err(dev, "Failed to enable regulator vcc\n");
   507				return ret;
   508			}
   509		}
   510	
   511		/* Reset the mux if a reset GPIO is specified. */
   512		gpio = devm_gpiod_get_optional(dev, "reset", GPIOD_OUT_HIGH);
   513		if (IS_ERR(gpio)) {
   514			ret = PTR_ERR(gpio);
   515			goto fail_cleanup;
   516		}
   517		if (gpio) {
   518			udelay(1);
   519			gpiod_set_value_cansleep(gpio, 0);
   520			/* Give the chip some time to recover. */
   521			udelay(1);
   522		}
   523	
   524		data->chip = device_get_match_data(dev);
   525		if (!data->chip)
   526			data->chip = &chips[id->driver_data];
   527	
   528		if (data->chip->id.manufacturer_id != I2C_DEVICE_ID_NONE) {
   529			struct i2c_device_identity id;
   530	
   531			ret = i2c_get_device_id(client, &id);
   532			if (ret && ret != -EOPNOTSUPP)
   533				goto fail_cleanup;
   534	
   535			if (!ret &&
   536			    (id.manufacturer_id != data->chip->id.manufacturer_id ||
   537			     id.part_id != data->chip->id.part_id)) {
   538				dev_warn(dev, "unexpected device id %03x-%03x-%x\n",
   539					 id.manufacturer_id, id.part_id,
   540					 id.die_revision);
   541				ret = -ENODEV;
   542				goto fail_cleanup;
   543			}
   544		}
   545	
   546		data->idle_state = MUX_IDLE_AS_IS;
   547		if (device_property_read_u32(dev, "idle-state", &data->idle_state)) {
   548			if (device_property_read_bool(dev, "i2c-mux-idle-disconnect"))
   549				data->idle_state = MUX_IDLE_DISCONNECT;
   550		}
   551	
   552		/*
   553		 * Write the mux register at addr to verify
   554		 * that the mux is in fact present. This also
   555		 * initializes the mux to a channel
   556		 * or disconnected state.
   557		 */
   558		ret = pca954x_init(client, data);
   559		if (ret < 0) {
   560			dev_warn(dev, "probe failed\n");
   561			ret = -ENODEV;
   562			goto fail_cleanup;
   563		}
   564	
   565		ret = pca954x_irq_setup(muxc);
   566		if (ret)
   567			goto fail_cleanup;
   568	
   569		/* Now create an adapter for each channel */
   570		for (num = 0; num < data->chip->nchans; num++) {
   571			ret = i2c_mux_add_adapter(muxc, 0, num, 0);
   572			if (ret)
   573				goto fail_cleanup;
   574		}
   575	
   576		if (data->irq) {
   577			ret = devm_request_threaded_irq(dev, data->client->irq,
   578							NULL, pca954x_irq_handler,
   579							IRQF_ONESHOT | IRQF_SHARED,
   580							"pca954x", data);
   581			if (ret)
   582				goto fail_cleanup;
   583		}
   584	
   585		/*
   586		 * The attr probably isn't going to be needed in most cases,
   587		 * so don't fail completely on error.
   588		 */
   589		device_create_file(dev, &dev_attr_idle_state);
   590	
   591		dev_info(dev, "registered %d multiplexed busses for I2C %s %s\n",
   592			 num, data->chip->muxtype == pca954x_ismux
   593					? "mux" : "switch", client->name);
   594	
   595		return 0;
   596	
   597	fail_cleanup:
   598		pca954x_cleanup(muxc);
   599		return ret;
   600	}
   601	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

WARNING: multiple messages have this Message-ID (diff)
From: kernel test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: Re: [PATCH 4/4] i2c-mux-pca954x: Add regulator support
Date: Tue, 14 Dec 2021 21:12:27 +0800	[thread overview]
Message-ID: <202112142101.s4i5cHhd-lkp@intel.com> (raw)
In-Reply-To: <20211214095021.572799-4-patrick.rudolph@9elements.com>

[-- Attachment #1: Type: text/plain, Size: 7221 bytes --]

Hi Patrick,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on wsa/i2c/for-next]
[also build test WARNING on robh/for-next linux/master linus/master v5.16-rc5]
[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/Patrick-Rudolph/dt-bindings-i2c-Update-PCA954x/20211214-175258
base:   https://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux.git i2c/for-next
config: riscv-randconfig-r042-20211214 (https://download.01.org/0day-ci/archive/20211214/202112142101.s4i5cHhd-lkp(a)intel.com/config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project b6a2ddb6c8ac29412b1361810972e15221fa021c)
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 riscv cross compiling tool for clang build
        # apt-get install binutils-riscv64-linux-gnu
        # https://github.com/0day-ci/linux/commit/3498c52eb6aec09c78a3f07cdcb042897960f8ef
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Patrick-Rudolph/dt-bindings-i2c-Update-PCA954x/20211214-175258
        git checkout 3498c52eb6aec09c78a3f07cdcb042897960f8ef
        # save the config file to linux build tree
        mkdir build_dir
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=riscv SHELL=/bin/bash drivers/i2c/muxes/

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All warnings (new ones prefixed by >>):

>> drivers/i2c/muxes/i2c-mux-pca954x.c:502:58: warning: variable 'ret' is uninitialized when used here [-Wuninitialized]
                   dev_warn(dev, "Failed to get regulator for vcc: %d\n", ret);
                                                                          ^~~
   include/linux/dev_printk.h:146:70: note: expanded from macro 'dev_warn'
           dev_printk_index_wrap(_dev_warn, KERN_WARNING, dev, dev_fmt(fmt), ##__VA_ARGS__)
                                                                               ^~~~~~~~~~~
   include/linux/dev_printk.h:110:23: note: expanded from macro 'dev_printk_index_wrap'
                   _p_func(dev, fmt, ##__VA_ARGS__);                       \
                                       ^~~~~~~~~~~
   drivers/i2c/muxes/i2c-mux-pca954x.c:483:9: note: initialize the variable 'ret' to silence this warning
           int ret;
                  ^
                   = 0
   1 warning generated.


vim +/ret +502 drivers/i2c/muxes/i2c-mux-pca954x.c

   470	
   471	/*
   472	 * I2C init/probing/exit functions
   473	 */
   474	static int pca954x_probe(struct i2c_client *client,
   475				 const struct i2c_device_id *id)
   476	{
   477		struct i2c_adapter *adap = client->adapter;
   478		struct device *dev = &client->dev;
   479		struct gpio_desc *gpio;
   480		struct i2c_mux_core *muxc;
   481		struct pca954x *data;
   482		int num;
   483		int ret;
   484	
   485		if (!i2c_check_functionality(adap, I2C_FUNC_SMBUS_BYTE))
   486			return -ENODEV;
   487	
   488		muxc = i2c_mux_alloc(adap, dev, PCA954X_MAX_NCHANS, sizeof(*data), 0,
   489				     pca954x_select_chan, pca954x_deselect_mux);
   490		if (!muxc)
   491			return -ENOMEM;
   492	
   493		data = i2c_mux_priv(muxc);
   494	
   495		i2c_set_clientdata(client, muxc);
   496		data->client = client;
   497	
   498		data->supply = devm_regulator_get(dev, "vcc");
   499		if (IS_ERR(data->supply)) {
   500			if ((PTR_ERR(data->supply) == -EPROBE_DEFER))
   501				return -EPROBE_DEFER;
 > 502			dev_warn(dev, "Failed to get regulator for vcc: %d\n", ret);
   503		} else {
   504			ret = regulator_enable(data->supply);
   505			if (ret) {
   506				dev_err(dev, "Failed to enable regulator vcc\n");
   507				return ret;
   508			}
   509		}
   510	
   511		/* Reset the mux if a reset GPIO is specified. */
   512		gpio = devm_gpiod_get_optional(dev, "reset", GPIOD_OUT_HIGH);
   513		if (IS_ERR(gpio)) {
   514			ret = PTR_ERR(gpio);
   515			goto fail_cleanup;
   516		}
   517		if (gpio) {
   518			udelay(1);
   519			gpiod_set_value_cansleep(gpio, 0);
   520			/* Give the chip some time to recover. */
   521			udelay(1);
   522		}
   523	
   524		data->chip = device_get_match_data(dev);
   525		if (!data->chip)
   526			data->chip = &chips[id->driver_data];
   527	
   528		if (data->chip->id.manufacturer_id != I2C_DEVICE_ID_NONE) {
   529			struct i2c_device_identity id;
   530	
   531			ret = i2c_get_device_id(client, &id);
   532			if (ret && ret != -EOPNOTSUPP)
   533				goto fail_cleanup;
   534	
   535			if (!ret &&
   536			    (id.manufacturer_id != data->chip->id.manufacturer_id ||
   537			     id.part_id != data->chip->id.part_id)) {
   538				dev_warn(dev, "unexpected device id %03x-%03x-%x\n",
   539					 id.manufacturer_id, id.part_id,
   540					 id.die_revision);
   541				ret = -ENODEV;
   542				goto fail_cleanup;
   543			}
   544		}
   545	
   546		data->idle_state = MUX_IDLE_AS_IS;
   547		if (device_property_read_u32(dev, "idle-state", &data->idle_state)) {
   548			if (device_property_read_bool(dev, "i2c-mux-idle-disconnect"))
   549				data->idle_state = MUX_IDLE_DISCONNECT;
   550		}
   551	
   552		/*
   553		 * Write the mux register at addr to verify
   554		 * that the mux is in fact present. This also
   555		 * initializes the mux to a channel
   556		 * or disconnected state.
   557		 */
   558		ret = pca954x_init(client, data);
   559		if (ret < 0) {
   560			dev_warn(dev, "probe failed\n");
   561			ret = -ENODEV;
   562			goto fail_cleanup;
   563		}
   564	
   565		ret = pca954x_irq_setup(muxc);
   566		if (ret)
   567			goto fail_cleanup;
   568	
   569		/* Now create an adapter for each channel */
   570		for (num = 0; num < data->chip->nchans; num++) {
   571			ret = i2c_mux_add_adapter(muxc, 0, num, 0);
   572			if (ret)
   573				goto fail_cleanup;
   574		}
   575	
   576		if (data->irq) {
   577			ret = devm_request_threaded_irq(dev, data->client->irq,
   578							NULL, pca954x_irq_handler,
   579							IRQF_ONESHOT | IRQF_SHARED,
   580							"pca954x", data);
   581			if (ret)
   582				goto fail_cleanup;
   583		}
   584	
   585		/*
   586		 * The attr probably isn't going to be needed in most cases,
   587		 * so don't fail completely on error.
   588		 */
   589		device_create_file(dev, &dev_attr_idle_state);
   590	
   591		dev_info(dev, "registered %d multiplexed busses for I2C %s %s\n",
   592			 num, data->chip->muxtype == pca954x_ismux
   593					? "mux" : "switch", client->name);
   594	
   595		return 0;
   596	
   597	fail_cleanup:
   598		pca954x_cleanup(muxc);
   599		return ret;
   600	}
   601	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

  reply	other threads:[~2021-12-14 13:13 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-12-14  9:50 [PATCH 1/4] dt-bindings: i2c Update PCA954x Patrick Rudolph
2021-12-14  9:50 ` [PATCH 2/4] drivers/i2c/mux: Add MAX735x support to PCA954x Patrick Rudolph
2021-12-14  9:50 ` [PATCH 3/4] dt-bindings: i2c Add regulator to pca954x Patrick Rudolph
2021-12-14 11:37   ` Laurent Pinchart
2021-12-14  9:50 ` [PATCH 4/4] i2c-mux-pca954x: Add regulator support Patrick Rudolph
2021-12-14 13:12   ` kernel test robot [this message]
2021-12-14 13:12     ` kernel test robot
2021-12-14 11:13 ` [PATCH 1/4] dt-bindings: i2c Update PCA954x Laurent Pinchart
2021-12-15 12:42   ` Peter Rosin
2021-12-15 14:19     ` Patrick Rudolph
2021-12-15 21:22       ` Laurent Pinchart
2021-12-15 20:33 ` Rob Herring
2021-12-14 18:46 [PATCH 4/4] i2c-mux-pca954x: Add regulator support kernel test robot

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=202112142101.s4i5cHhd-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=kbuild-all@lists.01.org \
    --cc=linux-i2c@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=llvm@lists.linux.dev \
    --cc=patrick.rudolph@9elements.com \
    --cc=peda@axentia.se \
    /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.