whenever I try to read an IPU register using memtool, the system becomes completely unresponsive (no response on terminal, no response to ping..).
Is anyone else seeing this?
Below is an example of a successful read of a non IPU register (ENET.RDAR), but then right below it I'm reading IPU1.CSI0_SENS_CONF, and that hangs.
root@hostname:~# memtool ENET.RDAR
SOC is mx6q
ENET Addr:0x2188000
ENET.RDAR Addr:0x02188010 Value:0x01000000 - RDAR is a command register, written by the user, to indicate that the receive descriptor ring has been updated, that is, that the driver produced empty receive buffers with the empty bit set.
ENET.RDAR.RDAR(24..24) :0x1
Always set to 1 when this register is written, regardless of the value written.
root@hostname:~# memtool IPU1.CSI0_SENS_CONF
SOC is mx6q
IPU1 Addr:0x2400000
Thanks,
Miki
Solved! Go to Solution.
Probably because ipu1_ipu_clk_enable bits are not set in CCM_CCGR3 register.
Probably because ipu1_ipu_clk_enable bits are not set in CCM_CCGR3 register.
That worked, thanks. It doesn't hang anymore.
However, I'm now always reading all zeros back. Here's a screendump of how I tried to enable a CSI, and the enable bit is not written:
root@hostname:~# memtool IPU1.CONF.CSI0_EN
SOC is mx6q
IPU1 Addr:0x2400000
IPU1.CONF Addr:0x02400000 Value:0x00000000 -
IPU1.CONF.CSI0_EN(0..0) :0x0
Camera Sensor Interface 0 Enable bit
root@hostname:~# memtool IPU1.CONF.CSI0_EN=1
SOC is mx6q
write 0x00000001 to Bit 0..0 of 0x02400000
root@hostname:~# memtool IPU1.CONF.CSI0_EN
SOC is mx6q
IPU1 Addr:0x2400000
IPU1.CONF Addr:0x02400000 Value:0x00000000 -
IPU1.CONF.CSI0_EN(0..0) :0x0
Camera Sensor Interface 0 Enable bit
The interesting thing is that I still read all zeroes even when the CSI is capturing successfully using gstreamer (verified with stream to VLC on PC). I know I'm trying to read from the correct IPU/CSI since the camera is hardwires to IPU1_CSI0 (first IPU, first CSI).
Any ideas what that might be?
Thanks,
Miki
Are you sure that the address you are reading is correct? IPU1 base address is 0x2600000, not 0x2400000.
I guess I shouldn't have assumes that the memtool from freescale was configured properly. You're correct, I was accessing the wrong registers.
Thanks so much!
-Miki