]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
start next .27 series
authorGreg Kroah-Hartman <gregkh@suse.de>
Tue, 16 Jun 2009 00:01:25 +0000 (17:01 -0700)
committerGreg Kroah-Hartman <gregkh@suse.de>
Tue, 16 Jun 2009 00:01:25 +0000 (17:01 -0700)
queue-2.6.27/parport-netmos-9845-9855-1p4s-fixes.patch [new file with mode: 0644]
queue-2.6.27/series [new file with mode: 0644]

diff --git a/queue-2.6.27/parport-netmos-9845-9855-1p4s-fixes.patch b/queue-2.6.27/parport-netmos-9845-9855-1p4s-fixes.patch
new file mode 100644 (file)
index 0000000..290fbc4
--- /dev/null
@@ -0,0 +1,125 @@
+From 50db9d8e4ca17974595e3848cb65f9371a304de4 Mon Sep 17 00:00:00 2001
+From: Philippe De Muyter <phdm@macqel.be>
+Date: Thu, 2 Apr 2009 16:58:53 -0700
+Subject: parport: netmos 9845 & 9855 1P4S fixes
+
+From: Philippe De Muyter <phdm@macqel.be>
+
+commit 50db9d8e4ca17974595e3848cb65f9371a304de4 upstream.
+
+netmos serial/parallel adapters come in different flavour differing only
+by the number of parallel and serial ports, which are encoded in the
+subdevice ID.
+
+Last fix of Christian Pellegrin for 9855 2P2S broke support for 9855 1P4S,
+and works only by side-effect for the first parallel port of a 2P2S, as
+this first parallel port is found by reading the second addr entry of
+(struct parport_pc_pci) cards[netmos_9855], which is not initialized, and
+hence has value 0, which happens to be the BAR of the first parallel port.
+
+netmos_9xx5_combo entry in (struct parport_pc_pci) cards[], which is used
+for a 9845 1P4S must also be fixed for the parallel port support when
+there are 4 serial ports because this entry currently gives 2 as BAR index
+for the parallel port.  Actually, in this case, BAR 2 is the 3rd serial
+port while the parallel port is at BAR 4.
+
+I fixed 9845 1P4S and 9855 1P4S support, while preserving 9855 2P2S support,
+
+- by creating a netmos_9855_2p entry and using it for 9855 boards with 2
+  parallel ports : 9855 2P2S and 9855 2P0S boards,
+
+- and by allowing netmos_parallel_init to change not only the number of
+  parallel ports (0 or 1), but making it also change the BAR index of the
+  parallel port when the serial ports are before the parallel port.
+
+PS: the netmos_9855_2p entry in (struct pciserial_board)
+pci_parport_serial_boards[] is needed because netmos_parallel_init has no
+clean way to replace FL_BASE2 by FL_BASE4 in the description of the serial
+ports in function of the number of parallel ports on the card.
+
+Tested with 9845 1P4S, 9855 1P4S and 9855 2P2S boards.
+
+Signed-off-by: Philippe De Muyter <phdm@macqel.be>
+Tested-by: Christian Pellegrin <chripell@fsfe.org>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/parport/parport_serial.c |   30 +++++++++++++++++++++++++-----
+ 1 file changed, 25 insertions(+), 5 deletions(-)
+
+--- a/drivers/parport/parport_serial.c
++++ b/drivers/parport/parport_serial.c
+@@ -30,6 +30,7 @@ enum parport_pc_pci_cards {
+       titan_210l,
+       netmos_9xx5_combo,
+       netmos_9855,
++      netmos_9855_2p,
+       avlab_1s1p,
+       avlab_1s2p,
+       avlab_2s1p,
+@@ -62,7 +63,7 @@ struct parport_pc_pci {
+                               struct parport_pc_pci *card, int failed);
+ };
+-static int __devinit netmos_parallel_init(struct pci_dev *dev, struct parport_pc_pci *card, int autoirq, int autodma)
++static int __devinit netmos_parallel_init(struct pci_dev *dev, struct parport_pc_pci *par, int autoirq, int autodma)
+ {
+       /* the rule described below doesn't hold for this device */
+       if (dev->device == PCI_DEVICE_ID_NETMOS_9835 &&
+@@ -74,9 +75,17 @@ static int __devinit netmos_parallel_ini
+        * and serial ports.  The form is 0x00PS, where <P> is the number of
+        * parallel ports and <S> is the number of serial ports.
+        */
+-      card->numports = (dev->subsystem_device & 0xf0) >> 4;
+-      if (card->numports > ARRAY_SIZE(card->addr))
+-              card->numports = ARRAY_SIZE(card->addr);
++      par->numports = (dev->subsystem_device & 0xf0) >> 4;
++      if (par->numports > ARRAY_SIZE(par->addr))
++              par->numports = ARRAY_SIZE(par->addr);
++      /*
++       * This function is currently only called for cards with up to
++       * one parallel port.
++       * Parallel port BAR is either before or after serial ports BARS;
++       * hence, lo should be either 0 or equal to the number of serial ports.
++       */
++      if (par->addr[0].lo != 0)
++              par->addr[0].lo = dev->subsystem_device & 0xf;
+       return 0;
+ }
+@@ -84,7 +93,8 @@ static struct parport_pc_pci cards[] __d
+       /* titan_110l */                { 1, { { 3, -1 }, } },
+       /* titan_210l */                { 1, { { 3, -1 }, } },
+       /* netmos_9xx5_combo */         { 1, { { 2, -1 }, }, netmos_parallel_init },
+-      /* netmos_9855 */               { 1, { { 2, -1 }, }, netmos_parallel_init },
++      /* netmos_9855 */               { 1, { { 0, -1 }, }, netmos_parallel_init },
++      /* netmos_9855_2p */            { 2, { { 0, -1 }, { 2, -1 }, } },
+       /* avlab_1s1p     */            { 1, { { 1, 2}, } },
+       /* avlab_1s2p     */            { 2, { { 1, 2}, { 3, 4 },} },
+       /* avlab_2s1p     */            { 1, { { 2, 3}, } },
+@@ -110,6 +120,10 @@ static struct pci_device_id parport_seri
+       { PCI_VENDOR_ID_NETMOS, PCI_DEVICE_ID_NETMOS_9845,
+         PCI_ANY_ID, PCI_ANY_ID, 0, 0, netmos_9xx5_combo },
+       { PCI_VENDOR_ID_NETMOS, PCI_DEVICE_ID_NETMOS_9855,
++        0x1000, 0x0020, 0, 0, netmos_9855_2p },
++      { PCI_VENDOR_ID_NETMOS, PCI_DEVICE_ID_NETMOS_9855,
++        0x1000, 0x0022, 0, 0, netmos_9855_2p },
++      { PCI_VENDOR_ID_NETMOS, PCI_DEVICE_ID_NETMOS_9855,
+         PCI_ANY_ID, PCI_ANY_ID, 0, 0, netmos_9855 },
+       /* PCI_VENDOR_ID_AVLAB/Intek21 has another bunch of cards ...*/
+       { PCI_VENDOR_ID_AFAVLAB, 0x2110,
+@@ -192,6 +206,12 @@ static struct pciserial_board pci_parpor
+               .uart_offset    = 8,
+       },
+       [netmos_9855] = {
++              .flags          = FL_BASE2 | FL_BASE_BARS,
++              .num_ports      = 1,
++              .base_baud      = 115200,
++              .uart_offset    = 8,
++      },
++      [netmos_9855_2p] = {
+               .flags          = FL_BASE4 | FL_BASE_BARS,
+               .num_ports      = 1,
+               .base_baud      = 115200,
diff --git a/queue-2.6.27/series b/queue-2.6.27/series
new file mode 100644 (file)
index 0000000..d0d0e62
--- /dev/null
@@ -0,0 +1 @@
+parport-netmos-9845-9855-1p4s-fixes.patch