Subject: TI1520 Cardbus with CF troubles

From: "Travis B. Sawyer" <[email-masked]>
Date: Thu, 27 Apr 2006 17:12:01 -0400

Greetings:

I'm working on getting some cardbus support into a 8540 based platform.

We're using a TI1520 cardbus controller (pci<->cardbus bridge) and 
compact flash.

(Note:  this is using 2.4.30 kernel.org kernel + some patches from the 
vendor)

At first I was getting no interrupts when the yenta driver was starting 
up, but
I back ported some stuff from 2.6 and now the ti1520 is routing the 
interrupts
properly through pci:

[root@mbc80-4 01]$ cat /proc/interrupts
           CPU0
  8:          0   None      Edge      rtc
 83:      12106   OpenPIC   Edge      enet_tx
 84:      19011   OpenPIC   Edge      enet_rx
 88:          0   OpenPIC   Edge      enet_error
 90:       1805   OpenPIC   Edge      serial
 91:        137   OpenPIC   Level     MPC I2C
 98:          1   OpenPIC   Level     Texas Instruments PCI1250 PC card 
Cardbus Controller
 99:          1   OpenPIC   Level     Texas Instruments PCI1250 PC card 
Cardbus Controller (#2)
101:          0   OpenPIC   Level     sb/ife0
102:          0   OpenPIC   Level     sbqe0
104:          0   OpenPIC   Level     phy_interrupt
BAD:          0

I have a cf card in the second controller socket. I've strewn printk's 
all over and what I'm
finding is that pcmcia_request_io is called with base=0 numports=0x10, 
ioAddrLines=4, and
returns with a base of 0x8100.

Here's the pci dump of both functions of the TI device (note, the card 
is plugged into the
socket associated with func 1 not func 0):

[root@mbc80-4 01]$ lspci -v -s 01:01
01:01.0 CardBus bridge: Texas Instruments PCI1250 PC card Cardbus 
Controller (rev 01)
        Flags: bus master, medium devsel, latency 168, IRQ 98
        Memory at eafff000 (32-bit, non-prefetchable) [size=4K]
        Bus: primary=01, secondary=02, subordinate=02, sec-latency=176
        Memory window 0: ea600000-ea61f000 (prefetchable)
        Memory window 1: ea700000-ea7ff000
        I/O window 0: 00008000-000080ff
        I/O window 1: 00008400-000084ff
        16-bit legacy interface ports at 0001
 
01:01.1 CardBus bridge: Texas Instruments PCI1250 PC card Cardbus 
Controller (rev 01)
        Flags: bus master, medium devsel, latency 168, IRQ 99
        Memory at eabfe000 (32-bit, non-prefetchable) [size=4K]
        Bus: primary=01, secondary=03, subordinate=03, sec-latency=176
        Memory window 0: ea620000-ea63f000 (prefetchable)
        Memory window 1: ea800000-ea8ff000
        I/O window 0: 00008800-000088ff
        I/O window 1: 00008c00-00008cff
        16-bit legacy interface ports at 0001

I added printks to the ide do_probe, and all hwif->INB() calls return 0.

My /etc/pcmcia/config.opts adds the following lines:
include port 0x0000-0xffff
include memory 0xe0000000-0xeaffffff

Any ideas?

-travis

more dumps below:
[root@mbc80-4 01]$ cardctl status
Socket 0:
  no card
Socket 1:
  3.3V 16-bit PC Card
  function 0: [ready]
[root@mbc80-4 01]$ cardctl config
Socket 0:
  not configured
Socket 1:
  Vcc 3.3V  Vpp1 3.3V  Vpp2 3.3V

ide_config linkio: nports: 0 baseport 0
pcmcia_request_io calling alloc io spaces BLP1 NP1 IOADDRLines:  0 10 4
alloc_io_space s->io BP NP Inuse: 8100 10 10
pcmcia_request_io called alloc io spaces BLP1 NP1 IOADDRLines:  8100 10 4
ide_config b4Config base 8100
ide_config AFConfig base 8100
SELECT_DRIVE sending a0 to 8106
SELECT_DRIVE sending b0 to 8106
SELECT_DRIVE sending a0 to 8106
probing for hda: present=0, media=32, probetype=ATA
[root@mbc80-4 01]$ SELECT_DRIVE sending a0 to 8106
do_probe after select inb= 0
do_probe error reg 0
do_probe nsect reg 0
do_probe sect  reg 0
do_probe lcyl  reg 0
do_probe hcyl  reg 0
do_probe selct reg 0
do_probe stats reg 0
do_probe cntrl reg 0

[root@mbc80-4 ~]$ dump_cis
Socket 0:
  no CIS present
 
Socket 1:
  dev_info
    fn_specific 120ns, 2kb
  common_jedec 0xdf 0x01
  manfid 0x0045, 0x0401
  vers_1 4.1, "SanDisk", "SDP", "5/3 0.6"
  funcid fixed_disk [post]
  disk_interface [ide]
  disk_features [silicon] [unique] [single]
    [sleep] [standby] [idle] [low power]
  config base 0x0200 mask 0x000f last_index 0x07
  cftable_entry 0x00 [default]
    [rdybsy] [mwait] [pwrdown]
    Vcc Vnom 5V Vmin 4500mV Vmax 5500mV Ipeak 80mA
    memory 0x0000-0x07ff @ 0x0000
  cftable_entry 0x00
    Vcc Vnom 3300mV Ipeak 45mA
  cftable_entry 0x01 [default]
    [rdybsy] [pwrdown]
    Vcc Vnom 5V Vmin 4500mV Vmax 5500mV Ipeak 80mA
    io 0x0000-0x000f [lines=4] [8bit] [16bit]
    irq mask 0xffff [level] [pulse] [shared]
  cftable_entry 0x01
    Vcc Vnom 3300mV Ipeak 45mA
  cftable_entry 0x02 [default]
    [rdybsy] [pwrdown]
    Vcc Vnom 5V Vmin 4500mV Vmax 5500mV Ipeak 80mA
    io 0x01f0-0x01f7, 0x03f6-0x03f7 [lines=10] [8bit] [16bit] [range]
    irq 14 [level] [pulse] [shared]
  cftable_entry 0x02
    Vcc Vnom 3300mV Ipeak 45mA
  cftable_entry 0x03 [default]
    [rdybsy] [pwrdown]
    Vcc Vnom 5V Vmin 4500mV Vmax 5500mV Ipeak 80mA
    io 0x0170-0x0177, 0x0376-0x0377 [lines=10] [8bit] [16bit] [range]
    irq 14 [level] [pulse] [shared]
  cftable_entry 0x03
    Vcc Vnom 3300mV Ipeak 45mA
  cftable_entry 0x07