We have a problem to communicate with a register, CS4, at at 0x10020000. In 
U-boot that reg has the value 0x45fab3c1, but when we try to access it we get:  
0x10101010 and we are not able to write too.

With CS3 everything seems ok, we can read and write. CS3 is at: 0x10000000.

The main/only differences between cs3 and cs4 are:

Chip Select: Lp_cs3
Bus size: 32 bit
Bus control: 2 wait state R/W ACK disabled
Allocated size 32Kbyte

Chip Select: Lp_cs4
Bus size: 8 bit
Bus control: 2 wait state R/W ACK disabled
Allocated size: 4 KByte

In userspace we use:
/*————————————————————————————————*/
//code from memedit.c
int fd;
fd = open("/dev/mem", O_SYNC | O_RDWR);
mem = mmap(NULL, 4096, PROT_READ | PROT_WRITE, MAP_SHARED, fd, offset & 
(~4095));
printf("/dev/mem[0x%08x] = 0x%08x", offset, *(unsigned int*)&mem[offset & 
4095]);

//to write
*((unsigned int *)&mem[offset & 4095]) = input;
/*————————————————————————————————*/

In our kernel module:
/*————————————————————————————————*/
#define CS4_START        0x10020000U
#define CS4_STOP         0x10040000U
#define CS4_SIZE         0x00020000U
#define CS3_START        0x10000000U
#define CS3_STOP         0x10020000U
#define CS3_SIZE         0x00020000U

 void __iomem *cs3_ioaddr   = ioremap ((volatile unsigned long)(CS3_START), 
CS3_SIZE);
 printk("We read value at CS3: %x \n\n\n",in_be32(cs3_ioaddr+0x0018));
 out_be32(cs3_ioaddr+0x0018,0x00000001);
 printk("We read written value: %x \n\n\n",in_be32(cs3_ioaddr+0x0018));
/*————————————————————————————————*/

Platform is based on mpc5200b CPU and fpga is a Xilinx Virtex4.
Kernel we use: 2.6.33

Thanks again in advance…

Lorenzo
_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev

Reply via email to