[PATCH] Fix for serial.c to work with Xircom Cardbus Ethernet+Modem

Tom Sightler
2001-03-24T04:45:35Z

> Tom Sightler wrote:
> >
> > Hi all,
> >
> > I saw a discussion on this list about this problem earlier, but could
not
> > find that it had actually been resolved.
>
> That was me :) and no, it doesn't work. Jeff Garzik asked me to enable
> a couple debug #defines in serial.c, apply patches to serial.c and
> finally disable i82365 support but as of now it doesn't work.
>
> It looks like we have the same card with modem @ 0x1880.

Yep, almost certainly the same, or at least very similar Xircom card.

> > Any ideas? I may look at it more tomorrow. For now I'm back to using
> > serial_cb which still works fine (even though that apparently suprises
many
> > people).
>
> :) this is -pre4 with serial_cb which works fine, and always has...

OK, can you try this patch? It's very simple, and is probably not the
correct fix (the correct fix is probably to add the Xircom card to the
supported PCI table), but it works for me. I'm not sure why the generic pci
serial code counts the number of iomem regions and only uses it if it has
exactly 0 or 1, but the Xircom has 2 iomem regions so the generic code fails
to use it. The following change relaxes the generic code to allow for up to
2 iomem regions on a PCI serial device. I have no idea what the side
effects would be to this change, but it makes my Xircom work again and that
was my goal. If I can help someone fix this correctly let me know what you
need.

Later,
Tom

--- serial.c.old Fri Mar 23 23:23:17 2001
+++ serial.c Fri Mar 23 23:24:17 2001
@@ -4616,10 +4616,10 @@
}

/*
- * If there is 1 or 0 iomem regions, and exactly one port, use
+ * If there is <= 2 iomem regions, and exactly one port, use
* it.
*/
- if (num_iomem <= 1 && num_port == 1) {
+ if (num_iomem <= 2 && num_port == 1) {
board->flags = first_port;
return 0;
}