Re: [PATCH 2/2] pinctrl: pinmux: Use dev_err_probe() in pin_request()

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

 



Hi Jernej,

kernel test robot noticed the following build errors:

[auto build test ERROR on linusw-pinctrl/devel]
[also build test ERROR on linusw-pinctrl/for-next linus/master v6.5 next-20230908]
[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/Jernej-Skrabec/pinctrl-pinmux-Remove-duplicate-error-message-in-pin_request/20230909-143817
base:   https://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl.git devel
patch link:    https://lore.kernel.org/r/20230909063613.2867-3-jernej.skrabec%40gmail.com
patch subject: [PATCH 2/2] pinctrl: pinmux: Use dev_err_probe() in pin_request()
config: hexagon-randconfig-002-20230909 (https://download.01.org/0day-ci/archive/20230909/202309091724.tJzAxzS5-lkp@xxxxxxxxx/config)
compiler: clang version 17.0.0 (https://github.com/llvm/llvm-project.git 4a5ac14ee968ff0ad5d2cc1ffa0299048db4c88a)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20230909/202309091724.tJzAxzS5-lkp@xxxxxxxxx/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@xxxxxxxxx>
| Closes: https://lore.kernel.org/oe-kbuild-all/202309091724.tJzAxzS5-lkp@xxxxxxxxx/

All errors (new ones prefixed by >>):

>> drivers/pinctrl/pinmux.c:191:31: error: incompatible pointer to integer conversion passing 'char[23]' to parameter of type 'int' [-Wint-conversion]
     191 |                 dev_err_probe(pctldev->dev, "pin-%d (%s) status %d\n",
         |                                             ^~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/device.h:1218:64: note: passing argument to parameter 'err' here
    1218 | __printf(3, 4) int dev_err_probe(const struct device *dev, int err, const char *fmt, ...);
         |                                                                ^
>> drivers/pinctrl/pinmux.c:192:10: error: incompatible integer to pointer conversion passing 'int' to parameter of type 'const char *' [-Wint-conversion]
     192 |                               pin, owner, status);
         |                               ^~~
   include/linux/device.h:1218:81: note: passing argument to parameter 'fmt' here
    1218 | __printf(3, 4) int dev_err_probe(const struct device *dev, int err, const char *fmt, ...);
         |                                                                                 ^
   2 errors generated.


vim +191 drivers/pinctrl/pinmux.c

   101	
   102	/**
   103	 * pin_request() - request a single pin to be muxed in, typically for GPIO
   104	 * @pctldev: the associated pin controller device
   105	 * @pin: the pin number in the global pin space
   106	 * @owner: a representation of the owner of this pin; typically the device
   107	 *	name that controls its mux function, or the requested GPIO name
   108	 * @gpio_range: the range matching the GPIO pin if this is a request for a
   109	 *	single GPIO pin
   110	 */
   111	static int pin_request(struct pinctrl_dev *pctldev,
   112			       int pin, const char *owner,
   113			       struct pinctrl_gpio_range *gpio_range)
   114	{
   115		struct pin_desc *desc;
   116		const struct pinmux_ops *ops = pctldev->desc->pmxops;
   117		int status = -EINVAL;
   118	
   119		desc = pin_desc_get(pctldev, pin);
   120		if (desc == NULL) {
   121			dev_err(pctldev->dev,
   122				"pin %d is not registered so it cannot be requested\n",
   123				pin);
   124			goto out;
   125		}
   126	
   127		dev_dbg(pctldev->dev, "request pin %d (%s) for %s\n",
   128			pin, desc->name, owner);
   129	
   130		if ((!gpio_range || ops->strict) &&
   131		    desc->mux_usecount && strcmp(desc->mux_owner, owner)) {
   132			dev_err(pctldev->dev,
   133				"pin %s already requested by %s; cannot claim for %s\n",
   134				desc->name, desc->mux_owner, owner);
   135			goto out;
   136		}
   137	
   138		if ((gpio_range || ops->strict) && desc->gpio_owner) {
   139			dev_err(pctldev->dev,
   140				"pin %s already requested by %s; cannot claim for %s\n",
   141				desc->name, desc->gpio_owner, owner);
   142			goto out;
   143		}
   144	
   145		if (gpio_range) {
   146			desc->gpio_owner = owner;
   147		} else {
   148			desc->mux_usecount++;
   149			if (desc->mux_usecount > 1)
   150				return 0;
   151	
   152			desc->mux_owner = owner;
   153		}
   154	
   155		/* Let each pin increase references to this module */
   156		if (!try_module_get(pctldev->owner)) {
   157			dev_err(pctldev->dev,
   158				"could not increase module refcount for pin %d\n",
   159				pin);
   160			status = -EINVAL;
   161			goto out_free_pin;
   162		}
   163	
   164		/*
   165		 * If there is no kind of request function for the pin we just assume
   166		 * we got it by default and proceed.
   167		 */
   168		if (gpio_range && ops->gpio_request_enable)
   169			/* This requests and enables a single GPIO pin */
   170			status = ops->gpio_request_enable(pctldev, gpio_range, pin);
   171		else if (ops->request)
   172			status = ops->request(pctldev, pin);
   173		else
   174			status = 0;
   175	
   176		if (status)
   177			module_put(pctldev->owner);
   178	
   179	out_free_pin:
   180		if (status) {
   181			if (gpio_range) {
   182				desc->gpio_owner = NULL;
   183			} else {
   184				desc->mux_usecount--;
   185				if (!desc->mux_usecount)
   186					desc->mux_owner = NULL;
   187			}
   188		}
   189	out:
   190		if (status)
 > 191			dev_err_probe(pctldev->dev, "pin-%d (%s) status %d\n",
 > 192				      pin, owner, status);
   193	
   194		return status;
   195	}
   196	

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



[Index of Archives]     [Linux SPI]     [Linux Kernel]     [Linux ARM (vger)]     [Linux ARM MSM]     [Linux Omap]     [Linux Arm]     [Linux Tegra]     [Fedora ARM]     [Linux for Samsung SOC]     [eCos]     [Linux Fastboot]     [Gcc Help]     [Git]     [DCCP]     [IETF Announce]     [Security]     [Linux MIPS]     [Yosemite Campsites]

  Powered by Linux