* [PATCH v2 0/2] gpio: fxl6408: add optional reset and suspend/resume @ 2025-11-17 0:15 Jisheng Zhang 2025-11-17 0:15 ` [PATCH v2 1/2] gpio: fxl6408: Add optional reset gpio control Jisheng Zhang 2025-11-17 0:15 ` [PATCH v2 2/2] gpio: fxl6408: Add suspend/resume support Jisheng Zhang 0 siblings, 2 replies; 6+ messages in thread From: Jisheng Zhang @ 2025-11-17 0:15 UTC (permalink / raw) To: Linus Walleij, Bartosz Golaszewski; +Cc: linux-gpio, linux-kernel Two improvements to the fxl6408 gpio driver: Add opitonal reset gpio control. Add suspend/resume support. since v1: -fix W=1 build error on nios2 platform Jisheng Zhang (2): gpio: fxl6408: Add optional reset gpio control gpio: fxl6408: Add suspend/resume support drivers/gpio/gpio-fxl6408.c | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) -- 2.51.0 ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v2 1/2] gpio: fxl6408: Add optional reset gpio control 2025-11-17 0:15 [PATCH v2 0/2] gpio: fxl6408: add optional reset and suspend/resume Jisheng Zhang @ 2025-11-17 0:15 ` Jisheng Zhang 2025-11-17 10:01 ` Bartosz Golaszewski 2025-11-18 9:50 ` kernel test robot 2025-11-17 0:15 ` [PATCH v2 2/2] gpio: fxl6408: Add suspend/resume support Jisheng Zhang 1 sibling, 2 replies; 6+ messages in thread From: Jisheng Zhang @ 2025-11-17 0:15 UTC (permalink / raw) To: Linus Walleij, Bartosz Golaszewski; +Cc: linux-gpio, linux-kernel 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 | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/drivers/gpio/gpio-fxl6408.c b/drivers/gpio/gpio-fxl6408.c index 86ebc66b1104..7074831639ce 100644 --- a/drivers/gpio/gpio-fxl6408.c +++ b/drivers/gpio/gpio-fxl6408.c @@ -13,6 +13,7 @@ #include <linux/kernel.h> #include <linux/module.h> #include <linux/regmap.h> +#include <linux/regulator/consumer.h> #define FXL6408_REG_DEVICE_ID 0x01 #define FXL6408_MF_FAIRCHILD 0b101 @@ -104,6 +105,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 +116,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, ®map); if (IS_ERR(gpio_config.regmap)) return dev_err_probe(dev, PTR_ERR(gpio_config.regmap), -- 2.51.0 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH v2 1/2] gpio: fxl6408: Add optional reset gpio control 2025-11-17 0:15 ` [PATCH v2 1/2] gpio: fxl6408: Add optional reset gpio control Jisheng Zhang @ 2025-11-17 10:01 ` Bartosz Golaszewski 2025-11-19 12:13 ` Jisheng Zhang 2025-11-18 9:50 ` kernel test robot 1 sibling, 1 reply; 6+ messages in thread From: Bartosz Golaszewski @ 2025-11-17 10:01 UTC (permalink / raw) To: Jisheng Zhang; +Cc: Linus Walleij, linux-gpio, linux-kernel On Mon, Nov 17, 2025 at 1:32 AM Jisheng Zhang <jszhang@kernel.org> wrote: > > 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> > --- This is covered by the bindings at gpio/trivial-gpio.yaml but the document does not describe a reset-gpios pin. This series doesn't add any users of it either. What platform do you want to use it on? Bartosz ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v2 1/2] gpio: fxl6408: Add optional reset gpio control 2025-11-17 10:01 ` Bartosz Golaszewski @ 2025-11-19 12:13 ` Jisheng Zhang 0 siblings, 0 replies; 6+ messages in thread From: Jisheng Zhang @ 2025-11-19 12:13 UTC (permalink / raw) To: Bartosz Golaszewski; +Cc: Linus Walleij, linux-gpio, linux-kernel On Mon, Nov 17, 2025 at 11:01:47AM +0100, Bartosz Golaszewski wrote: > On Mon, Nov 17, 2025 at 1:32 AM Jisheng Zhang <jszhang@kernel.org> wrote: > > > > 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> > > --- > > This is covered by the bindings at gpio/trivial-gpio.yaml but the > document does not describe a reset-gpios pin. This series doesn't add > any users of it either. What platform do you want to use it on? the platform hasn't been upstreamed, but you raise a good question, let me drop this patch now. Will send out a v2. > > Bartosz ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v2 1/2] gpio: fxl6408: Add optional reset gpio control 2025-11-17 0:15 ` [PATCH v2 1/2] gpio: fxl6408: Add optional reset gpio control Jisheng Zhang 2025-11-17 10:01 ` Bartosz Golaszewski @ 2025-11-18 9:50 ` kernel test robot 1 sibling, 0 replies; 6+ messages in thread From: kernel test robot @ 2025-11-18 9:50 UTC (permalink / raw) To: Jisheng Zhang, Linus Walleij, Bartosz Golaszewski Cc: oe-kbuild-all, linux-gpio, linux-kernel 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-rc6 next-20251118] [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/20251117-083516 base: https://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux.git gpio/for-next patch link: https://lore.kernel.org/r/20251117001502.12618-2-jszhang%40kernel.org patch subject: [PATCH v2 1/2] gpio: fxl6408: Add optional reset gpio control config: riscv-randconfig-001-20251118 (https://download.01.org/0day-ci/archive/20251118/202511181705.QWVZhvN1-lkp@intel.com/config) compiler: riscv64-linux-gcc (GCC) 10.5.0 reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20251118/202511181705.QWVZhvN1-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/202511181705.QWVZhvN1-lkp@intel.com/ All errors (new ones prefixed by >>): drivers/gpio/gpio-fxl6408.c: In function 'fxl6408_probe': >> drivers/gpio/gpio-fxl6408.c:119:15: error: implicit declaration of function 'devm_gpiod_get_optional'; did you mean 'devm_regulator_get_optional'? [-Werror=implicit-function-declaration] 119 | reset_gpio = devm_gpiod_get_optional(dev, "reset", GPIOD_OUT_LOW); | ^~~~~~~~~~~~~~~~~~~~~~~ | devm_regulator_get_optional >> drivers/gpio/gpio-fxl6408.c:119:53: error: 'GPIOD_OUT_LOW' undeclared (first use in this function) 119 | reset_gpio = devm_gpiod_get_optional(dev, "reset", GPIOD_OUT_LOW); | ^~~~~~~~~~~~~ drivers/gpio/gpio-fxl6408.c:119:53: note: each undeclared identifier is reported only once for each function it appears in cc1: some warnings being treated as errors vim +119 drivers/gpio/gpio-fxl6408.c 104 105 static int fxl6408_probe(struct i2c_client *client) 106 { 107 struct device *dev = &client->dev; 108 struct gpio_desc *reset_gpio; 109 int ret; 110 struct gpio_regmap_config gpio_config = { 111 .parent = dev, 112 .ngpio = FXL6408_NGPIO, 113 .reg_dat_base = GPIO_REGMAP_ADDR(FXL6408_REG_INPUT_STATUS), 114 .reg_set_base = GPIO_REGMAP_ADDR(FXL6408_REG_OUTPUT), 115 .reg_dir_out_base = GPIO_REGMAP_ADDR(FXL6408_REG_IO_DIR), 116 .ngpio_per_reg = FXL6408_NGPIO, 117 }; 118 > 119 reset_gpio = devm_gpiod_get_optional(dev, "reset", GPIOD_OUT_LOW); 120 if (IS_ERR(reset_gpio)) 121 return dev_err_probe(dev, PTR_ERR(reset_gpio), "Failed to get reset gpio\n"); 122 123 gpio_config.regmap = devm_regmap_init_i2c(client, ®map); 124 if (IS_ERR(gpio_config.regmap)) 125 return dev_err_probe(dev, PTR_ERR(gpio_config.regmap), 126 "failed to allocate register map\n"); 127 128 ret = fxl6408_identify(dev, gpio_config.regmap); 129 if (ret) 130 return ret; 131 132 /* Disable High-Z of outputs, so that our OUTPUT updates actually take effect. */ 133 ret = regmap_write(gpio_config.regmap, FXL6408_REG_OUTPUT_HIGH_Z, 0); 134 if (ret) 135 return dev_err_probe(dev, ret, "failed to write 'output high Z' register\n"); 136 137 return PTR_ERR_OR_ZERO(devm_gpio_regmap_register(dev, &gpio_config)); 138 } 139 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v2 2/2] gpio: fxl6408: Add suspend/resume support 2025-11-17 0:15 [PATCH v2 0/2] gpio: fxl6408: add optional reset and suspend/resume Jisheng Zhang 2025-11-17 0:15 ` [PATCH v2 1/2] gpio: fxl6408: Add optional reset gpio control Jisheng Zhang @ 2025-11-17 0:15 ` Jisheng Zhang 1 sibling, 0 replies; 6+ messages in thread From: Jisheng Zhang @ 2025-11-17 0:15 UTC (permalink / raw) To: Linus Walleij, Bartosz Golaszewski; +Cc: linux-gpio, linux-kernel Currently, during suspend, do nothing; during resume, just sync the regmap cache to hw regs. Signed-off-by: Jisheng Zhang <jszhang@kernel.org> --- drivers/gpio/gpio-fxl6408.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/drivers/gpio/gpio-fxl6408.c b/drivers/gpio/gpio-fxl6408.c index 7074831639ce..89cf14b5e3a2 100644 --- a/drivers/gpio/gpio-fxl6408.c +++ b/drivers/gpio/gpio-fxl6408.c @@ -44,6 +44,10 @@ #define FXL6408_NGPIO 8 +struct fxl6408_chip { + struct regmap *regmap; +}; + static const struct regmap_range rd_range[] = { { FXL6408_REG_DEVICE_ID, FXL6408_REG_DEVICE_ID }, { FXL6408_REG_IO_DIR, FXL6408_REG_OUTPUT }, @@ -106,6 +110,7 @@ static int fxl6408_probe(struct i2c_client *client) { struct device *dev = &client->dev; struct gpio_desc *reset_gpio; + struct fxl6408_chip *chip; int ret; struct gpio_regmap_config gpio_config = { .parent = dev, @@ -116,6 +121,10 @@ static int fxl6408_probe(struct i2c_client *client) .ngpio_per_reg = FXL6408_NGPIO, }; + chip = devm_kzalloc(dev, sizeof(*chip), GFP_KERNEL); + if (!chip) + return -ENOMEM; + 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"); @@ -129,6 +138,9 @@ static int fxl6408_probe(struct i2c_client *client) if (ret) return ret; + chip->regmap = gpio_config.regmap; + i2c_set_clientdata(client, chip); + /* Disable High-Z of outputs, so that our OUTPUT updates actually take effect. */ ret = regmap_write(gpio_config.regmap, FXL6408_REG_OUTPUT_HIGH_Z, 0); if (ret) @@ -137,6 +149,16 @@ static int fxl6408_probe(struct i2c_client *client) return PTR_ERR_OR_ZERO(devm_gpio_regmap_register(dev, &gpio_config)); } +static int fxl6408_resume(struct device *dev) +{ + struct fxl6408_chip *chip = dev_get_drvdata(dev); + + regcache_mark_dirty(chip->regmap); + return regcache_sync(chip->regmap); +} + +static DEFINE_SIMPLE_DEV_PM_OPS(fxl6408_pm_ops, NULL, fxl6408_resume); + static const __maybe_unused struct of_device_id fxl6408_dt_ids[] = { { .compatible = "fcs,fxl6408" }, { } @@ -152,6 +174,7 @@ MODULE_DEVICE_TABLE(i2c, fxl6408_id); static struct i2c_driver fxl6408_driver = { .driver = { .name = "fxl6408", + .pm = pm_sleep_ptr(&fxl6408_pm_ops), .of_match_table = fxl6408_dt_ids, }, .probe = fxl6408_probe, -- 2.51.0 ^ permalink raw reply related [flat|nested] 6+ messages in thread
end of thread, other threads:[~2025-11-19 12:31 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2025-11-17 0:15 [PATCH v2 0/2] gpio: fxl6408: add optional reset and suspend/resume Jisheng Zhang 2025-11-17 0:15 ` [PATCH v2 1/2] gpio: fxl6408: Add optional reset gpio control Jisheng Zhang 2025-11-17 10:01 ` Bartosz Golaszewski 2025-11-19 12:13 ` Jisheng Zhang 2025-11-18 9:50 ` kernel test robot 2025-11-17 0:15 ` [PATCH v2 2/2] gpio: fxl6408: Add suspend/resume support Jisheng Zhang
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.