Commit 78b2a232 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

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
parents 8c67da5b 59ff2040
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -9878,7 +9878,7 @@ S: Maintained
F:	drivers/staging/gpib/
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>
L:	linux-gpio@vger.kernel.org
L:	linux-acpi@vger.kernel.org
+1 −0
Original line number Diff line number Diff line
@@ -338,6 +338,7 @@ config GPIO_GRANITERAPIDS

config GPIO_GRGPIO
	tristate "Aeroflex Gaisler GRGPIO support"
	depends on OF || COMPILE_TEST
	select GPIO_GENERIC
	select IRQ_DOMAIN
	help
+0 −19
Original line number Diff line number Diff line
@@ -841,25 +841,6 @@ static bool pca953x_irq_pending(struct pca953x_chip *chip, unsigned long *pendin
	DECLARE_BITMAP(trigger, MAX_LINE);
	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);
	if (ret)
		return false;
+8 −5
Original line number Diff line number Diff line
@@ -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 gpio_sim_bank *bank;
	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
	 * instantiated, alive device depends on.
	 */
	list_for_each_entry(bank, &dev->bank_list, siblings) {
		list_for_each_entry(line, &bank->line_list, siblings) {
			item = line->hog ? &line->hog->item
					 : &line->group.cg_item;

			if (lock)
				WARN_ON(configfs_depend_item_unlocked(
						subsys, &line->group.cg_item));
				WARN_ON(configfs_depend_item_unlocked(subsys,
								      item));
			else
				configfs_undepend_item_unlocked(
						&line->group.cg_item);
				configfs_undepend_item_unlocked(item);
		}
	}
}