Message ID | f7e7da1ae81aab7f53faa32260d4ee0f930048fe.1496127684.git.jan.kiszka@siemens.com |
---|---|
State | New |
Headers | show |
On Tue, May 30, 2017 at 10:01 AM, Jan Kiszka <jan.kiszka@siemens.com> wrote: > Commtech adapters need the MPIOs for internal purposes, and the > gpio-exar driver already refused to pick them up. But there is actually > no point in even creating the underlying platform device. It still feels that partially you may do stuff here, like renaming to __xr17v35x_register_gpio() and creating xr17v35x_register_gpio() wrapper. > diff --git a/drivers/gpio/gpio-exar.c b/drivers/gpio/gpio-exar.c > index 081076771217..006a9a67c2a4 100644 > --- a/drivers/gpio/gpio-exar.c > +++ b/drivers/gpio/gpio-exar.c > @@ -124,9 +124,6 @@ static int gpio_exar_probe(struct platform_device *pdev) > void __iomem *p; > int index, ret; > > - if (pcidev->vendor != PCI_VENDOR_ID_EXAR) > - return -ENODEV; > - > /* > * Map the pci device to get the register addresses. > * We will need to read and write those registers to control > diff --git a/drivers/tty/serial/8250/8250_exar.c b/drivers/tty/serial/8250/8250_exar.c > index 8984e8b2d524..c29c7e675890 100644 > --- a/drivers/tty/serial/8250/8250_exar.c > +++ b/drivers/tty/serial/8250/8250_exar.c > @@ -245,7 +245,9 @@ pci_xr17v35x_setup(struct exar8250 *priv, struct pci_dev *pcidev, > /* Setup Multipurpose Input/Output pins. */ > setup_gpio(pcidev, p); > > - port->port.private_data = xr17v35x_register_gpio(pcidev); > + if (pcidev->vendor == PCI_VENDOR_ID_EXAR) > + port->port.private_data = > + xr17v35x_register_gpio(pcidev); > } > > return 0; > -- > 2.12.3 >
On 2017-05-30 20:33, Andy Shevchenko wrote: > On Tue, May 30, 2017 at 10:01 AM, Jan Kiszka <jan.kiszka@siemens.com> wrote: >> Commtech adapters need the MPIOs for internal purposes, and the >> gpio-exar driver already refused to pick them up. But there is actually >> no point in even creating the underlying platform device. > > It still feels that partially you may do stuff here, like > renaming to > __xr17v35x_register_gpio() > and creating > xr17v35x_register_gpio() wrapper. Sorry, that remains unrelated to the topic of this patch and would be unclean. If you want me to pull those refactorings out of patch 9, I need to write a separate patch - no problem. Jan
On Wed, May 31, 2017 at 7:34 PM, Jan Kiszka <jan.kiszka@siemens.com> wrote: > On 2017-05-30 20:33, Andy Shevchenko wrote: >> On Tue, May 30, 2017 at 10:01 AM, Jan Kiszka <jan.kiszka@siemens.com> wrote: >>> Commtech adapters need the MPIOs for internal purposes, and the >>> gpio-exar driver already refused to pick them up. But there is actually >>> no point in even creating the underlying platform device. >> >> It still feels that partially you may do stuff here, like >> renaming to >> __xr17v35x_register_gpio() >> and creating >> xr17v35x_register_gpio() wrapper. > > Sorry, that remains unrelated to the topic of this patch and would be > unclean. If you want me to pull those refactorings out of patch 9, I > need to write a separate patch - no problem. Okay, I would go with separate patch, if maintainers are okay with this approach.
diff --git a/drivers/gpio/gpio-exar.c b/drivers/gpio/gpio-exar.c index 081076771217..006a9a67c2a4 100644 --- a/drivers/gpio/gpio-exar.c +++ b/drivers/gpio/gpio-exar.c @@ -124,9 +124,6 @@ static int gpio_exar_probe(struct platform_device *pdev) void __iomem *p; int index, ret; - if (pcidev->vendor != PCI_VENDOR_ID_EXAR) - return -ENODEV; - /* * Map the pci device to get the register addresses. * We will need to read and write those registers to control diff --git a/drivers/tty/serial/8250/8250_exar.c b/drivers/tty/serial/8250/8250_exar.c index 8984e8b2d524..c29c7e675890 100644 --- a/drivers/tty/serial/8250/8250_exar.c +++ b/drivers/tty/serial/8250/8250_exar.c @@ -245,7 +245,9 @@ pci_xr17v35x_setup(struct exar8250 *priv, struct pci_dev *pcidev, /* Setup Multipurpose Input/Output pins. */ setup_gpio(pcidev, p); - port->port.private_data = xr17v35x_register_gpio(pcidev); + if (pcidev->vendor == PCI_VENDOR_ID_EXAR) + port->port.private_data = + xr17v35x_register_gpio(pcidev); } return 0;