Hi,
I have an SVT OMAP5432 EVM with an ES2.0 device on it. I'm running my own Linux kernel build, built from the board_support package from TI giving me a kernel that claims to be version 3.8.4vs. The system starts up fine.
I'm trying to create an ISS driver for very basic video ingest using the ISS CPI port, but I am failing at the first hurdle (almost). My driver is built into the kernel and inits as device_initcall(init_iss). At this time in the boot sequence, as long as I have done a omap_device_enable() on the ISS, the code can read the id of the ISS.
The hwmod for ISS covers the address range:
.pa_start = 0x52000000,
.pa_end = 0x520000ff,
which is not enough the access the ISP for example. I changed the range to:
.pa_start = 0x52000000,
.pa_end = 0x5201ffff,
I added a read to my kernel from pa address 0x52010000, to read the ISP id, but this read is in a timer thread that starts when the device is opened and fires 4 jiffies later. The L3 prevents the access and omap_l3_noc.c reports a standard error to target ISS at address 0x10000. It seems I can't access the ISS id in my timer thread either.
I can't tell what the actual error is though. _After_ the noc interrupt has been handled and the error is cleared, I see the following values in the ISS TARG registers:
[ 27.734924] TARG
[ 27.736877] 400: 0x130001
[ 27.739624] 404: 0xebc493
[ 27.742370] 408: 0x1
[ 27.744689] 40c: 0x0
[ 27.746978] 410: 0xa
[ 27.749267] 414: 0x0
[ 27.751586] 418: 0x0
[ 27.753875] 41c: 0x0
[ 27.756164] 420: 0x0
[ 27.758453] 424: 0x0
[ 27.760772] 428: 0x0
[ 27.763061] 42c: 0x0
[ 27.765350] 430: 0x0
[ 27.767639] 434: 0x0
[ 27.769958] 438: 0x0
[ 27.772247] 43c: 0x0
[ 27.774536] 440: 0x2
[ 27.776824] 444: 0x2
[ 27.779144] 448: 0x0
[ 27.781433] 44c: 0x804
[ 27.783905] 450: 0x0
[ 27.786193] 454: 0xa
[ 27.788513] 458: 0x84
[ 27.790893] 45c: 0x10000
[ 27.793548] 460: 0x0
[ 27.795837] 464: 0x0
[ 27.798156] 468: 0x51
[ 27.800537] 46c: 0x0
[ 27.802825] 470: 0x0
[ 27.805114] 474: 0x0
[ 27.807434] 478: 0x0
[ 27.809722] 47c: 0x0
[ 27.812011] 480: 0x1f
There is the remains of my error at address 0x10000, but the TRM doesn't document these registers very well, so I can't tell what it's complaining about.
What else do I need to do in the kernel to allow access to the ISS "sub" devices? I guessed that the ISS device has had its clock removed, but adding a call to pm_runtime_set_active() in my open function didn't seem to help.
Thanks,
Nick.