Q:
Can OpenGL/OpenVG work on any of our boards with a 16-bit DDR bus?
Here is GPU state dump when run some of the GPU SDK tutorials on their imx6 solo board with a 16-bit DDR bus:
Mounting rootfs
VFS: Mounted root (nfs filesystem) readonly on device 0:12.
Freeing init memory: 156K
Starting init
GPU[0]:
**************************
*** GPU STATE DUMP ***
**************************
axi = 0x000000B1
idle = 0x7FFFFF86
FE not idle
SH not idle
PA not idle
SE not idle
RA not idle
DMA appears to be stuck at this address:
0x1882F230
dmaLow = 0x08010583
dmaHigh = 0x80003400
dmaState = 0x00000904
command state = 4 (PAR_ADR1_ST)
command DMA state = 1 (CMD_START_ST)
command fetch state = 2 (FET_VALID_ST)
DMA request state = 0 (REQ_IDLE_ST)
cal state = 0 (CAL_IDLE_ST)
VE request state = 0 (VER_IDLE_ST)
RA debug registers:
[0x00] 0x0108C378
[0x01] 0x0042FB12
[0x02] 0x0042FB11
[0x03] 0x0000022C
[0x04] 0x10220033
[0x05] 0x0885C800
[0x06] 0xC054CBFE
[0x07] 0x68100000
[0x08] 0x00000000
[0x09] 0x00000000
[0x0A] 0x00000000
[0x0B] 0x00000000
[0x0C] 0x12344321
[0x0D] 0x12344321
[0x0E] 0x12344321
[0x0F] 0x12344321
signature = 0x12344321 (1 read attempt(s))
TX debug registers:
[0x00] 0x00000000
[0x01] 0x00000000
[0x02] 0x00000000
[0x03] 0x00000000
[0x04] 0x00000000
[0x05] 0x00000000
[0x06] 0x00000000
[0x07] 0x00000000
[0x08] 0x00000000
[0x09] 0x00000000
[0x0A] 0x00000000
[0x0B] 0x00000000
[0x0C] 0x00000000
[0x0D] 0x00000000
[0x0E] 0x00000000
[0x0F] 0x00000000
failed to obtain the signature (read 0x00000000).
FE debug registers:
[0x00] 0x1882F450
[0x01] 0x08010594
[0x02] 0x00000001
[0x03] 0x00000256
[0x04] 0x00080049
[0x05] 0x0000000D
[0x06] 0x00009571
[0x07] 0x00007445
[0x08] 0x00000004
[0x09] 0x00000000
[0x0A] 0x00000000
[0x0B] 0x00000000
[0x0C] 0x00000000
[0x0D] 0xA3105D67
[0x0E] 0x000000D0
[0x0F] 0xBABEF00D
signature = 0xBABEF00D (1 read attempt(s))
PE debug registers:
[0x00] 0x0108C369
[0x01] 0x00000000
[0x02] 0x0108C369
[0x03] 0x00000000
[0x04] 0xA0000000
[0x05] 0xABC00000
[0x06] 0xBC000000
[0x07] 0xCDE00000
[0x08] 0xD04045C0
[0x09] 0x204045C0
[0x0A] 0x0D863084
[0x0B] 0x00000000
[0x0C] 0xBABEF00D
[0x0D] 0xBABEF00D
[0x0E] 0xBABEF00D
[0x0F] 0xBABEF00D
signature = 0xBABEF00D (1 read attempt(s))
DE debug registers:
[0x00] 0x00000000
[0x01] 0x00000000
[0x02] 0x00000000
[0x03] 0x00000000
[0x04] 0x00000000
[0x05] 0x00000000
[0x06] 0x00000000
[0x07] 0x00000000
[0x08] 0x00000000
[0x09] 0x00000000
[0x0A] 0x00000000
[0x0B] 0x00000000
[0x0C] 0x00000000
[0x0D] 0x00000000
[0x0E] 0x00000000
[0x0F] 0x00000000
failed to obtain the signature (read 0x00000000).
SH debug registers:
[0x00] 0x0049AB4C
[0x01] 0x0000000B
[0x02] 0x00000411
[0x03] 0x00020A95
[0x04] 0x00000000
[0x05] 0x000F024E
[0x06] 0x000F424C
[0x07] 0x010BEC30
[0x08] 0x0108C368
[0x09] 0x000020DF
[0x0A] 0x00000693
[0x0B] 0x00000000
[0x0C] 0x00000000
[0x0D] 0x00000000
[0x0E] 0x00000000
[0x0F] 0xDEADBEEF
signature = 0xDEADBEEF (1 read attempt(s))
PA debug registers:
[0x00] 0x640006FE
[0x01] 0x64000000
[0x02] 0x00000810
[0x03] 0x00000690
[0x04] 0x00000230
[0x05] 0x0000022D
[0x06] 0x00000000
[0x07] 0x00000000
[0x08] 0x00000003
[0x09] 0x0000AAAA
[0x0A] 0x0000AAAA
[0x0B] 0x0000AAAA
[0x0C] 0x0000AAAA
[0x0D] 0x0000AAAA
[0x0E] 0x0000AAAA
[0x0F] 0x0000AAAA
signature = 0x0000AAAA (1 read attempt(s))
SE debug registers:
[0x00] 0x00000000
[0x01] 0x00000000
[0x02] 0x00000000
[0x03] 0x00000000
[0x04] 0x00000000
[0x05] 0x00000000
[0x06] 0x00000000
[0x07] 0x00000000
[0x08] 0x00000000
[0x09] 0x00000000
[0x0A] 0x00000000
[0x0B] 0x00000000
[0x0C] 0x00000000
[0x0D] 0x00000000
[0x0E] 0x00000000
[0x0F] 0x00000000
failed to obtain the signature (read 0x00000000).
MC debug registers:
[0x00] 0x00000000
[0x01] 0x00000000
[0x02] 0x00000000
[0x03] 0x00000000
[0x04] 0x12345678
[0x05] 0x12345678
[0x06] 0x12345678
[0x07] 0x12345678
[0x08] 0x12345678
[0x09] 0x12345678
[0x0A] 0x12345678
[0x0B] 0x12345678
[0x0C] 0x12345678
[0x0D] 0x12345678
[0x0E] 0x12345678
[0x0F] 0x12345678
signature = 0x12345678 (1 read attempt(s))
HI debug registers:
[0x00] 0x0000F719
[0x01] 0x19C020C8
[0x02] 0x1EBC2426
[0x03] 0xAAAAAAAA
[0x04] 0xAAAAAAAA
[0x05] 0xAAAAAAAA
[0x06] 0xAAAAAAAA
[0x07] 0xAAAAAAAA
[0x08] 0xAAAAAAAA
[0x09] 0xAAAAAAAA
[0x0A] 0xAAAAAAAA
[0x0B] 0xAAAAAAAA
[0x0C] 0xAAAAAAAA
[0x0D] 0xAAAAAAAA
[0x0E] 0xAAAAAAAA
[0x0F] 0xAAAAAAAA
signature = 0xAAAAAAAA (1 read attempt(s))
Other Registers:
[0x0040] 0x00924A66
[0x0044] 0x06F47370
[0x004C] 0x06F47370
[0x0050] 0x00DE8E6E
[0x0054] 0x00DE8E6E
[0x0058] 0x00924A66
[0x005C] 0x001254D6
[0x0060] 0x001254D6
[0x043C] 0x00000000
[0x0440] 0x00000000
[0x0444] 0x00000000
[0x0414] 0x3C000000
[<8003b21c>] (unwind_backtrace+0x0/0xfc) from [<80308114>] (_DumpGPUState+0x4ec/0x6b4)
[<80308114>] (_DumpGPUState+0x4ec/0x6b4) from [<80308324>] (gckOS_Broadcast+0x38/0xe8)
[<80308324>] (gckOS_Broadcast+0x38/0xe8) from [<80311008>] (gckEVENT_GetEvent+0x184/0x1b4)
[<80311008>] (gckEVENT_GetEvent+0x184/0x1b4) from [<80311294>] (gckEVENT_Submit+0x8c/0x328)
[<80311294>] (gckEVENT_Submit+0x8c/0x328) from [<8030dedc>] (gckCOMMAND_Commit+0x4d4/0xa28)
[<8030dedc>] (gckCOMMAND_Commit+0x4d4/0xa28) from [<8030c1d0>] (gckKERNEL_Dispatch+0x4b4/0x112c)
[<8030c1d0>] (gckKERNEL_Dispatch+0x4b4/0x112c) from [<80306580>] (drv_ioctl+0x108/0x250)
[<80306580>] (drv_ioctl+0x108/0x250) from [<800ed704>] (do_vfs_ioctl+0x80/0x5e0)
[<800ed704>] (do_vfs_ioctl+0x80/0x5e0) from [<800edc9c>] (sys_ioctl+0x38/0x60)
[<800edc9c>] (sys_ioctl+0x38/0x60) from [<80035580>] (ret_fast_syscall+0x0/0x30)
A:
This GPU driver stack dump indicates GPU stuck when VDDPU_CAP was under spec values (1.2V) so GPU was not correctly powered. Was fixed by adjusting PMU_REG_CORE[REG1_TARG].
AFAIK, GPU drivers have some DDR bank configuration, so you may see a different problem though.