HP-Compaq nx9105, TI card reader

2004-12-28
2013-04-08
  • Marek Materzok
    Marek Materzok
    2004-12-28

    I have a problem with a card reader built into HP-Compaq nx9105 notebook. Default instalation didn't recognize it at all. After I added to /etc/pcmcia/config.opts memory and port range from lspci:

    include memory 0xe8100000-0xe97fffff
    include port 0x3000-0x7fff

    The card reader was detected, but large number of errors showed up:

    Dec 28 20:55:25 localhost cardmgr[7258]: socket 1: ATA/IDE Fixed Disk
    Dec 28 20:55:25 localhost cardmgr[7258]: executing: 'modprobe ide-cs'
    Dec 28 20:55:25 localhost kernel: Probing IDE interface ide2...
    Dec 28 20:55:25 localhost kernel: hde: , ATA DISK drive
    Dec 28 20:55:26 localhost kernel: ide2 at 0x3000-0x3007,0x300e on irq 5
    Dec 28 20:55:26 localhost kernel: hde: max request size: 128KiB
    Dec 28 20:55:26 localhost kernel: hde: 264 sectors (0 MB) w/16KiB Cache, CHS=132/1/2
    Dec 28 20:55:26 localhost kernel: hde: cache flushes not supported
    Dec 28 20:55:36 localhost kernel: hde: status timeout: status=0x98 { Busy }
    Dec 28 20:55:36 localhost kernel:
    Dec 28 20:55:36 localhost kernel: ide: failed opcode was: 0xde
    Dec 28 20:55:36 localhost kernel: hde: drive not ready for command
    Dec 28 20:55:36 localhost kernel:  /dev/ide/host2/bus0/target0/lun0:hde: status timeout: status=0x98 { Busy }
    Dec 28 20:55:36 localhost kernel:
    Dec 28 20:55:36 localhost kernel: ide: failed opcode was: unknown
    Dec 28 20:55:36 localhost kernel: hde: drive not ready for command
    Dec 28 20:55:36 localhost udev[7272]: configured rule in '/etc/udev/rules.d/cd-aliases.rules' at line 9 applied, added symlink '%c{1} %c{2} %c{3} %c{4} %c{5} %c{6}'
    Dec 28 20:55:36 localhost udev[7272]: configured rule in
    '/etc/udev/rules.d/z_hal-plugdev.rules' at line 3 applied, 'hde' becomes '%k'
    Dec 28 20:55:36 localhost udev[7272]: creating device node '/dev/hde'
    Dec 28 20:55:36 localhost kernel: ide2: reset: master: error (0x00?)
    Dec 28 20:55:36 localhost kernel: hde: set_geometry_intr: status=0x51 { DriveReady SeekComplete Error }
    Dec 28 20:55:36 localhost kernel: hde: set_geometry_intr: error=0x04 { DriveStatusError }
    Dec 28 20:55:36 localhost kernel: ide: failed opcode was: unknown
    Dec 28 20:55:36 localhost kernel: hde: read_intr: status=0x51 { DriveReady SeekComplete Error }
    Dec 28 20:55:36 localhost kernel: hde: read_intr: error=0x10 { SectorIdNotFound }, CHS=0/0/1, sector=0
    Dec 28 20:55:36 localhost kernel: ide: failed opcode was: unknown
    Dec 28 20:55:36 localhost kernel: hde: read_intr: status=0x51 { DriveReady SeekComplete Error }
    Dec 28 20:55:36 localhost kernel: hde: read_intr: error=0x10 { SectorIdNotFound }, CHS=0/0/1, sector=0
    Dec 28 20:55:36 localhost kernel: ide: failed opcode was: unknown
    Dec 28 20:55:36 localhost kernel: hde: read_intr: status=0x51 { DriveReady SeekComplete Error }
    Dec 28 20:55:36 localhost kernel: hde: read_intr: error=0x10 { SectorIdNotFound }, CHS=0/0/1, sector=0
    Dec 28 20:55:36 localhost kernel: ide: failed opcode was: unknown
    Dec 28 20:55:36 localhost kernel: ide2: reset: master: error (0x00?)
    Dec 28 20:55:36 localhost kernel: end_request: I/O error, dev hde, sector 0
    Dec 28 20:55:36 localhost kernel: Buffer I/O error on device hde, logical block 0
    Dec 28 20:55:36 localhost kernel: end_request: I/O error, dev hde, sector 0
    Dec 28 20:55:36 localhost kernel: Buffer I/O error on device hde, logical block 0
    Dec 28 20:55:36 localhost kernel:  dm_validate_partition_table(): Disk read failed.
    Dec 28 20:55:36 localhost kernel: end_request: I/O error, dev hde, sector 0
    Dec 28 20:55:36 localhost kernel: Buffer I/O error on device hde, logical block 0
    Dec 28 20:55:36 localhost kernel:  unable to read partition table
    Dec 28 20:55:36 localhost kernel: ide-cs: hde: Vcc = 5.0, Vpp = 0.0
    Dec 28 20:55:36 localhost cardmgr[7258]: executing: './ide start hde'

    I'm using 2.6.9 kernel with Debian patches. The notebook has nForce2 chipset (I'm using noapic to work-around a problem with interrupt routing). PCMCIA controller is using yenta_socket driver. Here is lspci -v output about Texas Instruments devices:

    0000:02:04.0 CardBus bridge: Texas Instruments: Unknown device ac54 (rev 01)
            Subsystem: Hewlett-Packard Company: Unknown device 006d
            Flags: bus master, medium devsel, latency 168, IRQ 11
            Memory at e8104000 (32-bit, non-prefetchable) [size=4K]
            Bus: primary=02, secondary=03, subordinate=06, sec-latency=176
            Memory window 0: e8200000-e83ff000 (prefetchable)
            Memory window 1: e8400000-e85ff000
            I/O window 0: 00004000-000040ff
            I/O window 1: 00004400-000044ff
            16-bit legacy interface ports at 0001

    0000:02:04.1 CardBus bridge: Texas Instruments: Unknown device ac54 (rev 01)
            Subsystem: Hewlett-Packard Company: Unknown device 006d
            Flags: bus master, medium devsel, latency 168, IRQ 10
            Memory at e8105000 (32-bit, non-prefetchable) [size=4K]
            Bus: primary=02, secondary=07, subordinate=0a, sec-latency=176
            Memory window 0: e9000000-e93ff000 (prefetchable)
            Memory window 1: e8c00000-e8fff000
            I/O window 0: 00006000-00006fff
            I/O window 1: 00005000-00005fff
            16-bit legacy interface ports at 0001

    0000:02:04.2 System peripheral: Texas Instruments: Unknown device 8201 (rev 01)
            Subsystem: Hewlett-Packard Company: Unknown device 006d
            Flags: bus master, medium devsel, latency 64
            I/O ports at 7400 [size=64]
            Capabilities: [44] Power Management version 2

    What can I do to help fix this problem?

     
    • David Hinds
      David Hinds
      2004-12-29

      I think it's hard to make progress unless someone motivated to make this work can get some documentation from the manufacturer of this device and figure it out.  It is too hard to try to debug these sorts of things by remote control.

      -- Dave

       
      • Marek Materzok
        Marek Materzok
        2004-12-31

        It's Texas Instruments PCI-1620 controller. Some documentation is avaiable on Texas Instruments website: http://focus.ti.com/docs/prod/folders/print/pci1620.html
        I'm quite a newbie if it comes to kernel development. Maybe it's time for me to try it...

         
        • David Hinds
          David Hinds
          2005-01-03

          Do you have other working PCMCIA cards?

          Also I'd change your IO port range in /etc/pcmcia/config.opts to 0x4000-0x6fff.

          I don't see much information about the card reader in the PCI 1620 data sheet.  I think it may be covered in the "data manual", which does not seem to be available on line.  One worry is that the data sheet talks about loading firmware and while it doesn't describe what the firmware is for, I'm guessing that it might be for the card reader function.

          -- Dave

           
          • Marek Materzok
            Marek Materzok
            2005-03-11

            Sorry, I don't have any PCMCIA cards right now. I will test it when I get one.
            Does anyone have clue about reverse-engineering Windows drivers? I've found three files related to the device: tiumflt.sys (probably the main driver), tiumfw.bin (the firmware) and tiumfwl.sys (firmware loader).

             
          • Marek Materzok
            Marek Materzok
            2005-03-11

            I've just found a firmware loader:
            http://c0ffee.org/stuff/tiumfwl.c
            Will try it and report back.

             
            • Marek Materzok
              Marek Materzok
              2005-03-11

              Tried it, it seems to load the firmware correctly, but it makes the system hang after memory probe.