2 * PROJECT: ReactOS Boot Loader
3 * LICENSE: BSD - See COPYING.ARM in the top level directory
4 * FILE: boot/armllb/hw/versatile/hwclcd.c
5 * PURPOSE: LLB CLCD Routines for Versatile
6 * PROGRAMMERS: ReactOS Portable Systems Group
11 #define LCDTIMING0_PPL(x) ((((x) / 16 - 1) & 0x3f) << 2)
12 #define LCDTIMING1_LPP(x) (((x) & 0x3ff) - 1)
13 #define LCDCONTROL_LCDPWR (1 << 11)
14 #define LCDCONTROL_LCDEN (1)
15 #define LCDCONTROL_LCDBPP(x) (((x) & 7) << 1)
16 #define LCDCONTROL_LCDTFT (1 << 5)
18 #define PL110_LCDTIMING0 (PVOID)0x10120000
19 #define PL110_LCDTIMING1 (PVOID)0x10120004
20 #define PL110_LCDTIMING2 (PVOID)0x10120008
21 #define PL110_LCDUPBASE (PVOID)0x10120010
22 #define PL110_LCDLPBASE (PVOID)0x10120014
23 #define PL110_LCDCONTROL (PVOID)0x10120018
25 PUSHORT LlbHwVideoBuffer
;
29 LlbHwVersaClcdInitialize(VOID
)
31 /* Set framebuffer address */
32 WRITE_REGISTER_ULONG(PL110_LCDUPBASE
, (ULONG
)LlbHwGetFrameBuffer());
33 WRITE_REGISTER_ULONG(PL110_LCDLPBASE
, (ULONG
)LlbHwGetFrameBuffer());
35 /* Initialize timings to 720x400 */
36 WRITE_REGISTER_ULONG(PL110_LCDTIMING0
, LCDTIMING0_PPL(LlbHwGetScreenWidth()));
37 WRITE_REGISTER_ULONG(PL110_LCDTIMING1
, LCDTIMING1_LPP(LlbHwGetScreenHeight()));
39 /* Enable the TFT/LCD Display */
40 WRITE_REGISTER_ULONG(PL110_LCDCONTROL
,
44 LCDCONTROL_LCDBPP(4));
49 LlbHwGetScreenWidth(VOID
)
56 LlbHwGetScreenHeight(VOID
)
63 LlbHwGetFrameBuffer(VOID
)
65 return (PVOID
)0x000A0000;
70 LlbHwVideoCreateColor(IN ULONG Red
,
74 return (((Blue
>> 3) << 11)| ((Green
>> 2) << 5)| ((Red
>> 3) << 0));