PCI1620 with an integrated memory card reader

Onet Cristian onet.cristian at gmail.com
Wed Jul 18 04:47:02 EDT 2007


Hi,

First of all I don't know if this is the right place to post this so
if it's not I apologize in advance. This will be a long story :). I
have a laptop with Texas Instruments PCI1620 PC Card controller. It
has 2 sockets: one to be used with PCMCIA cards and the other has a
built in memory card (SD, MS, MMC) reader (I think it is like any
PCMCIA memory card reader just that it's built in).

Here is the relevant output of lspci:

02:04.0 CardBus bridge: Texas Instruments PCI1620 PC Card Controller (rev 01)
02:04.1 CardBus bridge: Texas Instruments PCI1620 PC Card Controller (rev 01)
02:04.2 System peripheral: Texas Instruments PCI1620 Firmware Loading
Function (rev 01)

As you can see the problem is that the memory card reader has no
firmware loaded. I have managed to resolve this by loading the
firmware that came with the windows driver. I did this using by using
the kernel module which can be found at
http://penguin-breeder.org/kernel/download/tiumfwl.c (updated to work
with the current kernel - 2.6.20). If the firmware is not loaded I can
insert a memory card (SD) and nothing happens but after I load the
firmware and insert the SD memory card the status led shows activity
and an ide device is detected as shown in the following listings.

# pccardctl ls
Socket 0 Bridge:        [yenta_cardbus]         (bus ID: 0000:02:04.0)
Socket 1 Bridge:        [yenta_cardbus]         (bus ID: 0000:02:04.1)
Socket 1 Device 0:      [ide-cs]                (bus ID: 1.0)

# pccardctl info
PRODID_1=""
PRODID_2=""
PRODID_3=""
PRODID_4=""
MANFID=0000,0000
FUNCID=255
PRODID_1="TI"
PRODID_2="Ultramedia SD"
PRODID_3=""
PRODID_4=""
MANFID=0097,1620
FUNCID=4

 # pccardctl status
Socket 0:
  no card
Socket 1:
  5.0V 16-bit PC Card
  Subdevice 0 (function 0) bound to driver "ide-cs"

# pccardctl ident
Socket 0:
  no product info available
Socket 1:
  product info: "TI", "Ultramedia SD", "", ""
  manfid: 0x0097, 0x1620
  function: 4 (fixed disk)

As you can see the card is detected but the problem is that it can't
be used. It is bound to the ide-cs driver because of the function id
(4 - fixed disk). I don't know if this is OK. The problem can be seen
in the kernel's output:

pccard: PCMCIA card inserted into slot 1
pcmcia: registering new device pcmcia1.0
Probing IDE interface ide2...
hde: , ATA DISK drive
Device driver ide2 lacks bus and class support for being resumed.
ide2 at 0xa100-0xa107,0xa10e on irq 3
hde: max request size: 128KiB
hde: 31680 sectors (16 MB) w/16KiB Cache, CHS=132/15/16
hde: cache flushes not supported
hde: status timeout: status=0x98 { Busy }
ide: failed opcode was: 0xde
hde: drive not ready for command
 hde:hde: status timeout: status=0x98 { Busy }
ide: failed opcode was: unknown
hde: drive not ready for command
ide2: reset: master: error (0x00?)
hde: set_geometry_intr: status=0x51 { DriveReady SeekComplete Error }
hde: set_geometry_intr: error=0x04 { DriveStatusError }
ide: failed opcode was: unknown
hde: task_in_intr: status=0x51 { DriveReady SeekComplete Error }
hde: task_in_intr: error=0x10 { SectorIdNotFound }, CHS=0/0/1, sector=0
ide: failed opcode was: unknown
hde: task_in_intr: status=0x51 { DriveReady SeekComplete Error }
hde: task_in_intr: error=0x10 { SectorIdNotFound }, CHS=0/0/1, sector=0
ide: failed opcode was: unknown
hde: task_in_intr: status=0x51 { DriveReady SeekComplete Error }
hde: task_in_intr: error=0x10 { SectorIdNotFound }, CHS=0/0/1, sector=0
ide: failed opcode was: unknown
ide2: reset: master: error (0x00?)
end_request: I/O error, dev hde, sector 0
printk: 39 messages suppressed.
Buffer I/O error on device hde, logical block 0
end_request: I/O error, dev hde, sector 0
Buffer I/O error on device hde, logical block 0
ldm_validate_partition_table(): Disk read failed.
end_request: I/O error, dev hde, sector 0
Buffer I/O error on device hde, logical block 0
 unknown partition table
ide-cs: hde: Vpp = 0.0
 hde:end_request: I/O error, dev hde, sector 0
Buffer I/O error on device hde, logical block 0
end_request: I/O error, dev hde, sector 0
Buffer I/O error on device hde, logical block 0
ldm_validate_partition_table(): Disk read failed.
end_request: I/O error, dev hde, sector 0
Buffer I/O error on device hde, logical block 0
 unknown partition table
 hde:end_request: I/O error, dev hde, sector 0
Buffer I/O error on device hde, logical block 0
end_request: I/O error, dev hde, sector 0
Buffer I/O error on device hde, logical block 0
ldm_validate_partition_table(): Disk read failed.
end_request: I/O error, dev hde, sector 0
Buffer I/O error on device hde, logical block 0
 unknown partition table
end_request: I/O error, dev hde, sector 31488
Buffer I/O error on device hde, logical block 3936
end_request: I/O error, dev hde, sector 31488
end_request: I/O error, dev hde, sector 31672
end_request: I/O error, dev hde, sector 31672
end_request: I/O error, dev hde, sector 31672
end_request: I/O error, dev hde, sector 31672
end_request: I/O error, dev hde, sector 31672
end_request: I/O error, dev hde, sector 31672
end_request: I/O error, dev hde, sector 31616
end_request: I/O error, dev hde, sector 31664
end_request: I/O error, dev hde, sector 31672
end_request: I/O error, dev hde, sector 31672
end_request: I/O error, dev hde, sector 0
end_request: I/O error, dev hde, sector 0

The SD memory card is seen as an ATA disk of 16 MB but in fact is has
a capacity of 1GB. Has anyone some suggestions about this? How should
I proceed in solving this problem? Maybe ide-cs is not appropriate for
this kind of device and a driver must be written, how are other PCMCIA
memory card readers handled? This is my last piece of hardware that is
not working under Linux and I would really like to make it work. While
searching for a solution I have seen that many users have the same
problem and it's a shame that they can't use their hardware just
because TI only provided a driver for Windows.

Thanks,

Cristian Onet



More information about the linux-pcmcia mailing list