Has anyone messed around with accessing the peripheral bus on a 405EP PPC?  
I've already written a driver to allow me to read/write to the EBC (external 
bus control) registers from userspace, but I can't seem to toggle CS0\, OE\, 
R/W, etc.  Is there anything special about CS0\ (after boot)?

By default, Intrinsyc/Linux sets ups the EBC registers as follows:

EBC0_B0CR  : 0xffe3a000
EBC0_B1CR  : 0x60018000
EBC0_B2CR  : 0x00000000
EBC0_B3CR  : 0x00000000
EBC0_B4CR  : 0x00000000
EBC0_B0AP  : 0x04002480
EBC0_B1AP  : 0x04005480
EBC0_B2AP  : 0x00000000
EBC0_B3AP  : 0x00000000
EBC0_B4AP  : 0x00000000
EBC0_BEAR  : 0x00000000
EBC0_BESR0 : 0x00000000
EBC0_BESR1 : 0x00000000
EBC0_CFG   : 0x80400000

and I changed B0CR to 0x0043a000 and I'm trying to use mmap like:

#define MAP_BASE                (0x00400000)
#define MAP_LENGTH      0x10
#define MAP_PROT                (PROT_READ | PROT_WRITE)
#define MAP_FLAGS               (MAP_SHARED)

volatile unsigned char *init_map(int *file)
{
        volatile unsigned char *map;

        if ((*file = open("/dev/mem", O_RDWR | O_SYNC)) == -1) {
                puts("Failure opening device.");
                return NULL;
        }

        map = (unsigned char *) mmap(NULL, MAP_LENGTH, MAP_PROT, MAP_FLAGS, 
*file, MAP_BASE);
        if (map == (void *) -1) {
                puts("Failure mapping memory.");
                close(*file);
                return NULL;
        }

        return map;
}

then reading/writing to the returned map address.  ... any suggestions?

I have an oscilloscope and digital logical analyzer available to probe signals.

Thanks!
-Paul

** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/



Reply via email to