mirror of https://github.com/torvalds/linux.git
gpio fixes for v6.14-rc2
- fix interrupt support in gpio-pca953x - fix configfs attribute locking in gpio-sim - limit the visibility of the GPIO_GRGPIO Kconfig symbol to OF systems only - update MAINTAINERS -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEEFp3rbAvDxGAT0sefEacuoBRx13IFAmelxt8ACgkQEacuoBRx 13LADRAAtVn+fLkGDHCHvEThbGu5fXsPYFvKDRcZ4ok5KftaSRGYqlQcM0Vdnnpk 2sHOh5+wzXEGqcpjy/XAtKj3baW3TayltuEtYhphmxwxS4Bwt4I6Xm9NUBSjG9ul tUpCSz8SEx0/HXjt8zvcVmoVpA7BxtLmOWer/4I4uw3n9EetTHPYIAOWl7nPGUJL 7hjliV+xec5RWczoMhFsUnOhod+FU2pR2UbglLZFu7JkLOcGmLogRfGeXCnphBko vf0dkKXZBc9Bj37wKaVfLXtNNa42swP5vQVdOMfCp63iH4zK8Zxr3Y5KjlXXeXj4 ulQe+xbQ9Mg14pc4MWgdynWF3BXPo0C2F+PSD9OCE6WCY35HY3sSNlg5/JXednVk bhUX+2Ma3Hed0ryoqlfchVPN8ii0WTCj5Ucfk74KDPODqMopqIHGGnacD2LINJlV tif107wvRIk26URxoriUuvIyEMFGMRJV7R/RJqy4A4+5gi3O3MMP6oLuBO4tsddX ig0yQlJRI3ITbHrYIcBjPTD5RsCpHF9HemF4U8o4pEOgast4B7dXr4KUTcVqZvjW 8R0hQa6XQbB9IS27gaNzwSF5fsyQLedo1dwezpfF6cviGRVv7ybQurp2L/oNOlwb aj9x9yRlMhqeUXB+u7GWLfKp4rqDlEpiCB1f/vnM0NA4RjDuP4w= =6UGr -----END PGP SIGNATURE----- Merge tag 'gpio-fixes-for-v6.14-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux Pull gpio fixes from Bartosz Golaszewski: - fix interrupt support in gpio-pca953x - fix configfs attribute locking in gpio-sim - limit the visibility of the GPIO_GRGPIO Kconfig symbol to OF systems only - update MAINTAINERS * tag 'gpio-fixes-for-v6.14-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux: MAINTAINERS: Use my kernel.org address for ACPI GPIO work gpio: GPIO_GRGPIO should depend on OF gpio: sim: lock hog configfs items if present gpio: pca953x: Improve interrupt support
This commit is contained in:
commit
78b2a2328b
|
|
@ -9878,7 +9878,7 @@ S: Maintained
|
||||||
F: drivers/staging/gpib/
|
F: drivers/staging/gpib/
|
||||||
|
|
||||||
GPIO ACPI SUPPORT
|
GPIO ACPI SUPPORT
|
||||||
M: Mika Westerberg <mika.westerberg@linux.intel.com>
|
M: Mika Westerberg <westeri@kernel.org>
|
||||||
M: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
|
M: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
|
||||||
L: linux-gpio@vger.kernel.org
|
L: linux-gpio@vger.kernel.org
|
||||||
L: linux-acpi@vger.kernel.org
|
L: linux-acpi@vger.kernel.org
|
||||||
|
|
|
||||||
|
|
@ -338,6 +338,7 @@ config GPIO_GRANITERAPIDS
|
||||||
|
|
||||||
config GPIO_GRGPIO
|
config GPIO_GRGPIO
|
||||||
tristate "Aeroflex Gaisler GRGPIO support"
|
tristate "Aeroflex Gaisler GRGPIO support"
|
||||||
|
depends on OF || COMPILE_TEST
|
||||||
select GPIO_GENERIC
|
select GPIO_GENERIC
|
||||||
select IRQ_DOMAIN
|
select IRQ_DOMAIN
|
||||||
help
|
help
|
||||||
|
|
|
||||||
|
|
@ -841,25 +841,6 @@ static bool pca953x_irq_pending(struct pca953x_chip *chip, unsigned long *pendin
|
||||||
DECLARE_BITMAP(trigger, MAX_LINE);
|
DECLARE_BITMAP(trigger, MAX_LINE);
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
if (chip->driver_data & PCA_PCAL) {
|
|
||||||
/* Read the current interrupt status from the device */
|
|
||||||
ret = pca953x_read_regs(chip, PCAL953X_INT_STAT, trigger);
|
|
||||||
if (ret)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
/* Check latched inputs and clear interrupt status */
|
|
||||||
ret = pca953x_read_regs(chip, chip->regs->input, cur_stat);
|
|
||||||
if (ret)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
/* Apply filter for rising/falling edge selection */
|
|
||||||
bitmap_replace(new_stat, chip->irq_trig_fall, chip->irq_trig_raise, cur_stat, gc->ngpio);
|
|
||||||
|
|
||||||
bitmap_and(pending, new_stat, trigger, gc->ngpio);
|
|
||||||
|
|
||||||
return !bitmap_empty(pending, gc->ngpio);
|
|
||||||
}
|
|
||||||
|
|
||||||
ret = pca953x_read_regs(chip, chip->regs->input, cur_stat);
|
ret = pca953x_read_regs(chip, chip->regs->input, cur_stat);
|
||||||
if (ret)
|
if (ret)
|
||||||
return false;
|
return false;
|
||||||
|
|
|
||||||
|
|
@ -1028,20 +1028,23 @@ gpio_sim_device_lockup_configfs(struct gpio_sim_device *dev, bool lock)
|
||||||
struct configfs_subsystem *subsys = dev->group.cg_subsys;
|
struct configfs_subsystem *subsys = dev->group.cg_subsys;
|
||||||
struct gpio_sim_bank *bank;
|
struct gpio_sim_bank *bank;
|
||||||
struct gpio_sim_line *line;
|
struct gpio_sim_line *line;
|
||||||
|
struct config_item *item;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The device only needs to depend on leaf line entries. This is
|
* The device only needs to depend on leaf entries. This is
|
||||||
* sufficient to lock up all the configfs entries that the
|
* sufficient to lock up all the configfs entries that the
|
||||||
* instantiated, alive device depends on.
|
* instantiated, alive device depends on.
|
||||||
*/
|
*/
|
||||||
list_for_each_entry(bank, &dev->bank_list, siblings) {
|
list_for_each_entry(bank, &dev->bank_list, siblings) {
|
||||||
list_for_each_entry(line, &bank->line_list, siblings) {
|
list_for_each_entry(line, &bank->line_list, siblings) {
|
||||||
|
item = line->hog ? &line->hog->item
|
||||||
|
: &line->group.cg_item;
|
||||||
|
|
||||||
if (lock)
|
if (lock)
|
||||||
WARN_ON(configfs_depend_item_unlocked(
|
WARN_ON(configfs_depend_item_unlocked(subsys,
|
||||||
subsys, &line->group.cg_item));
|
item));
|
||||||
else
|
else
|
||||||
configfs_undepend_item_unlocked(
|
configfs_undepend_item_unlocked(item);
|
||||||
&line->group.cg_item);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue