Skip to content

Commit 032dcf0

Browse files
committed
Merge tag 'gpio-fixes-for-v5.19-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux
Pull gpio fixes from Bartosz Golaszewski: - use the correct register for regcache sync in gpio-pca953x - remove unused and potentially harmful code from gpio-adp5588 - MAINTAINERS update * tag 'gpio-fixes-for-v5.19-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux: gpio: adp5588: Remove support for platform setup and teardown callbacks gpio: pca953x: use the correct register address to do regcache sync MAINTAINERS: Update Intel GPIO (PMIC and PCH) to Supported MAINTAINERS: Update GPIO ACPI library to Supported
2 parents 77d4d36 + 7bb8a0c commit 032dcf0

File tree

3 files changed

+14
-30
lines changed

3 files changed

+14
-30
lines changed

MAINTAINERS

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8422,7 +8422,7 @@ M: Mika Westerberg <[email protected]>
84228422
M: Andy Shevchenko <[email protected]>
84238423
84248424
8425-
S: Maintained
8425+
S: Supported
84268426
T: git git://git.kernel.org/pub/scm/linux/kernel/git/andy/linux-gpio-intel.git
84278427
F: Documentation/firmware-guide/acpi/gpio-properties.rst
84288428
F: drivers/gpio/gpiolib-acpi.c
@@ -9887,7 +9887,7 @@ F: drivers/video/fbdev/intelfb/
98879887
INTEL GPIO DRIVERS
98889888
M: Andy Shevchenko <[email protected]>
98899889
9890-
S: Maintained
9890+
S: Supported
98919891
T: git git://git.kernel.org/pub/scm/linux/kernel/git/andy/linux-gpio-intel.git
98929892
F: drivers/gpio/gpio-ich.c
98939893
F: drivers/gpio/gpio-merrifield.c
@@ -10108,7 +10108,7 @@ F: drivers/platform/x86/intel/pmc/
1010810108

1010910109
INTEL PMIC GPIO DRIVERS
1011010110
M: Andy Shevchenko <[email protected]>
10111-
S: Maintained
10111+
S: Supported
1011210112
T: git git://git.kernel.org/pub/scm/linux/kernel/git/andy/linux-gpio-intel.git
1011310113
F: drivers/gpio/gpio-*cove.c
1011410114

drivers/gpio/gpio-adp5588.c

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -406,33 +406,14 @@ static int adp5588_gpio_probe(struct i2c_client *client)
406406
if (ret)
407407
return ret;
408408

409-
if (pdata && pdata->setup) {
410-
ret = pdata->setup(client, gc->base, gc->ngpio, pdata->context);
411-
if (ret < 0)
412-
dev_warn(&client->dev, "setup failed, %d\n", ret);
413-
}
414-
415409
i2c_set_clientdata(client, dev);
416410

417411
return 0;
418412
}
419413

420414
static int adp5588_gpio_remove(struct i2c_client *client)
421415
{
422-
struct adp5588_gpio_platform_data *pdata =
423-
dev_get_platdata(&client->dev);
424416
struct adp5588_gpio *dev = i2c_get_clientdata(client);
425-
int ret;
426-
427-
if (pdata && pdata->teardown) {
428-
ret = pdata->teardown(client,
429-
dev->gpio_chip.base, dev->gpio_chip.ngpio,
430-
pdata->context);
431-
if (ret < 0) {
432-
dev_err(&client->dev, "teardown failed %d\n", ret);
433-
return ret;
434-
}
435-
}
436417

437418
if (dev->client->irq)
438419
free_irq(dev->client->irq, dev);

drivers/gpio/gpio-pca953x.c

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1120,37 +1120,40 @@ static int pca953x_regcache_sync(struct device *dev)
11201120
{
11211121
struct pca953x_chip *chip = dev_get_drvdata(dev);
11221122
int ret;
1123+
u8 regaddr;
11231124

11241125
/*
11251126
* The ordering between direction and output is important,
11261127
* sync these registers first and only then sync the rest.
11271128
*/
1128-
ret = regcache_sync_region(chip->regmap, chip->regs->direction,
1129-
chip->regs->direction + NBANK(chip));
1129+
regaddr = pca953x_recalc_addr(chip, chip->regs->direction, 0);
1130+
ret = regcache_sync_region(chip->regmap, regaddr, regaddr + NBANK(chip));
11301131
if (ret) {
11311132
dev_err(dev, "Failed to sync GPIO dir registers: %d\n", ret);
11321133
return ret;
11331134
}
11341135

1135-
ret = regcache_sync_region(chip->regmap, chip->regs->output,
1136-
chip->regs->output + NBANK(chip));
1136+
regaddr = pca953x_recalc_addr(chip, chip->regs->output, 0);
1137+
ret = regcache_sync_region(chip->regmap, regaddr, regaddr + NBANK(chip));
11371138
if (ret) {
11381139
dev_err(dev, "Failed to sync GPIO out registers: %d\n", ret);
11391140
return ret;
11401141
}
11411142

11421143
#ifdef CONFIG_GPIO_PCA953X_IRQ
11431144
if (chip->driver_data & PCA_PCAL) {
1144-
ret = regcache_sync_region(chip->regmap, PCAL953X_IN_LATCH,
1145-
PCAL953X_IN_LATCH + NBANK(chip));
1145+
regaddr = pca953x_recalc_addr(chip, PCAL953X_IN_LATCH, 0);
1146+
ret = regcache_sync_region(chip->regmap, regaddr,
1147+
regaddr + NBANK(chip));
11461148
if (ret) {
11471149
dev_err(dev, "Failed to sync INT latch registers: %d\n",
11481150
ret);
11491151
return ret;
11501152
}
11511153

1152-
ret = regcache_sync_region(chip->regmap, PCAL953X_INT_MASK,
1153-
PCAL953X_INT_MASK + NBANK(chip));
1154+
regaddr = pca953x_recalc_addr(chip, PCAL953X_INT_MASK, 0);
1155+
ret = regcache_sync_region(chip->regmap, regaddr,
1156+
regaddr + NBANK(chip));
11541157
if (ret) {
11551158
dev_err(dev, "Failed to sync INT mask registers: %d\n",
11561159
ret);

0 commit comments

Comments
 (0)