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