AnsweredAssumed Answered

imx6 IPU2 registers inaccessible

Question asked by Ivan Kozic on Oct 11, 2013
Latest reply on Oct 5, 2017 by Richard Woodham

Hi all,

 

I am having major issues accessing IPU2 registers from user-space, and I don't really know why - hopefully someone could help.

I am using mmap() - something like:

 

#define IPU1_REG_BASE 0x2600000

#define IPU2_REG_BASE 0x2A00000

 

#define IPU_MAP_SIZE 0x68020

 

#define IPU_CONF_OFFSET 0

 

_fdmem = open( memDevice, O_RDWR | O_SYNC );

 

map_ipu1 = (int *)(mmap(0, IPU_MAP_SIZE, PROT_READ|PROT_WRITE, MAP_SHARED, _fdmem, IPU1_REG_BASE));

map_ipu2 = (int *)(mmap(0, IPU_MAP_SIZE, PROT_READ|PROT_WRITE, MAP_SHARED, _fdmem, IPU2_REG_BASE));

 

int ipu_conf1 = *(map_ipu1+IPU_CONF_OFFSET/4)

int ipu_conf2 = *(map_ipu2+IPU_CONF_OFFSET/4)

 

If I comment out the last line (ipu_conf2), everything works (IPU1 registers are being read normally always), but if I use *(map_ipu2) anywhere, the application locks-up and I have to reboot. Also funny is output of "cat /proc/iomem ":

...

02400000-027fffff : imx-ipuv3.0
02800000-02bfffff : imx-ipuv3.1

...

 

I am not sure if this is correct? I have also tried with these addresses and it still locks.

 

Anyone knows? Or has similar issues? I have silicon rev1.0 and using kernel 3.0.35-4.0.0.

Outcomes