Hey, On Sun, Jan 03, 2010 at 02:31:34PM +0100, Szigetvári János wrote: > However there is now an other thing. The kernel recognizes the card as > having two serial UART-s: > > pcmcia_socket pcmcia_socket1: pccard: PCMCIA card inserted into slot 1 > pcmcia 1.0: pcmcia: registering new device pcmcia1.0 > pcmcia 1.0: firmware: requesting cis/IBMBT.cis > ttyS1: detected caps 00000700 should be 00000100 > 1.0: ttyS1 at I/O 0x1e0 (irq = 3) is a 16C950/954 > 1.0: ttyS2 at I/O 0x1e8 (irq = 3) is a 8250 > > As the guys back at > http://osdir.com/ml/linux.pcmcia.devel/2003-04/msg00001.html said this > card uses a Oxford Semuconductor 16950-based UART. As it can be seen > it is (correctly?) detected. However the kernel detects another UART > of an older type. I don't really know why that is.
Well, as Dave said in this message | The serial_cs driver also has some code to recognize and treat OXCF950 | based cards specially, and you may need to tweak that to recognize the | manfid's for this card. so let's try this -- first patch #1, and if that isn't enough, patch #2; if both do not work I have one other idea... > After some googling I found out that this is a TDK-made card, and that > instead of "any", I should try "tdk" as the UART type: > r...@orion:~# hciattach -p ttyS1 tdk > BCSP initialization timed out. As the MANFID is the same as for TDK cards, it seems likely that it indeed behaves like a TDK-made card... Best, Dominik
diff --git a/drivers/serial/serial_cs.c b/drivers/serial/serial_cs.c index fc413f0..3dc3450 100644 --- a/drivers/serial/serial_cs.c +++ b/drivers/serial/serial_cs.c @@ -598,8 +598,11 @@ static int multi_config(struct pcmcia_device *link) * 8 registers are for the UART, the others are extra registers. * Siemen's MC45 PCMCIA (Possio's GCC) is OXCF950 based too. */ - if (info->manfid == MANFID_OXSEMI || (info->manfid == MANFID_POSSIO && - info->prodid == PRODID_POSSIO_GCC)) { + if (info->manfid == MANFID_OXSEMI || + (info->manfid == MANFID_POSSIO && + info->prodid == PRODID_POSSIO_GCC) || + (info->manfid == 0x0105 && /* IBM Bluetotth PC Card II */ + info->prodid == 0x4254)) { int err; if (link->conf.ConfigIndex == 1 ||
diff --git a/drivers/serial/serial_cs.c b/drivers/serial/serial_cs.c index fc413f0..d9bb320 100644 --- a/drivers/serial/serial_cs.c +++ b/drivers/serial/serial_cs.c @@ -222,6 +222,11 @@ static const struct serial_quirk quirks[] = { .multi = -1, .wakeup = quirk_wakeup_oxsemi, }, { + .manfid = 0x0105, /* IBM Bluetooth PC Card II */ + .prodid = 0x4254, + .multi = -1, + .wakeup = quirk_wakeup_oxsemi, + }, { .manfid = MANFID_POSSIO, .prodid = PRODID_POSSIO_GCC, .multi = -1, @@ -598,8 +603,11 @@ static int multi_config(struct pcmcia_device *link) * 8 registers are for the UART, the others are extra registers. * Siemen's MC45 PCMCIA (Possio's GCC) is OXCF950 based too. */ - if (info->manfid == MANFID_OXSEMI || (info->manfid == MANFID_POSSIO && - info->prodid == PRODID_POSSIO_GCC)) { + if (info->manfid == MANFID_OXSEMI || + (info->manfid == MANFID_POSSIO && + info->prodid == PRODID_POSSIO_GCC) || + (info->manfid == 0x0105 && /* IBM Bluetotth PC Card II */ + info->prodid == 0x4254)) { int err; if (link->conf.ConfigIndex == 1 ||
_______________________________________________ Linux PCMCIA reimplementation list http://lists.infradead.org/mailman/listinfo/linux-pcmcia