Commit e6005d3c authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull GPIO fixes from Linus Walleij:
 "Minor stuff except the IDA leak which was kind of important to fix.
  Also new maintainers, yay.

   - Do not lose an IDA on the gpiochip register errorpath.

   - Fix the PXA non-pincontrol GPIO-using platforms.

   - Fix the direction on the mockup GPIO driver.

   - Add some MAINTAINERS stuff: Bartosz stepped up as GPIO
     co-maintainer, and Andy established an Intel git tree"

* tag 'gpio-v4.20-2' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-gpio:
  MAINTAINERS: Do maintain Intel GPIO drivers via separate tree
  gpio: mockup: fix indicated direction
  gpio: pxa: fix legacy non pinctrl aware builds again
  gpio: don't free unallocated ida on gpiochip_add_data_with_key() error path
  MAINTAINERS: add myself as co-maintainer of gpiolib
parents dcd3aa31 10547d95
Loading
Loading
Loading
Loading
+22 −12
Original line number Diff line number Diff line
@@ -6305,6 +6305,7 @@ F: tools/testing/selftests/gpio/

GPIO SUBSYSTEM
M:	Linus Walleij <linus.walleij@linaro.org>
M:	Bartosz Golaszewski <bgolaszewski@baylibre.com>
L:	linux-gpio@vger.kernel.org
T:	git git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-gpio.git
S:	Maintained
@@ -7442,6 +7443,20 @@ S: Maintained
F:	Documentation/fb/intelfb.txt
F:	drivers/video/fbdev/intelfb/

INTEL GPIO DRIVERS
M:	Andy Shevchenko <andriy.shevchenko@linux.intel.com>
L:	linux-gpio@vger.kernel.org
S:	Maintained
T:	git git://git.kernel.org/pub/scm/linux/kernel/git/andy/linux-gpio-intel.git
F:	drivers/gpio/gpio-ich.c
F:	drivers/gpio/gpio-intel-mid.c
F:	drivers/gpio/gpio-lynxpoint.c
F:	drivers/gpio/gpio-merrifield.c
F:	drivers/gpio/gpio-ml-ioh.c
F:	drivers/gpio/gpio-pch.c
F:	drivers/gpio/gpio-sch.c
F:	drivers/gpio/gpio-sodaville.c

INTEL GVT-g DRIVERS (Intel GPU Virtualization)
M:	Zhenyu Wang <zhenyuw@linux.intel.com>
M:	Zhi Wang <zhi.a.wang@intel.com>
@@ -7452,12 +7467,6 @@ T: git https://github.com/intel/gvt-linux.git
S:	Supported
F:	drivers/gpu/drm/i915/gvt/

INTEL PMIC GPIO DRIVER
R:	Andy Shevchenko <andriy.shevchenko@linux.intel.com>
S:	Maintained
F:	drivers/gpio/gpio-*cove.c
F:	drivers/gpio/gpio-msic.c

INTEL HID EVENT DRIVER
M:	Alex Hung <alex.hung@canonical.com>
L:	platform-driver-x86@vger.kernel.org
@@ -7545,12 +7554,6 @@ W: https://01.org/linux-acpi
S:	Supported
F:	drivers/platform/x86/intel_menlow.c

INTEL MERRIFIELD GPIO DRIVER
M:	Andy Shevchenko <andriy.shevchenko@linux.intel.com>
L:	linux-gpio@vger.kernel.org
S:	Maintained
F:	drivers/gpio/gpio-merrifield.c

INTEL MIC DRIVERS (mic)
M:	Sudeep Dutt <sudeep.dutt@intel.com>
M:	Ashutosh Dixit <ashutosh.dixit@intel.com>
@@ -7583,6 +7586,13 @@ F: drivers/platform/x86/intel_punit_ipc.c
F:	arch/x86/include/asm/intel_pmc_ipc.h
F:	arch/x86/include/asm/intel_punit_ipc.h

INTEL PMIC GPIO DRIVERS
M:	Andy Shevchenko <andriy.shevchenko@linux.intel.com>
S:	Maintained
T:	git git://git.kernel.org/pub/scm/linux/kernel/git/andy/linux-gpio-intel.git
F:	drivers/gpio/gpio-*cove.c
F:	drivers/gpio/gpio-msic.c

INTEL MULTIFUNCTION PMIC DEVICE DRIVERS
R:	Andy Shevchenko <andriy.shevchenko@linux.intel.com>
S:	Maintained
+3 −3
Original line number Diff line number Diff line
@@ -35,8 +35,8 @@
#define gpio_mockup_err(...)	pr_err(GPIO_MOCKUP_NAME ": " __VA_ARGS__)

enum {
	GPIO_MOCKUP_DIR_OUT = 0,
	GPIO_MOCKUP_DIR_IN = 1,
	GPIO_MOCKUP_DIR_IN = 0,
	GPIO_MOCKUP_DIR_OUT = 1,
};

/*
@@ -131,7 +131,7 @@ static int gpio_mockup_get_direction(struct gpio_chip *gc, unsigned int offset)
{
	struct gpio_mockup_chip *chip = gpiochip_get_data(gc);

	return chip->lines[offset].dir;
	return !chip->lines[offset].dir;
}

static int gpio_mockup_to_irq(struct gpio_chip *gc, unsigned int offset)
+2 −2
Original line number Diff line number Diff line
@@ -268,8 +268,8 @@ static int pxa_gpio_direction_input(struct gpio_chip *chip, unsigned offset)

	if (pxa_gpio_has_pinctrl()) {
		ret = pinctrl_gpio_direction_input(chip->base + offset);
		if (!ret)
			return 0;
		if (ret)
			return ret;
	}

	spin_lock_irqsave(&gpio_lock, flags);
+3 −2
Original line number Diff line number Diff line
@@ -1295,7 +1295,7 @@ int gpiochip_add_data_with_key(struct gpio_chip *chip, void *data,
	gdev->descs = kcalloc(chip->ngpio, sizeof(gdev->descs[0]), GFP_KERNEL);
	if (!gdev->descs) {
		status = -ENOMEM;
		goto err_free_gdev;
		goto err_free_ida;
	}

	if (chip->ngpio == 0) {
@@ -1427,8 +1427,9 @@ int gpiochip_add_data_with_key(struct gpio_chip *chip, void *data,
	kfree_const(gdev->label);
err_free_descs:
	kfree(gdev->descs);
err_free_gdev:
err_free_ida:
	ida_simple_remove(&gpio_ida, gdev->id);
err_free_gdev:
	/* failures here can mean systems won't boot... */
	pr_err("%s: GPIOs %d..%d (%s) failed to register, %d\n", __func__,
	       gdev->base, gdev->base + gdev->ngpio - 1,