TI PCI1620 CardBus/Controller configuration

I recently installed OpenSuSE 11.0 on a 4 year old HP pavillion zx5000 laptop. It is my first Linux system, though I worked on some cross development on several different UNIX/Xenix boxes 12 years ago.

I have with an internal 5-in-one card (SD MS/Pro MMC SM Digital Media) reader which the system seems to completely ignores when I insert or remove the 512MB SD card. It doesn’t show up in removable devices or recently plugged in devices.

I’ve done some searching around and it appears that there is a fix or patch to make this work, but the fixes appear to be for slightly different versions of the PC card controller and for different laptops. I was hoping go get some direction for the Texas Instruments PCI1620 on my machine.

Here are the links I found:
HCL/Laptops/HP/tc4200 - openSUSE
* To get the SD Card Reader working you have to use:
/sbin/setpci -s 02:06.3 4c.b=02:02

[Sdhci-devel] Exorcising TI’s flash media controller](http://list.drzeus.cx/pipermail/sdhci-devel/2005-November/000036.html)
setpci -s 06.3 4c=0x22

Here is what I get with the lspsi command:

00:00.0 Host bridge: ATI Technologies Inc Radeon 9100 IGP Host Bridge (rev 02)
00:01.0 PCI bridge: ATI Technologies Inc Radeon 9100 IGP AGP Bridge
00:13.0 USB Controller: ATI Technologies Inc OHCI USB Controller #1 (rev 01)
00:13.1 USB Controller: ATI Technologies Inc OHCI USB Controller #2 (rev 01)
00:14.0 SMBus: ATI Technologies Inc SMBus (rev 16)
00:14.1 IDE interface: ATI Technologies Inc Dual Channel Bus Master PCI IDE Controller
00:14.3 ISA bridge: ATI Technologies Inc Device 434c
00:14.4 PCI bridge: ATI Technologies Inc IXP200 3COM 3C920B Ethernet Controller
00:14.5 Multimedia audio controller: ATI Technologies Inc IXP150 AC’97 Audio Controller
00:14.6 Modem: ATI Technologies Inc IXP AC’97 Modem (rev 01)
01:05.0 VGA compatible controller: ATI Technologies Inc M9+ 5C61 [Radeon Mobility 9200 (AGP)] (rev 01)
02:00.0 FireWire (IEEE 1394): Texas Instruments TSB43AB21 IEEE-1394a-2000 Controller (PHY/Link)
02:02.0 Network controller: Broadcom Corporation BCM4306 802.11b/g Wireless LAN Controller (rev 03)
02:03.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 10)
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)
02:07.0 USB Controller: NEC Corporation USB (rev 43)
02:07.1 USB Controller: NEC Corporation USB (rev 43)
02:07.2 USB Controller: NEC Corporation USB 2.0 (rev 04)

Leslie

I’ve located some other information that may be useful. I’m just not sure how to use it.

Output from the hwinfo via (YAST2 hardware information)

103: udi = ‘/org/freedesktop/Hal/devices/pci_104c_8201’
pci.subsys_product_id = 107 (0x6b)
info.subsystem = ‘pci’
pci.subsys_vendor_id = 4156 (0x103c)
info.product = ‘PCI1620 Firmware Loading Function’
pci.device_class = 8 (0x8)
info.udi = ‘/org/freedesktop/Hal/devices/pci_104c_8201’
pci.device_subclass = 128 (0x80)
pci.device_protocol = 0 (0x0)
linux.sysfs_path = ‘/sys/devices/pci0000:00/0000:00:14.4/0000:02:04.2’
pci.vendor = ‘Texas Instruments’
info.parent = ‘/org/freedesktop/Hal/devices/pci_1002_4342’
info.vendor = ‘Texas Instruments’
pci.linux.sysfs_path = ‘/sys/devices/pci0000:00/0000:00:14.4/0000:02:04.2’
pci.product = ‘PCI1620 Firmware Loading Function’
pci.subsys_vendor = ‘Hewlett-Packard Company’
pci.product_id = 33281 (0x8201)
linux.hotplug_type = 2 (0x2)
pci.vendor_id = 4172 (0x104c)
linux.subsystem = ‘pci’

104: udi = ‘/org/freedesktop/Hal/devices/pci_104c_ac54_0’
pci.subsys_product_id = 107 (0x6b)
info.subsystem = ‘pci’
pci.subsys_vendor_id = 4156 (0x103c)
info.product = ‘PCI1620 PC Card Controller’
pci.device_class = 6 (0x6)
info.udi = ‘/org/freedesktop/Hal/devices/pci_104c_ac54_0’
pci.device_subclass = 7 (0x7)
pci.device_protocol = 0 (0x0)
linux.sysfs_path = ‘/sys/devices/pci0000:00/0000:00:14.4/0000:02:04.1’
pci.vendor = ‘Texas Instruments’
info.parent = ‘/org/freedesktop/Hal/devices/pci_1002_4342’
info.vendor = ‘Texas Instruments’
pci.linux.sysfs_path = ‘/sys/devices/pci0000:00/0000:00:14.4/0000:02:04.1’
pci.product = ‘cPCI1620 PC Card Controller’
info.linux.driver = ‘yenta_cardbus’
pci.subsys_vendor = ‘Hewlett-Packard Company’
pci.product_id = 44116 (0xac54)
linux.hotplug_type = 2 (0x2)
pci.vendor_id = 4172 (0x104c)
linux.subsystem = ‘pci’

105: udi = ‘/org/freedesktop/Hal/devices/pci_104c_ac54’
pci.subsys_product_id = 107 (0x6b)
info.subsystem = ‘pci’
pci.subsys_vendor_id = 4156 (0x103c)
info.product = ‘PCI1620 PC Card Controller’
pci.device_class = 6 (0x6)
info.udi = ‘/org/freedesktop/Hal/devices/pi_104c_ac54’
pci.device_subclass = 7 (0x7)
pci.device_protocol = 0 (0x0)
linux.sysfs_path = ‘/sys/devices/pci0000:00/0000:00:14.4/0000:02:04.0’
pci.vendor = ‘Texas Instruments’
info.parent = ‘/org/freedesktop/Hal/devices/pci_1002_4342’
info.vendor = ‘Texas Instruments’
pci.linux.sysfs_path = ‘/sys/devices/pci0000:00/0000:00:14.4/0000:02:04.0’
pci.product = ‘PCI1620 PC Card Controller’
info.linux.driver = ‘yenta_cardbus’
pci.subsys_vendor = ‘Hewlett-Packard Company’
pci.product_id = 44116 (0xac54)
linux.hotplug_type = 2 (0x2)
pci.vendor_id = 4172 (0x104c)
linux.subsystem = ‘pci’

I have found some more information in the hwinfo file.

and some more

15: PCI 204.2: 0880 System peripheral
[Created at pci.310]
UDI: /org/freedesktop/Hal/devices/pci_104c_8201
Unique ID: D9Gj.JXmnsTst0BC
Parent ID: qscc.S+4MMSCCLf5
SysFS ID: /devices/pci0000:00/0000:00:14.4/0000:02:04.2
SysFS BusID: 0000:02:04.2
Hardware Class: unknown
Model: “Texas Instruments PCI1620 Firmware Loading Function”
Vendor: pci 0x104c “Texas Instruments”
Device: pci 0x8201 “PCI1620 Firmware Loading Function”
SubVendor: pci 0x103c “Hewlett-Packard Company”
SubDevice: pci 0x006b
Revision: 0x01
I/O Ports: 0xa400-0xa43f (rw)
Module Alias: “pci:v0000104Cd00008201sv0000103Csd0000006Bbc08sc80i00”
Config Status: cfg=no, avail=yes, need=no, active=unknown
Attached to: #24 (PCI bridge)

16: PCI 204.1: 0607 CardBus bridge
[Created at pci.310]
UDI: /org/freedesktop/Hal/devices/pci_104c_ac54_0
Unique ID: Mqmt.bZE4YzsIDT2
Parent ID: qscc.S+4MMSCCLf5
SysFS ID: /devices/pci0000:00/0000:00:14.4/0000:02:04.1
SysFS BusID: 0000:02:04.1
Hardware Class: bridge
Model: “Texas Instruments PCI1620 PC Card Controller”
Vendor: pci 0x104c “Texas Instruments”
Device: pci 0xac54 “PCI1620 PC Card Controller”
SubVendor: pci 0x103c “Hewlett-Packard Company”
SubDevice: pci 0x006b
Revision: 0x01
Driver: “yenta_cardbus”
Driver Modules: “yenta_socket”
Memory Range: 0xe820a000-0xe820afff (rw,non-prefetchable)
IRQ: 16 (233670 events)
Module Alias: “pci:v0000104Cd0000AC54sv0000103Csd0000006Bbc06sc07i00”
Driver Info #0:
Driver Status: yenta_socket is active
Driver Activation Cmd: “modprobe yenta_socket”
Config Status: cfg=no, avail=yes, need=no, active=unknown
Attached to: #24 (PCI bridge)

17: PCI 204.0: 0607 CardBus bridge
[Created at pci.310]
UDI: /org/freedesktop/Hal/devices/pci_104c_ac54
Unique ID: UVH2.bZE4YzsIDT2
Parent ID: qscc.S+4MMSCCLf5
SysFS ID: /devices/pci0000:00/0000:00:14.4/0000:02:04.0
SysFS BusID: 0000:02:04.0
Hardware Class: bridge
Model: “Texas Instruments PCI1620 PC Card Controller”
Vendor: pci 0x104c “Texas Instruments”
Device: pci 0xac54 “PCI1620 PC Card Controller”
SubVendor: pci 0x103c “Hewlett-Packard Company”
SubDevice: pci 0x006b
Revision: 0x01
Driver: “yenta_cardbus”
Driver Modules: “yenta_socket”
Memory Range: 0xe8209000-0xe8209fff (rw,non-prefetchable)
IRQ: 17 (1 event)
Module Alias: “pci:v0000104Cd0000AC54sv0000103Csd0000006Bbc06sc07i00”
Driver Info #0:
Driver Status: yenta_socket is active
Driver Activation Cmd: “modprobe yenta_socket”
Config Status: cfg=no, avail=yes, need=no, active=unknown
Attached to: #24 (PCI bridge)

24: PCI 14.4: 0604 PCI bridge (Subtractive decode)
[Created at pci.310]
UDI: /org/freedesktop/Hal/devices/pci_1002_4342
Unique ID: qscc.S+4MMSCCLf5
SysFS ID: /devices/pci0000:00/0000:00:14.4
SysFS BusID: 0000:00:14.4
Hardware Class: bridge
Model: “ATI PCI bridge”
Vendor: pci 0x1002 “ATI Technologies Inc”
Device: pci 0x4342
Module Alias: “pci:v00001002d00004342sv00000000sd00000000bc06sc04i01”
Config Status: cfg=no, avail=yes, need=no, active=unknown

What happens when you install a smaller card?

I have a USB cardbus/controller, and if I put a 32MB card in it “just works”.

But if I stick a 2GByte card in it is not seen.

Unfortunately the 512MB card is the smallest I have, but since you asked I tried a different card. When I stuck the new card in I crashed the system, just like the system crashed when I tried to install the system with the original card in and when I stuck the original card in when I didn’t boot with the card in. It is a bad crash because <ctrl><alt><Backspace> twice didn’t recover the x server and <alt><sysrq>REISUB didn’t work–though I am still trying to sucessful do the <alt><sysrq>REISUB sequence under normal conditions. I had to power off to restart the machine.

I’ve been using 512MB SD cards in the computer under windows since I got it. I got the cards to backup to my PDA which has 64MB memory so I needed something large. The card reader in internal to the notebook. I’ve updated the windows drivers because I wanted it to read a 2GB card but I never got it to work. I’m not sure they were the right drivers or the hardware supports the 2GB size, but the 512MB size is no trouble under Windows. I don’t know under openSuSE.

Under openSuSE I’ve only been able to remove and reinsert a card when I boot with the card in originally.

Leslie