trouble with TI PCI1410 on IBM G40 w/ 2.6.6

Pavel Roskin proski at
Tue May 25 12:39:25 EDT 2004

On Tue, 25 May 2004, joshua reich wrote:

> I recently upgraded from 2.4.22 to 2.6.6 and have been having difficulties
> getting PCMCIA working. I had no problems under 2.4.22, and have no
> problems on WinXP (dual boot). Interestingly, I tried going back to 2.4.x
> and have run into similar problems.

There have been changes to deal with improperly initialized TI cards.  My 
patch was applied and later reverted in 2.4 series due to problems with 
laptops.  Another, more complicated patch was created by Daniel Ritz, and 
it's now used in 2.6 kernels.

Your card doesn't appear to be one of those broken cards the patches were 
meant to deal with.  But it's affected nevertheless.  This is a bug that 
needs to be fixed.

My guess is that your original 2.4.22 kernel had my patch for TI cards 
re-enabled.  The new 2.4 kernel is probably unpatched.

P.S. Or maybe you added memory and hit a bug in GNU GRUB (it's fixed in 
CVS version of GNU GRUB).

> Any help or pointers would be much appreciated.
> Below is the relevant(?) output:
> [root at laplap root]# uname -a
> Linux laplap 2.6.6 #4 Tue May 25 03:58:05 EST 2004 i686 i686 i386
> GNU/Linux
> [root at laplap root]# cardctl status
> Socket 0:
>  no card
> dmesg:
> Linux Kernel Card Services
>  options:  [pci] [cardbus]
> Yenta: CardBus bridge found at 0000:02:01.0 [1014:054e]
> Yenta: adjusting diagnostic: 40 -> 60

This bit is directly related to interrupt routing.  The documentation 
recommends to leave it alone.

> Yenta: Using CSCINT to route CSC interrupts to PCI
> Yenta: Routing CardBus interrupts to PCI
> Yenta TI: socket 0000:02:01.0, mfunc 0x011c1112, devctl 0x64

Decoding mfunc:


Decoding devctl:

Serialized ISA and parallel PCI interrupts, 3.3V capable.

Look reasonable to me.  The card should work with serialized ISA and 
parallel PCI interrupts.  Both are routed properly.

> Yenta TI: socket 0000:02:01.0 probing PCI interrupt failed, trying to fix
> Yenta TI: socket 0000:02:01.0 no PCI interrupts. Fish. Please report.
> Socket status: 00200f00

The socket status looks very wrong.  Bit 21 is reserved and should not be 
set.  Bit 9 is "bad Vcc request".  Card detection bits are wrong.  Looks 
like a bogus number to me.

> 02:01.0 CardBus bridge: Texas Instruments PCI1410 PC card Cardbus
> Controller (rev 02)
>        Subsystem: IBM: Unknown device 054e
>        Flags: bus master, medium devsel, latency 168, IRQ 11
>        Memory at 3f6fb000 (32-bit, non-prefetchable) [size=4K]
>        Bus: primary=02, secondary=03, subordinate=06, sec-latency=176
>        Memory window 0: 40000000-403ff000 (prefetchable)
>        Memory window 1: 40400000-407ff000
>        I/O window 0: 00004000-000040ff
>        I/O window 1: 00004400-000044ff
>        16-bit legacy interface ports at 0001

Maybe you have 1 Gb of memory?  Similar problems have been discussed in 
the list.

Possible things to try.

1) If you are using GNU GRUB to load the kernel, please use 
--no-mem-option option for the kernel command:

kernel --no-mem-option (hd0,0)/boot/vmlinuz

This would fix incorrect detection of available memory and possible memory 

2) Find line in drivers/pcmcia/yenta_socket.c containing 
PCI_DEVICE_ID_TI_1410 and replace TI1250 with TI12XX.  This would disable 
adjustment of the diagnostics register.

3) Change yenta_probe_cb_irq() to return 1 always.  This would check if 
the interrupt probing is correct.  Check some PCMCIA card to see if it 
gets interrupts.

If you have further problems, following would be useful:

Full kernel log from the boot as shown by dmesg.
.config used to compile the kernel.
Description of the PCMCIA bridge card and the system (whether it's a 
laptop, whether the PCMCIA bridge is integrated or it's a separate PCI 
device, model numbers etc).

Pavel Roskin

More information about the linux-pcmcia mailing list