Can not get PATA to work for Compact Flash with 2.6.28 kernel

Aaron Pace kodiakuppercut at gmail.com
Tue Feb 3 07:14:48 EST 2009


>
> I use a San Disk compact flash (CF) card on a board with MPC8248
> processor. The CF is connected to data and address bus of the processor
> and operates in TRUE IDE mode. The registers are memory mapped. I can
> read the file system on the CF in u-boot (1.3.4). U-boot can identify
> the CF and mount file system correctly.
<snip>

I have just gone through solving a problem that sounds very similar
(using several flash cards).
We also have a flash card wired up in true IDE mode.  The problem that
I ran into is that any time the Interrupt Enable (bit 1) or Software
Reset(bit 2) bits were set in the control register, the flash would
show an error in the status register (bit 0), and was not recoverable
except by toggling the power to the card.
To work around this, write a driver based on the PATA driver, but
replace (or at least examine) each and every element of the
ata_port_operations struct you are using, replacing any function which
soft resets or enables interrupts.

> ata_host_alloc: ENTER
> ata_port_alloc: ENTER
> __ata_port_freeze: ata4294967295 port frozen
> scsi0 : pata_platform
> ata1: PATA max PIO3 no IRQ, using PIO polling mmio cmd 0x30000000 ctl
> 0x40000000
> ata_host_register: probe begin
> ata_port_schedule_eh: port EH scheduled
> ata_scsi_error: ENTER
> ata_port_flush_task: ENTER
> ata_eh_link_autopsy: ENTER
> ata_eh_recover: ENTER
> __ata_port_freeze: ata1 port frozen
> ata_sff_softreset: ENTER
> ata_sff_softreset: about to softreset, devmask=0
> ata_bus_softreset: ata1: bus reset via SRST
> ata_sff_softreset: EXIT, classes[0]=9 [1]=9
> ata_eh_thaw_port: ata1 port thawed
> ata_std_postreset: ENTER
> ata_std_postreset: EXIT
> ata_sff_postreset: EXIT, no device
> ata_eh_revalidate_and_attach: ENTER
> ata_eh_recover: EXIT, rc=0
> ata_scsi_error: EXIT

The above sequence of ATA calls you are seeing is essentially
identical to what I ran into -- part of the registration attempted to
either enable interrupts or soft reset the card, the error bit stuck
high, and everything went downhill from there.
Hope that helps.

-Aaron Pace



More information about the Linuxppc-dev mailing list