Nios® V/II Embedded Design Suite (EDS)
Support for Embedded Development Tools, Processors (SoCs and Nios® V/II processor), Embedded Development Suites (EDSs), Boot and Configuration, Operating Systems, C and C++
12590 Discussions

Compact Flash on latest unstable-nios2mmu - does not work.

Altera_Forum
Honored Contributor II
1,263 Views

This doesn't seem to work. Drivers load, but there doesn't appear to be any probing for the device. Seem a lot of code is involved. Is this working for anyone? 

 

I have older Nios 2, 2C35 proto board from Altera, not DE2. 

 

cf: ata@0x1000080 { compatible = "ALTR,cf-10.1","ALTR,cf-1.0"; reg = < 0x1000000 0x10 0x1000080 0x40>; interrupt-parent = < &cpu >; interrupts = < 14 15 >; }; //end ata (cf)  

 

Linux version 3.0.0-rc7-01121-g1bbc9ab-dirty (Nate@NateFedora) (gcc version 4.1.2)# 57 Fri Jul 22 16:37:01 MDT 2011 bootconsole enabled early_console initialized at 0xe1000010 On node 0 totalpages: 8192 free_area_init_node: node 0, pgdat c657b3d4, node_mem_map c6596800 DMA zone: 64 pages used for memmap DMA zone: 0 pages reserved DMA zone: 8128 pages, LIFO batch:0 pcpu-alloc: s0 r0 d32768 u32768 alloc=1*32768 pcpu-alloc: 0 Built 1 zonelists in Zone order, mobility grouping on. Total pages: 8128 Kernel command line: PID hash table entries: 128 (order: -3, 512 bytes) Dentry cache hash table entries: 4096 (order: 2, 16384 bytes) Inode-cache hash table entries: 2048 (order: 1, 8192 bytes) Memory available: 26728k/5694k RAM (2245k kernel code, 3449k data) NR_IRQS:32 Calibrating delay loop... 40.83 BogoMIPS (lpj=81664) pid_max: default: 32768 minimum: 301 Mount-cache hash table entries: 512 NET: Registered protocol family 16 bio: create slab <bio-0> at 0 SCSI subsystem initialized libata version 3.00 loaded. Switching to clocksource timer NET: Registered protocol family 2 IP route cache hash table entries: 1024 (order: 0, 4096 bytes) TCP established hash table entries: 1024 (order: 1, 8192 bytes) TCP bind hash table entries: 1024 (order: 0, 4096 bytes) TCP: Hash tables configured (established 1024 bind 1024) TCP reno registered UDP hash table entries: 256 (order: 0, 4096 bytes) UDP-Lite hash table entries: 256 (order: 0, 4096 bytes) NET: Registered protocol family 1 RPC: Registered named UNIX socket transport module. RPC: Registered udp transport module. RPC: Registered tcp transport module. RPC: Registered tcp NFSv4.1 backchannel transport module. msgmni has been set to 52 Block layer SCSI generic (bsg) driver version 0.4 loaded (major 254) io scheduler noop registered io scheduler deadline registered io scheduler cfq registered (default) ttyAL0 at MMIO 0x4000060 (irq = 5) is a Altera UART ttyAL1 at MMIO 0x4000080 (irq = 4) is a Altera UART ttyJ0 at MMIO 0x1000010 (irq = 1) is a Altera JTAG UART console enabled, bootconsole disabled console enabled, bootconsole disabled smc91x.c: v1.1, sep 22 2004 by Nicolas Pitre <nico@fluxnic.net> eth0: SMC91C11xFD (rev 2) at e1020300 IRQ 3 eth0: Ethernet addr: 00:07:ed:ff:ab:01 eth0: PHY LAN83C183 (LAN91C111 Internal) mousedev: PS/2 mouse device common for all mice TCP cubic registered NET: Registered protocol family 17 Freeing unused kernel memory: 2832k freed (0xc6233000 - 0xc64f7000) Welcome to ____ _ _ / __| ||_| _ _| | | | _ ____ _ _ _ _ | | | | | | || | _ \| | | |\ \/ / | |_| | |__| || | | | | |_| |/ | ___\____|_||_|_| |_|\____|\_/\_/ | | |_| For further information check: http://www.uclinux.org/ BusyBox v1.18.4 (2011-07-22 15:00:52 MDT) hush - the humble shell Enter 'help' for a list of built-in commands. root:/>
0 Kudos
3 Replies
Altera_Forum
Honored Contributor II
288 Views

It seems the compatible string in the driver does not match the one generated by sopc2dts. Care to pull from unstable-nios2mmu and see if it works for you now? Unfortunately I do not have a device to test this myself.

0 Kudos
Altera_Forum
Honored Contributor II
288 Views

Thanks for the reply. 

 

The wiki suggests "Generic platform device PATA support", however it appears you modified the pata_altera_cf.c file, so I unchecked Generic and checked the Altera CF driver in the config. 

 

It probes now, but I get error: 

 

pata_altera_cf 1000000.ata: IDE region too small Finding this in the pata_altera_cf.c file, I added some printk statements: 

 

printk("resource_type(ide_mem_res) = 0x%X ?= 0x%X\n", resource_type(ide_mem_res), IORESOURCE_MEM); printk("resource_size(ide_mem_res) = 0x%X ?= 0x%X\n", resource_size(ide_mem_res), ALTCF_IDE_LEN); printk("resource_type(ide_irq_res) = 0x%X ?= 0x%X\n", resource_type(ide_irq_res), IORESOURCE_IRQ); printk("resource_type(cfc_mem_res) = 0x%X ?= 0x%X\n", resource_type(cfc_mem_res), IORESOURCE_MEM); printk("resource_size(cfc_mem_res) = 0x%X ?= 0x%X\n", resource_size(cfc_mem_res), ALTCF_CFC_LEN); I got the following at boot: 

 

resource_type(ide_mem_res) = 0x200 ?= 0x200 resource_size(ide_mem_res) = 0x10 ?= 0x40 resource_type(ide_irq_res) = 0x400 ?= 0x400 resource_type(cfc_mem_res) = 0x200 ?= 0x200 resource_size(cfc_mem_res) = 0x40 ?= 0x10 The second line is the problem, as code reads: 

 

if (resource_size(ide_mem_res) < ALTCF_IDE_LEN) { dev_err(dev, "IDE region too small\n"); return rc; } ...which is all I had time for today. 

 

Is the .dts compiler correct? 

 

Recall my .dts file for the CF: 

 

cf: ata@0x1000080 { compatible = "ALTR,cf-10.1","ALTR,cf-1.0"; reg = < 0x1000000 0x10 0x1000080 0x40>; interrupt-parent = < &cpu >; interrupts = < 14 15 >; }; //end ata (cf) I am using pipeline bridges, so addressing is not absolute..? 

 

Thanks,
0 Kudos
Altera_Forum
Honored Contributor II
288 Views

Okay, got back to this, this AM, and it is now working. 

 

It appears that control and ide memory and IRQ's get swapped somewhere. 

 

I swapped them back in the dts file, as below: 

 

The "before" is shown in prior posts above: 

 

After swapping here: 

 

cf: ata@0x1000080 { compatible = "ALTR,cf-10.1","ALTR,cf-1.0"; reg = < 0x1000080 0x40 0x1000000 0x10 >; interrupt-parent = < &cpu >; interrupts = < 15 14 >; }; //end ata (cf)  

 

Thanks,
0 Kudos
Reply