Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d3936d74 authored by Jan Kiszka's avatar Jan Kiszka Committed by Linus Walleij
Browse files

gpio-exar/8250-exar: Fix passing in of parent PCI device



This fixes reloading of the GPIO driver for the same platform device
instance as created by the exar UART driver: First of all, the driver
sets drvdata to its own value during probing and does not restore the
original value on exit. But this won't help anyway as the core clears
drvdata after the driver left.

Set the platform device parent instead.

Signed-off-by: default avatarJan Kiszka <jan.kiszka@siemens.com>
Reviewed-by: default avatarAndy Shevchenko <andy.shevchenko@gmail.com>
Acked-by: default avatarLinus Walleij <linus.walleij@linaro.org>
Acked-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
parent f6ac438e
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -119,7 +119,7 @@ static int exar_direction_input(struct gpio_chip *chip, unsigned int offset)

static int gpio_exar_probe(struct platform_device *pdev)
{
	struct pci_dev *pcidev = platform_get_drvdata(pdev);
	struct pci_dev *pcidev = to_pci_dev(pdev->dev.parent);
	struct exar_gpio_chip *exar_gpio;
	void __iomem *p;
	int index, ret;
+2 −1
Original line number Diff line number Diff line
@@ -196,7 +196,8 @@ xr17v35x_register_gpio(struct pci_dev *pcidev)
	if (!pdev)
		return NULL;

	platform_set_drvdata(pdev, pcidev);
	pdev->dev.parent = &pcidev->dev;

	if (platform_device_add(pdev) < 0) {
		platform_device_put(pdev);
		return NULL;