Q&A: How to make 16bit DDR + OpenGL/OpenVG working on imx6 solo?

Document created by Yixing Kong Employee on Aug 23, 2013
Version 1Show Document
  • View in full screen mode

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.

Attachments

    Outcomes