* [PATCH v6 0/2] Add TI TPS65214 PMIC GPIO Support @ 2025-07-03 18:07 Shree Ramamoorthy 2025-07-03 18:07 ` [PATCH v6 1/2] gpio: tps65219: Update _IDX & _OFFSET macro prefix Shree Ramamoorthy 2025-07-03 18:07 ` [PATCH v6 2/2] gpio: tps65219: Add support for TI TPS65214 PMIC Shree Ramamoorthy 0 siblings, 2 replies; 6+ messages in thread From: Shree Ramamoorthy @ 2025-07-03 18:07 UTC (permalink / raw) To: aaro.koskinen, andreas, khilman, rogerq, tony, linus.walleij, brgl, linux-omap, linux-kernel, linux-gpio Cc: m-leonard, praneeth, jcormier The related MFD series was integrated in mainline during 6.15 cycle [0]. TPS65214 is a Power Management Integrated Circuit (PMIC) that has significant register map overlap with TPS65219. The series introduces TPS65214 and restructures the existing driver to support multiple devices. TPS65215's GPIO specs are the same as TPS65219, so the "tps65219-gpio" compatible string is assigned to two devices in the TPS65219 MFD driver. No additional support is required in the GPIO driver for TPS65215. - TPS65214 has 1 GPIO & 1 GPO, whereas TPS65219/TPS65215 both have 1 GPIO & 2 GPOs. - TPS65214' GPIO direction can be changed with register GENERAL_CONFIG and bit GPIO_CONFIG during device operation. - TPS65219's MULTI_DEVICE_ENABLE bit in register MFP_1_CFG maps to TPS65214's GPIO_VSEL_CONFIG bit. TPS65214 Datasheet: https://www.ti.com/lit/gpn/TPS65214 TPS65214 TRM: https://www.ti.com/lit/pdf/slvud30 TPS65215 TRM: https://www.ti.com/lit/pdf/slvucw5/ Tested on Jon Cormier's AM62x platform with TPS65219. GPIO offsets remained consistent and functional. Signed-off-by: Shree Ramamoorthy <s-ramamoorthy@ti.com> Tested-by: Jonathan Cormier <jcormier@criticallink.com> --- Change Log: v5 -> v6: - Add Jon Cormier Reviewed-by and Tested-by tags - Add test info from Jon C. to cover letter - Change copyright to include 2022 & 2025 - Use set_rv() variant instead of deprecated set() v4 -> v5: - Consolidate from 3 to 2 patches - Add specific TPS65215 info to Patch 1 comments + commit message - Remove chip_data struct - Add separate dev-specific template_chip structs - Add dev-specific change_direction functions + assignment in probe - Add PMIC GPIO mapping explanation in comments for future users - Add TPS65214 GPIO0 direction mask macro - Rename _GPIO0_OFFSET in patch 1, in addition to _IDX macro - Update cover letter + add TPS65214 datasheet link v3 -> v4: - Update cover letter - Rebase for 6.16 cycle v2 -> v3: - Correct gpio_chip.ngpio line to use .offset field - Remove unnecessary newlines v1 -> v2: - have any PMIC lists be in alpha-numeric order: TPS65215, then TPS65219 - remove comma after terminator - Add driver prefix to chip_data struct --- [0]: https://lore.kernel.org/all/173928615760.2233464.12306998726512431222.b4-ty@kernel.org/ Shree Ramamoorthy (2): gpio: tps65219: Update _IDX & _OFFSET macro prefix gpio: tps65219: Add support for TI TPS65214 PMIC drivers/gpio/gpio-tps65219.c | 118 ++++++++++++++++++++++++++++++----- 1 file changed, 103 insertions(+), 15 deletions(-) -- 2.43.0 ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v6 1/2] gpio: tps65219: Update _IDX & _OFFSET macro prefix 2025-07-03 18:07 [PATCH v6 0/2] Add TI TPS65214 PMIC GPIO Support Shree Ramamoorthy @ 2025-07-03 18:07 ` Shree Ramamoorthy 2025-07-03 18:07 ` [PATCH v6 2/2] gpio: tps65219: Add support for TI TPS65214 PMIC Shree Ramamoorthy 1 sibling, 0 replies; 6+ messages in thread From: Shree Ramamoorthy @ 2025-07-03 18:07 UTC (permalink / raw) To: aaro.koskinen, andreas, khilman, rogerq, tony, linus.walleij, brgl, linux-omap, linux-kernel, linux-gpio Cc: m-leonard, praneeth, jcormier TPS65215 and TPS65219 are overlapping PMIC devices. While their regulator features differe, the GPIO features are the same. In the TPS65219 MFD driver, the 2 PMICs share the same "tps65219-gpio" compatible string to limit support for TPS65215 in this GPIO driver to comments. The TPS6521X_GPIO0_IDX and TPS6521X_GPIO0_OFFSET macro name prefixes are updated to indicate these macros apply to both PMICs. Reviewed-by: Roger Quadros <rogerq@kernel.org> Acked-by: Linus Walleij <linus.walleij@linaro.org> Reviewed-by: Jonathan Cormier <jcormier@criticallink.com> Signed-off-by: Shree Ramamoorthy <s-ramamoorthy@ti.com> --- drivers/gpio/gpio-tps65219.c | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/drivers/gpio/gpio-tps65219.c b/drivers/gpio/gpio-tps65219.c index 526640c39a11..2355eec0cee6 100644 --- a/drivers/gpio/gpio-tps65219.c +++ b/drivers/gpio/gpio-tps65219.c @@ -1,8 +1,8 @@ // SPDX-License-Identifier: GPL-2.0 /* - * GPIO driver for TI TPS65219 PMICs + * GPIO driver for TI TPS65215/TPS65219 PMICs * - * Copyright (C) 2022 Texas Instruments Incorporated - http://www.ti.com/ + * Copyright (C) 2022, 2025 Texas Instruments Incorporated - http://www.ti.com/ */ #include <linux/bits.h> @@ -13,8 +13,15 @@ #include <linux/regmap.h> #define TPS65219_GPIO0_DIR_MASK BIT(3) -#define TPS65219_GPIO0_OFFSET 2 -#define TPS65219_GPIO0_IDX 0 +#define TPS6521X_GPIO0_OFFSET 2 +#define TPS6521X_GPIO0_IDX 0 + +/* + * TPS65215 & TPS65219 GPIO mapping + * Linux gpio offset 0 -> GPIO (pin16) -> bit_offset 2 + * Linux gpio offset 1 -> GPO1 (pin8 ) -> bit_offset 0 + * Linux gpio offset 2 -> GPO2 (pin17) -> bit_offset 1 + */ struct tps65219_gpio { struct gpio_chip gpio_chip; @@ -26,7 +33,7 @@ static int tps65219_gpio_get_direction(struct gpio_chip *gc, unsigned int offset struct tps65219_gpio *gpio = gpiochip_get_data(gc); int ret, val; - if (offset != TPS65219_GPIO0_IDX) + if (offset != TPS6521X_GPIO0_IDX) return GPIO_LINE_DIRECTION_OUT; ret = regmap_read(gpio->tps->regmap, TPS65219_REG_MFP_1_CONFIG, &val); @@ -42,7 +49,7 @@ static int tps65219_gpio_get(struct gpio_chip *gc, unsigned int offset) struct device *dev = gpio->tps->dev; int ret, val; - if (offset != TPS65219_GPIO0_IDX) { + if (offset != TPS6521X_GPIO0_IDX) { dev_err(dev, "GPIO%d is output only, cannot get\n", offset); return -ENOTSUPP; } @@ -71,7 +78,7 @@ static void tps65219_gpio_set(struct gpio_chip *gc, unsigned int offset, int val struct device *dev = gpio->tps->dev; int v, mask, bit; - bit = (offset == TPS65219_GPIO0_IDX) ? TPS65219_GPIO0_OFFSET : offset - 1; + bit = (offset == TPS6521X_GPIO0_IDX) ? TPS6521X_GPIO0_OFFSET : offset - 1; mask = BIT(bit); v = value ? mask : 0; @@ -117,7 +124,7 @@ static int tps65219_gpio_direction_input(struct gpio_chip *gc, unsigned int offs struct tps65219_gpio *gpio = gpiochip_get_data(gc); struct device *dev = gpio->tps->dev; - if (offset != TPS65219_GPIO0_IDX) { + if (offset != TPS6521X_GPIO0_IDX) { dev_err(dev, "GPIO%d is output only, cannot change to input\n", offset); return -ENOTSUPP; } @@ -131,7 +138,7 @@ static int tps65219_gpio_direction_input(struct gpio_chip *gc, unsigned int offs static int tps65219_gpio_direction_output(struct gpio_chip *gc, unsigned int offset, int value) { tps65219_gpio_set(gc, offset, value); - if (offset != TPS65219_GPIO0_IDX) + if (offset != TPS6521X_GPIO0_IDX) return 0; if (tps65219_gpio_get_direction(gc, offset) == GPIO_LINE_DIRECTION_OUT) @@ -179,5 +186,5 @@ module_platform_driver(tps65219_gpio_driver); MODULE_ALIAS("platform:tps65219-gpio"); MODULE_AUTHOR("Jonathan Cormier <jcormier@criticallink.com>"); -MODULE_DESCRIPTION("TPS65219 GPIO driver"); +MODULE_DESCRIPTION("TPS65215/TPS65219 GPIO driver"); MODULE_LICENSE("GPL"); -- 2.43.0 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH v6 2/2] gpio: tps65219: Add support for TI TPS65214 PMIC 2025-07-03 18:07 [PATCH v6 0/2] Add TI TPS65214 PMIC GPIO Support Shree Ramamoorthy 2025-07-03 18:07 ` [PATCH v6 1/2] gpio: tps65219: Update _IDX & _OFFSET macro prefix Shree Ramamoorthy @ 2025-07-03 18:07 ` Shree Ramamoorthy 2025-07-03 19:05 ` Christophe JAILLET 2025-07-04 7:31 ` kernel test robot 1 sibling, 2 replies; 6+ messages in thread From: Shree Ramamoorthy @ 2025-07-03 18:07 UTC (permalink / raw) To: aaro.koskinen, andreas, khilman, rogerq, tony, linus.walleij, brgl, linux-omap, linux-kernel, linux-gpio Cc: m-leonard, praneeth, jcormier Add support for the TI TPS65214 PMIC with the addition of an id_table, separate TPS65214 template_chip, and device-specific _change_direction functions. - Use platform_get_device_id() to assign dev-specific information. - Use different change_direction() functions since TPS65214's GPIO configuration bits are changeable during device operation through bit GPIO_CONFIG in GENERAL_CONFIG register. - Remove MODULE_ALIAS since it is now generated by MODULE_DEVICE_TABLE. Reviewed-by: Jonathan Cormier <jcormier@criticallink.com> Tested-by: Jonathan Cormier <jcormier@criticallink.com> Signed-off-by: Shree Ramamoorthy <s-ramamoorthy@ti.com> --- drivers/gpio/gpio-tps65219.c | 95 +++++++++++++++++++++++++++++++++--- 1 file changed, 88 insertions(+), 7 deletions(-) diff --git a/drivers/gpio/gpio-tps65219.c b/drivers/gpio/gpio-tps65219.c index 2355eec0cee6..f6a99402ae46 100644 --- a/drivers/gpio/gpio-tps65219.c +++ b/drivers/gpio/gpio-tps65219.c @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0 /* - * GPIO driver for TI TPS65215/TPS65219 PMICs + * GPIO driver for TI TPS65214/TPS65215/TPS65219 PMICs * * Copyright (C) 2022, 2025 Texas Instruments Incorporated - http://www.ti.com/ */ @@ -13,10 +13,15 @@ #include <linux/regmap.h> #define TPS65219_GPIO0_DIR_MASK BIT(3) +#define TPS65214_GPIO0_DIR_MASK BIT(1) #define TPS6521X_GPIO0_OFFSET 2 #define TPS6521X_GPIO0_IDX 0 /* + * TPS65214 GPIO mapping + * Linux gpio offset 0 -> GPIO (pin16) -> bit_offset 2 + * Linux gpio offset 1 -> GPO1 (pin9 ) -> bit_offset 0 + * * TPS65215 & TPS65219 GPIO mapping * Linux gpio offset 0 -> GPIO (pin16) -> bit_offset 2 * Linux gpio offset 1 -> GPO1 (pin8 ) -> bit_offset 0 @@ -24,10 +29,26 @@ */ struct tps65219_gpio { + int (*change_dir)(struct gpio_chip *gc, unsigned int offset, unsigned int dir); struct gpio_chip gpio_chip; struct tps65219 *tps; }; +static int tps65214_gpio_get_direction(struct gpio_chip *gc, unsigned int offset) +{ + struct tps65219_gpio *gpio = gpiochip_get_data(gc); + int ret, val; + + if (offset != TPS6521X_GPIO0_IDX) + return GPIO_LINE_DIRECTION_OUT; + + ret = regmap_read(gpio->tps->regmap, TPS65219_REG_GENERAL_CONFIG, &val); + if (ret) + return ret; + + return !(val & TPS65214_GPIO0_DIR_MASK); +} + static int tps65219_gpio_get_direction(struct gpio_chip *gc, unsigned int offset) { struct tps65219_gpio *gpio = gpiochip_get_data(gc); @@ -119,6 +140,34 @@ static int tps65219_gpio_change_direction(struct gpio_chip *gc, unsigned int off return -ENOTSUPP; } +static int tps65214_gpio_change_direction(struct gpio_chip *gc, unsigned int offset, + unsigned int direction) +{ + struct tps65219_gpio *gpio = gpiochip_get_data(gc); + struct device *dev = gpio->tps->dev; + int val, ret; + + /* Verified if GPIO or GPO in parent function + * Masked value: 0 = GPIO, 1 = VSEL + */ + ret = regmap_read(gpio->tps->regmap, TPS65219_REG_MFP_1_CONFIG, &val); + if (ret) + return ret; + + ret = !!(val & BIT(TPS65219_GPIO0_DIR_MASK)); + if (ret) + dev_err(dev, "GPIO%d configured as VSEL, not GPIO\n", offset); + + ret = regmap_update_bits(gpio->tps->regmap, TPS65219_REG_GENERAL_CONFIG, + TPS65214_GPIO0_DIR_MASK, direction); + if (ret) + dev_err(dev, + "Fail to change direction to %u for GPIO%d.\n", + direction, offset); + + return ret; +} + static int tps65219_gpio_direction_input(struct gpio_chip *gc, unsigned int offset) { struct tps65219_gpio *gpio = gpiochip_get_data(gc); @@ -132,11 +181,13 @@ static int tps65219_gpio_direction_input(struct gpio_chip *gc, unsigned int offs if (tps65219_gpio_get_direction(gc, offset) == GPIO_LINE_DIRECTION_IN) return 0; - return tps65219_gpio_change_direction(gc, offset, GPIO_LINE_DIRECTION_IN); + return gpio->change_dir(gc, offset, GPIO_LINE_DIRECTION_IN); } static int tps65219_gpio_direction_output(struct gpio_chip *gc, unsigned int offset, int value) { + struct tps65219_gpio *gpio = gpiochip_get_data(gc); + tps65219_gpio_set(gc, offset, value); if (offset != TPS6521X_GPIO0_IDX) return 0; @@ -144,9 +195,22 @@ static int tps65219_gpio_direction_output(struct gpio_chip *gc, unsigned int off if (tps65219_gpio_get_direction(gc, offset) == GPIO_LINE_DIRECTION_OUT) return 0; - return tps65219_gpio_change_direction(gc, offset, GPIO_LINE_DIRECTION_OUT); + return gpio->change_dir(gc, offset, GPIO_LINE_DIRECTION_OUT); } +static const struct gpio_chip tps65214_template_chip = { + .label = "tps65214-gpio", + .owner = THIS_MODULE, + .get_direction = tps65214_gpio_get_direction, + .direction_input = tps65219_gpio_direction_input, + .direction_output = tps65219_gpio_direction_output, + .get = tps65219_gpio_get, + .set_rv = tps65219_gpio_set, + .base = -1, + .ngpio = 2, + .can_sleep = true, +}; + static const struct gpio_chip tps65219_template_chip = { .label = "tps65219-gpio", .owner = THIS_MODULE, @@ -154,7 +218,7 @@ static const struct gpio_chip tps65219_template_chip = { .direction_input = tps65219_gpio_direction_input, .direction_output = tps65219_gpio_direction_output, .get = tps65219_gpio_get, - .set = tps65219_gpio_set, + .set_rv = tps65219_gpio_set, .base = -1, .ngpio = 3, .can_sleep = true, @@ -162,6 +226,7 @@ static const struct gpio_chip tps65219_template_chip = { static int tps65219_gpio_probe(struct platform_device *pdev) { + enum pmic_id chip = platform_get_device_id(pdev)->driver_data; struct tps65219 *tps = dev_get_drvdata(pdev->dev.parent); struct tps65219_gpio *gpio; @@ -169,22 +234,38 @@ static int tps65219_gpio_probe(struct platform_device *pdev) if (!gpio) return -ENOMEM; + if (chip == TPS65214) { + gpio->gpio_chip = tps65214_template_chip; + gpio->change_dir = tps65214_gpio_change_direction; + } else if (chip == TPS65219) { + gpio->gpio_chip = tps65219_template_chip; + gpio->change_dir = tps65219_gpio_change_direction; + } else { + return -ENODATA; + } + gpio->tps = tps; - gpio->gpio_chip = tps65219_template_chip; gpio->gpio_chip.parent = tps->dev; return devm_gpiochip_add_data(&pdev->dev, &gpio->gpio_chip, gpio); } +static const struct platform_device_id tps6521x_gpio_id_table[] = { + { "tps65214-gpio", TPS65214 }, + { "tps65219-gpio", TPS65219 }, + { /* sentinel */ } +}; +MODULE_DEVICE_TABLE(platform, tps6521x_gpio_id_table); + static struct platform_driver tps65219_gpio_driver = { .driver = { .name = "tps65219-gpio", }, .probe = tps65219_gpio_probe, + .id_table = tps6521x_gpio_id_table, }; module_platform_driver(tps65219_gpio_driver); -MODULE_ALIAS("platform:tps65219-gpio"); MODULE_AUTHOR("Jonathan Cormier <jcormier@criticallink.com>"); -MODULE_DESCRIPTION("TPS65215/TPS65219 GPIO driver"); +MODULE_DESCRIPTION("TPS65214/TPS65215/TPS65219 GPIO driver"); MODULE_LICENSE("GPL"); -- 2.43.0 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH v6 2/2] gpio: tps65219: Add support for TI TPS65214 PMIC 2025-07-03 18:07 ` [PATCH v6 2/2] gpio: tps65219: Add support for TI TPS65214 PMIC Shree Ramamoorthy @ 2025-07-03 19:05 ` Christophe JAILLET 2025-07-03 20:13 ` Shree Ramamoorthy 2025-07-04 7:31 ` kernel test robot 1 sibling, 1 reply; 6+ messages in thread From: Christophe JAILLET @ 2025-07-03 19:05 UTC (permalink / raw) To: Shree Ramamoorthy, aaro.koskinen, andreas, khilman, rogerq, tony, linus.walleij, brgl, linux-omap, linux-kernel, linux-gpio Cc: m-leonard, praneeth, jcormier Le 03/07/2025 à 20:07, Shree Ramamoorthy a écrit : > Add support for the TI TPS65214 PMIC with the addition of an id_table, > separate TPS65214 template_chip, and device-specific _change_direction > functions. > > - Use platform_get_device_id() to assign dev-specific information. > - Use different change_direction() functions since TPS65214's GPIO > configuration bits are changeable during device operation through bit > GPIO_CONFIG in GENERAL_CONFIG register. > - Remove MODULE_ALIAS since it is now generated by MODULE_DEVICE_TABLE. > > Reviewed-by: Jonathan Cormier <jcormier@criticallink.com> > Tested-by: Jonathan Cormier <jcormier@criticallink.com> > Signed-off-by: Shree Ramamoorthy <s-ramamoorthy@ti.com> > --- ... > +static int tps65214_gpio_change_direction(struct gpio_chip *gc, unsigned int offset, > + unsigned int direction) > +{ > + struct tps65219_gpio *gpio = gpiochip_get_data(gc); > + struct device *dev = gpio->tps->dev; > + int val, ret; > + > + /* Verified if GPIO or GPO in parent function Nitpick: should the /* be on a separate line? > + * Masked value: 0 = GPIO, 1 = VSEL > + */ > + ret = regmap_read(gpio->tps->regmap, TPS65219_REG_MFP_1_CONFIG, &val); > + if (ret) > + return ret; > + > + ret = !!(val & BIT(TPS65219_GPIO0_DIR_MASK)); > + if (ret) > + dev_err(dev, "GPIO%d configured as VSEL, not GPIO\n", offset); > + > + ret = regmap_update_bits(gpio->tps->regmap, TPS65219_REG_GENERAL_CONFIG, > + TPS65214_GPIO0_DIR_MASK, direction); > + if (ret) > + dev_err(dev, > + "Fail to change direction to %u for GPIO%d.\n", Nitpick: keep it on the previous line? > + direction, offset); > + > + return ret; > +} ... > +static const struct gpio_chip tps65214_template_chip = { > + .label = "tps65214-gpio", > + .owner = THIS_MODULE, > + .get_direction = tps65214_gpio_get_direction, > + .direction_input = tps65219_gpio_direction_input, > + .direction_output = tps65219_gpio_direction_output, > + .get = tps65219_gpio_get, > + .set_rv = tps65219_gpio_set, > + .base = -1, > + .ngpio = 2, > + .can_sleep = true, > +}; > + > static const struct gpio_chip tps65219_template_chip = { > .label = "tps65219-gpio", > .owner = THIS_MODULE, > @@ -154,7 +218,7 @@ static const struct gpio_chip tps65219_template_chip = { > .direction_input = tps65219_gpio_direction_input, > .direction_output = tps65219_gpio_direction_output, > .get = tps65219_gpio_get, > - .set = tps65219_gpio_set, > + .set_rv = tps65219_gpio_set, Is this correct? Does it even compile? tps65219_gpio_set() returns void and .set_rv() expects a return value. (same for tps65214_template_chip above) > .base = -1, > .ngpio = 3, > .can_sleep = true, ... CJ ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v6 2/2] gpio: tps65219: Add support for TI TPS65214 PMIC 2025-07-03 19:05 ` Christophe JAILLET @ 2025-07-03 20:13 ` Shree Ramamoorthy 0 siblings, 0 replies; 6+ messages in thread From: Shree Ramamoorthy @ 2025-07-03 20:13 UTC (permalink / raw) To: Christophe JAILLET, aaro.koskinen, andreas, khilman, rogerq, tony, linus.walleij, brgl, linux-omap, linux-kernel, linux-gpio Cc: m-leonard, praneeth, jcormier On 7/3/25 2:05 PM, Christophe JAILLET wrote: > Le 03/07/2025 à 20:07, Shree Ramamoorthy a écrit : >> Add support for the TI TPS65214 PMIC with the addition of an id_table, >> separate TPS65214 template_chip, and device-specific _change_direction >> functions. >> >> - Use platform_get_device_id() to assign dev-specific information. >> - Use different change_direction() functions since TPS65214's GPIO >> configuration bits are changeable during device operation through bit >> GPIO_CONFIG in GENERAL_CONFIG register. >> - Remove MODULE_ALIAS since it is now generated by MODULE_DEVICE_TABLE. >> >> Reviewed-by: Jonathan Cormier <jcormier@criticallink.com> >> Tested-by: Jonathan Cormier <jcormier@criticallink.com> >> Signed-off-by: Shree Ramamoorthy <s-ramamoorthy@ti.com> >> --- > > ... > >> +static int tps65214_gpio_change_direction(struct gpio_chip *gc, >> unsigned int offset, >> + unsigned int direction) >> +{ >> + struct tps65219_gpio *gpio = gpiochip_get_data(gc); >> + struct device *dev = gpio->tps->dev; >> + int val, ret; >> + >> + /* Verified if GPIO or GPO in parent function > > Nitpick: should the /* be on a separate line? > Will fix this. >> + * Masked value: 0 = GPIO, 1 = VSEL >> + */ >> + ret = regmap_read(gpio->tps->regmap, TPS65219_REG_MFP_1_CONFIG, >> &val); >> + if (ret) >> + return ret; >> + >> + ret = !!(val & BIT(TPS65219_GPIO0_DIR_MASK)); >> + if (ret) >> + dev_err(dev, "GPIO%d configured as VSEL, not GPIO\n", offset); >> + >> + ret = regmap_update_bits(gpio->tps->regmap, >> TPS65219_REG_GENERAL_CONFIG, >> + TPS65214_GPIO0_DIR_MASK, direction); >> + if (ret) >> + dev_err(dev, >> + "Fail to change direction to %u for GPIO%d.\n", > > Nitpick: keep it on the previous line? Will update this as well. > >> + direction, offset); >> + >> + return ret; >> +} > > ... > >> +static const struct gpio_chip tps65214_template_chip = { >> + .label = "tps65214-gpio", >> + .owner = THIS_MODULE, >> + .get_direction = tps65214_gpio_get_direction, >> + .direction_input = tps65219_gpio_direction_input, >> + .direction_output = tps65219_gpio_direction_output, >> + .get = tps65219_gpio_get, >> + .set_rv = tps65219_gpio_set, >> + .base = -1, >> + .ngpio = 2, >> + .can_sleep = true, >> +}; >> + >> static const struct gpio_chip tps65219_template_chip = { >> .label = "tps65219-gpio", >> .owner = THIS_MODULE, >> @@ -154,7 +218,7 @@ static const struct gpio_chip >> tps65219_template_chip = { >> .direction_input = tps65219_gpio_direction_input, >> .direction_output = tps65219_gpio_direction_output, >> .get = tps65219_gpio_get, >> - .set = tps65219_gpio_set, >> + .set_rv = tps65219_gpio_set, > > Is this correct? Does it even compile? > tps65219_gpio_set() returns void and .set_rv() expects a return value. > > (same for tps65214_template_chip above) I sent this out too quickly, will add in the corresponding return values & re-test. Thanks for reviewing! > >> .base = -1, >> .ngpio = 3, >> .can_sleep = true, > > ... > > CJ -- Best, Shree Ramamoorthy PMIC Software Engineer ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v6 2/2] gpio: tps65219: Add support for TI TPS65214 PMIC 2025-07-03 18:07 ` [PATCH v6 2/2] gpio: tps65219: Add support for TI TPS65214 PMIC Shree Ramamoorthy 2025-07-03 19:05 ` Christophe JAILLET @ 2025-07-04 7:31 ` kernel test robot 1 sibling, 0 replies; 6+ messages in thread From: kernel test robot @ 2025-07-04 7:31 UTC (permalink / raw) To: Shree Ramamoorthy, aaro.koskinen, andreas, khilman, rogerq, tony, linus.walleij, brgl, linux-omap, linux-kernel, linux-gpio Cc: llvm, oe-kbuild-all, m-leonard, praneeth, jcormier Hi Shree, kernel test robot noticed the following build errors: [auto build test ERROR on v6.16-rc4] [also build test ERROR on linus/master next-20250703] [cannot apply to tmlind-omap/for-next] [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/Shree-Ramamoorthy/gpio-tps65219-Update-_IDX-_OFFSET-macro-prefix/20250704-021048 base: v6.16-rc4 patch link: https://lore.kernel.org/r/20250703180751.168755-3-s-ramamoorthy%40ti.com patch subject: [PATCH v6 2/2] gpio: tps65219: Add support for TI TPS65214 PMIC config: hexagon-randconfig-002-20250704 (https://download.01.org/0day-ci/archive/20250704/202507041537.da8R2iEX-lkp@intel.com/config) compiler: clang version 21.0.0git (https://github.com/llvm/llvm-project 61529d9e36fa86782a2458e6bdeedf7f376ef4b5) reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250704/202507041537.da8R2iEX-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/202507041537.da8R2iEX-lkp@intel.com/ All errors (new ones prefixed by >>): >> drivers/gpio/gpio-tps65219.c:208:14: error: incompatible function pointer types initializing 'int (*)(struct gpio_chip *, unsigned int, int)' with an expression of type 'void (struct gpio_chip *, unsigned int, int)' [-Wincompatible-function-pointer-types] 208 | .set_rv = tps65219_gpio_set, | ^~~~~~~~~~~~~~~~~ drivers/gpio/gpio-tps65219.c:221:14: error: incompatible function pointer types initializing 'int (*)(struct gpio_chip *, unsigned int, int)' with an expression of type 'void (struct gpio_chip *, unsigned int, int)' [-Wincompatible-function-pointer-types] 221 | .set_rv = tps65219_gpio_set, | ^~~~~~~~~~~~~~~~~ 2 errors generated. vim +208 drivers/gpio/gpio-tps65219.c 200 201 static const struct gpio_chip tps65214_template_chip = { 202 .label = "tps65214-gpio", 203 .owner = THIS_MODULE, 204 .get_direction = tps65214_gpio_get_direction, 205 .direction_input = tps65219_gpio_direction_input, 206 .direction_output = tps65219_gpio_direction_output, 207 .get = tps65219_gpio_get, > 208 .set_rv = tps65219_gpio_set, 209 .base = -1, 210 .ngpio = 2, 211 .can_sleep = true, 212 }; 213 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2025-07-04 7:31 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2025-07-03 18:07 [PATCH v6 0/2] Add TI TPS65214 PMIC GPIO Support Shree Ramamoorthy 2025-07-03 18:07 ` [PATCH v6 1/2] gpio: tps65219: Update _IDX & _OFFSET macro prefix Shree Ramamoorthy 2025-07-03 18:07 ` [PATCH v6 2/2] gpio: tps65219: Add support for TI TPS65214 PMIC Shree Ramamoorthy 2025-07-03 19:05 ` Christophe JAILLET 2025-07-03 20:13 ` Shree Ramamoorthy 2025-07-04 7:31 ` kernel test robot
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).