gfx_disp.c revision f29dbc25
1f29dbc25Smrg/* Copyright (c) 2005 Advanced Micro Devices, Inc.
2f29dbc25Smrg *
3f29dbc25Smrg * Permission is hereby granted, free of charge, to any person obtaining a copy
4f29dbc25Smrg * of this software and associated documentation files (the "Software"), to
5f29dbc25Smrg * deal in the Software without restriction, including without limitation the
6f29dbc25Smrg * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
7f29dbc25Smrg * sell copies of the Software, and to permit persons to whom the Software is
8f29dbc25Smrg * furnished to do so, subject to the following conditions:
9f29dbc25Smrg *
10f29dbc25Smrg * The above copyright notice and this permission notice shall be included in
11f29dbc25Smrg * all copies or substantial portions of the Software.
12f29dbc25Smrg *
13f29dbc25Smrg * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14f29dbc25Smrg * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15f29dbc25Smrg * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16f29dbc25Smrg * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17f29dbc25Smrg * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
18f29dbc25Smrg * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
19f29dbc25Smrg * IN THE SOFTWARE.
20f29dbc25Smrg *
21f29dbc25Smrg * Neither the name of the Advanced Micro Devices, Inc. nor the names of its
22f29dbc25Smrg * contributors may be used to endorse or promote products derived from this
23f29dbc25Smrg * software without specific prior written permission.
24f29dbc25Smrg * */
25f29dbc25Smrg
26f29dbc25Smrg/*
27f29dbc25Smrg  *  This file contains routines to program the display controller.
28f29dbc25Smrg  *
29f29dbc25Smrg  *  The "disp_gu1.c" and "disp_gu2.c" files implement the following routines:
30f29dbc25Smrg  *
31f29dbc25Smrg  *     gfx_get_display_mode_count
32f29dbc25Smrg  *     gfx_get_display_mode
33f29dbc25Smrg  *     gfx_is_display_mode_supported
34f29dbc25Smrg  *     gfx_is_panel_mode_supported
35f29dbc25Smrg  *     gfx_get_display_details
36f29dbc25Smrg  *     gfx_set_display_mode
37f29dbc25Smrg  *     gfx_set_display_bpp
38f29dbc25Smrg  * 	gfx_set_display_timings
39f29dbc25Smrg  *     gfx_set_vtotal
40f29dbc25Smrg  *     gfx_get_display_pitch
41f29dbc25Smrg  *     gfx_set_display_pitch
42f29dbc25Smrg  *     gfx_set_display_offset
43f29dbc25Smrg  *     gfx_set_display_palette
44f29dbc25Smrg  *     gfx_set_display_palette_entry
45f29dbc25Smrg  *     gfx_set_cursor_enable
46f29dbc25Smrg  *     gfx_set_cursor_colors
47f29dbc25Smrg  *     gfx_set_cursor_position
48f29dbc25Smrg  * 	gfx_set_cursor_shape32
49f29dbc25Smrg  * 	gfx_set_cursor_shape64
50f29dbc25Smrg  *     gfx_set_compression_enable
51f29dbc25Smrg  *     gfx_set_compression_offset
52f29dbc25Smrg  *     gfx_set_compression_pitch
53f29dbc25Smrg  *     gfx_set_compression_size
54f29dbc25Smrg  *     gfx_set_display_priority_high
55f29dbc25Smrg  *     gfx_set_panel_present
56f29dbc25Smrg  *     gfx_test_timing_active
57f29dbc25Smrg  *     gfx_test_vertical_active
58f29dbc25Smrg  *     gfx_wait_vertical_blank
59f29dbc25Smrg  *     gfx_reset_timing_lock
60f29dbc25Smrg  *
61f29dbc25Smrg  *  And the following routines if GFX_READ_ROUTINES is set:
62f29dbc25Smrg  *
63f29dbc25Smrg  * 	gfx_get_hactive
64f29dbc25Smrg  *     gfx_get_hblank_start
65f29dbc25Smrg  *     gfx_get_hsync_start
66f29dbc25Smrg  *     gfx_get_hsync_end
67f29dbc25Smrg  *     gfx_get_hblank_end
68f29dbc25Smrg  *     gfx_get_htotal
69f29dbc25Smrg  *     gfx_get_vactive
70f29dbc25Smrg  *     gfx_get_vblank_start
71f29dbc25Smrg  *     gfx_get_vsync_start
72f29dbc25Smrg  *     gfx_get_vsync_end
73f29dbc25Smrg  *     gfx_get_vblank_end
74f29dbc25Smrg  *     gfx_get_vtotal
75f29dbc25Smrg  *     gfx_get_vline
76f29dbc25Smrg  *     gfx_get_display_bpp
77f29dbc25Smrg  *     gfx_get_display_offset
78f29dbc25Smrg  *     gfx_get_display_palette
79f29dbc25Smrg  *     gfx_get_cursor_enable
80f29dbc25Smrg  *     gfx_get_cursor_base
81f29dbc25Smrg  *     gfx_get_cursor_position
82f29dbc25Smrg  *     gfx_get_cursor_offset
83f29dbc25Smrg  *     gfx_get_cursor_color
84f29dbc25Smrg  *     gfx_get_compression_enable
85f29dbc25Smrg  *     gfx_get_compression_offset
86f29dbc25Smrg  *     gfx_get_compression_pitch
87f29dbc25Smrg  *     gfx_get_compression_size
88f29dbc25Smrg  *     gfx_get_display_priority_high
89f29dbc25Smrg  *     gfx_get_valid_bit
90f29dbc25Smrg  * */
91f29dbc25Smrg
92f29dbc25Smrgunsigned short PanelWidth = 0;
93f29dbc25Smrgunsigned short PanelHeight = 0;
94f29dbc25Smrgunsigned short PanelEnable = 0;
95f29dbc25Smrgunsigned short ModeWidth;
96f29dbc25Smrgunsigned short ModeHeight;
97f29dbc25Smrg
98f29dbc25Smrgint DeltaX = 0;
99f29dbc25Smrgint DeltaY = 0;
100f29dbc25Smrgunsigned long prevstartAddr = 0;
101f29dbc25Smrgunsigned long panelTop = 0;
102f29dbc25Smrgunsigned long panelLeft = 0;
103f29dbc25Smrg
104f29dbc25Smrgint gbpp = 8;
105f29dbc25Smrg
106f29dbc25Smrgint gfx_compression_enabled = 0;
107f29dbc25Smrgint gfx_compression_active = 0;
108f29dbc25Smrgint gfx_line_double = 0;
109f29dbc25Smrgint gfx_pixel_double = 0;
110f29dbc25Smrgint gfx_timing_lock = 0;
111f29dbc25SmrgDISPLAYMODE gfx_display_mode;
112f29dbc25Smrg
113f29dbc25Smrg/* DISPLAY MODE TIMINGS */
114f29dbc25Smrg
115f29dbc25SmrgDISPLAYMODE DisplayParams[] = {
116f29dbc25Smrg
117f29dbc25Smrg/* 320 x 200 */
118f29dbc25Smrg
119f29dbc25Smrg    {
120f29dbc25Smrg            GFX_MODE_70HZ |            /* refresh rate = 60  */
121f29dbc25Smrg            GFX_MODE_8BPP | GFX_MODE_16BPP |    /* 8 and 16 BPP valid */
122f29dbc25Smrg            GFX_MODE_NEG_HSYNC |       /* negative HSYNC     */
123f29dbc25Smrg            GFX_MODE_PIXEL_DOUBLE |    /* Double width       */
124f29dbc25Smrg            GFX_MODE_LINE_DOUBLE,      /* Double height      */
125f29dbc25Smrg            0x140, 0x288, 0x290, 0x2F0, 0x318, 0x320,   /* horizontal timings */
126f29dbc25Smrg            0x0C8, 0x197, 0x19C, 0x19E, 0x1BA, 0x1C1,   /* vertical timings   */
127f29dbc25Smrg            0x00192CCC,                /* freq = 25.175 MHz  */
128f29dbc25Smrg        },
129f29dbc25Smrg
130f29dbc25Smrg/* 320 x 240 */
131f29dbc25Smrg
132f29dbc25Smrg    {
133f29dbc25Smrg            GFX_MODE_75HZ |            /* refresh rate = 75  */
134f29dbc25Smrg            GFX_MODE_8BPP | GFX_MODE_16BPP |    /* 8 and 16 BPP valid */
135f29dbc25Smrg            GFX_MODE_NEG_HSYNC | GFX_MODE_NEG_VSYNC |   /* negative syncs     */
136f29dbc25Smrg            GFX_MODE_PIXEL_DOUBLE |    /* Double width       */
137f29dbc25Smrg            GFX_MODE_LINE_DOUBLE,      /* Double height      */
138f29dbc25Smrg            0x0140, 0x0280, 0x0290, 0x02D0, 0x0348, 0x0348,
139f29dbc25Smrg            /* horizontal timings */
140f29dbc25Smrg            0x00F0, 0x01E0, 0x01E1, 0x01E4, 0x01F4, 0x01F4,
141f29dbc25Smrg            /* vertical timings   */
142f29dbc25Smrg            0x001F8000,                /* freq = 31.5 MHz    */
143f29dbc25Smrg        },
144f29dbc25Smrg
145f29dbc25Smrg/* 400 x 300 */
146f29dbc25Smrg
147f29dbc25Smrg    {
148f29dbc25Smrg            GFX_MODE_75HZ |            /* refresh rate = 75  */
149f29dbc25Smrg            GFX_MODE_8BPP | GFX_MODE_16BPP |    /* 8 and 16 BPP valid */
150f29dbc25Smrg            GFX_MODE_PIXEL_DOUBLE |    /* Double width       */
151f29dbc25Smrg            GFX_MODE_LINE_DOUBLE,      /* Double height      */
152f29dbc25Smrg            0x0190, 0x0320, 0x0330, 0x0380, 0x0420, 0x0420,
153f29dbc25Smrg            /* horizontal timings */
154f29dbc25Smrg            0x012C, 0x0258, 0x0259, 0x025C, 0x0271, 0x0271,
155f29dbc25Smrg            /* vertical timings   */
156f29dbc25Smrg            0x00318000,                /* freq = 49.5 MHz    */
157f29dbc25Smrg        },
158f29dbc25Smrg
159f29dbc25Smrg/* 512 x 384 */
160f29dbc25Smrg
161f29dbc25Smrg    {
162f29dbc25Smrg            GFX_MODE_75HZ |            /* refresh rate = 75  */
163f29dbc25Smrg            GFX_MODE_8BPP | GFX_MODE_16BPP |    /* 8 and 16 BPP valid */
164f29dbc25Smrg            GFX_MODE_PIXEL_DOUBLE |    /* Double width       */
165f29dbc25Smrg            GFX_MODE_LINE_DOUBLE,      /* Double height      */
166f29dbc25Smrg            0x0200, 0x0400, 0x0410, 0x0470, 0x0520, 0x0520,
167f29dbc25Smrg            /* horizontal timings */
168f29dbc25Smrg            0x0180, 0x0300, 0x0301, 0x0304, 0x0320, 0x0320,
169f29dbc25Smrg            /* vertical timings   */
170f29dbc25Smrg            0x004EC000,                /* freq = 78.75 MHz   */
171f29dbc25Smrg        },
172f29dbc25Smrg
173f29dbc25Smrg/* 640 x 400 */
174f29dbc25Smrg
175f29dbc25Smrg    {
176f29dbc25Smrg            GFX_MODE_70HZ |            /* refresh rate = 60  */
177f29dbc25Smrg            GFX_MODE_8BPP | GFX_MODE_12BPP | GFX_MODE_15BPP |
178f29dbc25Smrg            /* all BPP valid      */
179f29dbc25Smrg            GFX_MODE_16BPP | GFX_MODE_24BPP | GFX_MODE_NEG_HSYNC,
180f29dbc25Smrg            /* negative HSYNC     */
181f29dbc25Smrg            0x280, 0x288, 0x290, 0x2F0, 0x318, 0x320,   /* horizontal timings */
182f29dbc25Smrg            0x190, 0x197, 0x19C, 0x19E, 0x1BA, 0x1C1,   /* vertical timings   */
183f29dbc25Smrg            0x00192CCC,                /* freq = 25.175 MHz  */
184f29dbc25Smrg        },
185f29dbc25Smrg
186f29dbc25Smrg/* 640x480 */
187f29dbc25Smrg
188f29dbc25Smrg    {
189f29dbc25Smrg            GFX_MODE_60HZ |            /* refresh rate = 60  */
190f29dbc25Smrg            GFX_MODE_8BPP | GFX_MODE_12BPP | GFX_MODE_15BPP |
191f29dbc25Smrg            /* all BPP valid      */
192f29dbc25Smrg            GFX_MODE_16BPP | GFX_MODE_24BPP | GFX_MODE_NEG_HSYNC | GFX_MODE_NEG_VSYNC,  /* negative syncs     */
193f29dbc25Smrg            0x0280, 0x0288, 0x0290, 0x02E8, 0x0318, 0x0320,
194f29dbc25Smrg            /* horizontal timings */
195f29dbc25Smrg            0x01E0, 0x01E8, 0x01EA, 0x01EC, 0x0205, 0x020D,
196f29dbc25Smrg            /* vertical timings   */
197f29dbc25Smrg            0x00192CCC,                /* freq = 25.175 MHz  */
198f29dbc25Smrg        },
199f29dbc25Smrg
200f29dbc25Smrg    {
201f29dbc25Smrg            GFX_MODE_70HZ |            /* refresh rate = 60  */
202f29dbc25Smrg            GFX_MODE_8BPP | GFX_MODE_12BPP | GFX_MODE_15BPP |
203f29dbc25Smrg            /* all BPP valid      */
204f29dbc25Smrg            GFX_MODE_16BPP | GFX_MODE_24BPP,
205f29dbc25Smrg            0x0280, 0x0280, 0x0298, 0x02D8, 0x0330, 0x0330,
206f29dbc25Smrg            /* horizontal timings */
207f29dbc25Smrg            0x01E0, 0x01E0, 0x01E2, 0x01E5, 0x01F4, 0x01F4,
208f29dbc25Smrg            /* vertical timings   */
209f29dbc25Smrg            0x001C8F5C,                /* freq = 28.560 MHz  */
210f29dbc25Smrg        },
211f29dbc25Smrg
212f29dbc25Smrg    {
213f29dbc25Smrg            GFX_MODE_72HZ |            /* refresh rate = 72  */
214f29dbc25Smrg            GFX_MODE_8BPP | GFX_MODE_12BPP | GFX_MODE_15BPP |
215f29dbc25Smrg            /* all BPP valid      */
216f29dbc25Smrg            GFX_MODE_16BPP | GFX_MODE_24BPP | GFX_MODE_NEG_HSYNC | GFX_MODE_NEG_VSYNC,  /* negative syncs     */
217f29dbc25Smrg            0x0280, 0x0288, 0x0298, 0x02c0, 0x0338, 0x0340,
218f29dbc25Smrg            /* horizontal timings */
219f29dbc25Smrg            0x01e0, 0x01e8, 0x01e9, 0x01ec, 0x0200, 0x0208,
220f29dbc25Smrg            /* vertical timings   */
221f29dbc25Smrg            0x001F8000,                /* freq = 31.5 MHz    */
222f29dbc25Smrg        },
223f29dbc25Smrg
224f29dbc25Smrg    {
225f29dbc25Smrg            GFX_MODE_75HZ |            /* refresh rate = 75  */
226f29dbc25Smrg            GFX_MODE_8BPP | GFX_MODE_12BPP | GFX_MODE_15BPP |
227f29dbc25Smrg            /* all BPP valid      */
228f29dbc25Smrg            GFX_MODE_16BPP | GFX_MODE_24BPP | GFX_MODE_NEG_HSYNC | GFX_MODE_NEG_VSYNC,  /* negative syncs     */
229f29dbc25Smrg            0x0280, 0x0280, 0x0290, 0x02D0, 0x0348, 0x0348,
230f29dbc25Smrg            /* horizontal timings */
231f29dbc25Smrg            0x01E0, 0x01E0, 0x01E1, 0x01E4, 0x01F4, 0x01F4,
232f29dbc25Smrg            /* vertical timings   */
233f29dbc25Smrg            0x001F8000,                /* freq = 31.5 MHz    */
234f29dbc25Smrg        },
235f29dbc25Smrg
236f29dbc25Smrg    {
237f29dbc25Smrg            GFX_MODE_85HZ |            /* refresh rate = 85  */
238f29dbc25Smrg            GFX_MODE_8BPP | GFX_MODE_12BPP | GFX_MODE_15BPP |
239f29dbc25Smrg            /* all BPP valid      */
240f29dbc25Smrg            GFX_MODE_16BPP | GFX_MODE_24BPP | GFX_MODE_NEG_HSYNC | GFX_MODE_NEG_VSYNC,  /* negative syncs     */
241f29dbc25Smrg            0x0280, 0x0280, 0x02B8, 0x02F0, 0x0340, 0x0340,
242f29dbc25Smrg            /* horizontal timings */
243f29dbc25Smrg            0x01E0, 0x01E0, 0x01E1, 0x01E4, 0x01FD, 0x01FD,
244f29dbc25Smrg            /* vertical timings   */
245f29dbc25Smrg            0x00240000,                /* freq = 36.0 MHz    */
246f29dbc25Smrg        },
247f29dbc25Smrg
248f29dbc25Smrg    {
249f29dbc25Smrg            GFX_MODE_90HZ |            /* refresh rate = 90  */
250f29dbc25Smrg            GFX_MODE_8BPP | GFX_MODE_12BPP | GFX_MODE_15BPP |
251f29dbc25Smrg            /* all BPP valid      */
252f29dbc25Smrg            GFX_MODE_16BPP | GFX_MODE_24BPP,
253f29dbc25Smrg            0x0280, 0x0280, 0x02A0, 0x02E0, 0x0340, 0x0340,
254f29dbc25Smrg            /* horizontal timings */
255f29dbc25Smrg            0x01E0, 0x01E0, 0x01E1, 0x01E4, 0x01FA, 0x01FA,
256f29dbc25Smrg            /* vertical timings   */
257f29dbc25Smrg            0x0025E395,                /* freq = 37.889 MHz  */
258f29dbc25Smrg        },
259f29dbc25Smrg
260f29dbc25Smrg    {
261f29dbc25Smrg            GFX_MODE_100HZ |           /* refresh rate = 100 */
262f29dbc25Smrg            GFX_MODE_8BPP | GFX_MODE_12BPP | GFX_MODE_15BPP |
263f29dbc25Smrg            /* all BPP valid      */
264f29dbc25Smrg            GFX_MODE_16BPP | GFX_MODE_24BPP,
265f29dbc25Smrg            0x0280, 0x0280, 0x02A8, 0x02E8, 0x0350, 0x0350,
266f29dbc25Smrg            /* horizontal timings */
267f29dbc25Smrg            0x01E0, 0x01E0, 0x01E1, 0x01E4, 0x01FD, 0x01FD,
268f29dbc25Smrg            /* vertical timings   */
269f29dbc25Smrg            0x002B29BA,                /* freq = 43.163 MHz  */
270f29dbc25Smrg        },
271f29dbc25Smrg
272f29dbc25Smrg/* 800x600 */
273f29dbc25Smrg
274f29dbc25Smrg    {
275f29dbc25Smrg            GFX_MODE_56HZ |            /* refresh rate = 56  */
276f29dbc25Smrg            GFX_MODE_8BPP | GFX_MODE_12BPP | GFX_MODE_15BPP |
277f29dbc25Smrg            /* all BPP valid      */
278f29dbc25Smrg            GFX_MODE_16BPP | GFX_MODE_24BPP,
279f29dbc25Smrg            0x0320, 0x0320, 0x0338, 0x0380, 0x0400, 0x0400,
280f29dbc25Smrg            /* horizontal timings */
281f29dbc25Smrg            0x0258, 0x0258, 0x0259, 0x025B, 0x0271, 0x0271,
282f29dbc25Smrg            /* vertical timings   */
283f29dbc25Smrg            0x00240000,                /* freq = 36.00 MHz   */
284f29dbc25Smrg        },
285f29dbc25Smrg
286f29dbc25Smrg    {
287f29dbc25Smrg            GFX_MODE_60HZ |            /* refresh rate = 60  */
288f29dbc25Smrg            GFX_MODE_8BPP | GFX_MODE_12BPP | GFX_MODE_15BPP |
289f29dbc25Smrg            /* all BPP valid      */
290f29dbc25Smrg            GFX_MODE_16BPP | GFX_MODE_24BPP,
291f29dbc25Smrg            0x0320, 0x0328, 0x0348, 0x03D0, 0x0418, 0x0420,
292f29dbc25Smrg            /* horizontal timings */
293f29dbc25Smrg            0x0258, 0x0258, 0x0259, 0x025D, 0x0274, 0x0274,
294f29dbc25Smrg            /* vertical timings   */
295f29dbc25Smrg            0x00280000,                /* freq = 40.00 MHz   */
296f29dbc25Smrg        },
297f29dbc25Smrg
298f29dbc25Smrg    {
299f29dbc25Smrg            GFX_MODE_70HZ |            /* refresh rate = 70  */
300f29dbc25Smrg            GFX_MODE_8BPP | GFX_MODE_12BPP | GFX_MODE_15BPP |
301f29dbc25Smrg            /* all BPP valid      */
302f29dbc25Smrg            GFX_MODE_16BPP | GFX_MODE_24BPP,
303f29dbc25Smrg            0x0320, 0x0320, 0x0348, 0x0398, 0x0410, 0x0410,
304f29dbc25Smrg            /* horizontal timings */
305f29dbc25Smrg            0x0258, 0x0258, 0x025c, 0x025F, 0x0274, 0x0274,
306f29dbc25Smrg            /* vertical timings   */
307f29dbc25Smrg            0x002DB851,                /* freq = 45.72 MHz   */
308f29dbc25Smrg        },
309f29dbc25Smrg
310f29dbc25Smrg    {
311f29dbc25Smrg            GFX_MODE_72HZ |            /* refresh rate = 72  */
312f29dbc25Smrg            GFX_MODE_8BPP | GFX_MODE_12BPP | GFX_MODE_15BPP |
313f29dbc25Smrg            /* all BPP valid      */
314f29dbc25Smrg            GFX_MODE_16BPP | GFX_MODE_24BPP,
315f29dbc25Smrg            0x0320, 0x0320, 0x0358, 0x03D0, 0x0410, 0x0410,
316f29dbc25Smrg            /* horizontal timings */
317f29dbc25Smrg            0x0258, 0x0258, 0x027D, 0x0283, 0x029A, 0x029A,
318f29dbc25Smrg            /* vertical timings   */
319f29dbc25Smrg            0x00320000,                /* freq = 49.5 MHz    */
320f29dbc25Smrg        },
321f29dbc25Smrg
322f29dbc25Smrg    {
323f29dbc25Smrg            GFX_MODE_75HZ |            /* refresh rate = 75  */
324f29dbc25Smrg            GFX_MODE_8BPP | GFX_MODE_12BPP | GFX_MODE_15BPP |
325f29dbc25Smrg            /* all BPP valid      */
326f29dbc25Smrg            GFX_MODE_16BPP | GFX_MODE_24BPP,
327f29dbc25Smrg            0x0320, 0x0320, 0x0330, 0x0380, 0x0420, 0x0420,
328f29dbc25Smrg            /* horizontal timings */
329f29dbc25Smrg            0x0258, 0x0258, 0x0259, 0x025C, 0x0271, 0x0271,
330f29dbc25Smrg            /* vertical timings   */
331f29dbc25Smrg            0x00318000,                /* freq = 49.5 MHz    */
332f29dbc25Smrg        },
333f29dbc25Smrg
334f29dbc25Smrg    {
335f29dbc25Smrg            GFX_MODE_85HZ |            /* refresh rate = 85  */
336f29dbc25Smrg            GFX_MODE_8BPP | GFX_MODE_12BPP | GFX_MODE_15BPP |
337f29dbc25Smrg            /* all BPP valid      */
338f29dbc25Smrg            GFX_MODE_16BPP | GFX_MODE_24BPP,
339f29dbc25Smrg            0x0320, 0x0320, 0x0340, 0x0380, 0x0418, 0x0418,
340f29dbc25Smrg            /* horizontal timings */
341f29dbc25Smrg            0x0258, 0x0258, 0x0259, 0x025C, 0x0277, 0x0277,
342f29dbc25Smrg            /* vertical timings   */
343f29dbc25Smrg            0x00384000,                /* freq = 56.25 MHz   */
344f29dbc25Smrg        },
345f29dbc25Smrg
346f29dbc25Smrg    {
347f29dbc25Smrg            GFX_MODE_90HZ |            /* refresh rate = 90  */
348f29dbc25Smrg            GFX_MODE_8BPP | GFX_MODE_12BPP | GFX_MODE_15BPP |
349f29dbc25Smrg            /* all BPP valid      */
350f29dbc25Smrg            GFX_MODE_16BPP | GFX_MODE_24BPP,
351f29dbc25Smrg            0x0320, 0x0320, 0x0348, 0x03A0, 0x0420, 0x0420,
352f29dbc25Smrg            /* horizontal timings */
353f29dbc25Smrg            0x0258, 0x0258, 0x0259, 0x025C, 0x0278, 0x0278,
354f29dbc25Smrg            /* vertical timings   */
355f29dbc25Smrg            0x003C10A3,                /* freq = 60.065 MHz   */
356f29dbc25Smrg        },
357f29dbc25Smrg
358f29dbc25Smrg    {
359f29dbc25Smrg            GFX_MODE_100HZ |           /* refresh rate = 100 */
360f29dbc25Smrg            GFX_MODE_8BPP | GFX_MODE_12BPP | GFX_MODE_15BPP |
361f29dbc25Smrg            /* all BPP valid      */
362f29dbc25Smrg            GFX_MODE_16BPP | GFX_MODE_24BPP,
363f29dbc25Smrg            0x0320, 0x0320, 0x0350, 0x03A8, 0x0430, 0x0430,
364f29dbc25Smrg            /* horizontal timings */
365f29dbc25Smrg            0x0258, 0x0258, 0x0259, 0x025C, 0x0277, 0x027C,
366f29dbc25Smrg            /* vertical timings   */
367f29dbc25Smrg            0x00442DD2,                /* freq = 68.179 MHz  */
368f29dbc25Smrg        },
369f29dbc25Smrg
370f29dbc25Smrg/* 1024x768 */
371f29dbc25Smrg
372f29dbc25Smrg    {
373f29dbc25Smrg            GFX_MODE_60HZ |            /* refresh rate = 60  */
374f29dbc25Smrg            GFX_MODE_8BPP | GFX_MODE_12BPP | GFX_MODE_15BPP |
375f29dbc25Smrg            /* all BPP valid      */
376f29dbc25Smrg            GFX_MODE_16BPP | GFX_MODE_24BPP | GFX_MODE_NEG_HSYNC | GFX_MODE_NEG_VSYNC,  /* negative syncs     */
377f29dbc25Smrg            0x0400, 0x0400, 0x0418, 0x04A0, 0x0540, 0x0540,
378f29dbc25Smrg            /* horizontal timings */
379f29dbc25Smrg            0x0300, 0x0300, 0x0303, 0x0309, 0x0326, 0x0326,
380f29dbc25Smrg            /* vertical timings   */
381f29dbc25Smrg            0x00410000,                /* freq = 65.00 MHz   */
382f29dbc25Smrg        },
383f29dbc25Smrg
384f29dbc25Smrg    {
385f29dbc25Smrg            GFX_MODE_70HZ |            /* refresh rate = 70  */
386f29dbc25Smrg            GFX_MODE_8BPP | GFX_MODE_12BPP | GFX_MODE_15BPP |
387f29dbc25Smrg            /* all BPP valid      */
388f29dbc25Smrg            GFX_MODE_16BPP | GFX_MODE_24BPP | GFX_MODE_NEG_HSYNC | GFX_MODE_NEG_VSYNC,  /* negative syncs     */
389f29dbc25Smrg            0x0400, 0x0400, 0x0418, 0x04A0, 0x0530, 0x0530,
390f29dbc25Smrg            /* horizontal timings */
391f29dbc25Smrg            0x0300, 0x0300, 0x0303, 0x0309, 0x0326, 0x0326,
392f29dbc25Smrg            /* vertical timings   */
393f29dbc25Smrg            0x004B0000,                /* freq = 75.00 MHz   */
394f29dbc25Smrg        },
395f29dbc25Smrg
396f29dbc25Smrg    {
397f29dbc25Smrg            GFX_MODE_72HZ |            /* refresh rate = 72  */
398f29dbc25Smrg            GFX_MODE_8BPP | GFX_MODE_12BPP | GFX_MODE_15BPP |
399f29dbc25Smrg            /* all BPP valid      */
400f29dbc25Smrg            GFX_MODE_16BPP | GFX_MODE_24BPP,
401f29dbc25Smrg            0x0400, 0x0400, 0x0438, 0x04A8, 0x0550, 0x0550,
402f29dbc25Smrg            /* horizontal timings */
403f29dbc25Smrg            0x0300, 0x0300, 0x0304, 0x0307, 0x0324, 0x0324,
404f29dbc25Smrg            /* vertical timings   */
405f29dbc25Smrg            0x004EC000,                /* freq = 78.75 MHz   */
406f29dbc25Smrg        },
407f29dbc25Smrg
408f29dbc25Smrg    {
409f29dbc25Smrg            GFX_MODE_75HZ |            /* refresh rate = 75  */
410f29dbc25Smrg            GFX_MODE_8BPP | GFX_MODE_12BPP | GFX_MODE_15BPP |
411f29dbc25Smrg            /* all BPP valid      */
412f29dbc25Smrg            GFX_MODE_16BPP | GFX_MODE_24BPP,
413f29dbc25Smrg            0x0400, 0x0400, 0x0410, 0x0470, 0x0520, 0x0520,
414f29dbc25Smrg            /* horizontal timings */
415f29dbc25Smrg            0x0300, 0x0300, 0x0301, 0x0304, 0x0320, 0x0320,
416f29dbc25Smrg            /* vertical timings   */
417f29dbc25Smrg            0x004EC000,                /* freq = 78.75 MHz   */
418f29dbc25Smrg        },
419f29dbc25Smrg
420f29dbc25Smrg    {
421f29dbc25Smrg            GFX_MODE_85HZ |            /* refresh rate = 85  */
422f29dbc25Smrg            GFX_MODE_8BPP | GFX_MODE_12BPP | GFX_MODE_15BPP |
423f29dbc25Smrg            /* all BPP valid      */
424f29dbc25Smrg            GFX_MODE_16BPP | GFX_MODE_24BPP,
425f29dbc25Smrg            0x0400, 0x0400, 0x0430, 0x0490, 0x0560, 0x0560,
426f29dbc25Smrg            /* horizontal timings */
427f29dbc25Smrg            0x0300, 0x0300, 0x0301, 0x0304, 0x0328, 0x0328,
428f29dbc25Smrg            /* vertical timings   */
429f29dbc25Smrg            0x005E8000,                /* freq = 94.50 MHz   */
430f29dbc25Smrg        },
431f29dbc25Smrg
432f29dbc25Smrg    {
433f29dbc25Smrg            GFX_MODE_90HZ |            /* refresh rate = 90  */
434f29dbc25Smrg            GFX_MODE_8BPP | GFX_MODE_12BPP | GFX_MODE_15BPP |
435f29dbc25Smrg            /* all BPP valid      */
436f29dbc25Smrg            GFX_MODE_16BPP | GFX_MODE_24BPP,
437f29dbc25Smrg            0x0400, 0x0400, 0x0440, 0x04B0, 0x0560, 0x0560,
438f29dbc25Smrg            /* horizontal timings */
439f29dbc25Smrg            0x0300, 0x0300, 0x0301, 0x0304, 0x0329, 0x0329,
440f29dbc25Smrg            /* vertical timings   */
441f29dbc25Smrg            0x00642FDF,                /* freq = 100.187 MHz */
442f29dbc25Smrg        },
443f29dbc25Smrg
444f29dbc25Smrg    {
445f29dbc25Smrg            GFX_MODE_100HZ |           /* refresh rate = 100 */
446f29dbc25Smrg            GFX_MODE_8BPP | GFX_MODE_12BPP | GFX_MODE_15BPP |
447f29dbc25Smrg            /* all BPP valid      */
448f29dbc25Smrg            GFX_MODE_16BPP | GFX_MODE_24BPP,
449f29dbc25Smrg            0x0400, 0x0400, 0x0448, 0x04B8, 0x0570, 0x0570,
450f29dbc25Smrg            /* horizontal timings */
451f29dbc25Smrg            0x0300, 0x0300, 0x0301, 0x0304, 0x032E, 0x032E,
452f29dbc25Smrg            /* vertical timings   */
453f29dbc25Smrg            0x00714F1A,                /* freq = 113.309 MHz */
454f29dbc25Smrg        },
455f29dbc25Smrg
456f29dbc25Smrg/* 1152x864 */
457f29dbc25Smrg
458f29dbc25Smrg    {
459f29dbc25Smrg            GFX_MODE_60HZ |            /* refresh rate = 60  */
460f29dbc25Smrg            GFX_MODE_8BPP | GFX_MODE_12BPP | GFX_MODE_15BPP |
461f29dbc25Smrg            /* all BPP valid      */
462f29dbc25Smrg            GFX_MODE_16BPP | GFX_MODE_24BPP,
463f29dbc25Smrg            0x0480, 0x0480, 0x04C0, 0x0538, 0x05F0, 0x05F0,
464f29dbc25Smrg            /* horizontal timings */
465f29dbc25Smrg            0x0360, 0x0360, 0x0361, 0x0364, 0x037F, 0x037F,
466f29dbc25Smrg            /* vertical timings   */
467f29dbc25Smrg            0x00519999,                /* freq = 81.60 MHz  */
468f29dbc25Smrg        },
469f29dbc25Smrg
470f29dbc25Smrg    {
471f29dbc25Smrg            GFX_MODE_70HZ |            /* refresh rate = 70  */
472f29dbc25Smrg            GFX_MODE_8BPP | GFX_MODE_12BPP | GFX_MODE_15BPP |
473f29dbc25Smrg            /* all BPP valid      */
474f29dbc25Smrg            GFX_MODE_16BPP | GFX_MODE_24BPP,
475f29dbc25Smrg            0x0480, 0x0480, 0x04C8, 0x0540, 0x0600, 0x0600,
476f29dbc25Smrg            /* horizontal timings */
477f29dbc25Smrg            0x0360, 0x0360, 0x0368, 0x036B, 0x038B, 0x038B,
478f29dbc25Smrg            /* vertical timings   */
479f29dbc25Smrg            0x00618560,                /* freq = 97.521 MHz  */
480f29dbc25Smrg        },
481f29dbc25Smrg
482f29dbc25Smrg    {
483f29dbc25Smrg            GFX_MODE_72HZ |            /* refresh rate = 70  */
484f29dbc25Smrg            GFX_MODE_8BPP | GFX_MODE_12BPP | GFX_MODE_15BPP |
485f29dbc25Smrg            /* all BPP valid      */
486f29dbc25Smrg            GFX_MODE_16BPP | GFX_MODE_24BPP,
487f29dbc25Smrg            0x0480, 0x0480, 0x04C8, 0x0548, 0x0610, 0x0610,
488f29dbc25Smrg            /* horizontal timings */
489f29dbc25Smrg            0x0360, 0x0360, 0x0367, 0x036A, 0x038B, 0x038B,
490f29dbc25Smrg            /* vertical timings   */
491f29dbc25Smrg            0x00656B85,                /* freq = 101.42 MHz  */
492f29dbc25Smrg        },
493f29dbc25Smrg
494f29dbc25Smrg    {
495f29dbc25Smrg            GFX_MODE_75HZ |            /* refresh rate = 75  */
496f29dbc25Smrg            GFX_MODE_8BPP | GFX_MODE_12BPP | GFX_MODE_15BPP |
497f29dbc25Smrg            /* all BPP valid      */
498f29dbc25Smrg            GFX_MODE_16BPP | GFX_MODE_24BPP,
499f29dbc25Smrg            0x0480, 0x0480, 0x04C0, 0x0540, 0x0640, 0x0640,
500f29dbc25Smrg            /* horizontal timings */
501f29dbc25Smrg            0x0360, 0x0360, 0x0361, 0x0364, 0x0384, 0x0384,
502f29dbc25Smrg            /* vertical timings   */
503f29dbc25Smrg            0x006C0000,                /* freq = 108.00 MHz  */
504f29dbc25Smrg        },
505f29dbc25Smrg
506f29dbc25Smrg    {
507f29dbc25Smrg            GFX_MODE_85HZ |            /* refresh rate = 85  */
508f29dbc25Smrg            GFX_MODE_8BPP | GFX_MODE_12BPP | GFX_MODE_15BPP |
509f29dbc25Smrg            /* all BPP valid      */
510f29dbc25Smrg            GFX_MODE_16BPP | GFX_MODE_24BPP,
511f29dbc25Smrg            0x0480, 0x0480, 0x04C8, 0x0548, 0x0610, 0x0610,
512f29dbc25Smrg            /* horizontal timings */
513f29dbc25Smrg            0x0360, 0x0360, 0x0363, 0x0366, 0x038B, 0x038B,
514f29dbc25Smrg            /* vertical timings   */
515f29dbc25Smrg            0x0077A666,                /* freq = 119.65 MHz  */
516f29dbc25Smrg        },
517f29dbc25Smrg
518f29dbc25Smrg    {
519f29dbc25Smrg            GFX_MODE_90HZ |            /* refresh rate = 90  */
520f29dbc25Smrg            GFX_MODE_8BPP | GFX_MODE_12BPP | GFX_MODE_15BPP |
521f29dbc25Smrg            /* all BPP valid      */
522f29dbc25Smrg            GFX_MODE_16BPP | GFX_MODE_24BPP,
523f29dbc25Smrg            0x0480, 0x0480, 0x04D0, 0x0550, 0x0620, 0x0620,
524f29dbc25Smrg            /* horizontal timings */
525f29dbc25Smrg            0x0360, 0x0360, 0x0363, 0x0366, 0x038E, 0x038E,
526f29dbc25Smrg            /* vertical timings   */
527f29dbc25Smrg            0x00806666,                /* freq = 128.40 MHz  */
528f29dbc25Smrg        },
529f29dbc25Smrg
530f29dbc25Smrg    {
531f29dbc25Smrg            GFX_MODE_100HZ |           /* refresh rate = 100 */
532f29dbc25Smrg            GFX_MODE_8BPP | GFX_MODE_12BPP | GFX_MODE_15BPP |
533f29dbc25Smrg            /* all BPP valid      */
534f29dbc25Smrg            GFX_MODE_16BPP | GFX_MODE_24BPP,
535f29dbc25Smrg            0x0480, 0x0480, 0x04D0, 0x0550, 0x0620, 0x0620,
536f29dbc25Smrg            /* horizontal timings */
537f29dbc25Smrg            0x0360, 0x0360, 0x0365, 0x0368, 0x0398, 0x0398,
538f29dbc25Smrg            /* vertical timings   */
539f29dbc25Smrg            0x00906147,                /* freq = 144.38 MHz  */
540f29dbc25Smrg        },
541f29dbc25Smrg
542f29dbc25Smrg/* 1280x1024 */
543f29dbc25Smrg
544f29dbc25Smrg    {
545f29dbc25Smrg            GFX_MODE_60HZ |            /* refresh rate = 60  */
546f29dbc25Smrg            GFX_MODE_8BPP | GFX_MODE_12BPP | GFX_MODE_15BPP |
547f29dbc25Smrg            /* all BPP valid      */
548f29dbc25Smrg            GFX_MODE_16BPP | GFX_MODE_24BPP,
549f29dbc25Smrg            0x0500, 0x0500, 0x0530, 0x05A0, 0x0698, 0x0698,
550f29dbc25Smrg            /* horizontal timings */
551f29dbc25Smrg            0x0400, 0x0400, 0x0401, 0x0404, 0x042A, 0x042A,
552f29dbc25Smrg            /* vertical timings   */
553f29dbc25Smrg            0x006C0000,                /* freq = 108.0 MHz   */
554f29dbc25Smrg        },
555f29dbc25Smrg
556f29dbc25Smrg    {
557f29dbc25Smrg            GFX_MODE_70HZ |            /* refresh rate = 70  */
558f29dbc25Smrg            GFX_MODE_8BPP | GFX_MODE_12BPP | GFX_MODE_15BPP |
559f29dbc25Smrg            /* all BPP valid      */
560f29dbc25Smrg            GFX_MODE_16BPP | GFX_MODE_24BPP,
561f29dbc25Smrg            0x0500, 0x0500, 0x0558, 0x05E0, 0x06C0, 0x06C0,
562f29dbc25Smrg            /* horizontal timings */
563f29dbc25Smrg            0x0400, 0x0400, 0x040A, 0x040D, 0x0433, 0x0433,
564f29dbc25Smrg            /* vertical timings   */
565f29dbc25Smrg            0x00821999,                /* freq = 130.1 MHz   */
566f29dbc25Smrg        },
567f29dbc25Smrg
568f29dbc25Smrg    {
569f29dbc25Smrg            GFX_MODE_72HZ |            /* refresh rate = 72  */
570f29dbc25Smrg            GFX_MODE_8BPP | GFX_MODE_12BPP | GFX_MODE_15BPP |
571f29dbc25Smrg            /* all BPP valid      */
572f29dbc25Smrg            GFX_MODE_16BPP | GFX_MODE_24BPP,
573f29dbc25Smrg            0x0500, 0x0500, 0x0558, 0x05E0, 0x06C0, 0x06C0,
574f29dbc25Smrg            /* horizontal timings */
575f29dbc25Smrg            0x0400, 0x0400, 0x0407, 0x040A, 0x0431, 0x0431,
576f29dbc25Smrg            /* vertical timings   */
577f29dbc25Smrg            0x00858000,                /* freq = 133.5 MHz   */
578f29dbc25Smrg        },
579f29dbc25Smrg
580f29dbc25Smrg    {
581f29dbc25Smrg            GFX_MODE_75HZ |            /* refresh rate = 75  */
582f29dbc25Smrg            GFX_MODE_8BPP | GFX_MODE_12BPP | GFX_MODE_15BPP |
583f29dbc25Smrg            /* all BPP valid      */
584f29dbc25Smrg            GFX_MODE_16BPP | GFX_MODE_24BPP,
585f29dbc25Smrg            0x0500, 0x0500, 0x0510, 0x05A0, 0x0698, 0x0698,
586f29dbc25Smrg            /* horizontal timings */
587f29dbc25Smrg            0x0400, 0x0400, 0x0401, 0x0404, 0x042A, 0x042A,
588f29dbc25Smrg            /* vertical timings   */
589f29dbc25Smrg            0x00870000,                /* freq = 135.0 MHz   */
590f29dbc25Smrg        },
591f29dbc25Smrg
592f29dbc25Smrg    {
593f29dbc25Smrg            GFX_MODE_85HZ |            /* refresh rate = 85  */
594f29dbc25Smrg            GFX_MODE_8BPP | GFX_MODE_12BPP | GFX_MODE_15BPP |
595f29dbc25Smrg            /* all BPP valid      */
596f29dbc25Smrg            GFX_MODE_16BPP | GFX_MODE_24BPP,
597f29dbc25Smrg            0x0500, 0x0500, 0x0540, 0x05E0, 0x06C0, 0x06C0,
598f29dbc25Smrg            /* horizontal timings */
599f29dbc25Smrg            0x0400, 0x0400, 0x0401, 0x0404, 0x0430, 0x0430,
600f29dbc25Smrg            /* vertical timings   */
601f29dbc25Smrg            0x009D8000,                /* freq = 157.5 MHz   */
602f29dbc25Smrg        },
603f29dbc25Smrg
604f29dbc25Smrg    {
605f29dbc25Smrg            GFX_MODE_90HZ |            /* refresh rate = 90  */
606f29dbc25Smrg            GFX_MODE_8BPP | GFX_MODE_12BPP | GFX_MODE_15BPP |
607f29dbc25Smrg            /* all BPP valid      */
608f29dbc25Smrg            GFX_MODE_16BPP | GFX_MODE_24BPP,
609f29dbc25Smrg            0x0500, 0x0500, 0x0560, 0x05E8, 0x06D0, 0x06D0,
610f29dbc25Smrg            /* horizontal timings */
611f29dbc25Smrg            0x0400, 0x0400, 0x0401, 0x0404, 0x0436, 0x0436,
612f29dbc25Smrg            /* vertical timings   */
613f29dbc25Smrg            0x00A933F7,                /* freq = 169.203 MHz */
614f29dbc25Smrg        },
615f29dbc25Smrg
616f29dbc25Smrg    {
617f29dbc25Smrg            GFX_MODE_100HZ |           /* refresh rate = 100 */
618f29dbc25Smrg            GFX_MODE_8BPP | GFX_MODE_12BPP | GFX_MODE_15BPP |
619f29dbc25Smrg            /* all BPP valid      */
620f29dbc25Smrg            GFX_MODE_16BPP | GFX_MODE_24BPP,
621f29dbc25Smrg            0x0500, 0x0500, 0x0560, 0x05F0, 0x06E0, 0x06E0,
622f29dbc25Smrg            /* horizontal timings */
623f29dbc25Smrg            0x0400, 0x0400, 0x0401, 0x0404, 0x043D, 0x043D,
624f29dbc25Smrg            /* vertical timings   */
625f29dbc25Smrg            0x00BEF5C2,                /* freq = 190.96 MHz  */
626f29dbc25Smrg        },
627f29dbc25Smrg
628f29dbc25Smrg/*********************************/
629f29dbc25Smrg/* BEGIN REDCLOUD-SPECIFIC MODES */
630f29dbc25Smrg/*-------------------------------*/
631f29dbc25Smrg
632f29dbc25Smrg/* 1600 x 1200 */
633f29dbc25Smrg
634f29dbc25Smrg    {
635f29dbc25Smrg            GFX_MODE_60HZ |            /* refresh rate = 60  */
636f29dbc25Smrg            GFX_MODE_8BPP | GFX_MODE_12BPP | GFX_MODE_15BPP |
637f29dbc25Smrg            /* all BPP valid      */
638f29dbc25Smrg            GFX_MODE_16BPP | GFX_MODE_24BPP,
639f29dbc25Smrg            0x0640, 0x0640, 0x0680, 0x0740, 0x0870, 0x0870,
640f29dbc25Smrg            /* horizontal timings */
641f29dbc25Smrg            0x04B0, 0x04B0, 0x04B1, 0x04B4, 0x04E2, 0x04E2,
642f29dbc25Smrg            /* vertical timings   */
643f29dbc25Smrg            0x00A20000,                /* freq = 162.0 MHz   */
644f29dbc25Smrg        },
645f29dbc25Smrg
646f29dbc25Smrg    {
647f29dbc25Smrg            GFX_MODE_70HZ |            /* refresh rate = 70  */
648f29dbc25Smrg            GFX_MODE_8BPP | GFX_MODE_12BPP | GFX_MODE_15BPP |
649f29dbc25Smrg            /* all BPP valid      */
650f29dbc25Smrg            GFX_MODE_16BPP | GFX_MODE_24BPP,
651f29dbc25Smrg            0x0640, 0x0640, 0x0680, 0x0740, 0x0870, 0x0870,
652f29dbc25Smrg            /* horizontal timings */
653f29dbc25Smrg            0x04B0, 0x04B0, 0x04B1, 0x04B4, 0x04E2, 0x04E2,
654f29dbc25Smrg            /* vertical timings   */
655f29dbc25Smrg            0x00BD0000,                /* freq = 189.0 MHz   */
656f29dbc25Smrg        },
657f29dbc25Smrg
658f29dbc25Smrg    {
659f29dbc25Smrg            GFX_MODE_72HZ |            /* refresh rate = 72  */
660f29dbc25Smrg            GFX_MODE_8BPP | GFX_MODE_12BPP | GFX_MODE_15BPP |
661f29dbc25Smrg            /* all BPP valid      */
662f29dbc25Smrg            GFX_MODE_16BPP | GFX_MODE_24BPP,
663f29dbc25Smrg            0x0640, 0x0640, 0x06B0, 0x0760, 0x0880, 0x0880,
664f29dbc25Smrg            /* horizontal timings */
665f29dbc25Smrg            0x04B0, 0x04B0, 0x04BD, 0x04C0, 0x04EF, 0x04EF,
666f29dbc25Smrg            /* vertical timings   */
667f29dbc25Smrg            0x00C60000,                /* freq = 198.0 MHz   */
668f29dbc25Smrg        },
669f29dbc25Smrg
670f29dbc25Smrg    {
671f29dbc25Smrg            GFX_MODE_75HZ |            /* refresh rate = 75  */
672f29dbc25Smrg            GFX_MODE_8BPP | GFX_MODE_12BPP | GFX_MODE_15BPP |
673f29dbc25Smrg            /* all BPP valid      */
674f29dbc25Smrg            GFX_MODE_16BPP | GFX_MODE_24BPP,
675f29dbc25Smrg            0x0640, 0x0640, 0x0680, 0x0740, 0x0870, 0x0870,
676f29dbc25Smrg            /* horizontal timings */
677f29dbc25Smrg            0x04B0, 0x04B0, 0x04B1, 0x04B4, 0x04E2, 0x04E2,
678f29dbc25Smrg            /* vertical timings   */
679f29dbc25Smrg            0x00CA8000,                /* freq = 202.5 MHz   */
680f29dbc25Smrg        },
681f29dbc25Smrg
682f29dbc25Smrg    {
683f29dbc25Smrg            GFX_MODE_85HZ |            /* refresh rate = 85  */
684f29dbc25Smrg            GFX_MODE_8BPP | GFX_MODE_12BPP | GFX_MODE_15BPP |
685f29dbc25Smrg            /* all BPP valid      */
686f29dbc25Smrg            GFX_MODE_16BPP | GFX_MODE_24BPP,
687f29dbc25Smrg            0x0640, 0x0640, 0x0680, 0x0740, 0x0870, 0x0870,
688f29dbc25Smrg            /* horizontal timings */
689f29dbc25Smrg            0x04B0, 0x04B0, 0x04B1, 0x04B4, 0x04E2, 0x04E2,
690f29dbc25Smrg            /* vertical timings   */
691f29dbc25Smrg            0x00E58000,                /* freq = 229.5 MHz   */
692f29dbc25Smrg        },
693f29dbc25Smrg};
694f29dbc25Smrg
695f29dbc25Smrg/* UPDATE THIS VARIABLE WHENEVER NEW REDCLOUD-SPECIFIC MODES ARE ADDED */
696f29dbc25Smrg
697f29dbc25Smrg#define REDCLOUD_SPECIFIC_MODES 4
698f29dbc25Smrg
699f29dbc25Smrg#define NUM_RC_DISPLAY_MODES sizeof(DisplayParams) / sizeof(DISPLAYMODE)
700f29dbc25Smrg#define NUM_GX_DISPLAY_MODES (NUM_RC_DISPLAY_MODES - REDCLOUD_SPECIFIC_MODES)
701f29dbc25Smrg
702f29dbc25SmrgFIXEDTIMINGS FixedParams[] = {
703f29dbc25Smrg/* 640x480 Panel */
704f29dbc25Smrg    {640, 480, 640, 480,
705f29dbc25Smrg            0x0280, 0x0280, 0x0290, 0x02E8, 0x0318, 0x0320,
706f29dbc25Smrg            0x01E0, 0x01E0, 0x01EA, 0x01EC, 0x0205, 0x020D,
707f29dbc25Smrg            0x00192CCC,
708f29dbc25Smrg        },
709f29dbc25Smrg
710f29dbc25Smrg    {640, 480, 800, 600,
711f29dbc25Smrg            0x0280, 0x0280, 0x0290, 0x02E8, 0x0318, 0x0320,
712f29dbc25Smrg            0x01E0, 0x01E0, 0x01EA, 0x01EC, 0x0205, 0x020D,
713f29dbc25Smrg            0x00192CCC,
714f29dbc25Smrg        },
715f29dbc25Smrg
716f29dbc25Smrg    {640, 480, 1024, 768,
717f29dbc25Smrg            0x0280, 0x0280, 0x0290, 0x02E8, 0x0318, 0x0320,
718f29dbc25Smrg            0x01E0, 0x01E0, 0x01EA, 0x01EC, 0x0205, 0x020D,
719f29dbc25Smrg            0x00192CCC,
720f29dbc25Smrg        },
721f29dbc25Smrg
722f29dbc25Smrg    {640, 480, 1152, 864,
723f29dbc25Smrg            0x0280, 0x0280, 0x0290, 0x02E8, 0x0318, 0x0320,
724f29dbc25Smrg            0x01E0, 0x01E0, 0x01EA, 0x01EC, 0x0205, 0x020D,
725f29dbc25Smrg            0x00192CCC,
726f29dbc25Smrg        },
727f29dbc25Smrg
728f29dbc25Smrg    {640, 480, 1280, 1024,
729f29dbc25Smrg            0x0280, 0x0280, 0x0290, 0x02E8, 0x0318, 0x0320,
730f29dbc25Smrg            0x01E0, 0x01E0, 0x01EA, 0x01EC, 0x0205, 0x020D,
731f29dbc25Smrg            0x00192CCC,
732f29dbc25Smrg        },
733f29dbc25Smrg
734f29dbc25Smrg    {640, 480, 1600, 1200,
735f29dbc25Smrg            0x0280, 0x0280, 0x0290, 0x02E8, 0x0318, 0x0320,
736f29dbc25Smrg            0x01E0, 0x01E0, 0x01EA, 0x01EC, 0x0205, 0x020D,
737f29dbc25Smrg            0x00192CCC,
738f29dbc25Smrg        },
739f29dbc25Smrg
740f29dbc25Smrg/* 800x600 Panel */
741f29dbc25Smrg    {800, 600, 640, 480,
742f29dbc25Smrg            0x0280, 0x2d0, 0x2f8, 0x378, 0x3d0, 0x420,
743f29dbc25Smrg            0x1e0, 0x21c, 0x21d, 0x221, 0x238, 0x274,
744f29dbc25Smrg            0x00280000,
745f29dbc25Smrg        },
746f29dbc25Smrg
747f29dbc25Smrg    {800, 600, 800, 600,
748f29dbc25Smrg            0x320, 0x320, 0x348, 0x3c8, 0x420, 0x420,
749f29dbc25Smrg            0x258, 0x258, 0x259, 0x25d, 0x274, 0x274,
750f29dbc25Smrg            0x00280000,
751f29dbc25Smrg        },
752f29dbc25Smrg
753f29dbc25Smrg    {800, 600, 1024, 768,
754f29dbc25Smrg            0x320, 0x320, 0x348, 0x3c8, 0x420, 0x420,
755f29dbc25Smrg            0x258, 0x258, 0x259, 0x25d, 0x274, 0x274,
756f29dbc25Smrg            0x00280000,
757f29dbc25Smrg        },
758f29dbc25Smrg
759f29dbc25Smrg    {800, 600, 1152, 864,
760f29dbc25Smrg            0x320, 0x320, 0x348, 0x3c8, 0x420, 0x420,
761f29dbc25Smrg            0x258, 0x258, 0x259, 0x25d, 0x274, 0x274,
762f29dbc25Smrg            0x00280000,
763f29dbc25Smrg        },
764f29dbc25Smrg
765f29dbc25Smrg    {800, 600, 1280, 1024,
766f29dbc25Smrg            0x320, 0x320, 0x348, 0x3c8, 0x420, 0x420,
767f29dbc25Smrg            0x258, 0x258, 0x259, 0x25d, 0x274, 0x274,
768f29dbc25Smrg            0x00280000,
769f29dbc25Smrg        },
770f29dbc25Smrg
771f29dbc25Smrg    {800, 600, 1600, 1200,
772f29dbc25Smrg            0x320, 0x320, 0x348, 0x3c8, 0x420, 0x420,
773f29dbc25Smrg            0x258, 0x258, 0x259, 0x25d, 0x274, 0x274,
774f29dbc25Smrg            0x00280000,
775f29dbc25Smrg        },
776f29dbc25Smrg
777f29dbc25Smrg/* 1024x768 panel */
778f29dbc25Smrg    {1024, 768, 640, 480,
779f29dbc25Smrg            0x0280, 0x340, 0x368, 0x3e8, 0x480, 0x540,
780f29dbc25Smrg            0x1e0, 0x270, 0x271, 0x275, 0x296, 0x326,
781f29dbc25Smrg            0x00410000,
782f29dbc25Smrg        },
783f29dbc25Smrg
784f29dbc25Smrg    {1024, 768, 800, 600,
785f29dbc25Smrg            0x0320, 0x390, 0x3b8, 0x438, 0x4D0, 0x540,
786f29dbc25Smrg            0x258, 0x2ac, 0x2ad, 0x2b1, 0x2D2, 0x326,
787f29dbc25Smrg            0x00410000,
788f29dbc25Smrg        },
789f29dbc25Smrg
790f29dbc25Smrg    {1024, 768, 1024, 768,
791f29dbc25Smrg            0x0400, 0x0400, 0x0418, 0x04A0, 0x0540, 0x0540,
792f29dbc25Smrg            0x0300, 0x0300, 0x0303, 0x0309, 0x0326, 0x0326,
793f29dbc25Smrg            0x00410000,
794f29dbc25Smrg        },
795f29dbc25Smrg
796f29dbc25Smrg    {1024, 768, 1152, 864,
797f29dbc25Smrg            0x0400, 0x0400, 0x0418, 0x04A0, 0x0540, 0x0540,
798f29dbc25Smrg            0x0300, 0x0300, 0x0303, 0x0309, 0x0326, 0x0326,
799f29dbc25Smrg            0x00410000,
800f29dbc25Smrg        },
801f29dbc25Smrg
802f29dbc25Smrg    {1024, 768, 1280, 1024,
803f29dbc25Smrg            0x0400, 0x0400, 0x0418, 0x04A0, 0x0540, 0x0540,
804f29dbc25Smrg            0x0300, 0x0300, 0x0303, 0x0309, 0x0326, 0x0326,
805f29dbc25Smrg            0x00410000,
806f29dbc25Smrg        },
807f29dbc25Smrg
808f29dbc25Smrg    {1024, 768, 1600, 1200,
809f29dbc25Smrg            0x0400, 0x0400, 0x0418, 0x04A0, 0x0540, 0x0540,
810f29dbc25Smrg            0x0300, 0x0300, 0x0303, 0x0309, 0x0326, 0x0326,
811f29dbc25Smrg            0x00410000,
812f29dbc25Smrg        },
813f29dbc25Smrg
814f29dbc25Smrg/* 1280x1024 panel */
815f29dbc25Smrg    {1280, 1024, 640, 480,
816f29dbc25Smrg            640, 960, 1008, 1120, 1368, 1688,
817f29dbc25Smrg            480, 752, 753, 756, 794, 1066,
818f29dbc25Smrg            0x006C0000,
819f29dbc25Smrg        },
820f29dbc25Smrg
821f29dbc25Smrg    {1280, 1024, 800, 600,
822f29dbc25Smrg            800, 1040, 1088, 1200, 1448, 1688,
823f29dbc25Smrg            600, 812, 813, 816, 854, 1066,
824f29dbc25Smrg            0x006C0000,
825f29dbc25Smrg        },
826f29dbc25Smrg
827f29dbc25Smrg    {1280, 1024, 1024, 768,
828f29dbc25Smrg            1024, 1152, 1200, 1312, 1560, 1688,
829f29dbc25Smrg            768, 896, 897, 900, 938, 1066,
830f29dbc25Smrg            0x006C0000,
831f29dbc25Smrg        },
832f29dbc25Smrg
833f29dbc25Smrg    {1280, 1024, 1152, 864,
834f29dbc25Smrg            1152, 1216, 1264, 1376, 1624, 1688,
835f29dbc25Smrg            864, 944, 945, 948, 986, 1066,
836f29dbc25Smrg            0x006C0000,
837f29dbc25Smrg        },
838f29dbc25Smrg
839f29dbc25Smrg    {1280, 1024, 1280, 1024,
840f29dbc25Smrg            1280, 1280, 1328, 1440, 1688, 1688,
841f29dbc25Smrg            1024, 1024, 1025, 1028, 1066, 1066,
842f29dbc25Smrg            0x006C0000,
843f29dbc25Smrg        },
844f29dbc25Smrg
845f29dbc25Smrg};
846f29dbc25Smrg
847f29dbc25Smrg#define NUM_FIXED_TIMINGS_MODES sizeof(FixedParams)/sizeof(FIXEDTIMINGS)
848f29dbc25Smrg
849f29dbc25Smrg/* INCLUDE SUPPORT FOR FIRST GENERATION, IF SPECIFIED. */
850f29dbc25Smrg
851f29dbc25Smrg#if GFX_DISPLAY_GU1
852f29dbc25Smrg#include "disp_gu1.c"
853f29dbc25Smrg#endif
854f29dbc25Smrg
855f29dbc25Smrg/* INCLUDE SUPPORT FOR SECOND GENERATION, IF SPECIFIED. */
856f29dbc25Smrg
857f29dbc25Smrg#if GFX_DISPLAY_GU2
858f29dbc25Smrg#include "disp_gu2.c"
859f29dbc25Smrg#endif
860f29dbc25Smrg
861f29dbc25Smrg/*---------------------------------------------------------------------------
862f29dbc25Smrg * gfx_reset_timing_lock
863f29dbc25Smrg *
864f29dbc25Smrg * This routine resets the timing change lock. The lock can only be set by
865f29dbc25Smrg * setting a flag when calling mode set.
866f29dbc25Smrg *---------------------------------------------------------------------------
867f29dbc25Smrg */
868f29dbc25Smrgvoid
869f29dbc25Smrggfx_reset_timing_lock(void)
870f29dbc25Smrg{
871f29dbc25Smrg    gfx_timing_lock = 0;
872f29dbc25Smrg}
873f29dbc25Smrg
874f29dbc25Smrg/* WRAPPERS IF DYNAMIC SELECTION */
875f29dbc25Smrg/* Extra layer to call either first or second generation routines. */
876f29dbc25Smrg
877f29dbc25Smrg#if GFX_DISPLAY_DYNAMIC
878f29dbc25Smrg
879f29dbc25Smrg/*---------------------------------------------------------------------------
880f29dbc25Smrg * gfx_set_display_bpp
881f29dbc25Smrg *---------------------------------------------------------------------------
882f29dbc25Smrg */
883f29dbc25Smrgint
884f29dbc25Smrggfx_set_display_bpp(unsigned short bpp)
885f29dbc25Smrg{
886f29dbc25Smrg    int retval = 0;
887f29dbc25Smrg
888f29dbc25Smrg#if GFX_DISPLAY_GU1
889f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
890f29dbc25Smrg        retval = gu1_set_display_bpp(bpp);
891f29dbc25Smrg#endif
892f29dbc25Smrg#if GFX_DISPLAY_GU2
893f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
894f29dbc25Smrg        retval = gu2_set_display_bpp(bpp);
895f29dbc25Smrg#endif
896f29dbc25Smrg    return (retval);
897f29dbc25Smrg}
898f29dbc25Smrg
899f29dbc25Smrg/*---------------------------------------------------------------------------
900f29dbc25Smrg * gfx_is_display_mode_supported
901f29dbc25Smrg * check if given mode supported,
902f29dbc25Smrg * return the supported mode on success, -1 on fail
903f29dbc25Smrg *---------------------------------------------------------------------------
904f29dbc25Smrg */
905f29dbc25Smrgint
906f29dbc25Smrggfx_is_display_mode_supported(int xres, int yres, int bpp, int hz)
907f29dbc25Smrg{
908f29dbc25Smrg    int retval = -1;
909f29dbc25Smrg
910f29dbc25Smrg#if GFX_DISPLAY_GU1
911f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
912f29dbc25Smrg        retval = gu1_is_display_mode_supported(xres, yres, bpp, hz);
913f29dbc25Smrg#endif
914f29dbc25Smrg#if GFX_DISPLAY_GU2
915f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
916f29dbc25Smrg        retval = gu2_is_display_mode_supported(xres, yres, bpp, hz);
917f29dbc25Smrg#endif
918f29dbc25Smrg    return (retval);
919f29dbc25Smrg}
920f29dbc25Smrg
921f29dbc25Smrg/*---------------------------------------------------------------------------
922f29dbc25Smrg * gfx_set_display_mode
923f29dbc25Smrg *---------------------------------------------------------------------------
924f29dbc25Smrg */
925f29dbc25Smrgint
926f29dbc25Smrggfx_set_display_mode(int xres, int yres, int bpp, int hz)
927f29dbc25Smrg{
928f29dbc25Smrg    int retval = 0;
929f29dbc25Smrg
930f29dbc25Smrg#if GFX_DISPLAY_GU1
931f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
932f29dbc25Smrg        retval = gu1_set_display_mode(xres, yres, bpp, hz);
933f29dbc25Smrg#endif
934f29dbc25Smrg#if GFX_DISPLAY_GU2
935f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
936f29dbc25Smrg        retval = gu2_set_display_mode(xres, yres, bpp, hz);
937f29dbc25Smrg#endif
938f29dbc25Smrg    return (retval);
939f29dbc25Smrg}
940f29dbc25Smrg
941f29dbc25Smrg/*---------------------------------------------------------------------------
942f29dbc25Smrg * gfx_set_display_timings
943f29dbc25Smrg *---------------------------------------------------------------------------
944f29dbc25Smrg */
945f29dbc25Smrgint
946f29dbc25Smrggfx_set_display_timings(unsigned short bpp, unsigned short flags,
947f29dbc25Smrg    unsigned short hactive, unsigned short hblankstart,
948f29dbc25Smrg    unsigned short hsyncstart, unsigned short hsyncend,
949f29dbc25Smrg    unsigned short hblankend, unsigned short htotal,
950f29dbc25Smrg    unsigned short vactive, unsigned short vblankstart,
951f29dbc25Smrg    unsigned short vsyncstart, unsigned short vsyncend,
952f29dbc25Smrg    unsigned short vblankend, unsigned short vtotal, unsigned long frequency)
953f29dbc25Smrg{
954f29dbc25Smrg    int retval = 0;
955f29dbc25Smrg
956f29dbc25Smrg#if GFX_DISPLAY_GU1
957f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
958f29dbc25Smrg        retval = gu1_set_display_timings(bpp, flags,
959f29dbc25Smrg            hactive, hblankstart, hsyncstart, hsyncend, hblankend, htotal,
960f29dbc25Smrg            vactive, vblankstart, vsyncstart, vsyncend, vblankend, vtotal,
961f29dbc25Smrg            frequency);
962f29dbc25Smrg#endif
963f29dbc25Smrg#if GFX_DISPLAY_GU2
964f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
965f29dbc25Smrg        retval = gu2_set_display_timings(bpp, flags,
966f29dbc25Smrg            hactive, hblankstart, hsyncstart, hsyncend, hblankend, htotal,
967f29dbc25Smrg            vactive, vblankstart, vsyncstart, vsyncend, vblankend, vtotal,
968f29dbc25Smrg            frequency);
969f29dbc25Smrg#endif
970f29dbc25Smrg    return (retval);
971f29dbc25Smrg}
972f29dbc25Smrg
973f29dbc25Smrg/*---------------------------------------------------------------------------
974f29dbc25Smrg * gfx_set_display_pitch
975f29dbc25Smrg *---------------------------------------------------------------------------
976f29dbc25Smrg */
977f29dbc25Smrgvoid
978f29dbc25Smrggfx_set_display_pitch(unsigned short pitch)
979f29dbc25Smrg{
980f29dbc25Smrg#if GFX_DISPLAY_GU1
981f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
982f29dbc25Smrg        gu1_set_display_pitch(pitch);
983f29dbc25Smrg#endif
984f29dbc25Smrg#if GFX_DISPLAY_GU2
985f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
986f29dbc25Smrg        gu2_set_display_pitch(pitch);
987f29dbc25Smrg#endif
988f29dbc25Smrg}
989f29dbc25Smrg
990f29dbc25Smrg/*---------------------------------------------------------------------------
991f29dbc25Smrg * gfx_set_display_offset
992f29dbc25Smrg *---------------------------------------------------------------------------
993f29dbc25Smrg */
994f29dbc25Smrgvoid
995f29dbc25Smrggfx_set_display_offset(unsigned long offset)
996f29dbc25Smrg{
997f29dbc25Smrg#if GFX_DISPLAY_GU1
998f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
999f29dbc25Smrg        gu1_set_display_offset(offset);
1000f29dbc25Smrg#endif
1001f29dbc25Smrg#if GFX_DISPLAY_GU2
1002f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
1003f29dbc25Smrg        gu2_set_display_offset(offset);
1004f29dbc25Smrg#endif
1005f29dbc25Smrg}
1006f29dbc25Smrg
1007f29dbc25Smrg/*---------------------------------------------------------------------------
1008f29dbc25Smrg * gfx_set_display_palette_entry
1009f29dbc25Smrg *---------------------------------------------------------------------------
1010f29dbc25Smrg */
1011f29dbc25Smrgint
1012f29dbc25Smrggfx_set_display_palette_entry(unsigned long index, unsigned long palette)
1013f29dbc25Smrg{
1014f29dbc25Smrg    int status = 0;
1015f29dbc25Smrg
1016f29dbc25Smrg#if GFX_DISPLAY_GU1
1017f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
1018f29dbc25Smrg        status = gu1_set_display_palette_entry(index, palette);
1019f29dbc25Smrg#endif
1020f29dbc25Smrg#if GFX_DISPLAY_GU2
1021f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
1022f29dbc25Smrg        status = gu2_set_display_palette_entry(index, palette);
1023f29dbc25Smrg#endif
1024f29dbc25Smrg    return (status);
1025f29dbc25Smrg}
1026f29dbc25Smrg
1027f29dbc25Smrg/*---------------------------------------------------------------------------
1028f29dbc25Smrg * gfx_set_display_palette
1029f29dbc25Smrg *---------------------------------------------------------------------------
1030f29dbc25Smrg */
1031f29dbc25Smrgint
1032f29dbc25Smrggfx_set_display_palette(unsigned long *palette)
1033f29dbc25Smrg{
1034f29dbc25Smrg    int status = 0;
1035f29dbc25Smrg
1036f29dbc25Smrg#if GFX_DISPLAY_GU1
1037f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
1038f29dbc25Smrg        status = gu1_set_display_palette(palette);
1039f29dbc25Smrg#endif
1040f29dbc25Smrg#if GFX_DISPLAY_GU2
1041f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
1042f29dbc25Smrg        status = gu2_set_display_palette(palette);
1043f29dbc25Smrg#endif
1044f29dbc25Smrg    return (status);
1045f29dbc25Smrg}
1046f29dbc25Smrg
1047f29dbc25Smrg/*---------------------------------------------------------------------------
1048f29dbc25Smrg * gfx_set_cursor_enable
1049f29dbc25Smrg *---------------------------------------------------------------------------
1050f29dbc25Smrg */
1051f29dbc25Smrgvoid
1052f29dbc25Smrggfx_set_cursor_enable(int enable)
1053f29dbc25Smrg{
1054f29dbc25Smrg#if GFX_DISPLAY_GU1
1055f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
1056f29dbc25Smrg        gu1_set_cursor_enable(enable);
1057f29dbc25Smrg#endif
1058f29dbc25Smrg#if GFX_DISPLAY_GU2
1059f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
1060f29dbc25Smrg        gu2_set_cursor_enable(enable);
1061f29dbc25Smrg#endif
1062f29dbc25Smrg}
1063f29dbc25Smrg
1064f29dbc25Smrg/*---------------------------------------------------------------------------
1065f29dbc25Smrg * gfx_set_cursor_colors
1066f29dbc25Smrg *---------------------------------------------------------------------------
1067f29dbc25Smrg */
1068f29dbc25Smrgvoid
1069f29dbc25Smrggfx_set_cursor_colors(unsigned long bkcolor, unsigned long fgcolor)
1070f29dbc25Smrg{
1071f29dbc25Smrg#if GFX_DISPLAY_GU1
1072f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
1073f29dbc25Smrg        gu1_set_cursor_colors(bkcolor, fgcolor);
1074f29dbc25Smrg#endif
1075f29dbc25Smrg#if GFX_DISPLAY_GU2
1076f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
1077f29dbc25Smrg        gu2_set_cursor_colors(bkcolor, fgcolor);
1078f29dbc25Smrg#endif
1079f29dbc25Smrg}
1080f29dbc25Smrg
1081f29dbc25Smrg/*---------------------------------------------------------------------------
1082f29dbc25Smrg * gfx_set_cursor_position
1083f29dbc25Smrg *---------------------------------------------------------------------------
1084f29dbc25Smrg */
1085f29dbc25Smrgvoid
1086f29dbc25Smrggfx_set_cursor_position(unsigned long memoffset,
1087f29dbc25Smrg    unsigned short xpos, unsigned short ypos,
1088f29dbc25Smrg    unsigned short xhotspot, unsigned short yhotspot)
1089f29dbc25Smrg{
1090f29dbc25Smrg#if GFX_DISPLAY_GU1
1091f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
1092f29dbc25Smrg        gu1_set_cursor_position(memoffset, xpos, ypos, xhotspot, yhotspot);
1093f29dbc25Smrg#endif
1094f29dbc25Smrg#if GFX_DISPLAY_GU2
1095f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
1096f29dbc25Smrg        gu2_set_cursor_position(memoffset, xpos, ypos, xhotspot, yhotspot);
1097f29dbc25Smrg#endif
1098f29dbc25Smrg}
1099f29dbc25Smrg
1100f29dbc25Smrg/*---------------------------------------------------------------------------
1101f29dbc25Smrg * gfx_set_cursor_shape32
1102f29dbc25Smrg *---------------------------------------------------------------------------
1103f29dbc25Smrg */
1104f29dbc25Smrgvoid
1105f29dbc25Smrggfx_set_cursor_shape32(unsigned long memoffset,
1106f29dbc25Smrg    unsigned long *andmask, unsigned long *xormask)
1107f29dbc25Smrg{
1108f29dbc25Smrg#if GFX_DISPLAY_GU1
1109f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
1110f29dbc25Smrg        gu1_set_cursor_shape32(memoffset, andmask, xormask);
1111f29dbc25Smrg#endif
1112f29dbc25Smrg#if GFX_DISPLAY_GU2
1113f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
1114f29dbc25Smrg        gu2_set_cursor_shape32(memoffset, andmask, xormask);
1115f29dbc25Smrg#endif
1116f29dbc25Smrg}
1117f29dbc25Smrg
1118f29dbc25Smrg/*---------------------------------------------------------------------------
1119f29dbc25Smrg * gfx_set_cursor_shape64
1120f29dbc25Smrg *---------------------------------------------------------------------------
1121f29dbc25Smrg */
1122f29dbc25Smrgvoid
1123f29dbc25Smrggfx_set_cursor_shape64(unsigned long memoffset,
1124f29dbc25Smrg    unsigned long *andmask, unsigned long *xormask)
1125f29dbc25Smrg{
1126f29dbc25Smrg#if GFX_DISPLAY_GU2
1127f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
1128f29dbc25Smrg        gu2_set_cursor_shape64(memoffset, andmask, xormask);
1129f29dbc25Smrg#endif
1130f29dbc25Smrg}
1131f29dbc25Smrg
1132f29dbc25Smrg/*---------------------------------------------------------------------------
1133f29dbc25Smrg * gfx_set_icon_enable
1134f29dbc25Smrg *---------------------------------------------------------------------------
1135f29dbc25Smrg */
1136f29dbc25Smrgvoid
1137f29dbc25Smrggfx_set_icon_enable(int enable)
1138f29dbc25Smrg{
1139f29dbc25Smrg#if GFX_DISPLAY_GU2
1140f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
1141f29dbc25Smrg        gu2_set_icon_enable(enable);
1142f29dbc25Smrg#endif
1143f29dbc25Smrg}
1144f29dbc25Smrg
1145f29dbc25Smrg/*---------------------------------------------------------------------------
1146f29dbc25Smrg * gfx_set_icon_colors
1147f29dbc25Smrg *---------------------------------------------------------------------------
1148f29dbc25Smrg */
1149f29dbc25Smrgvoid
1150f29dbc25Smrggfx_set_icon_colors(unsigned long color0, unsigned long color1,
1151f29dbc25Smrg    unsigned long color2)
1152f29dbc25Smrg{
1153f29dbc25Smrg#if GFX_DISPLAY_GU2
1154f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
1155f29dbc25Smrg        gu2_set_icon_colors(color0, color1, color2);
1156f29dbc25Smrg#endif
1157f29dbc25Smrg}
1158f29dbc25Smrg
1159f29dbc25Smrg/*---------------------------------------------------------------------------
1160f29dbc25Smrg * gfx_set_icon_position
1161f29dbc25Smrg *---------------------------------------------------------------------------
1162f29dbc25Smrg */
1163f29dbc25Smrgvoid
1164f29dbc25Smrggfx_set_icon_position(unsigned long memoffset, unsigned short xpos)
1165f29dbc25Smrg{
1166f29dbc25Smrg#if GFX_DISPLAY_GU2
1167f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
1168f29dbc25Smrg        gu2_set_icon_position(memoffset, xpos);
1169f29dbc25Smrg#endif
1170f29dbc25Smrg}
1171f29dbc25Smrg
1172f29dbc25Smrg/*---------------------------------------------------------------------------
1173f29dbc25Smrg * gfx_set_icon_shape64
1174f29dbc25Smrg *---------------------------------------------------------------------------
1175f29dbc25Smrg */
1176f29dbc25Smrgvoid
1177f29dbc25Smrggfx_set_icon_shape64(unsigned long memoffset,
1178f29dbc25Smrg    unsigned long *andmask, unsigned long *xormask, unsigned int lines)
1179f29dbc25Smrg{
1180f29dbc25Smrg#if GFX_DISPLAY_GU2
1181f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
1182f29dbc25Smrg        gu2_set_icon_shape64(memoffset, andmask, xormask, lines);
1183f29dbc25Smrg#endif
1184f29dbc25Smrg}
1185f29dbc25Smrg
1186f29dbc25Smrg/*---------------------------------------------------------------------------
1187f29dbc25Smrg * gfx_set_compression_enable
1188f29dbc25Smrg *---------------------------------------------------------------------------
1189f29dbc25Smrg */
1190f29dbc25Smrgint
1191f29dbc25Smrggfx_set_compression_enable(int enable)
1192f29dbc25Smrg{
1193f29dbc25Smrg    int status = 0;
1194f29dbc25Smrg
1195f29dbc25Smrg#if GFX_DISPLAY_GU1
1196f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
1197f29dbc25Smrg        status = gu1_set_compression_enable(enable);
1198f29dbc25Smrg#endif
1199f29dbc25Smrg#if GFX_DISPLAY_GU2
1200f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
1201f29dbc25Smrg        status = gu2_set_compression_enable(enable);
1202f29dbc25Smrg#endif
1203f29dbc25Smrg    return (status);
1204f29dbc25Smrg}
1205f29dbc25Smrg
1206f29dbc25Smrg/*---------------------------------------------------------------------------
1207f29dbc25Smrg * gfx_set_compression_offset
1208f29dbc25Smrg *---------------------------------------------------------------------------
1209f29dbc25Smrg */
1210f29dbc25Smrgint
1211f29dbc25Smrggfx_set_compression_offset(unsigned long offset)
1212f29dbc25Smrg{
1213f29dbc25Smrg    int status = 0;
1214f29dbc25Smrg
1215f29dbc25Smrg#if GFX_DISPLAY_GU1
1216f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
1217f29dbc25Smrg        status = gu1_set_compression_offset(offset);
1218f29dbc25Smrg#endif
1219f29dbc25Smrg#if GFX_DISPLAY_GU2
1220f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
1221f29dbc25Smrg        status = gu2_set_compression_offset(offset);
1222f29dbc25Smrg#endif
1223f29dbc25Smrg    return (status);
1224f29dbc25Smrg}
1225f29dbc25Smrg
1226f29dbc25Smrg/*---------------------------------------------------------------------------
1227f29dbc25Smrg * gfx_set_compression_pitch
1228f29dbc25Smrg *---------------------------------------------------------------------------
1229f29dbc25Smrg */
1230f29dbc25Smrgint
1231f29dbc25Smrggfx_set_compression_pitch(unsigned short pitch)
1232f29dbc25Smrg{
1233f29dbc25Smrg    int status = 0;
1234f29dbc25Smrg
1235f29dbc25Smrg#if GFX_DISPLAY_GU1
1236f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
1237f29dbc25Smrg        status = gu1_set_compression_pitch(pitch);
1238f29dbc25Smrg#endif
1239f29dbc25Smrg#if GFX_DISPLAY_GU2
1240f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
1241f29dbc25Smrg        status = gu2_set_compression_pitch(pitch);
1242f29dbc25Smrg#endif
1243f29dbc25Smrg    return (status);
1244f29dbc25Smrg}
1245f29dbc25Smrg
1246f29dbc25Smrg/*---------------------------------------------------------------------------
1247f29dbc25Smrg * gfx_set_compression_size
1248f29dbc25Smrg *---------------------------------------------------------------------------
1249f29dbc25Smrg */
1250f29dbc25Smrgint
1251f29dbc25Smrggfx_set_compression_size(unsigned short size)
1252f29dbc25Smrg{
1253f29dbc25Smrg    int status = 0;
1254f29dbc25Smrg
1255f29dbc25Smrg#if GFX_DISPLAY_GU1
1256f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
1257f29dbc25Smrg        status = gu1_set_compression_size(size);
1258f29dbc25Smrg#endif
1259f29dbc25Smrg#if GFX_DISPLAY_GU2
1260f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
1261f29dbc25Smrg        status = gu2_set_compression_size(size);
1262f29dbc25Smrg#endif
1263f29dbc25Smrg    return (status);
1264f29dbc25Smrg}
1265f29dbc25Smrg
1266f29dbc25Smrg/*---------------------------------------------------------------------------
1267f29dbc25Smrg * gfx_set_display_priority_high
1268f29dbc25Smrg *---------------------------------------------------------------------------
1269f29dbc25Smrg */
1270f29dbc25Smrgvoid
1271f29dbc25Smrggfx_set_display_priority_high(int enable)
1272f29dbc25Smrg{
1273f29dbc25Smrg#if GFX_DISPLAY_GU1
1274f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
1275f29dbc25Smrg        gu1_set_display_priority_high(enable);
1276f29dbc25Smrg#endif
1277f29dbc25Smrg}
1278f29dbc25Smrg
1279f29dbc25Smrg/*---------------------------------------------------------------------------
1280f29dbc25Smrg * gfx_set_display_video_format (PRIVATE ROUTINE - NOT PART OF API)
1281f29dbc25Smrg *
1282f29dbc25Smrg * This routine is called by "gfx_set_video_format".  It abstracts the
1283f29dbc25Smrg * version of the display controller from the video overlay routines.
1284f29dbc25Smrg *---------------------------------------------------------------------------
1285f29dbc25Smrg */
1286f29dbc25Smrgvoid
1287f29dbc25Smrggfx_set_display_video_format(unsigned long format)
1288f29dbc25Smrg{
1289f29dbc25Smrg#if GFX_DISPLAY_GU2
1290f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
1291f29dbc25Smrg        gu2_set_display_video_format(format);
1292f29dbc25Smrg#endif
1293f29dbc25Smrg}
1294f29dbc25Smrg
1295f29dbc25Smrg/*---------------------------------------------------------------------------
1296f29dbc25Smrg * gfx_set_display_video_enable (PRIVATE ROUTINE - NOT PART OF API)
1297f29dbc25Smrg *
1298f29dbc25Smrg * This routine is called by "gfx_set_video_enable".  It abstracts the
1299f29dbc25Smrg * version of the display controller from the video overlay routines.
1300f29dbc25Smrg *---------------------------------------------------------------------------
1301f29dbc25Smrg */
1302f29dbc25Smrgvoid
1303f29dbc25Smrggfx_set_display_video_enable(int enable)
1304f29dbc25Smrg{
1305f29dbc25Smrg#if GFX_DISPLAY_GU1
1306f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
1307f29dbc25Smrg        gu1_set_display_video_enable(enable);
1308f29dbc25Smrg#endif
1309f29dbc25Smrg#if GFX_DISPLAY_GU2
1310f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
1311f29dbc25Smrg        gu2_set_display_video_enable(enable);
1312f29dbc25Smrg#endif
1313f29dbc25Smrg    return;
1314f29dbc25Smrg}
1315f29dbc25Smrg
1316f29dbc25Smrg/*---------------------------------------------------------------------------
1317f29dbc25Smrg * gfx_set_display_video_size (PRIVATE ROUTINE - NOT PART OF API)
1318f29dbc25Smrg *
1319f29dbc25Smrg * This routine is called by "gfx_set_video_size".  It abstracts the
1320f29dbc25Smrg * version of the display controller from the video overlay routines.
1321f29dbc25Smrg *---------------------------------------------------------------------------
1322f29dbc25Smrg */
1323f29dbc25Smrgvoid
1324f29dbc25Smrggfx_set_display_video_size(unsigned short width, unsigned short height)
1325f29dbc25Smrg{
1326f29dbc25Smrg#if GFX_DISPLAY_GU1
1327f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
1328f29dbc25Smrg        gu1_set_display_video_size(width, height);
1329f29dbc25Smrg#endif
1330f29dbc25Smrg#if GFX_DISPLAY_GU2
1331f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
1332f29dbc25Smrg        gu2_set_display_video_size(width, height);
1333f29dbc25Smrg#endif
1334f29dbc25Smrg}
1335f29dbc25Smrg
1336f29dbc25Smrg/*---------------------------------------------------------------------------
1337f29dbc25Smrg * gfx_set_display_video_offset (PRIVATE ROUTINE - NOT PART OF API)
1338f29dbc25Smrg *
1339f29dbc25Smrg * This routine is called by "gfx_set_video_offset".  It abstracts the
1340f29dbc25Smrg * version of the display controller from the video overlay routines.
1341f29dbc25Smrg *---------------------------------------------------------------------------
1342f29dbc25Smrg */
1343f29dbc25Smrgvoid
1344f29dbc25Smrggfx_set_display_video_offset(unsigned long offset)
1345f29dbc25Smrg{
1346f29dbc25Smrg#if GFX_DISPLAY_GU1
1347f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
1348f29dbc25Smrg        gu1_set_display_video_offset(offset);
1349f29dbc25Smrg#endif
1350f29dbc25Smrg#if GFX_DISPLAY_GU2
1351f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
1352f29dbc25Smrg        gu2_set_display_video_offset(offset);
1353f29dbc25Smrg#endif
1354f29dbc25Smrg}
1355f29dbc25Smrg
1356f29dbc25Smrg/*---------------------------------------------------------------------------
1357f29dbc25Smrg * gfx_set_display_video_yuv_offsets (PRIVATE ROUTINE - NOT PART OF API)
1358f29dbc25Smrg *
1359f29dbc25Smrg * This routine is called by "gfx_set_video_yuv_offsets".  It abstracts the
1360f29dbc25Smrg * version of the display controller from the video overlay routines.
1361f29dbc25Smrg *---------------------------------------------------------------------------
1362f29dbc25Smrg */
1363f29dbc25Smrgvoid
1364f29dbc25Smrggfx_set_display_video_yuv_offsets(unsigned long yoffset,
1365f29dbc25Smrg    unsigned long uoffset, unsigned long voffset)
1366f29dbc25Smrg{
1367f29dbc25Smrg#if GFX_DISPLAY_GU2
1368f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
1369f29dbc25Smrg        gu2_set_display_video_yuv_offsets(yoffset, uoffset, voffset);
1370f29dbc25Smrg#endif
1371f29dbc25Smrg}
1372f29dbc25Smrg
1373f29dbc25Smrg/*---------------------------------------------------------------------------
1374f29dbc25Smrg * gfx_set_display_video_yuv_pitch (PRIVATE ROUTINE - NOT PART OF API)
1375f29dbc25Smrg *
1376f29dbc25Smrg * This routine is called by "gfx_set_video_yuv_pitch".  It abstracts the
1377f29dbc25Smrg * version of the display controller from the video overlay routines.
1378f29dbc25Smrg *---------------------------------------------------------------------------
1379f29dbc25Smrg */
1380f29dbc25Smrgvoid
1381f29dbc25Smrggfx_set_display_video_yuv_pitch(unsigned long ypitch, unsigned long uvpitch)
1382f29dbc25Smrg{
1383f29dbc25Smrg#if GFX_DISPLAY_GU2
1384f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
1385f29dbc25Smrg        gu2_set_display_video_yuv_pitch(ypitch, uvpitch);
1386f29dbc25Smrg#endif
1387f29dbc25Smrg}
1388f29dbc25Smrg
1389f29dbc25Smrg/*---------------------------------------------------------------------------
1390f29dbc25Smrg * gfx_set_display_video_downscale (PRIVATE ROUTINE - NOT PART OF API)
1391f29dbc25Smrg *
1392f29dbc25Smrg * This routine is called by "gfx_set_video_vertical_downscale".  It abstracts the
1393f29dbc25Smrg * version of the display controller from the video overlay routines.
1394f29dbc25Smrg *---------------------------------------------------------------------------
1395f29dbc25Smrg */
1396f29dbc25Smrgvoid
1397f29dbc25Smrggfx_set_display_video_downscale(unsigned short srch, unsigned short dsth)
1398f29dbc25Smrg{
1399f29dbc25Smrg#if GFX_DISPLAY_GU2
1400f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
1401f29dbc25Smrg        gu2_set_display_video_downscale(srch, dsth);
1402f29dbc25Smrg#endif
1403f29dbc25Smrg}
1404f29dbc25Smrg
1405f29dbc25Smrg/*---------------------------------------------------------------------------
1406f29dbc25Smrg * gfx_set_display_video_vertical_downscale_enable (PRIVATE ROUTINE - NOT PART OF API)
1407f29dbc25Smrg *
1408f29dbc25Smrg * This routine is called by "gfx_set_video_vertical_downscale_enable".  It abstracts the
1409f29dbc25Smrg * version of the display controller from the video overlay routines.
1410f29dbc25Smrg *---------------------------------------------------------------------------
1411f29dbc25Smrg */
1412f29dbc25Smrgvoid
1413f29dbc25Smrggfx_set_display_video_vertical_downscale_enable(int enable)
1414f29dbc25Smrg{
1415f29dbc25Smrg#if GFX_DISPLAY_GU2
1416f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
1417f29dbc25Smrg        gu2_set_display_video_vertical_downscale_enable(enable);
1418f29dbc25Smrg#endif
1419f29dbc25Smrg}
1420f29dbc25Smrg
1421f29dbc25Smrg/*---------------------------------------------------------------------------
1422f29dbc25Smrg * gfx_test_timing_active
1423f29dbc25Smrg *---------------------------------------------------------------------------
1424f29dbc25Smrg */
1425f29dbc25Smrgint
1426f29dbc25Smrggfx_test_timing_active(void)
1427f29dbc25Smrg{
1428f29dbc25Smrg    int status = 0;
1429f29dbc25Smrg
1430f29dbc25Smrg#if GFX_DISPLAY_GU1
1431f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
1432f29dbc25Smrg        status = gu1_test_timing_active();
1433f29dbc25Smrg#endif
1434f29dbc25Smrg#if GFX_DISPLAY_GU2
1435f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
1436f29dbc25Smrg        status = gu2_test_timing_active();
1437f29dbc25Smrg#endif
1438f29dbc25Smrg    return (status);
1439f29dbc25Smrg}
1440f29dbc25Smrg
1441f29dbc25Smrg/*---------------------------------------------------------------------------
1442f29dbc25Smrg * gfx_test_vertical_active
1443f29dbc25Smrg *---------------------------------------------------------------------------
1444f29dbc25Smrg */
1445f29dbc25Smrgint
1446f29dbc25Smrggfx_test_vertical_active(void)
1447f29dbc25Smrg{
1448f29dbc25Smrg    int status = 0;
1449f29dbc25Smrg
1450f29dbc25Smrg#if GFX_DISPLAY_GU1
1451f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
1452f29dbc25Smrg        status = gu1_test_vertical_active();
1453f29dbc25Smrg#endif
1454f29dbc25Smrg#if GFX_DISPLAY_GU2
1455f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
1456f29dbc25Smrg        status = gu2_test_vertical_active();
1457f29dbc25Smrg#endif
1458f29dbc25Smrg    return (status);
1459f29dbc25Smrg}
1460f29dbc25Smrg
1461f29dbc25Smrg/*---------------------------------------------------------------------------
1462f29dbc25Smrg * gfx_wait_vertical_blank
1463f29dbc25Smrg *---------------------------------------------------------------------------
1464f29dbc25Smrg */
1465f29dbc25Smrgint
1466f29dbc25Smrggfx_wait_vertical_blank(void)
1467f29dbc25Smrg{
1468f29dbc25Smrg    int status = 0;
1469f29dbc25Smrg
1470f29dbc25Smrg#if GFX_DISPLAY_GU1
1471f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
1472f29dbc25Smrg        status = gu1_wait_vertical_blank();
1473f29dbc25Smrg#endif
1474f29dbc25Smrg#if GFX_DISPLAY_GU2
1475f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
1476f29dbc25Smrg        status = gu2_wait_vertical_blank();
1477f29dbc25Smrg#endif
1478f29dbc25Smrg    return (status);
1479f29dbc25Smrg}
1480f29dbc25Smrg
1481f29dbc25Smrg/*---------------------------------------------------------------------------
1482f29dbc25Smrg * gfx_delay_milliseconds
1483f29dbc25Smrg *---------------------------------------------------------------------------
1484f29dbc25Smrg */
1485f29dbc25Smrgvoid
1486f29dbc25Smrggfx_delay_milliseconds(unsigned long milliseconds)
1487f29dbc25Smrg{
1488f29dbc25Smrg#if GFX_DISPLAY_GU1
1489f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
1490f29dbc25Smrg        gu1_delay_milliseconds(milliseconds);
1491f29dbc25Smrg#endif
1492f29dbc25Smrg#if GFX_DISPLAY_GU2
1493f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
1494f29dbc25Smrg        gu2_delay_milliseconds(milliseconds);
1495f29dbc25Smrg#endif
1496f29dbc25Smrg}
1497f29dbc25Smrg
1498f29dbc25Smrg/*---------------------------------------------------------------------------
1499f29dbc25Smrg * gfx_delay_microseconds
1500f29dbc25Smrg *---------------------------------------------------------------------------
1501f29dbc25Smrg */
1502f29dbc25Smrgvoid
1503f29dbc25Smrggfx_delay_microseconds(unsigned long microseconds)
1504f29dbc25Smrg{
1505f29dbc25Smrg#if GFX_DISPLAY_GU1
1506f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
1507f29dbc25Smrg        gu1_delay_microseconds(microseconds);
1508f29dbc25Smrg#endif
1509f29dbc25Smrg#if GFX_DISPLAY_GU2
1510f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
1511f29dbc25Smrg        gu2_delay_microseconds(microseconds);
1512f29dbc25Smrg#endif
1513f29dbc25Smrg}
1514f29dbc25Smrg
1515f29dbc25Smrg/*---------------------------------------------------------------------------
1516f29dbc25Smrg * gfx_enable_panning
1517f29dbc25Smrg *
1518f29dbc25Smrg * This routine  enables the panning when the Mode is bigger than the panel
1519f29dbc25Smrg * size.
1520f29dbc25Smrg *---------------------------------------------------------------------------
1521f29dbc25Smrg */
1522f29dbc25Smrgvoid
1523f29dbc25Smrggfx_enable_panning(int x, int y)
1524f29dbc25Smrg{
1525f29dbc25Smrg#if GFX_DISPLAY_GU1
1526f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
1527f29dbc25Smrg        gu1_enable_panning(x, y);
1528f29dbc25Smrg#endif
1529f29dbc25Smrg#if GFX_DISPLAY_GU2
1530f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
1531f29dbc25Smrg        gu2_enable_panning(x, y);
1532f29dbc25Smrg#endif
1533f29dbc25Smrg}
1534f29dbc25Smrg
1535f29dbc25Smrg/*---------------------------------------------------------------------------
1536f29dbc25Smrg * gfx_is_panel_mode_supported
1537f29dbc25Smrg *---------------------------------------------------------------------------
1538f29dbc25Smrg */
1539f29dbc25Smrgint
1540f29dbc25Smrggfx_is_panel_mode_supported(int panelResX, int panelResY,
1541f29dbc25Smrg    unsigned short width, unsigned short height, unsigned short bpp)
1542f29dbc25Smrg{
1543f29dbc25Smrg    int status = -1;
1544f29dbc25Smrg
1545f29dbc25Smrg#if GFX_DISPLAY_GU2
1546f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
1547f29dbc25Smrg        status =
1548f29dbc25Smrg            gu2_is_panel_mode_supported(panelResX, panelResY, width, height,
1549f29dbc25Smrg            bpp);
1550f29dbc25Smrg#endif
1551f29dbc25Smrg
1552f29dbc25Smrg    return (status);
1553f29dbc25Smrg}
1554f29dbc25Smrg
1555f29dbc25Smrg/*---------------------------------------------------------------------------
1556f29dbc25Smrg * gfx_set_fixed_timings
1557f29dbc25Smrg *---------------------------------------------------------------------------
1558f29dbc25Smrg */
1559f29dbc25Smrgint
1560f29dbc25Smrggfx_set_fixed_timings(int panelResX, int panelResY, unsigned short width,
1561f29dbc25Smrg    unsigned short height, unsigned short bpp)
1562f29dbc25Smrg{
1563f29dbc25Smrg    int status = 0;
1564f29dbc25Smrg
1565f29dbc25Smrg#if GFX_DISPLAY_GU1
1566f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
1567f29dbc25Smrg        status =
1568f29dbc25Smrg            gu1_set_fixed_timings(panelResX, panelResY, width, height, bpp);
1569f29dbc25Smrg#endif
1570f29dbc25Smrg#if GFX_DISPLAY_GU2
1571f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
1572f29dbc25Smrg        status =
1573f29dbc25Smrg            gu2_set_fixed_timings(panelResX, panelResY, width, height, bpp);
1574f29dbc25Smrg#endif
1575f29dbc25Smrg    return (status);
1576f29dbc25Smrg}
1577f29dbc25Smrg
1578f29dbc25Smrg/*---------------------------------------------------------------------------
1579f29dbc25Smrg * gfx_set_panel_present
1580f29dbc25Smrg *---------------------------------------------------------------------------
1581f29dbc25Smrg */
1582f29dbc25Smrgint
1583f29dbc25Smrggfx_set_panel_present(int panelResX, int panelResY, unsigned short width,
1584f29dbc25Smrg    unsigned short height, unsigned short bpp)
1585f29dbc25Smrg{
1586f29dbc25Smrg    int status = 0;
1587f29dbc25Smrg
1588f29dbc25Smrg#if GFX_DISPLAY_GU1
1589f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
1590f29dbc25Smrg        status =
1591f29dbc25Smrg            gu1_set_panel_present(panelResX, panelResY, width, height, bpp);
1592f29dbc25Smrg#endif
1593f29dbc25Smrg#if GFX_DISPLAY_GU2
1594f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
1595f29dbc25Smrg        status =
1596f29dbc25Smrg            gu2_set_panel_present(panelResX, panelResY, width, height, bpp);
1597f29dbc25Smrg#endif
1598f29dbc25Smrg    return (status);
1599f29dbc25Smrg}
1600f29dbc25Smrg
1601f29dbc25Smrg/*---------------------------------------------------------------------------
1602f29dbc25Smrg * gfx_set_vtotal
1603f29dbc25Smrg *---------------------------------------------------------------------------
1604f29dbc25Smrg */
1605f29dbc25Smrgint
1606f29dbc25Smrggfx_set_vtotal(unsigned short vtotal)
1607f29dbc25Smrg{
1608f29dbc25Smrg    int retval = 0;
1609f29dbc25Smrg
1610f29dbc25Smrg#if GFX_DISPLAY_GU1
1611f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
1612f29dbc25Smrg        retval = gu1_set_vtotal(vtotal);
1613f29dbc25Smrg#endif
1614f29dbc25Smrg#if GFX_DISPLAY_GU2
1615f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
1616f29dbc25Smrg        retval = gu2_set_vtotal(vtotal);
1617f29dbc25Smrg#endif
1618f29dbc25Smrg    return (retval);
1619f29dbc25Smrg}
1620f29dbc25Smrg
1621f29dbc25Smrg/*-----------------------------------------------------------------------*
1622f29dbc25Smrg * THE FOLLOWING READ ROUTINES ARE ALWAYS INCLUDED:                      *
1623f29dbc25Smrg * gfx_get_hsync_end, gfx_get_htotal, gfx_get_vsync_end, gfx_get_vtotal  *
1624f29dbc25Smrg * are used by the video overlay routines.                               *
1625f29dbc25Smrg *                                                                       *
1626f29dbc25Smrg * gfx_get_vline and gfx_vactive are used to prevent an issue for the    *
1627f29dbc25Smrg * SC1200.                                                               *
1628f29dbc25Smrg *                                                                       *
1629f29dbc25Smrg * The others are part of the Durango API.                               *
1630f29dbc25Smrg *-----------------------------------------------------------------------*/
1631f29dbc25Smrg
1632f29dbc25Smrg/*----------------------------------------------------------------------------
1633f29dbc25Smrg * gfx_mode_frequency_supported
1634f29dbc25Smrg *----------------------------------------------------------------------------
1635f29dbc25Smrg */
1636f29dbc25Smrgint
1637f29dbc25Smrggfx_mode_frequency_supported(int xres, int yres, int bpp,
1638f29dbc25Smrg    unsigned long frequency)
1639f29dbc25Smrg{
1640f29dbc25Smrg    int freq = 0;
1641f29dbc25Smrg
1642f29dbc25Smrg#if GFX_DISPLAY_GU1
1643f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
1644f29dbc25Smrg        freq = gu1_mode_frequency_supported(xres, yres, bpp, frequency);
1645f29dbc25Smrg#endif
1646f29dbc25Smrg#if GFX_DISPLAY_GU2
1647f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
1648f29dbc25Smrg        freq = gu2_mode_frequency_supported(xres, yres, bpp, frequency);
1649f29dbc25Smrg#endif
1650f29dbc25Smrg    return (freq);
1651f29dbc25Smrg}
1652f29dbc25Smrg
1653f29dbc25Smrg/*----------------------------------------------------------------------------
1654f29dbc25Smrg * gfx_refreshrate_from_frequency
1655f29dbc25Smrg *----------------------------------------------------------------------------
1656f29dbc25Smrg */
1657f29dbc25Smrgint
1658f29dbc25Smrggfx_get_refreshrate_from_frequency(int xres, int yres, int bpp, int *hz,
1659f29dbc25Smrg    unsigned long frequency)
1660f29dbc25Smrg{
1661f29dbc25Smrg#if GFX_DISPLAY_GU1
1662f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
1663f29dbc25Smrg        gu1_get_refreshrate_from_frequency(xres, yres, bpp, hz, frequency);
1664f29dbc25Smrg#endif
1665f29dbc25Smrg#if GFX_DISPLAY_GU2
1666f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
1667f29dbc25Smrg        gu2_get_refreshrate_from_frequency(xres, yres, bpp, hz, frequency);
1668f29dbc25Smrg#endif
1669f29dbc25Smrg
1670f29dbc25Smrg    return (1);
1671f29dbc25Smrg}
1672f29dbc25Smrg
1673f29dbc25Smrg/*----------------------------------------------------------------------------
1674f29dbc25Smrg * gfx_refreshrate_from_mode
1675f29dbc25Smrg *----------------------------------------------------------------------------
1676f29dbc25Smrg */
1677f29dbc25Smrgint
1678f29dbc25Smrggfx_get_refreshrate_from_mode(int xres, int yres, int bpp, int *hz,
1679f29dbc25Smrg    unsigned long frequency)
1680f29dbc25Smrg{
1681f29dbc25Smrg#if GFX_DISPLAY_GU1
1682f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
1683f29dbc25Smrg        gu1_get_refreshrate_from_mode(xres, yres, bpp, hz, frequency);
1684f29dbc25Smrg#endif
1685f29dbc25Smrg#if GFX_DISPLAY_GU2
1686f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
1687f29dbc25Smrg        gu2_get_refreshrate_from_mode(xres, yres, bpp, hz, frequency);
1688f29dbc25Smrg#endif
1689f29dbc25Smrg
1690f29dbc25Smrg    return (1);
1691f29dbc25Smrg}
1692f29dbc25Smrg
1693f29dbc25Smrg/*----------------------------------------------------------------------------
1694f29dbc25Smrg * gfx_get_frequency_from_refreshrate
1695f29dbc25Smrg *----------------------------------------------------------------------------
1696f29dbc25Smrg */
1697f29dbc25Smrgint
1698f29dbc25Smrggfx_get_frequency_from_refreshrate(int xres, int yres, int bpp, int hz,
1699f29dbc25Smrg    int *frequency)
1700f29dbc25Smrg{
1701f29dbc25Smrg    int retval = -1;
1702f29dbc25Smrg
1703f29dbc25Smrg#if GFX_DISPLAY_GU1
1704f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
1705f29dbc25Smrg        retval =
1706f29dbc25Smrg            gu1_get_frequency_from_refreshrate(xres, yres, bpp, hz,
1707f29dbc25Smrg            frequency);
1708f29dbc25Smrg#endif
1709f29dbc25Smrg#if GFX_DISPLAY_GU2
1710f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
1711f29dbc25Smrg        retval =
1712f29dbc25Smrg            gu2_get_frequency_from_refreshrate(xres, yres, bpp, hz,
1713f29dbc25Smrg            frequency);
1714f29dbc25Smrg#endif
1715f29dbc25Smrg
1716f29dbc25Smrg    return retval;
1717f29dbc25Smrg}
1718f29dbc25Smrg
1719f29dbc25Smrg/*---------------------------------------------------------------------------
1720f29dbc25Smrg * gfx_get_max_supported_pixel_clock
1721f29dbc25Smrg *---------------------------------------------------------------------------
1722f29dbc25Smrg */
1723f29dbc25Smrgunsigned long
1724f29dbc25Smrggfx_get_max_supported_pixel_clock(void)
1725f29dbc25Smrg{
1726f29dbc25Smrg    unsigned long status = 0;
1727f29dbc25Smrg
1728f29dbc25Smrg#if GFX_DISPLAY_GU1
1729f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
1730f29dbc25Smrg        status = gu1_get_max_supported_pixel_clock();
1731f29dbc25Smrg#endif
1732f29dbc25Smrg#if GFX_DISPLAY_GU2
1733f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
1734f29dbc25Smrg        status = gu2_get_max_supported_pixel_clock();
1735f29dbc25Smrg#endif
1736f29dbc25Smrg    return (status);
1737f29dbc25Smrg}
1738f29dbc25Smrg
1739f29dbc25Smrg/*---------------------------------------------------------------------------
1740f29dbc25Smrg * gfx_get_display_pitch
1741f29dbc25Smrg *---------------------------------------------------------------------------
1742f29dbc25Smrg */
1743f29dbc25Smrgunsigned short
1744f29dbc25Smrggfx_get_display_pitch(void)
1745f29dbc25Smrg{
1746f29dbc25Smrg    unsigned short pitch = 0;
1747f29dbc25Smrg
1748f29dbc25Smrg#if GFX_DISPLAY_GU1
1749f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
1750f29dbc25Smrg        pitch = gu1_get_display_pitch();
1751f29dbc25Smrg#endif
1752f29dbc25Smrg#if GFX_DISPLAY_GU2
1753f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
1754f29dbc25Smrg        pitch = gu2_get_display_pitch();
1755f29dbc25Smrg#endif
1756f29dbc25Smrg    return (pitch);
1757f29dbc25Smrg}
1758f29dbc25Smrg
1759f29dbc25Smrg/*---------------------------------------------------------------------------
1760f29dbc25Smrg * gfx_get_display_mode_count
1761f29dbc25Smrg * return # of modes supported.
1762f29dbc25Smrg *---------------------------------------------------------------------------
1763f29dbc25Smrg */
1764f29dbc25Smrgint
1765f29dbc25Smrggfx_get_display_mode_count(void)
1766f29dbc25Smrg{
1767f29dbc25Smrg    int retval = 0;
1768f29dbc25Smrg
1769f29dbc25Smrg#if GFX_DISPLAY_GU1
1770f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
1771f29dbc25Smrg        retval = gu1_get_display_mode_count();
1772f29dbc25Smrg#endif
1773f29dbc25Smrg#if GFX_DISPLAY_GU2
1774f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
1775f29dbc25Smrg        retval = gu2_get_display_mode_count();
1776f29dbc25Smrg#endif
1777f29dbc25Smrg    return (retval);
1778f29dbc25Smrg}
1779f29dbc25Smrg
1780f29dbc25Smrg/*---------------------------------------------------------------------------
1781f29dbc25Smrg * gfx_get_frame_buffer_line_size
1782f29dbc25Smrg *---------------------------------------------------------------------------
1783f29dbc25Smrg */
1784f29dbc25Smrgunsigned long
1785f29dbc25Smrggfx_get_frame_buffer_line_size(void)
1786f29dbc25Smrg{
1787f29dbc25Smrg    unsigned long retval = 0;
1788f29dbc25Smrg
1789f29dbc25Smrg#if GFX_DISPLAY_GU1
1790f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
1791f29dbc25Smrg        retval = gu1_get_frame_buffer_line_size();
1792f29dbc25Smrg#endif
1793f29dbc25Smrg#if GFX_DISPLAY_GU2
1794f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
1795f29dbc25Smrg        retval = gu2_get_frame_buffer_line_size();
1796f29dbc25Smrg#endif
1797f29dbc25Smrg    return (retval);
1798f29dbc25Smrg}
1799f29dbc25Smrg
1800f29dbc25Smrg/*---------------------------------------------------------------------------
1801f29dbc25Smrg * gfx_get_display_mode
1802f29dbc25Smrg * get the curent mode set,
1803f29dbc25Smrg * return the supported mode on success, -1 on fail
1804f29dbc25Smrg *---------------------------------------------------------------------------
1805f29dbc25Smrg */
1806f29dbc25Smrgint
1807f29dbc25Smrggfx_get_display_mode(int *xres, int *yres, int *bpp, int *hz)
1808f29dbc25Smrg{
1809f29dbc25Smrg    int retval = -1;
1810f29dbc25Smrg
1811f29dbc25Smrg#if GFX_DISPLAY_GU1
1812f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
1813f29dbc25Smrg        retval = gu1_get_display_mode(xres, yres, bpp, hz);
1814f29dbc25Smrg#endif
1815f29dbc25Smrg#if GFX_DISPLAY_GU2
1816f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
1817f29dbc25Smrg        retval = gu2_get_display_mode(xres, yres, bpp, hz);
1818f29dbc25Smrg#endif
1819f29dbc25Smrg    return (retval);
1820f29dbc25Smrg}
1821f29dbc25Smrg
1822f29dbc25Smrg/*---------------------------------------------------------------------------
1823f29dbc25Smrg * gfx_get_display_details
1824f29dbc25Smrg * given the mode get's the resoultion details, width, height, freq
1825f29dbc25Smrg *---------------------------------------------------------------------------
1826f29dbc25Smrg */
1827f29dbc25Smrgint
1828f29dbc25Smrggfx_get_display_details(unsigned int mode, int *xres, int *yres, int *hz)
1829f29dbc25Smrg{
1830f29dbc25Smrg    int retval = -1;
1831f29dbc25Smrg
1832f29dbc25Smrg#if GFX_DISPLAY_GU1
1833f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
1834f29dbc25Smrg        retval = gu1_get_display_details(mode, xres, yres, hz);
1835f29dbc25Smrg#endif
1836f29dbc25Smrg#if GFX_DISPLAY_GU2
1837f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
1838f29dbc25Smrg        retval = gu2_get_display_details(mode, xres, yres, hz);
1839f29dbc25Smrg#endif
1840f29dbc25Smrg    return (retval);
1841f29dbc25Smrg}
1842f29dbc25Smrg
1843f29dbc25Smrg/*---------------------------------------------------------------------------
1844f29dbc25Smrg * gfx_get_hactive
1845f29dbc25Smrg *---------------------------------------------------------------------------
1846f29dbc25Smrg */
1847f29dbc25Smrgunsigned short
1848f29dbc25Smrggfx_get_hactive(void)
1849f29dbc25Smrg{
1850f29dbc25Smrg    unsigned short hactive = 0;
1851f29dbc25Smrg
1852f29dbc25Smrg#if GFX_DISPLAY_GU1
1853f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
1854f29dbc25Smrg        hactive = gu1_get_hactive();
1855f29dbc25Smrg#endif
1856f29dbc25Smrg#if GFX_DISPLAY_GU2
1857f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
1858f29dbc25Smrg        hactive = gu2_get_hactive();
1859f29dbc25Smrg#endif
1860f29dbc25Smrg    return (hactive);
1861f29dbc25Smrg}
1862f29dbc25Smrg
1863f29dbc25Smrg/*---------------------------------------------------------------------------
1864f29dbc25Smrg * gfx_get_hsync_start
1865f29dbc25Smrg *---------------------------------------------------------------------------
1866f29dbc25Smrg */
1867f29dbc25Smrgunsigned short
1868f29dbc25Smrggfx_get_hsync_start(void)
1869f29dbc25Smrg{
1870f29dbc25Smrg    unsigned short hsync_start = 0;
1871f29dbc25Smrg
1872f29dbc25Smrg#if GFX_DISPLAY_GU1
1873f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
1874f29dbc25Smrg        hsync_start = gu1_get_hsync_start();
1875f29dbc25Smrg#endif
1876f29dbc25Smrg#if GFX_DISPLAY_GU2
1877f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
1878f29dbc25Smrg        hsync_start = gu2_get_hsync_start();
1879f29dbc25Smrg#endif
1880f29dbc25Smrg    return (hsync_start);
1881f29dbc25Smrg}
1882f29dbc25Smrg
1883f29dbc25Smrg/*---------------------------------------------------------------------------
1884f29dbc25Smrg * gfx_get_hsync_end
1885f29dbc25Smrg *---------------------------------------------------------------------------
1886f29dbc25Smrg */
1887f29dbc25Smrgunsigned short
1888f29dbc25Smrggfx_get_hsync_end(void)
1889f29dbc25Smrg{
1890f29dbc25Smrg    unsigned short hsync_end = 0;
1891f29dbc25Smrg
1892f29dbc25Smrg#if GFX_DISPLAY_GU1
1893f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
1894f29dbc25Smrg        hsync_end = gu1_get_hsync_end();
1895f29dbc25Smrg#endif
1896f29dbc25Smrg#if GFX_DISPLAY_GU2
1897f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
1898f29dbc25Smrg        hsync_end = gu2_get_hsync_end();
1899f29dbc25Smrg#endif
1900f29dbc25Smrg    return (hsync_end);
1901f29dbc25Smrg}
1902f29dbc25Smrg
1903f29dbc25Smrg/*---------------------------------------------------------------------------
1904f29dbc25Smrg * gfx_get_htotal
1905f29dbc25Smrg *---------------------------------------------------------------------------
1906f29dbc25Smrg */
1907f29dbc25Smrgunsigned short
1908f29dbc25Smrggfx_get_htotal(void)
1909f29dbc25Smrg{
1910f29dbc25Smrg    unsigned short htotal = 0;
1911f29dbc25Smrg
1912f29dbc25Smrg#if GFX_DISPLAY_GU1
1913f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
1914f29dbc25Smrg        htotal = gu1_get_htotal();
1915f29dbc25Smrg#endif
1916f29dbc25Smrg#if GFX_DISPLAY_GU2
1917f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
1918f29dbc25Smrg        htotal = gu2_get_htotal();
1919f29dbc25Smrg#endif
1920f29dbc25Smrg    return (htotal);
1921f29dbc25Smrg}
1922f29dbc25Smrg
1923f29dbc25Smrg/*---------------------------------------------------------------------------
1924f29dbc25Smrg * gfx_get_vactive
1925f29dbc25Smrg *---------------------------------------------------------------------------
1926f29dbc25Smrg */
1927f29dbc25Smrgunsigned short
1928f29dbc25Smrggfx_get_vactive(void)
1929f29dbc25Smrg{
1930f29dbc25Smrg    unsigned short vactive = 0;
1931f29dbc25Smrg
1932f29dbc25Smrg#if GFX_DISPLAY_GU1
1933f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
1934f29dbc25Smrg        vactive = gu1_get_vactive();
1935f29dbc25Smrg#endif
1936f29dbc25Smrg#if GFX_DISPLAY_GU2
1937f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
1938f29dbc25Smrg        vactive = gu2_get_vactive();
1939f29dbc25Smrg#endif
1940f29dbc25Smrg    return (vactive);
1941f29dbc25Smrg}
1942f29dbc25Smrg
1943f29dbc25Smrg/*---------------------------------------------------------------------------
1944f29dbc25Smrg * gfx_get_vsync_end
1945f29dbc25Smrg *---------------------------------------------------------------------------
1946f29dbc25Smrg */
1947f29dbc25Smrgunsigned short
1948f29dbc25Smrggfx_get_vsync_end(void)
1949f29dbc25Smrg{
1950f29dbc25Smrg    unsigned short vsync_end = 0;
1951f29dbc25Smrg
1952f29dbc25Smrg#if GFX_DISPLAY_GU1
1953f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
1954f29dbc25Smrg        vsync_end = gu1_get_vsync_end();
1955f29dbc25Smrg#endif
1956f29dbc25Smrg#if GFX_DISPLAY_GU2
1957f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
1958f29dbc25Smrg        vsync_end = gu2_get_vsync_end();
1959f29dbc25Smrg#endif
1960f29dbc25Smrg    return (vsync_end);
1961f29dbc25Smrg}
1962f29dbc25Smrg
1963f29dbc25Smrg/*---------------------------------------------------------------------------
1964f29dbc25Smrg * gfx_get_vtotal
1965f29dbc25Smrg *---------------------------------------------------------------------------
1966f29dbc25Smrg */
1967f29dbc25Smrgunsigned short
1968f29dbc25Smrggfx_get_vtotal(void)
1969f29dbc25Smrg{
1970f29dbc25Smrg    unsigned short vtotal = 0;
1971f29dbc25Smrg
1972f29dbc25Smrg#if GFX_DISPLAY_GU1
1973f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
1974f29dbc25Smrg        vtotal = gu1_get_vtotal();
1975f29dbc25Smrg#endif
1976f29dbc25Smrg#if GFX_DISPLAY_GU2
1977f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
1978f29dbc25Smrg        vtotal = gu2_get_vtotal();
1979f29dbc25Smrg#endif
1980f29dbc25Smrg    return (vtotal);
1981f29dbc25Smrg}
1982f29dbc25Smrg
1983f29dbc25Smrg/*---------------------------------------------------------------------------
1984f29dbc25Smrg *  gfx_get_display_bpp
1985f29dbc25Smrg *---------------------------------------------------------------------------
1986f29dbc25Smrg */
1987f29dbc25Smrgunsigned short
1988f29dbc25Smrggfx_get_display_bpp(void)
1989f29dbc25Smrg{
1990f29dbc25Smrg    unsigned short bpp = 0;
1991f29dbc25Smrg
1992f29dbc25Smrg#if GFX_DISPLAY_GU1
1993f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
1994f29dbc25Smrg        bpp = gu1_get_display_bpp();
1995f29dbc25Smrg#endif
1996f29dbc25Smrg#if GFX_DISPLAY_GU2
1997f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
1998f29dbc25Smrg        bpp = gu2_get_display_bpp();
1999f29dbc25Smrg#endif
2000f29dbc25Smrg    return (bpp);
2001f29dbc25Smrg}
2002f29dbc25Smrg
2003f29dbc25Smrg/*---------------------------------------------------------------------------
2004f29dbc25Smrg * gfx_get_vline
2005f29dbc25Smrg *---------------------------------------------------------------------------
2006f29dbc25Smrg */
2007f29dbc25Smrgunsigned short
2008f29dbc25Smrggfx_get_vline(void)
2009f29dbc25Smrg{
2010f29dbc25Smrg    unsigned short vline = 0;
2011f29dbc25Smrg
2012f29dbc25Smrg#if GFX_DISPLAY_GU1
2013f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
2014f29dbc25Smrg        vline = gu1_get_vline();
2015f29dbc25Smrg#endif
2016f29dbc25Smrg#if GFX_DISPLAY_GU2
2017f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
2018f29dbc25Smrg        vline = gu2_get_vline();
2019f29dbc25Smrg#endif
2020f29dbc25Smrg    return (vline);
2021f29dbc25Smrg}
2022f29dbc25Smrg
2023f29dbc25Smrg/*---------------------------------------------------------------------------
2024f29dbc25Smrg *  gfx_get_display_offset
2025f29dbc25Smrg *---------------------------------------------------------------------------
2026f29dbc25Smrg */
2027f29dbc25Smrgunsigned long
2028f29dbc25Smrggfx_get_display_offset(void)
2029f29dbc25Smrg{
2030f29dbc25Smrg    unsigned long offset = 0;
2031f29dbc25Smrg
2032f29dbc25Smrg#if GFX_DISPLAY_GU1
2033f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
2034f29dbc25Smrg        offset = gu1_get_display_offset();
2035f29dbc25Smrg#endif
2036f29dbc25Smrg#if GFX_DISPLAY_GU2
2037f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
2038f29dbc25Smrg        offset = gu2_get_display_offset();
2039f29dbc25Smrg#endif
2040f29dbc25Smrg    return (offset);
2041f29dbc25Smrg}
2042f29dbc25Smrg
2043f29dbc25Smrg/*---------------------------------------------------------------------------
2044f29dbc25Smrg *  gfx_get_cursor_offset
2045f29dbc25Smrg *---------------------------------------------------------------------------
2046f29dbc25Smrg */
2047f29dbc25Smrgunsigned long
2048f29dbc25Smrggfx_get_cursor_offset(void)
2049f29dbc25Smrg{
2050f29dbc25Smrg    unsigned long base = 0;
2051f29dbc25Smrg
2052f29dbc25Smrg#if GFX_DISPLAY_GU1
2053f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
2054f29dbc25Smrg        base = gu1_get_cursor_offset();
2055f29dbc25Smrg#endif
2056f29dbc25Smrg#if GFX_DISPLAY_GU2
2057f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
2058f29dbc25Smrg        base = gu2_get_cursor_offset();
2059f29dbc25Smrg#endif
2060f29dbc25Smrg    return (base);
2061f29dbc25Smrg}
2062f29dbc25Smrg
2063f29dbc25Smrg/*************************************************************/
2064f29dbc25Smrg/*  READ ROUTINES  |  INCLUDED FOR DIAGNOSTIC PURPOSES ONLY  */
2065f29dbc25Smrg/*************************************************************/
2066f29dbc25Smrg
2067f29dbc25Smrg#if GFX_READ_ROUTINES
2068f29dbc25Smrg
2069f29dbc25Smrg/*---------------------------------------------------------------------------
2070f29dbc25Smrg * gfx_get_hblank_start
2071f29dbc25Smrg *---------------------------------------------------------------------------
2072f29dbc25Smrg */
2073f29dbc25Smrgunsigned short
2074f29dbc25Smrggfx_get_hblank_start(void)
2075f29dbc25Smrg{
2076f29dbc25Smrg    unsigned short hblank_start = 0;
2077f29dbc25Smrg
2078f29dbc25Smrg#if GFX_DISPLAY_GU1
2079f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
2080f29dbc25Smrg        hblank_start = gu1_get_hblank_start();
2081f29dbc25Smrg#endif
2082f29dbc25Smrg#if GFX_DISPLAY_GU2
2083f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
2084f29dbc25Smrg        hblank_start = gu2_get_hblank_start();
2085f29dbc25Smrg#endif
2086f29dbc25Smrg    return (hblank_start);
2087f29dbc25Smrg}
2088f29dbc25Smrg
2089f29dbc25Smrg/*---------------------------------------------------------------------------
2090f29dbc25Smrg * gfx_get_hblank_end
2091f29dbc25Smrg *---------------------------------------------------------------------------
2092f29dbc25Smrg */
2093f29dbc25Smrgunsigned short
2094f29dbc25Smrggfx_get_hblank_end(void)
2095f29dbc25Smrg{
2096f29dbc25Smrg    unsigned short hblank_end = 0;
2097f29dbc25Smrg
2098f29dbc25Smrg#if GFX_DISPLAY_GU1
2099f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
2100f29dbc25Smrg        hblank_end = gu1_get_hblank_end();
2101f29dbc25Smrg#endif
2102f29dbc25Smrg#if GFX_DISPLAY_GU2
2103f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
2104f29dbc25Smrg        hblank_end = gu2_get_hblank_end();
2105f29dbc25Smrg#endif
2106f29dbc25Smrg    return (hblank_end);
2107f29dbc25Smrg}
2108f29dbc25Smrg
2109f29dbc25Smrg/*---------------------------------------------------------------------------
2110f29dbc25Smrg * gfx_get_vblank_start
2111f29dbc25Smrg *---------------------------------------------------------------------------
2112f29dbc25Smrg */
2113f29dbc25Smrgunsigned short
2114f29dbc25Smrggfx_get_vblank_start(void)
2115f29dbc25Smrg{
2116f29dbc25Smrg    unsigned short vblank_start = 0;
2117f29dbc25Smrg
2118f29dbc25Smrg#if GFX_DISPLAY_GU1
2119f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
2120f29dbc25Smrg        vblank_start = gu1_get_vblank_start();
2121f29dbc25Smrg#endif
2122f29dbc25Smrg#if GFX_DISPLAY_GU2
2123f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
2124f29dbc25Smrg        vblank_start = gu2_get_vblank_start();
2125f29dbc25Smrg#endif
2126f29dbc25Smrg    return (vblank_start);
2127f29dbc25Smrg}
2128f29dbc25Smrg
2129f29dbc25Smrg/*---------------------------------------------------------------------------
2130f29dbc25Smrg * gfx_get_vsync_start
2131f29dbc25Smrg *---------------------------------------------------------------------------
2132f29dbc25Smrg */
2133f29dbc25Smrgunsigned short
2134f29dbc25Smrggfx_get_vsync_start(void)
2135f29dbc25Smrg{
2136f29dbc25Smrg    unsigned short vsync_start = 0;
2137f29dbc25Smrg
2138f29dbc25Smrg#if GFX_DISPLAY_GU1
2139f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
2140f29dbc25Smrg        vsync_start = gu1_get_vsync_start();
2141f29dbc25Smrg#endif
2142f29dbc25Smrg#if GFX_DISPLAY_GU2
2143f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
2144f29dbc25Smrg        vsync_start = gu2_get_vsync_start();
2145f29dbc25Smrg#endif
2146f29dbc25Smrg    return (vsync_start);
2147f29dbc25Smrg}
2148f29dbc25Smrg
2149f29dbc25Smrg/*---------------------------------------------------------------------------
2150f29dbc25Smrg * gfx_get_vblank_end
2151f29dbc25Smrg *---------------------------------------------------------------------------
2152f29dbc25Smrg */
2153f29dbc25Smrgunsigned short
2154f29dbc25Smrggfx_get_vblank_end(void)
2155f29dbc25Smrg{
2156f29dbc25Smrg    unsigned short vblank_end = 0;
2157f29dbc25Smrg
2158f29dbc25Smrg#if GFX_DISPLAY_GU1
2159f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
2160f29dbc25Smrg        vblank_end = gu1_get_vblank_end();
2161f29dbc25Smrg#endif
2162f29dbc25Smrg#if GFX_DISPLAY_GU2
2163f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
2164f29dbc25Smrg        vblank_end = gu2_get_vblank_end();
2165f29dbc25Smrg#endif
2166f29dbc25Smrg    return (vblank_end);
2167f29dbc25Smrg}
2168f29dbc25Smrg
2169f29dbc25Smrg/*---------------------------------------------------------------------------
2170f29dbc25Smrg *  gfx_get_display_palette_entry
2171f29dbc25Smrg *---------------------------------------------------------------------------
2172f29dbc25Smrg */
2173f29dbc25Smrgint
2174f29dbc25Smrggfx_get_display_palette_entry(unsigned long index, unsigned long *palette)
2175f29dbc25Smrg{
2176f29dbc25Smrg    int status = 0;
2177f29dbc25Smrg
2178f29dbc25Smrg#if GFX_DISPLAY_GU1
2179f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
2180f29dbc25Smrg        status = gu1_get_display_palette_entry(index, palette);
2181f29dbc25Smrg#endif
2182f29dbc25Smrg#if GFX_DISPLAY_GU2
2183f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
2184f29dbc25Smrg        status = gu2_get_display_palette_entry(index, palette);
2185f29dbc25Smrg#endif
2186f29dbc25Smrg
2187f29dbc25Smrg    return status;
2188f29dbc25Smrg}
2189f29dbc25Smrg
2190f29dbc25Smrg/*---------------------------------------------------------------------------
2191f29dbc25Smrg *  gfx_get_display_palette
2192f29dbc25Smrg *---------------------------------------------------------------------------
2193f29dbc25Smrg */
2194f29dbc25Smrgvoid
2195f29dbc25Smrggfx_get_display_palette(unsigned long *palette)
2196f29dbc25Smrg{
2197f29dbc25Smrg#if GFX_DISPLAY_GU1
2198f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
2199f29dbc25Smrg        gu1_get_display_palette(palette);
2200f29dbc25Smrg#endif
2201f29dbc25Smrg#if GFX_DISPLAY_GU2
2202f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
2203f29dbc25Smrg        gu2_get_display_palette(palette);
2204f29dbc25Smrg#endif
2205f29dbc25Smrg}
2206f29dbc25Smrg
2207f29dbc25Smrg/*---------------------------------------------------------------------------
2208f29dbc25Smrg *  gfx_get_cursor_enable
2209f29dbc25Smrg *---------------------------------------------------------------------------
2210f29dbc25Smrg */
2211f29dbc25Smrgunsigned long
2212f29dbc25Smrggfx_get_cursor_enable(void)
2213f29dbc25Smrg{
2214f29dbc25Smrg    unsigned long enable = 0;
2215f29dbc25Smrg
2216f29dbc25Smrg#if GFX_DISPLAY_GU1
2217f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
2218f29dbc25Smrg        enable = gu1_get_cursor_enable();
2219f29dbc25Smrg#endif
2220f29dbc25Smrg#if GFX_DISPLAY_GU2
2221f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
2222f29dbc25Smrg        enable = gu2_get_cursor_enable();
2223f29dbc25Smrg#endif
2224f29dbc25Smrg    return (enable);
2225f29dbc25Smrg}
2226f29dbc25Smrg
2227f29dbc25Smrg/*---------------------------------------------------------------------------
2228f29dbc25Smrg *  gfx_get_cursor_position
2229f29dbc25Smrg *---------------------------------------------------------------------------
2230f29dbc25Smrg */
2231f29dbc25Smrgunsigned long
2232f29dbc25Smrggfx_get_cursor_position(void)
2233f29dbc25Smrg{
2234f29dbc25Smrg    unsigned long position = 0;
2235f29dbc25Smrg
2236f29dbc25Smrg#if GFX_DISPLAY_GU1
2237f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
2238f29dbc25Smrg        position = gu1_get_cursor_position();
2239f29dbc25Smrg#endif
2240f29dbc25Smrg#if GFX_DISPLAY_GU2
2241f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
2242f29dbc25Smrg        position = gu2_get_cursor_position();
2243f29dbc25Smrg#endif
2244f29dbc25Smrg    return (position);
2245f29dbc25Smrg}
2246f29dbc25Smrg
2247f29dbc25Smrg/*---------------------------------------------------------------------------
2248f29dbc25Smrg *  gfx_get_cursor_clip
2249f29dbc25Smrg *---------------------------------------------------------------------------
2250f29dbc25Smrg */
2251f29dbc25Smrgunsigned long
2252f29dbc25Smrggfx_get_cursor_clip(void)
2253f29dbc25Smrg{
2254f29dbc25Smrg    unsigned long offset = 0;
2255f29dbc25Smrg
2256f29dbc25Smrg#if GFX_DISPLAY_GU1
2257f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
2258f29dbc25Smrg        offset = gu1_get_cursor_clip();
2259f29dbc25Smrg#endif
2260f29dbc25Smrg#if GFX_DISPLAY_GU2
2261f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
2262f29dbc25Smrg        offset = gu2_get_cursor_clip();
2263f29dbc25Smrg#endif
2264f29dbc25Smrg    return (offset);
2265f29dbc25Smrg}
2266f29dbc25Smrg
2267f29dbc25Smrg/*---------------------------------------------------------------------------
2268f29dbc25Smrg *  gfx_get_cursor_color
2269f29dbc25Smrg *---------------------------------------------------------------------------
2270f29dbc25Smrg */
2271f29dbc25Smrgunsigned long
2272f29dbc25Smrggfx_get_cursor_color(int index)
2273f29dbc25Smrg{
2274f29dbc25Smrg    unsigned long color = 0;
2275f29dbc25Smrg
2276f29dbc25Smrg#if GFX_DISPLAY_GU1
2277f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
2278f29dbc25Smrg        color = gu1_get_cursor_color(index);
2279f29dbc25Smrg#endif
2280f29dbc25Smrg#if GFX_DISPLAY_GU2
2281f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
2282f29dbc25Smrg        color = gu2_get_cursor_color(index);
2283f29dbc25Smrg#endif
2284f29dbc25Smrg    return (color);
2285f29dbc25Smrg}
2286f29dbc25Smrg
2287f29dbc25Smrg/*---------------------------------------------------------------------------
2288f29dbc25Smrg *  gfx_get_icon_enable
2289f29dbc25Smrg *---------------------------------------------------------------------------
2290f29dbc25Smrg */
2291f29dbc25Smrgunsigned long
2292f29dbc25Smrggfx_get_icon_enable(void)
2293f29dbc25Smrg{
2294f29dbc25Smrg    unsigned long enable = 0;
2295f29dbc25Smrg
2296f29dbc25Smrg#if GFX_DISPLAY_GU2
2297f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
2298f29dbc25Smrg        enable = gu2_get_icon_enable();
2299f29dbc25Smrg#endif
2300f29dbc25Smrg    return (enable);
2301f29dbc25Smrg}
2302f29dbc25Smrg
2303f29dbc25Smrg/*---------------------------------------------------------------------------
2304f29dbc25Smrg *  gfx_get_icon_offset
2305f29dbc25Smrg *---------------------------------------------------------------------------
2306f29dbc25Smrg */
2307f29dbc25Smrgunsigned long
2308f29dbc25Smrggfx_get_icon_offset(void)
2309f29dbc25Smrg{
2310f29dbc25Smrg    unsigned long base = 0;
2311f29dbc25Smrg
2312f29dbc25Smrg#if GFX_DISPLAY_GU2
2313f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
2314f29dbc25Smrg        base = gu2_get_icon_offset();
2315f29dbc25Smrg#endif
2316f29dbc25Smrg
2317f29dbc25Smrg    return (base);
2318f29dbc25Smrg}
2319f29dbc25Smrg
2320f29dbc25Smrg/*---------------------------------------------------------------------------
2321f29dbc25Smrg *  gfx_get_icon_position
2322f29dbc25Smrg *---------------------------------------------------------------------------
2323f29dbc25Smrg */
2324f29dbc25Smrgunsigned long
2325f29dbc25Smrggfx_get_icon_position(void)
2326f29dbc25Smrg{
2327f29dbc25Smrg    unsigned long position = 0;
2328f29dbc25Smrg
2329f29dbc25Smrg#if GFX_DISPLAY_GU2
2330f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
2331f29dbc25Smrg        position = gu2_get_icon_position();
2332f29dbc25Smrg#endif
2333f29dbc25Smrg
2334f29dbc25Smrg    return (position);
2335f29dbc25Smrg}
2336f29dbc25Smrg
2337f29dbc25Smrg/*---------------------------------------------------------------------------
2338f29dbc25Smrg *  gfx_get_icon_color
2339f29dbc25Smrg *---------------------------------------------------------------------------
2340f29dbc25Smrg */
2341f29dbc25Smrgunsigned long
2342f29dbc25Smrggfx_get_icon_color(int index)
2343f29dbc25Smrg{
2344f29dbc25Smrg    unsigned long color = 0;
2345f29dbc25Smrg
2346f29dbc25Smrg#if GFX_DISPLAY_GU2
2347f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
2348f29dbc25Smrg        color = gu2_get_icon_color(index);
2349f29dbc25Smrg#endif
2350f29dbc25Smrg
2351f29dbc25Smrg    return (color);
2352f29dbc25Smrg}
2353f29dbc25Smrg
2354f29dbc25Smrg/*---------------------------------------------------------------------------
2355f29dbc25Smrg *  gfx_get_compression_enable
2356f29dbc25Smrg *---------------------------------------------------------------------------
2357f29dbc25Smrg */
2358f29dbc25Smrgint
2359f29dbc25Smrggfx_get_compression_enable(void)
2360f29dbc25Smrg{
2361f29dbc25Smrg    int enable = 0;
2362f29dbc25Smrg
2363f29dbc25Smrg#if GFX_DISPLAY_GU1
2364f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
2365f29dbc25Smrg        enable = gu1_get_compression_enable();
2366f29dbc25Smrg#endif
2367f29dbc25Smrg#if GFX_DISPLAY_GU2
2368f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
2369f29dbc25Smrg        enable = gu2_get_compression_enable();
2370f29dbc25Smrg#endif
2371f29dbc25Smrg    return (enable);
2372f29dbc25Smrg}
2373f29dbc25Smrg
2374f29dbc25Smrg/*---------------------------------------------------------------------------
2375f29dbc25Smrg *  gfx_get_compression_offset
2376f29dbc25Smrg *---------------------------------------------------------------------------
2377f29dbc25Smrg */
2378f29dbc25Smrgunsigned long
2379f29dbc25Smrggfx_get_compression_offset(void)
2380f29dbc25Smrg{
2381f29dbc25Smrg    unsigned long offset = 0;
2382f29dbc25Smrg
2383f29dbc25Smrg#if GFX_DISPLAY_GU1
2384f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
2385f29dbc25Smrg        offset = gu1_get_compression_offset();
2386f29dbc25Smrg#endif
2387f29dbc25Smrg#if GFX_DISPLAY_GU2
2388f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
2389f29dbc25Smrg        offset = gu2_get_compression_offset();
2390f29dbc25Smrg#endif
2391f29dbc25Smrg    return (offset);
2392f29dbc25Smrg}
2393f29dbc25Smrg
2394f29dbc25Smrg/*---------------------------------------------------------------------------
2395f29dbc25Smrg * gfx_get_compression_pitch
2396f29dbc25Smrg *---------------------------------------------------------------------------
2397f29dbc25Smrg */
2398f29dbc25Smrgunsigned short
2399f29dbc25Smrggfx_get_compression_pitch(void)
2400f29dbc25Smrg{
2401f29dbc25Smrg    unsigned short pitch = 0;
2402f29dbc25Smrg
2403f29dbc25Smrg#if GFX_DISPLAY_GU1
2404f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
2405f29dbc25Smrg        pitch = gu1_get_compression_pitch();
2406f29dbc25Smrg#endif
2407f29dbc25Smrg#if GFX_DISPLAY_GU2
2408f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
2409f29dbc25Smrg        pitch = gu2_get_compression_pitch();
2410f29dbc25Smrg#endif
2411f29dbc25Smrg    return (pitch);
2412f29dbc25Smrg}
2413f29dbc25Smrg
2414f29dbc25Smrg/*---------------------------------------------------------------------------
2415f29dbc25Smrg * gfx_get_compression_size
2416f29dbc25Smrg *---------------------------------------------------------------------------
2417f29dbc25Smrg */
2418f29dbc25Smrgunsigned short
2419f29dbc25Smrggfx_get_compression_size(void)
2420f29dbc25Smrg{
2421f29dbc25Smrg    unsigned short size = 0;
2422f29dbc25Smrg
2423f29dbc25Smrg#if GFX_DISPLAY_GU1
2424f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
2425f29dbc25Smrg        size = gu1_get_compression_size();
2426f29dbc25Smrg#endif
2427f29dbc25Smrg#if GFX_DISPLAY_GU2
2428f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
2429f29dbc25Smrg        size = gu2_get_compression_size();
2430f29dbc25Smrg#endif
2431f29dbc25Smrg    return (size);
2432f29dbc25Smrg}
2433f29dbc25Smrg
2434f29dbc25Smrg/*---------------------------------------------------------------------------
2435f29dbc25Smrg * gfx_get_display_priority_high
2436f29dbc25Smrg *---------------------------------------------------------------------------
2437f29dbc25Smrg */
2438f29dbc25Smrgint
2439f29dbc25Smrggfx_get_display_priority_high(void)
2440f29dbc25Smrg{
2441f29dbc25Smrg    int high = GFX_STATUS_UNSUPPORTED;
2442f29dbc25Smrg
2443f29dbc25Smrg#if GFX_DISPLAY_GU1
2444f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
2445f29dbc25Smrg        high = gu1_get_display_priority_high();
2446f29dbc25Smrg#endif
2447f29dbc25Smrg    return (high);
2448f29dbc25Smrg}
2449f29dbc25Smrg
2450f29dbc25Smrg/*---------------------------------------------------------------------------
2451f29dbc25Smrg * gfx_get_valid_bit
2452f29dbc25Smrg *---------------------------------------------------------------------------
2453f29dbc25Smrg */
2454f29dbc25Smrgint
2455f29dbc25Smrggfx_get_valid_bit(int line)
2456f29dbc25Smrg{
2457f29dbc25Smrg    int valid = 0;
2458f29dbc25Smrg
2459f29dbc25Smrg#if GFX_DISPLAY_GU1
2460f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
2461f29dbc25Smrg        valid = gu1_get_valid_bit(line);
2462f29dbc25Smrg#endif
2463f29dbc25Smrg#if GFX_DISPLAY_GU2
2464f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
2465f29dbc25Smrg        valid = gu2_get_valid_bit(line);
2466f29dbc25Smrg#endif
2467f29dbc25Smrg    return (valid);
2468f29dbc25Smrg}
2469f29dbc25Smrg
2470f29dbc25Smrg/*---------------------------------------------------------------------------
2471f29dbc25Smrg * gfx_get_display_video_color_key
2472f29dbc25Smrg *---------------------------------------------------------------------------
2473f29dbc25Smrg */
2474f29dbc25Smrgunsigned long
2475f29dbc25Smrggfx_get_display_video_color_key(void)
2476f29dbc25Smrg{
2477f29dbc25Smrg    unsigned long value = 0;
2478f29dbc25Smrg    return (value);
2479f29dbc25Smrg}
2480f29dbc25Smrg
2481f29dbc25Smrg/*---------------------------------------------------------------------------
2482f29dbc25Smrg * gfx_get_display_video_offset
2483f29dbc25Smrg *---------------------------------------------------------------------------
2484f29dbc25Smrg */
2485f29dbc25Smrgunsigned long
2486f29dbc25Smrggfx_get_display_video_offset(void)
2487f29dbc25Smrg{
2488f29dbc25Smrg    unsigned long offset = 0;
2489f29dbc25Smrg
2490f29dbc25Smrg#if GFX_DISPLAY_GU1
2491f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
2492f29dbc25Smrg        offset = gu1_get_display_video_offset();
2493f29dbc25Smrg#endif
2494f29dbc25Smrg#if GFX_DISPLAY_GU2
2495f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
2496f29dbc25Smrg        offset = gu2_get_display_video_offset();
2497f29dbc25Smrg#endif
2498f29dbc25Smrg    return (offset);
2499f29dbc25Smrg}
2500f29dbc25Smrg
2501f29dbc25Smrg/*---------------------------------------------------------------------------
2502f29dbc25Smrg * gfx_get_display_video_yuv_offsets
2503f29dbc25Smrg *---------------------------------------------------------------------------
2504f29dbc25Smrg */
2505f29dbc25Smrgvoid
2506f29dbc25Smrggfx_get_display_video_yuv_offsets(unsigned long *yoffset,
2507f29dbc25Smrg    unsigned long *uoffset, unsigned long *voffset)
2508f29dbc25Smrg{
2509f29dbc25Smrg#if GFX_DISPLAY_GU2
2510f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
2511f29dbc25Smrg        gu2_get_display_video_yuv_offsets(yoffset, uoffset, voffset);
2512f29dbc25Smrg#endif
2513f29dbc25Smrg}
2514f29dbc25Smrg
2515f29dbc25Smrg/*---------------------------------------------------------------------------
2516f29dbc25Smrg * gfx_get_display_video_yuv_offsets
2517f29dbc25Smrg *---------------------------------------------------------------------------
2518f29dbc25Smrg */
2519f29dbc25Smrgvoid
2520f29dbc25Smrggfx_get_display_video_yuv_pitch(unsigned long *ypitch, unsigned long *uvpitch)
2521f29dbc25Smrg{
2522f29dbc25Smrg#if GFX_DISPLAY_GU2
2523f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
2524f29dbc25Smrg        gu2_get_display_video_yuv_pitch(ypitch, uvpitch);
2525f29dbc25Smrg#endif
2526f29dbc25Smrg}
2527f29dbc25Smrg
2528f29dbc25Smrg/*---------------------------------------------------------------------------
2529f29dbc25Smrg * gfx_get_display_video_downscale_delta
2530f29dbc25Smrg *---------------------------------------------------------------------------
2531f29dbc25Smrg */
2532f29dbc25Smrgunsigned long
2533f29dbc25Smrggfx_get_display_video_downscale_delta(void)
2534f29dbc25Smrg{
2535f29dbc25Smrg    unsigned long ret_value = 0;
2536f29dbc25Smrg
2537f29dbc25Smrg#if GFX_DISPLAY_GU2
2538f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
2539f29dbc25Smrg        ret_value = gu2_get_display_video_downscale_delta();
2540f29dbc25Smrg#endif
2541f29dbc25Smrg
2542f29dbc25Smrg    return ret_value;
2543f29dbc25Smrg}
2544f29dbc25Smrg
2545f29dbc25Smrg/*---------------------------------------------------------------------------
2546f29dbc25Smrg * gfx_get_display_video_downscale_delta
2547f29dbc25Smrg *---------------------------------------------------------------------------
2548f29dbc25Smrg */
2549f29dbc25Smrgint
2550f29dbc25Smrggfx_get_display_video_downscale_enable(void)
2551f29dbc25Smrg{
2552f29dbc25Smrg    int ret_value = 0;
2553f29dbc25Smrg
2554f29dbc25Smrg#if GFX_DISPLAY_GU2
2555f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
2556f29dbc25Smrg        ret_value = gu2_get_display_video_downscale_enable();
2557f29dbc25Smrg#endif
2558f29dbc25Smrg
2559f29dbc25Smrg    return ret_value;
2560f29dbc25Smrg}
2561f29dbc25Smrg
2562f29dbc25Smrg/*---------------------------------------------------------------------------
2563f29dbc25Smrg * gfx_get_display_video_size
2564f29dbc25Smrg *---------------------------------------------------------------------------
2565f29dbc25Smrg */
2566f29dbc25Smrgunsigned long
2567f29dbc25Smrggfx_get_display_video_size(void)
2568f29dbc25Smrg{
2569f29dbc25Smrg    unsigned long size = 0;
2570f29dbc25Smrg
2571f29dbc25Smrg#if GFX_DISPLAY_GU1
2572f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
2573f29dbc25Smrg        size = gu1_get_display_video_size();
2574f29dbc25Smrg#endif
2575f29dbc25Smrg#if GFX_DISPLAY_GU2
2576f29dbc25Smrg    if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
2577f29dbc25Smrg        size = gu2_get_display_video_size();
2578f29dbc25Smrg#endif
2579f29dbc25Smrg    return (size);
2580f29dbc25Smrg}
2581f29dbc25Smrg
2582f29dbc25Smrg/*---------------------------------------------------------------------------
2583f29dbc25Smrg * gfx_get_display_video_color_key_mask
2584f29dbc25Smrg *---------------------------------------------------------------------------
2585f29dbc25Smrg */
2586f29dbc25Smrgunsigned long
2587f29dbc25Smrggfx_get_display_video_color_key_mask(void)
2588f29dbc25Smrg{
2589f29dbc25Smrg    unsigned long mask = 0;
2590f29dbc25Smrg    return (mask);
2591f29dbc25Smrg}
2592f29dbc25Smrg
2593f29dbc25Smrg#endif /* GFX_READ_ROUTINES */
2594f29dbc25Smrg
2595f29dbc25Smrg#endif /* GFX_DISPLAY_DYNAMIC */
2596