Commit 11313e2f authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge tag 'gpio-fixes-for-v6.16-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux

Pull gpio fixes from Bartosz Golaszewski:

 - correct the ACPI GPIO access mode in gpio-loongson-64bit

 - only obtain the interrupt for a single instance of the chip
   controlled by gpio-mlxbf3

 - fix an invalid value return from probe() in gpio-pca953x

 - add missing MODULE_DEVICE_TABLE() to gpio-spacemit

 - update the HiSilicon GPIO driver maintainer entry

* tag 'gpio-fixes-for-v6.16-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux:
  gpio: mlxbf3: only get IRQ for device instance 0
  gpio: pca953x: fix wrong error probe return value
  gpio: spacemit: Add missing MODULE_DEVICE_TABLE
  gpio: loongson-64bit: Correct Loongson-7A2000 ACPI GPIO access mode
  MAINTAINERS: Update HiSilicon GPIO driver maintainer
parents 299f489f 10af0273
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -10839,7 +10839,7 @@ S: Maintained
F:	drivers/dma/hisi_dma.c
HISILICON GPIO DRIVER
M:	Jay Fang <f.fangjian@huawei.com>
M:	Yang Shen <shenyang39@huawei.com>
L:	linux-gpio@vger.kernel.org
S:	Maintained
F:	Documentation/devicetree/bindings/gpio/hisilicon,ascend910-gpio.yaml
+1 −1
Original line number Diff line number Diff line
@@ -268,7 +268,7 @@ static const struct loongson_gpio_chip_data loongson_gpio_ls7a2000_data0 = {
/* LS7A2000 ACPI GPIO */
static const struct loongson_gpio_chip_data loongson_gpio_ls7a2000_data1 = {
	.label = "ls7a2000_gpio",
	.mode = BYTE_CTRL_MODE,
	.mode = BIT_CTRL_MODE,
	.conf_offset = 0x4,
	.in_offset = 0x8,
	.out_offset = 0x0,
+35 −19
Original line number Diff line number Diff line
@@ -190,7 +190,9 @@ static int mlxbf3_gpio_probe(struct platform_device *pdev)
	struct mlxbf3_gpio_context *gs;
	struct gpio_irq_chip *girq;
	struct gpio_chip *gc;
	char *colon_ptr;
	int ret, irq;
	long num;

	gs = devm_kzalloc(dev, sizeof(*gs), GFP_KERNEL);
	if (!gs)
@@ -227,6 +229,19 @@ static int mlxbf3_gpio_probe(struct platform_device *pdev)
	gc->owner = THIS_MODULE;
	gc->add_pin_ranges = mlxbf3_gpio_add_pin_ranges;

	colon_ptr = strchr(dev_name(dev), ':');
	if (!colon_ptr) {
		dev_err(dev, "invalid device name format\n");
		return -EINVAL;
	}

	ret = kstrtol(++colon_ptr, 16, &num);
	if (ret) {
		dev_err(dev, "invalid device instance\n");
		return ret;
	}

	if (!num) {
		irq = platform_get_irq(pdev, 0);
		if (irq >= 0) {
			girq = &gs->gc.irq;
@@ -247,6 +262,7 @@ static int mlxbf3_gpio_probe(struct platform_device *pdev)
			if (ret)
				return dev_err_probe(dev, ret, "failed to request IRQ");
		}
	}

	platform_set_drvdata(pdev, gs);

+1 −1
Original line number Diff line number Diff line
@@ -974,7 +974,7 @@ static int pca953x_irq_setup(struct pca953x_chip *chip, int irq_base)
					IRQF_ONESHOT | IRQF_SHARED, dev_name(dev),
					chip);
	if (ret)
		return dev_err_probe(dev, client->irq, "failed to request irq\n");
		return dev_err_probe(dev, ret, "failed to request irq\n");

	return 0;
}
+1 −0
Original line number Diff line number Diff line
@@ -278,6 +278,7 @@ static const struct of_device_id spacemit_gpio_dt_ids[] = {
	{ .compatible = "spacemit,k1-gpio" },
	{ /* sentinel */ }
};
MODULE_DEVICE_TABLE(of, spacemit_gpio_dt_ids);

static struct platform_driver spacemit_gpio_driver = {
	.probe		= spacemit_gpio_probe,