Forum Discussion

Altera_Forum's avatar
Altera_Forum
Icon for Honored Contributor rankHonored Contributor
14 years ago

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

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:/>

3 Replies

  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    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.

  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    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,
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    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,