From 73455f75fcc69254c6b43f85a91199d1f33f4bfc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Bri=C3=A8re?= Date: Sun, 29 May 2011 15:08:03 -0400 Subject: [PATCH] --- yaml --- r: 259315 b: refs/heads/master c: 5bf8f501e05930364b345ed8710c5b1a13207134 h: refs/heads/master i: 259313: f8dd7ff30f500d625c0f1df138450beabfe09e27 259311: d6a19049152d59c45d90ec73cf623f5a842b8f76 v: v3 --- [refs] | 2 +- trunk/drivers/tty/serial/8250_pci.c | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 3e1bd677901a..376f9ab6f0f8 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 7808edcd306f22aeb23775d34e70b7fa2f58b852 +refs/heads/master: 5bf8f501e05930364b345ed8710c5b1a13207134 diff --git a/trunk/drivers/tty/serial/8250_pci.c b/trunk/drivers/tty/serial/8250_pci.c index 0b255cef57e0..9b119fe9257f 100644 --- a/trunk/drivers/tty/serial/8250_pci.c +++ b/trunk/drivers/tty/serial/8250_pci.c @@ -39,6 +39,7 @@ struct pci_serial_quirk { u32 device; u32 subvendor; u32 subdevice; + int (*probe)(struct pci_dev *dev); int (*init)(struct pci_dev *dev); int (*setup)(struct serial_private *, const struct pciserial_board *, @@ -2662,11 +2663,19 @@ EXPORT_SYMBOL_GPL(pciserial_resume_ports); static int __devinit pciserial_init_one(struct pci_dev *dev, const struct pci_device_id *ent) { + struct pci_serial_quirk *quirk; struct serial_private *priv; const struct pciserial_board *board; struct pciserial_board tmp; int rc; + quirk = find_quirk(dev); + if (quirk->probe) { + rc = quirk->probe(dev); + if (rc) + return rc; + } + if (ent->driver_data >= ARRAY_SIZE(pci_boards)) { printk(KERN_ERR "pci_init_one: invalid driver_data: %ld\n", ent->driver_data);