diff mbox series

[v1,01/17] pinctrl: equilibrium: Convert to use struct pingroup

Message ID 20231122164040.2262742-2-andriy.shevchenko@linux.intel.com (mailing list archive)
State Superseded
Delegated to: Geert Uytterhoeven
Headers show
Series pinctrl: Convert struct group_desc to use struct pingroup | expand

Commit Message

Andy Shevchenko Nov. 22, 2023, 4:35 p.m. UTC
The pin control header provides struct pingroup.
Utilize it instead of open coded variants in the driver.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
 drivers/pinctrl/pinctrl-equilibrium.c | 32 +++++++++++++--------------
 1 file changed, 15 insertions(+), 17 deletions(-)

Comments

kernel test robot Nov. 23, 2023, 3:11 a.m. UTC | #1
Hi Andy,

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 geert-renesas-drivers/renesas-pinctrl pinctrl-samsung/for-next linus/master v6.7-rc2 next-20231122]
[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/pinctrl-equilibrium-Convert-to-use-struct-pingroup/20231123-005932
base:   https://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl.git devel
patch link:    https://lore.kernel.org/r/20231122164040.2262742-2-andriy.shevchenko%40linux.intel.com
patch subject: [PATCH v1 01/17] pinctrl: equilibrium: Convert to use struct pingroup
config: x86_64-allyesconfig (https://download.01.org/0day-ci/archive/20231123/202311230820.oBQop844-lkp@intel.com/config)
compiler: clang version 16.0.4 (https://github.com/llvm/llvm-project.git ae42196bc493ffe877a7e3dff8be32035dea4d07)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231123/202311230820.oBQop844-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/202311230820.oBQop844-lkp@intel.com/

All errors (new ones prefixed by >>):

>> drivers/pinctrl/pinctrl-equilibrium.c:750:17: error: read-only variable is not assignable
                           grp->pins[j] = pin_id;
                           ~~~~~~~~~~~~ ^
>> drivers/pinctrl/pinctrl-equilibrium.c:761:23: error: no member named 'num_pins' in 'struct pingroup'
                                                   grp->pins, grp->num_pins,
                                                              ~~~  ^
   2 errors generated.


vim +750 drivers/pinctrl/pinctrl-equilibrium.c

   702	
   703	static int eqbr_build_groups(struct eqbr_pinctrl_drv_data *drvdata)
   704	{
   705		struct device *dev = drvdata->dev;
   706		struct device_node *node = dev->of_node;
   707		unsigned int *pinmux, pin_id, pinmux_id;
   708		struct pingroup group, *grp = &group;
   709		struct device_node *np;
   710		struct property *prop;
   711		int j, err;
   712	
   713		for_each_child_of_node(node, np) {
   714			prop = of_find_property(np, "groups", NULL);
   715			if (!prop)
   716				continue;
   717	
   718			grp->npins = of_property_count_u32_elems(np, "pins");
   719			if (grp->npins < 0) {
   720				dev_err(dev, "No pins in the group: %s\n", prop->name);
   721				of_node_put(np);
   722				return -EINVAL;
   723			}
   724			grp->name = prop->value;
   725			grp->pins = devm_kcalloc(dev, grp->npins, sizeof(*grp->pins), GFP_KERNEL);
   726			if (!grp->pins) {
   727				of_node_put(np);
   728				return -ENOMEM;
   729			}
   730	
   731			pinmux = devm_kcalloc(dev, grp->npins, sizeof(*pinmux), GFP_KERNEL);
   732			if (!pinmux) {
   733				of_node_put(np);
   734				return -ENOMEM;
   735			}
   736	
   737			for (j = 0; j < grp->npins; j++) {
   738				if (of_property_read_u32_index(np, "pins", j, &pin_id)) {
   739					dev_err(dev, "Group %s: Read intel pins id failed\n",
   740						grp->name);
   741					of_node_put(np);
   742					return -EINVAL;
   743				}
   744				if (pin_id >= drvdata->pctl_desc.npins) {
   745					dev_err(dev, "Group %s: Invalid pin ID, idx: %d, pin %u\n",
   746						grp->name, j, pin_id);
   747					of_node_put(np);
   748					return -EINVAL;
   749				}
 > 750				grp->pins[j] = pin_id;
   751				if (of_property_read_u32_index(np, "pinmux", j, &pinmux_id)) {
   752					dev_err(dev, "Group %s: Read intel pinmux id failed\n",
   753						grp->name);
   754					of_node_put(np);
   755					return -EINVAL;
   756				}
   757				pinmux[j] = pinmux_id;
   758			}
   759	
   760			err = pinctrl_generic_add_group(drvdata->pctl_dev, grp->name,
 > 761							grp->pins, grp->num_pins,
   762							pinmux);
   763			if (err < 0) {
   764				dev_err(dev, "Failed to register group %s\n", grp->name);
   765				of_node_put(np);
   766				return err;
   767			}
   768			memset(&group, 0, sizeof(group));
   769			pinmux = NULL;
   770		}
   771	
   772		return 0;
   773	}
   774
kernel test robot Nov. 23, 2023, 3:11 a.m. UTC | #2
Hi Andy,

kernel test robot noticed the following build warnings:

[auto build test WARNING on linusw-pinctrl/devel]
[also build test WARNING on linusw-pinctrl/for-next geert-renesas-drivers/renesas-pinctrl pinctrl-samsung/for-next linus/master v6.7-rc2 next-20231122]
[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/pinctrl-equilibrium-Convert-to-use-struct-pingroup/20231123-005932
base:   https://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl.git devel
patch link:    https://lore.kernel.org/r/20231122164040.2262742-2-andriy.shevchenko%40linux.intel.com
patch subject: [PATCH v1 01/17] pinctrl: equilibrium: Convert to use struct pingroup
config: i386-randconfig-001-20231123 (https://download.01.org/0day-ci/archive/20231123/202311230820.MGDyVHJW-lkp@intel.com/config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231123/202311230820.MGDyVHJW-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/202311230820.MGDyVHJW-lkp@intel.com/

All warnings (new ones prefixed by >>):

   drivers/pinctrl/pinctrl-equilibrium.c: In function 'eqbr_build_groups':
   drivers/pinctrl/pinctrl-equilibrium.c:750:17: error: assignment of read-only location '*(grp->pins + (sizetype)((unsigned int)j * 4))'
     750 |    grp->pins[j] = pin_id;
         |                 ^
   drivers/pinctrl/pinctrl-equilibrium.c:761:23: error: 'struct pingroup' has no member named 'num_pins'; did you mean 'npins'?
     761 |       grp->pins, grp->num_pins,
         |                       ^~~~~~~~
         |                       npins
>> drivers/pinctrl/pinctrl-equilibrium.c:761:10: warning: passing argument 3 of 'pinctrl_generic_add_group' discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
     761 |       grp->pins, grp->num_pins,
         |       ~~~^~~~~~
   In file included from drivers/pinctrl/pinctrl-equilibrium.c:16:
   drivers/pinctrl/core.h:225:15: note: expected 'int *' but argument is of type 'const unsigned int *'
     225 |          int *gpins, int ngpins, void *data);
         |          ~~~~~^~~~~


vim +761 drivers/pinctrl/pinctrl-equilibrium.c

   702	
   703	static int eqbr_build_groups(struct eqbr_pinctrl_drv_data *drvdata)
   704	{
   705		struct device *dev = drvdata->dev;
   706		struct device_node *node = dev->of_node;
   707		unsigned int *pinmux, pin_id, pinmux_id;
   708		struct pingroup group, *grp = &group;
   709		struct device_node *np;
   710		struct property *prop;
   711		int j, err;
   712	
   713		for_each_child_of_node(node, np) {
   714			prop = of_find_property(np, "groups", NULL);
   715			if (!prop)
   716				continue;
   717	
   718			grp->npins = of_property_count_u32_elems(np, "pins");
   719			if (grp->npins < 0) {
   720				dev_err(dev, "No pins in the group: %s\n", prop->name);
   721				of_node_put(np);
   722				return -EINVAL;
   723			}
   724			grp->name = prop->value;
   725			grp->pins = devm_kcalloc(dev, grp->npins, sizeof(*grp->pins), GFP_KERNEL);
   726			if (!grp->pins) {
   727				of_node_put(np);
   728				return -ENOMEM;
   729			}
   730	
   731			pinmux = devm_kcalloc(dev, grp->npins, sizeof(*pinmux), GFP_KERNEL);
   732			if (!pinmux) {
   733				of_node_put(np);
   734				return -ENOMEM;
   735			}
   736	
   737			for (j = 0; j < grp->npins; j++) {
   738				if (of_property_read_u32_index(np, "pins", j, &pin_id)) {
   739					dev_err(dev, "Group %s: Read intel pins id failed\n",
   740						grp->name);
   741					of_node_put(np);
   742					return -EINVAL;
   743				}
   744				if (pin_id >= drvdata->pctl_desc.npins) {
   745					dev_err(dev, "Group %s: Invalid pin ID, idx: %d, pin %u\n",
   746						grp->name, j, pin_id);
   747					of_node_put(np);
   748					return -EINVAL;
   749				}
   750				grp->pins[j] = pin_id;
   751				if (of_property_read_u32_index(np, "pinmux", j, &pinmux_id)) {
   752					dev_err(dev, "Group %s: Read intel pinmux id failed\n",
   753						grp->name);
   754					of_node_put(np);
   755					return -EINVAL;
   756				}
   757				pinmux[j] = pinmux_id;
   758			}
   759	
   760			err = pinctrl_generic_add_group(drvdata->pctl_dev, grp->name,
 > 761							grp->pins, grp->num_pins,
   762							pinmux);
   763			if (err < 0) {
   764				dev_err(dev, "Failed to register group %s\n", grp->name);
   765				of_node_put(np);
   766				return err;
   767			}
   768			memset(&group, 0, sizeof(group));
   769			pinmux = NULL;
   770		}
   771	
   772		return 0;
   773	}
   774
diff mbox series

Patch

diff --git a/drivers/pinctrl/pinctrl-equilibrium.c b/drivers/pinctrl/pinctrl-equilibrium.c
index 5b5ddf7e5d0e..9202a60b4ec7 100644
--- a/drivers/pinctrl/pinctrl-equilibrium.c
+++ b/drivers/pinctrl/pinctrl-equilibrium.c
@@ -705,7 +705,7 @@  static int eqbr_build_groups(struct eqbr_pinctrl_drv_data *drvdata)
 	struct device *dev = drvdata->dev;
 	struct device_node *node = dev->of_node;
 	unsigned int *pinmux, pin_id, pinmux_id;
-	struct group_desc group;
+	struct pingroup group, *grp = &group;
 	struct device_node *np;
 	struct property *prop;
 	int j, err;
@@ -715,55 +715,53 @@  static int eqbr_build_groups(struct eqbr_pinctrl_drv_data *drvdata)
 		if (!prop)
 			continue;
 
-		group.num_pins = of_property_count_u32_elems(np, "pins");
-		if (group.num_pins < 0) {
+		grp->npins = of_property_count_u32_elems(np, "pins");
+		if (grp->npins < 0) {
 			dev_err(dev, "No pins in the group: %s\n", prop->name);
 			of_node_put(np);
 			return -EINVAL;
 		}
-		group.name = prop->value;
-		group.pins = devm_kcalloc(dev, group.num_pins,
-					  sizeof(*(group.pins)), GFP_KERNEL);
-		if (!group.pins) {
+		grp->name = prop->value;
+		grp->pins = devm_kcalloc(dev, grp->npins, sizeof(*grp->pins), GFP_KERNEL);
+		if (!grp->pins) {
 			of_node_put(np);
 			return -ENOMEM;
 		}
 
-		pinmux = devm_kcalloc(dev, group.num_pins, sizeof(*pinmux),
-				      GFP_KERNEL);
+		pinmux = devm_kcalloc(dev, grp->npins, sizeof(*pinmux), GFP_KERNEL);
 		if (!pinmux) {
 			of_node_put(np);
 			return -ENOMEM;
 		}
 
-		for (j = 0; j < group.num_pins; j++) {
+		for (j = 0; j < grp->npins; j++) {
 			if (of_property_read_u32_index(np, "pins", j, &pin_id)) {
 				dev_err(dev, "Group %s: Read intel pins id failed\n",
-					group.name);
+					grp->name);
 				of_node_put(np);
 				return -EINVAL;
 			}
 			if (pin_id >= drvdata->pctl_desc.npins) {
 				dev_err(dev, "Group %s: Invalid pin ID, idx: %d, pin %u\n",
-					group.name, j, pin_id);
+					grp->name, j, pin_id);
 				of_node_put(np);
 				return -EINVAL;
 			}
-			group.pins[j] = pin_id;
+			grp->pins[j] = pin_id;
 			if (of_property_read_u32_index(np, "pinmux", j, &pinmux_id)) {
 				dev_err(dev, "Group %s: Read intel pinmux id failed\n",
-					group.name);
+					grp->name);
 				of_node_put(np);
 				return -EINVAL;
 			}
 			pinmux[j] = pinmux_id;
 		}
 
-		err = pinctrl_generic_add_group(drvdata->pctl_dev, group.name,
-						group.pins, group.num_pins,
+		err = pinctrl_generic_add_group(drvdata->pctl_dev, grp->name,
+						grp->pins, grp->num_pins,
 						pinmux);
 		if (err < 0) {
-			dev_err(dev, "Failed to register group %s\n", group.name);
+			dev_err(dev, "Failed to register group %s\n", grp->name);
 			of_node_put(np);
 			return err;
 		}