diff options
| author | Chris Zankel <chris@zankel.net> | 2009-04-03 05:29:05 -0400 |
|---|---|---|
| committer | Chris Zankel <chris@zankel.net> | 2009-04-03 05:29:05 -0400 |
| commit | 65127d28e312bb6b38ce84a7bb71d762ef63ad4c (patch) | |
| tree | d5fdf52a2d0731f7fab0ce0ed394faac50b04fbc /drivers/parport/parport_serial.c | |
| parent | b8bb76713ec50df2f11efee386e16f93d51e1076 (diff) | |
| parent | 8fe74cf053de7ad2124a894996f84fa890a81093 (diff) | |
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 into merge
Diffstat (limited to 'drivers/parport/parport_serial.c')
| -rw-r--r-- | drivers/parport/parport_serial.c | 30 |
1 files changed, 25 insertions, 5 deletions
diff --git a/drivers/parport/parport_serial.c b/drivers/parport/parport_serial.c index 032db815b0f..f3492110b1a 100644 --- a/drivers/parport/parport_serial.c +++ b/drivers/parport/parport_serial.c | |||
| @@ -30,6 +30,7 @@ enum parport_pc_pci_cards { | |||
| 30 | titan_210l, | 30 | titan_210l, |
| 31 | netmos_9xx5_combo, | 31 | netmos_9xx5_combo, |
| 32 | netmos_9855, | 32 | netmos_9855, |
| 33 | netmos_9855_2p, | ||
| 33 | avlab_1s1p, | 34 | avlab_1s1p, |
| 34 | avlab_1s2p, | 35 | avlab_1s2p, |
| 35 | avlab_2s1p, | 36 | avlab_2s1p, |
| @@ -62,7 +63,7 @@ struct parport_pc_pci { | |||
| 62 | struct parport_pc_pci *card, int failed); | 63 | struct parport_pc_pci *card, int failed); |
| 63 | }; | 64 | }; |
| 64 | 65 | ||
| 65 | static int __devinit netmos_parallel_init(struct pci_dev *dev, struct parport_pc_pci *card, int autoirq, int autodma) | 66 | static int __devinit netmos_parallel_init(struct pci_dev *dev, struct parport_pc_pci *par, int autoirq, int autodma) |
| 66 | { | 67 | { |
| 67 | /* the rule described below doesn't hold for this device */ | 68 | /* the rule described below doesn't hold for this device */ |
| 68 | if (dev->device == PCI_DEVICE_ID_NETMOS_9835 && | 69 | if (dev->device == PCI_DEVICE_ID_NETMOS_9835 && |
| @@ -74,9 +75,17 @@ static int __devinit netmos_parallel_init(struct pci_dev *dev, struct parport_pc | |||
| 74 | * and serial ports. The form is 0x00PS, where <P> is the number of | 75 | * and serial ports. The form is 0x00PS, where <P> is the number of |
| 75 | * parallel ports and <S> is the number of serial ports. | 76 | * parallel ports and <S> is the number of serial ports. |
| 76 | */ | 77 | */ |
| 77 | card->numports = (dev->subsystem_device & 0xf0) >> 4; | 78 | par->numports = (dev->subsystem_device & 0xf0) >> 4; |
| 78 | if (card->numports > ARRAY_SIZE(card->addr)) | 79 | if (par->numports > ARRAY_SIZE(par->addr)) |
| 79 | card->numports = ARRAY_SIZE(card->addr); | 80 | par->numports = ARRAY_SIZE(par->addr); |
| 81 | /* | ||
| 82 | * This function is currently only called for cards with up to | ||
| 83 | * one parallel port. | ||
| 84 | * Parallel port BAR is either before or after serial ports BARS; | ||
| 85 | * hence, lo should be either 0 or equal to the number of serial ports. | ||
| 86 | */ | ||
| 87 | if (par->addr[0].lo != 0) | ||
| 88 | par->addr[0].lo = dev->subsystem_device & 0xf; | ||
| 80 | return 0; | 89 | return 0; |
| 81 | } | 90 | } |
| 82 | 91 | ||
| @@ -84,7 +93,8 @@ static struct parport_pc_pci cards[] __devinitdata = { | |||
| 84 | /* titan_110l */ { 1, { { 3, -1 }, } }, | 93 | /* titan_110l */ { 1, { { 3, -1 }, } }, |
| 85 | /* titan_210l */ { 1, { { 3, -1 }, } }, | 94 | /* titan_210l */ { 1, { { 3, -1 }, } }, |
| 86 | /* netmos_9xx5_combo */ { 1, { { 2, -1 }, }, netmos_parallel_init }, | 95 | /* netmos_9xx5_combo */ { 1, { { 2, -1 }, }, netmos_parallel_init }, |
| 87 | /* netmos_9855 */ { 1, { { 2, -1 }, }, netmos_parallel_init }, | 96 | /* netmos_9855 */ { 1, { { 0, -1 }, }, netmos_parallel_init }, |
| 97 | /* netmos_9855_2p */ { 2, { { 0, -1 }, { 2, -1 }, } }, | ||
| 88 | /* avlab_1s1p */ { 1, { { 1, 2}, } }, | 98 | /* avlab_1s1p */ { 1, { { 1, 2}, } }, |
| 89 | /* avlab_1s2p */ { 2, { { 1, 2}, { 3, 4 },} }, | 99 | /* avlab_1s2p */ { 2, { { 1, 2}, { 3, 4 },} }, |
| 90 | /* avlab_2s1p */ { 1, { { 2, 3}, } }, | 100 | /* avlab_2s1p */ { 1, { { 2, 3}, } }, |
| @@ -110,6 +120,10 @@ static struct pci_device_id parport_serial_pci_tbl[] = { | |||
| 110 | { PCI_VENDOR_ID_NETMOS, PCI_DEVICE_ID_NETMOS_9845, | 120 | { PCI_VENDOR_ID_NETMOS, PCI_DEVICE_ID_NETMOS_9845, |
| 111 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, netmos_9xx5_combo }, | 121 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, netmos_9xx5_combo }, |
| 112 | { PCI_VENDOR_ID_NETMOS, PCI_DEVICE_ID_NETMOS_9855, | 122 | { PCI_VENDOR_ID_NETMOS, PCI_DEVICE_ID_NETMOS_9855, |
| 123 | 0x1000, 0x0020, 0, 0, netmos_9855_2p }, | ||
| 124 | { PCI_VENDOR_ID_NETMOS, PCI_DEVICE_ID_NETMOS_9855, | ||
| 125 | 0x1000, 0x0022, 0, 0, netmos_9855_2p }, | ||
| 126 | { PCI_VENDOR_ID_NETMOS, PCI_DEVICE_ID_NETMOS_9855, | ||
| 113 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, netmos_9855 }, | 127 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, netmos_9855 }, |
| 114 | /* PCI_VENDOR_ID_AVLAB/Intek21 has another bunch of cards ...*/ | 128 | /* PCI_VENDOR_ID_AVLAB/Intek21 has another bunch of cards ...*/ |
| 115 | { PCI_VENDOR_ID_AFAVLAB, 0x2110, | 129 | { PCI_VENDOR_ID_AFAVLAB, 0x2110, |
| @@ -192,6 +206,12 @@ static struct pciserial_board pci_parport_serial_boards[] __devinitdata = { | |||
| 192 | .uart_offset = 8, | 206 | .uart_offset = 8, |
| 193 | }, | 207 | }, |
| 194 | [netmos_9855] = { | 208 | [netmos_9855] = { |
| 209 | .flags = FL_BASE2 | FL_BASE_BARS, | ||
| 210 | .num_ports = 1, | ||
| 211 | .base_baud = 115200, | ||
| 212 | .uart_offset = 8, | ||
| 213 | }, | ||
| 214 | [netmos_9855_2p] = { | ||
| 195 | .flags = FL_BASE4 | FL_BASE_BARS, | 215 | .flags = FL_BASE4 | FL_BASE_BARS, |
| 196 | .num_ports = 1, | 216 | .num_ports = 1, |
| 197 | .base_baud = 115200, | 217 | .base_baud = 115200, |
