CompactFlash performance - pio5 and pio6 on TI1510 (no DMA)

Iain Barker ibarker at
Tue Nov 20 00:06:54 EST 2007


I'm trying to find out if there is a way to speed up the CompactFlash on an
embedded ARM box.

System is running Linux 2.6.23, using yenta ide-cs and hdparm 7.7
With a SanDisk Extreme3 (20MB/s) capable card, I get less than 1MB/s

The host adapter is TI-1510 PCI which is not DMA capable, so is restricted
to PIO modes. hdparm says the CF supports CFA extensions, so should be able
to use pio5 or pio6 (>20MB/s)

My guess is that yenta/ide-cs uses the legacy IDE code, not libata?
But shouldn't pio5 and 6 should be of the order 20x that speed?

Below are relevant kernel console and hdparm outputs.
Any ideas please?


Uniform Multi-Platform E-IDE driver Revision: 7.00alpha2
ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx

PCI: enabling device 0000:00:00.0 (0146 -> 0147)
Yenta: CardBus bridge found at 0000:00:00.0 [0000:0000]
Yenta: Using CSCINT to route CSC interrupts to PCI
Yenta: Routing CardBus interrupts to PCI
Yenta TI: socket 0000:00:00.0, mfunc 0x00001000, devctl 0x66
Yenta TI: socket 0000:00:00.0 probing PCI interrupt failed, trying to fix
Yenta TI: socket 0000:00:00.0 falling back to parallel PCI interrupts
Yenta TI: socket 0000:00:00.0 parallel PCI interrupts ok
Yenta: ISA IRQ mask 0x0000, PCI irq 39
Socket status: 30000810
pcmcia: parent PCI bridge I/O window: 0x2000 - 0xffff
pcmcia: parent PCI bridge Memory window: 0x30000000 - 0x40000000

Checking compact flash socket for media present
pccard: PCMCIA card inserted into slot 0
cs: memory probe 0x30000000-0x40000000: excluding 0x30000000-0x387fffff
pcmcia: registering new device pcmcia0.0
hda: SanDisk SDCFX3-2048, CFA DISK drive
ide0 at 0x2100-0x2107,0x210e on irq 39
hda: max request size: 128KiB
hda: 4001760 sectors (2048 MB) w/1KiB Cache, CHS=3970/16/63
 hda: hda1

# ./hdparm -I /dev/hda


CompactFlash ATA device, with removable media
        Model Number:       SanDisk SDCFX3-2048
        Serial Number:      116905G2007W3303
        Firmware Revision:  HDX 4.03
        Likely used: 4
        Logical         max     current
        cylinders       3970    3970
        heads           16      16
        sectors/track   63      63
        bytes/track: 0  bytes/sector: 576
        CHS current addressable sectors:    4001760
        LBA    user addressable sectors:    4001760
        device size with M = 1024*1024:        1953 MBytes
        device size with M = 1000*1000:        2048 MBytes (2 GB)
        LBA, IORDY(may be)(cannot be disabled)
        Buffer size: 1.0kB      bytes avail on r/w long: 4
        Standby timer values: spec'd by Vendor
        R/W multiple sector transfer: Max = 4   Current = 4
        DMA: not supported
        PIO: pio0 pio1 pio2 pio3 pio4
             Cycle time: no flow control=120ns  IORDY flow control=120ns
        Enabled Supported:
                Write cache
           *    CFA feature set
           *    CFA advanced modes: pio5 *pio6

# ./hdparm -t /dev/hda

 Timing buffered disk reads:    4 MB in  4.36 seconds = 939.24 kB/sec


More information about the linux-pcmcia mailing list