xref: /rk3399_rockchip-uboot/drivers/video/videomodes.h (revision e976b868f2f77eddf7f61d52dfe2a23075ae272d)
1352d2591SJean-Christophe PLAGNIOL-VILLARD /*
2352d2591SJean-Christophe PLAGNIOL-VILLARD  * (C) Copyright 2004
3352d2591SJean-Christophe PLAGNIOL-VILLARD  * Pierre Aubert, Staubli Faverges , <p.aubert@staubli.com>
4352d2591SJean-Christophe PLAGNIOL-VILLARD  *
51a459660SWolfgang Denk  * SPDX-License-Identifier:	GPL-2.0+
6352d2591SJean-Christophe PLAGNIOL-VILLARD  */
7352d2591SJean-Christophe PLAGNIOL-VILLARD 
8352d2591SJean-Christophe PLAGNIOL-VILLARD 
96d0f6bcfSJean-Christophe PLAGNIOL-VILLARD #ifndef CONFIG_SYS_DEFAULT_VIDEO_MODE
106d0f6bcfSJean-Christophe PLAGNIOL-VILLARD #define CONFIG_SYS_DEFAULT_VIDEO_MODE	0x301
11352d2591SJean-Christophe PLAGNIOL-VILLARD #endif
12352d2591SJean-Christophe PLAGNIOL-VILLARD 
13352d2591SJean-Christophe PLAGNIOL-VILLARD /* Some mode definitions */
14352d2591SJean-Christophe PLAGNIOL-VILLARD #define FB_SYNC_HOR_HIGH_ACT	1	/* horizontal sync high active	*/
15352d2591SJean-Christophe PLAGNIOL-VILLARD #define FB_SYNC_VERT_HIGH_ACT	2	/* vertical sync high active	*/
16352d2591SJean-Christophe PLAGNIOL-VILLARD #define FB_SYNC_EXT		4	/* external sync		*/
17352d2591SJean-Christophe PLAGNIOL-VILLARD #define FB_SYNC_COMP_HIGH_ACT	8	/* composite sync high active	*/
18352d2591SJean-Christophe PLAGNIOL-VILLARD #define FB_SYNC_BROADCAST	16	/* broadcast video timings	*/
19352d2591SJean-Christophe PLAGNIOL-VILLARD 					/* vtotal = 144d/288n/576i => PAL  */
20352d2591SJean-Christophe PLAGNIOL-VILLARD 					/* vtotal = 121d/242n/484i => NTSC */
21352d2591SJean-Christophe PLAGNIOL-VILLARD #define FB_SYNC_ON_GREEN	32	/* sync on green */
22352d2591SJean-Christophe PLAGNIOL-VILLARD #define FB_VMODE_NONINTERLACED	0	/* non interlaced */
23352d2591SJean-Christophe PLAGNIOL-VILLARD #define FB_VMODE_INTERLACED	1	/* interlaced	*/
24352d2591SJean-Christophe PLAGNIOL-VILLARD #define FB_VMODE_DOUBLE		2	/* double scan */
25352d2591SJean-Christophe PLAGNIOL-VILLARD #define FB_VMODE_MASK		255
26352d2591SJean-Christophe PLAGNIOL-VILLARD 
27352d2591SJean-Christophe PLAGNIOL-VILLARD #define FB_VMODE_YWRAP		256	/* ywrap instead of panning	*/
28352d2591SJean-Christophe PLAGNIOL-VILLARD #define FB_VMODE_SMOOTH_XPAN	512	/* smooth xpan possible (internally used) */
29352d2591SJean-Christophe PLAGNIOL-VILLARD #define FB_VMODE_CONUPDATE	512	/* don't update x/yoffset	*/
30352d2591SJean-Christophe PLAGNIOL-VILLARD 
31352d2591SJean-Christophe PLAGNIOL-VILLARD 
32352d2591SJean-Christophe PLAGNIOL-VILLARD /******************************************************************
33352d2591SJean-Christophe PLAGNIOL-VILLARD  * Resolution Struct
34352d2591SJean-Christophe PLAGNIOL-VILLARD  ******************************************************************/
35352d2591SJean-Christophe PLAGNIOL-VILLARD struct ctfb_res_modes {
36352d2591SJean-Christophe PLAGNIOL-VILLARD 	int xres;		/* visible resolution		*/
37352d2591SJean-Christophe PLAGNIOL-VILLARD 	int yres;
380c91d257SHans de Goede 	int refresh;		/* vertical refresh rate in hz  */
39352d2591SJean-Christophe PLAGNIOL-VILLARD 	/* Timing: All values in pixclocks, except pixclock (of course) */
40352d2591SJean-Christophe PLAGNIOL-VILLARD 	int pixclock;		/* pixel clock in ps (pico seconds) */
410c91d257SHans de Goede 	int pixclock_khz;	/* pixel clock in kHz           */
42352d2591SJean-Christophe PLAGNIOL-VILLARD 	int left_margin;	/* time from sync to picture	*/
43352d2591SJean-Christophe PLAGNIOL-VILLARD 	int right_margin;	/* time from picture to sync	*/
44352d2591SJean-Christophe PLAGNIOL-VILLARD 	int upper_margin;	/* time from sync to picture	*/
45352d2591SJean-Christophe PLAGNIOL-VILLARD 	int lower_margin;
46352d2591SJean-Christophe PLAGNIOL-VILLARD 	int hsync_len;		/* length of horizontal sync	*/
47352d2591SJean-Christophe PLAGNIOL-VILLARD 	int vsync_len;		/* length of vertical sync	*/
48352d2591SJean-Christophe PLAGNIOL-VILLARD 	int sync;		/* see FB_SYNC_*		*/
49352d2591SJean-Christophe PLAGNIOL-VILLARD 	int vmode;		/* see FB_VMODE_*		*/
50352d2591SJean-Christophe PLAGNIOL-VILLARD };
51352d2591SJean-Christophe PLAGNIOL-VILLARD 
52352d2591SJean-Christophe PLAGNIOL-VILLARD /******************************************************************
53352d2591SJean-Christophe PLAGNIOL-VILLARD  * Vesa Mode Struct
54352d2591SJean-Christophe PLAGNIOL-VILLARD  ******************************************************************/
55352d2591SJean-Christophe PLAGNIOL-VILLARD struct ctfb_vesa_modes {
56352d2591SJean-Christophe PLAGNIOL-VILLARD 	int vesanr;		/* Vesa number as in LILO (VESA Nr + 0x200} */
57352d2591SJean-Christophe PLAGNIOL-VILLARD 	int resindex;		/* index to resolution struct */
58352d2591SJean-Christophe PLAGNIOL-VILLARD 	int bits_per_pixel;	/* bpp */
59352d2591SJean-Christophe PLAGNIOL-VILLARD };
60352d2591SJean-Christophe PLAGNIOL-VILLARD 
61352d2591SJean-Christophe PLAGNIOL-VILLARD #define RES_MODE_640x480	0
62352d2591SJean-Christophe PLAGNIOL-VILLARD #define RES_MODE_800x600	1
63352d2591SJean-Christophe PLAGNIOL-VILLARD #define RES_MODE_1024x768	2
64352d2591SJean-Christophe PLAGNIOL-VILLARD #define RES_MODE_960_720	3
65352d2591SJean-Christophe PLAGNIOL-VILLARD #define RES_MODE_1152x864	4
66352d2591SJean-Christophe PLAGNIOL-VILLARD #define RES_MODE_1280x1024	5
6759bb6109SHans de Goede #define RES_MODE_1280x720	6
6859bb6109SHans de Goede #define RES_MODE_1360x768	7
6959bb6109SHans de Goede #define RES_MODE_1920x1080	8
7059bb6109SHans de Goede #define RES_MODE_1920x1200	9
7159bb6109SHans de Goede #define RES_MODES_COUNT		10
72352d2591SJean-Christophe PLAGNIOL-VILLARD 
73352d2591SJean-Christophe PLAGNIOL-VILLARD #define VESA_MODES_COUNT 19
74352d2591SJean-Christophe PLAGNIOL-VILLARD 
75352d2591SJean-Christophe PLAGNIOL-VILLARD extern const struct ctfb_vesa_modes vesa_modes[];
76352d2591SJean-Christophe PLAGNIOL-VILLARD extern const struct ctfb_res_modes res_mode_init[];
77352d2591SJean-Christophe PLAGNIOL-VILLARD 
78352d2591SJean-Christophe PLAGNIOL-VILLARD int video_get_params (struct ctfb_res_modes *pPar, char *penv);
79a5dbdc81STimur Tabi 
80a5dbdc81STimur Tabi int video_get_video_mode(unsigned int *xres, unsigned int *yres,
81a5dbdc81STimur Tabi 	unsigned int *depth, unsigned int *freq, const char **options);
82*e976b868SHans de Goede 
83*e976b868SHans de Goede void video_get_ctfb_res_modes(int default_mode, unsigned int default_depth,
84*e976b868SHans de Goede 			      const struct ctfb_res_modes **mode_ret,
85*e976b868SHans de Goede 			      unsigned int *depth_ret,
86*e976b868SHans de Goede 			      const char **options);
87