Hi
I found no support for an omap4 bootloader splashscreen. So now I'm on to write one for barebox.
The display works great with Linux.
But in barebox (the bootloader) when I want to read register DSS_REVISION I get an error: "unable to handle paging request at address 0x48040000". This is what I'm trying to solve first.
The display is attached by LVDS to a FlatLink-Transmitter which is connected to the dispc2_* pins. No DSI is involved.
I already set the pin-muxing in barebox (bootloader) according to the muxing in the kernel and the barebox sets clocks already by default:
/* Enable DSS clocks */
/* PM_DSS_PWRSTCTRL ON State and LogicState = 1 (Retention) */
__raw_writel(7, 0x4A307100); /* DSS_PRM */
sr32(CM_DSS_CLKSTCTRL, 0, 32, 0x2);
sr32(CM_DSS_DSS_CLKCTRL, 0, 32, 0xf02);
sr32(CM_DSS_DEISS_CLKCTRL, 0, 32, 0x2);
/* Check for DSS Clocks */
while ((__raw_readl(0x4A009100) & 0xF00) != 0xE00)
;
/* Set HW_AUTO transition mode */
sr32(CM_DSS_CLKSTCTRL, 0, 32, 0x3);
Here are some register reads from barebox vs. linux (if you need more, please let me know):
barebox:
DSS_CM2 Registers (datasheet page 935):
! CM_DSS_CLKSTCTRL 0x4A009100 -> 0xE03
CM_DSS_STATICDEP 0x4A009104 -> 0x20
CM_DSS_DYNAMICDEP 0x4A009108 -> 0x0
! CM_DSS_DSS_CLKCTRL 0x4a009120 -> 0x00070F02
RESERVED 0x4a009128 -> 0x70000
DSS_PRM Registers (629)
PM_DSS_PWRSTCTRL 0x4A307100 -> 0x30003
! PM_DSS_PWRSTST 0x4A307104 -> 0x100030
PM_DSS_DSS_WKDEP 0x4A307120 -> 0x80000
RM_DSS_DSS_CONTEXT 0x4A307124 -> 0x103
CONTROL_DSS_CONTROL 0x4A002340 -> 0x00000000
! CM_MPU_STATICDEP(817) 0x4A004304 -> 0xb0f0
! CM_MPU_M3_STATICDEP (901) 0x4A008904 -> 0x9070
linux:
DSS_CM2 Registers (datasheet page 935):
CM_DSS_CLKSTCTRL 0x4A009100 -> 0x203
CM_DSS_STATICDEP 0x4A009104 -> 0x20
CM_DSS_DYNAMICDEP 0x4A009108 -> 0x0
CM_DSS_DSS_CLKCTRL 0x4A009120 -> 0x60102 or 0x102
RESERVED 0x4a009128 -> 0x70000
DSS_PRM Registers (629)
PM_DSS_PWRSTCTRL 0x4A307100 -> 0x30003
PM_DSS_PWRSTST 0x4A307104 -> 0x37
PM_DSS_DSS_WKDEP 0x4A307120 -> 0x80000
RM_DSS_DSS_CONTEXT 0x4A307124 -> 0x103
CONTROL_DSS_CONTROL 0x4A002340 -> 0x00000000
CM_MPU_STATICDEP(817) 0x4A004304 -> 0xA070
CM_MPU_M3_STATICDEP (901) 0x4A008904 -> 0x60
What bothers me is that in barebox the register CM_DSS_DSS_CLKCTRL (0x4a00 9120) Field [17:16] IDLEST reads 0x3 which means "Read 0x3: Module is disabled and cannot be accessed". On linux, its 0x2 which means "functional".
I suppose that this is the problem why I can't read the DSS_REVISION register. Because the whole DSS "cannot be accessed" (?)! But I have no clue how to enable this DSS module.
Maybe you can give me a hint.
Thanks in advance