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

Lixin Yao Lixin.Yao at HSTX.com
Tue Feb 3 02:52:32 EST 2009


Hello, Steven,

I realized that and made change, I use reg-shift of 1 which u-boot uses
and works for the CF.

localbus at f0010100 {
      #address-cells = <2>;                   
      #size-cells = <1>;
      compatible = "fsl,mpc8248-localbus",    
                   "fsl,pq2-localbus",
                   "simple-bus"; 
      reg = <0xf0010100 0x40>;                
      ranges = <0x3 0x0 0x30000000 0x10000    
                0x4 0x0 0x40000000 0x10000>;  

      pata at 3,0 {
         compatible = "fsl,tr5000v2-pata", "ata-generic";
         reg = <0x3 0x0 0x10 0x4 0xC 0x2>;   
         reg-shift = <1>;                    
         pio-mode = <6>;                     
         // interrupts = <0x19 0x8>;         
         // interrupt-parent = <&PIC>;       
      };


U-Boot (1.3.4) shows this:

bus 0: OK
  Device 0: Model: SanDisk SDCFJ-128 Firm: HDX 2.27 Ser#:
116904C2505X4026
            Type: Removable Hard Disk
            Capacity: 122.5 MB = 0.1 GB (250880 x 512)


This is the console output after setting reg = <0x3 0x0 0x10 0x4 0xC
0x2>:

ata_host_alloc: ENTER
ata_port_alloc: ENTER
__ata_port_freeze: ata4294967295 port frozen
scsi0 : pata_platform
ata1: PATA max PIO6 no IRQ, using PIO polling mmio cmd 0x30000000 ctl
0x4000000c
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
ata_host_register: host probe begin
TCP cubic registered
NET: Registered protocol family 10
IPv6 over IPv4 tunneling driver
NET: Registered protocol family 17
RPC: Registered udp transport module.
RPC: Registered tcp transport module.
ics1893_config_init() successful
ADDRCONF(NETDEV_UP): eth0: link is not ready
ics1893_config_init() successful
IP-Config: Complete:
     device=eth0, addr=172.20.16.150, mask=255.255.255.0,
gw=172.20.16.1,
     host=tr5000v2, domain=, nis-domain=(none),
     bootserver=10.15.34.196, rootserver=10.15.34.196, rootpath=
Looking up port of RPC 100003/2 on 10.15.34.196
ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
Looking up port of RPC 100005/1 on 10.15.34.196
VFS: Mounted root (nfs filesystem).
Freeing unused kernel memory: 164k init
### Application running ...

 
The San Disk CF is still not found.

Any more insights/ideas?

Thank you and I appreciate your help!

Lixin

-----Original Message-----
From: Steven A. Falco [mailto:sfalco at harris.com] 
Sent: Monday, February 02, 2009 10:00 AM
To: Lixin Yao
Cc: linuxppc-dev at ozlabs.org
Subject: Re: Can not get PATA to work for Compact Flash with 2.6.28
kernel

Lixin Yao wrote:
> 
> 
> 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.
> 
> The hardware is known good hardware.
> 
> I use 2.6.28 kernel and configured support for PATA for the CF.

The second register set does not start at register 0.  It starts
at register 6.  We are using 1 chip select from the processor,
and generate two chip selects to the CF that are 0x80 apart (on
a sequoia board).

So here is what I am using on the modified sequoia board.  Note
the 0x00000098 - you might think it should be 0x00000080 as per
the discussion above, but because the second register set starts
at 6, you have to build that into the address.  

pata at 1,0 {
compatible = "harris,hydra_temp-pata", "ata-generic";
bank-width = <2>;
reg = <0x00000001 0x00000000 0x00000020 0x00000001 0x00000098
0x00000004>;
reg-shift = <2>;
pio-mode = <6>;
interrupt-parent = <&UIC0>;
interrupts = <0x1b 0x4>;
};

	Steve





More information about the Linuxppc-dev mailing list