02419cdeacc6574b76fed30ecb166ee085ad63fb
[platform/kernel/u-boot.git] / drivers / video / videomodes.h
1 /*
2  * (C) Copyright 2004
3  * Pierre Aubert, Staubli Faverges , <p.aubert@staubli.com>
4  *
5  * SPDX-License-Identifier:     GPL-2.0+
6  */
7
8
9 #ifndef CONFIG_SYS_DEFAULT_VIDEO_MODE
10 #define CONFIG_SYS_DEFAULT_VIDEO_MODE   0x301
11 #endif
12
13 /* Some mode definitions */
14 #define FB_SYNC_HOR_HIGH_ACT    1       /* horizontal sync high active  */
15 #define FB_SYNC_VERT_HIGH_ACT   2       /* vertical sync high active    */
16 #define FB_SYNC_EXT             4       /* external sync                */
17 #define FB_SYNC_COMP_HIGH_ACT   8       /* composite sync high active   */
18 #define FB_SYNC_BROADCAST       16      /* broadcast video timings      */
19                                         /* vtotal = 144d/288n/576i => PAL  */
20                                         /* vtotal = 121d/242n/484i => NTSC */
21 #define FB_SYNC_ON_GREEN        32      /* sync on green */
22 #define FB_VMODE_NONINTERLACED  0       /* non interlaced */
23 #define FB_VMODE_INTERLACED     1       /* interlaced   */
24 #define FB_VMODE_DOUBLE         2       /* double scan */
25 #define FB_VMODE_MASK           255
26
27 #define FB_VMODE_YWRAP          256     /* ywrap instead of panning     */
28 #define FB_VMODE_SMOOTH_XPAN    512     /* smooth xpan possible (internally used) */
29 #define FB_VMODE_CONUPDATE      512     /* don't update x/yoffset       */
30
31
32 /******************************************************************
33  * Resolution Struct
34  ******************************************************************/
35 struct ctfb_res_modes {
36         int xres;               /* visible resolution           */
37         int yres;
38         int refresh;            /* vertical refresh rate in hz  */
39         /* Timing: All values in pixclocks, except pixclock (of course) */
40         int pixclock;           /* pixel clock in ps (pico seconds) */
41         int pixclock_khz;       /* pixel clock in kHz           */
42         int left_margin;        /* time from sync to picture    */
43         int right_margin;       /* time from picture to sync    */
44         int upper_margin;       /* time from sync to picture    */
45         int lower_margin;
46         int hsync_len;          /* length of horizontal sync    */
47         int vsync_len;          /* length of vertical sync      */
48         int sync;               /* see FB_SYNC_*                */
49         int vmode;              /* see FB_VMODE_*               */
50 };
51
52 /******************************************************************
53  * Vesa Mode Struct
54  ******************************************************************/
55 struct ctfb_vesa_modes {
56         int vesanr;             /* Vesa number as in LILO (VESA Nr + 0x200} */
57         int resindex;           /* index to resolution struct */
58         int bits_per_pixel;     /* bpp */
59 };
60
61 #define RES_MODE_640x480        0
62 #define RES_MODE_800x600        1
63 #define RES_MODE_1024x768       2
64 #define RES_MODE_960_720        3
65 #define RES_MODE_1152x864       4
66 #define RES_MODE_1280x1024      5
67 #define RES_MODE_1280x720       6
68 #define RES_MODE_1360x768       7
69 #define RES_MODE_1920x1080      8
70 #define RES_MODE_1920x1200      9
71 #define RES_MODES_COUNT         10
72
73 #define VESA_MODES_COUNT 19
74
75 extern const struct ctfb_vesa_modes vesa_modes[];
76 extern const struct ctfb_res_modes res_mode_init[];
77
78 int video_get_params (struct ctfb_res_modes *pPar, char *penv);
79
80 int video_get_video_mode(unsigned int *xres, unsigned int *yres,
81         unsigned int *depth, unsigned int *freq, const char **options);
82
83 void video_get_ctfb_res_modes(int default_mode, unsigned int default_depth,
84                               const struct ctfb_res_modes **mode_ret,
85                               unsigned int *depth_ret,
86                               const char **options);