[PATCH 1/2] gpio: fxl6408: Add optional reset gpio control

Jisheng Zhang posted 2 patches 3 months, 1 week ago
There is a newer version of this series
[PATCH 1/2] gpio: fxl6408: Add optional reset gpio control
Posted by Jisheng Zhang 3 months, 1 week ago
Add optional active low reset-gpios pin control. If present, de-assert
the specified reset gpio pin to bring the chip out of reset.

Signed-off-by: Jisheng Zhang <jszhang@kernel.org>
---
 drivers/gpio/gpio-fxl6408.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/drivers/gpio/gpio-fxl6408.c b/drivers/gpio/gpio-fxl6408.c
index 86ebc66b1104..ae520305f7a9 100644
--- a/drivers/gpio/gpio-fxl6408.c
+++ b/drivers/gpio/gpio-fxl6408.c
@@ -104,6 +104,7 @@ static int fxl6408_identify(struct device *dev, struct regmap *regmap)
 static int fxl6408_probe(struct i2c_client *client)
 {
 	struct device *dev = &client->dev;
+	struct gpio_desc *reset_gpio;
 	int ret;
 	struct gpio_regmap_config gpio_config = {
 		.parent = dev,
@@ -114,6 +115,10 @@ static int fxl6408_probe(struct i2c_client *client)
 		.ngpio_per_reg = FXL6408_NGPIO,
 	};
 
+	reset_gpio = devm_gpiod_get_optional(dev, "reset", GPIOD_OUT_LOW);
+	if (IS_ERR(reset_gpio))
+		return dev_err_probe(dev, PTR_ERR(reset_gpio), "Failed to get reset gpio\n");
+
 	gpio_config.regmap = devm_regmap_init_i2c(client, &regmap);
 	if (IS_ERR(gpio_config.regmap))
 		return dev_err_probe(dev, PTR_ERR(gpio_config.regmap),
-- 
2.51.0
Re: [PATCH 1/2] gpio: fxl6408: Add optional reset gpio control
Posted by kernel test robot 3 months, 1 week ago
Hi Jisheng,

kernel test robot noticed the following build errors:

[auto build test ERROR on brgl/gpio/for-next]
[also build test ERROR on linus/master v6.18-rc4 next-20251031]
[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/Jisheng-Zhang/gpio-fxl6408-Add-optional-reset-gpio-control/20251102-182544
base:   https://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux.git gpio/for-next
patch link:    https://lore.kernel.org/r/20251102100515.9506-2-jszhang%40kernel.org
patch subject: [PATCH 1/2] gpio: fxl6408: Add optional reset gpio control
config: arm-randconfig-001-20251103 (https://download.01.org/0day-ci/archive/20251103/202511030655.OCHXbHnE-lkp@intel.com/config)
compiler: clang version 22.0.0git (https://github.com/llvm/llvm-project d2625a438020ad35330cda29c3def102c1687b1b)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20251103/202511030655.OCHXbHnE-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/202511030655.OCHXbHnE-lkp@intel.com/

All errors (new ones prefixed by >>):

>> drivers/gpio/gpio-fxl6408.c:118:15: error: call to undeclared function 'devm_gpiod_get_optional'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
     118 |         reset_gpio = devm_gpiod_get_optional(dev, "reset", GPIOD_OUT_LOW);
         |                      ^
   drivers/gpio/gpio-fxl6408.c:118:15: note: did you mean 'devm_regulator_get_optional'?
   include/linux/regulator/consumer.h:163:32: note: 'devm_regulator_get_optional' declared here
     163 | struct regulator *__must_check devm_regulator_get_optional(struct device *dev,
         |                                ^
>> drivers/gpio/gpio-fxl6408.c:118:53: error: use of undeclared identifier 'GPIOD_OUT_LOW'
     118 |         reset_gpio = devm_gpiod_get_optional(dev, "reset", GPIOD_OUT_LOW);
         |                                                            ^~~~~~~~~~~~~
   2 errors generated.


vim +/devm_gpiod_get_optional +118 drivers/gpio/gpio-fxl6408.c

   103	
   104	static int fxl6408_probe(struct i2c_client *client)
   105	{
   106		struct device *dev = &client->dev;
   107		struct gpio_desc *reset_gpio;
   108		int ret;
   109		struct gpio_regmap_config gpio_config = {
   110			.parent = dev,
   111			.ngpio = FXL6408_NGPIO,
   112			.reg_dat_base = GPIO_REGMAP_ADDR(FXL6408_REG_INPUT_STATUS),
   113			.reg_set_base = GPIO_REGMAP_ADDR(FXL6408_REG_OUTPUT),
   114			.reg_dir_out_base = GPIO_REGMAP_ADDR(FXL6408_REG_IO_DIR),
   115			.ngpio_per_reg = FXL6408_NGPIO,
   116		};
   117	
 > 118		reset_gpio = devm_gpiod_get_optional(dev, "reset", GPIOD_OUT_LOW);
   119		if (IS_ERR(reset_gpio))
   120			return dev_err_probe(dev, PTR_ERR(reset_gpio), "Failed to get reset gpio\n");
   121	
   122		gpio_config.regmap = devm_regmap_init_i2c(client, &regmap);
   123		if (IS_ERR(gpio_config.regmap))
   124			return dev_err_probe(dev, PTR_ERR(gpio_config.regmap),
   125					     "failed to allocate register map\n");
   126	
   127		ret = fxl6408_identify(dev, gpio_config.regmap);
   128		if (ret)
   129			return ret;
   130	
   131		/* Disable High-Z of outputs, so that our OUTPUT updates actually take effect. */
   132		ret = regmap_write(gpio_config.regmap, FXL6408_REG_OUTPUT_HIGH_Z, 0);
   133		if (ret)
   134			return dev_err_probe(dev, ret, "failed to write 'output high Z' register\n");
   135	
   136		return PTR_ERR_OR_ZERO(devm_gpio_regmap_register(dev, &gpio_config));
   137	}
   138	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
Re: [PATCH 1/2] gpio: fxl6408: Add optional reset gpio control
Posted by kernel test robot 3 months, 1 week ago
Hi Jisheng,

kernel test robot noticed the following build errors:

[auto build test ERROR on brgl/gpio/for-next]
[also build test ERROR on linus/master v6.18-rc4 next-20251031]
[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/Jisheng-Zhang/gpio-fxl6408-Add-optional-reset-gpio-control/20251102-182544
base:   https://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux.git gpio/for-next
patch link:    https://lore.kernel.org/r/20251102100515.9506-2-jszhang%40kernel.org
patch subject: [PATCH 1/2] gpio: fxl6408: Add optional reset gpio control
config: nios2-randconfig-r073-20251103 (https://download.01.org/0day-ci/archive/20251103/202511030610.aGFTnmCc-lkp@intel.com/config)
compiler: nios2-linux-gcc (GCC) 8.5.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20251103/202511030610.aGFTnmCc-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/202511030610.aGFTnmCc-lkp@intel.com/

All errors (new ones prefixed by >>):

   drivers/gpio/gpio-fxl6408.c: In function 'fxl6408_probe':
>> drivers/gpio/gpio-fxl6408.c:118:15: error: implicit declaration of function 'devm_gpiod_get_optional'; did you mean 'devm_regulator_get_optional'? [-Werror=implicit-function-declaration]
     reset_gpio = devm_gpiod_get_optional(dev, "reset", GPIOD_OUT_LOW);
                  ^~~~~~~~~~~~~~~~~~~~~~~
                  devm_regulator_get_optional
>> drivers/gpio/gpio-fxl6408.c:118:53: error: 'GPIOD_OUT_LOW' undeclared (first use in this function)
     reset_gpio = devm_gpiod_get_optional(dev, "reset", GPIOD_OUT_LOW);
                                                        ^~~~~~~~~~~~~
   drivers/gpio/gpio-fxl6408.c:118:53: note: each undeclared identifier is reported only once for each function it appears in
   cc1: some warnings being treated as errors


vim +118 drivers/gpio/gpio-fxl6408.c

   103	
   104	static int fxl6408_probe(struct i2c_client *client)
   105	{
   106		struct device *dev = &client->dev;
   107		struct gpio_desc *reset_gpio;
   108		int ret;
   109		struct gpio_regmap_config gpio_config = {
   110			.parent = dev,
   111			.ngpio = FXL6408_NGPIO,
   112			.reg_dat_base = GPIO_REGMAP_ADDR(FXL6408_REG_INPUT_STATUS),
   113			.reg_set_base = GPIO_REGMAP_ADDR(FXL6408_REG_OUTPUT),
   114			.reg_dir_out_base = GPIO_REGMAP_ADDR(FXL6408_REG_IO_DIR),
   115			.ngpio_per_reg = FXL6408_NGPIO,
   116		};
   117	
 > 118		reset_gpio = devm_gpiod_get_optional(dev, "reset", GPIOD_OUT_LOW);
   119		if (IS_ERR(reset_gpio))
   120			return dev_err_probe(dev, PTR_ERR(reset_gpio), "Failed to get reset gpio\n");
   121	
   122		gpio_config.regmap = devm_regmap_init_i2c(client, &regmap);
   123		if (IS_ERR(gpio_config.regmap))
   124			return dev_err_probe(dev, PTR_ERR(gpio_config.regmap),
   125					     "failed to allocate register map\n");
   126	
   127		ret = fxl6408_identify(dev, gpio_config.regmap);
   128		if (ret)
   129			return ret;
   130	
   131		/* Disable High-Z of outputs, so that our OUTPUT updates actually take effect. */
   132		ret = regmap_write(gpio_config.regmap, FXL6408_REG_OUTPUT_HIGH_Z, 0);
   133		if (ret)
   134			return dev_err_probe(dev, ret, "failed to write 'output high Z' register\n");
   135	
   136		return PTR_ERR_OR_ZERO(devm_gpio_regmap_register(dev, &gpio_config));
   137	}
   138	

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