Home | History | Annotate | Download | only in video
      1 /* SPDX-License-Identifier: GPL-2.0+ */
      2 /*
      3  * (C) Copyright 2004
      4  * Pierre Aubert, Staubli Faverges , <p.aubert (at) staubli.com>
      5  */
      6 
      7 #include <edid.h>
      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);
     87 
     88 void video_get_option_string(const char *options, const char *name,
     89 			     char *dest, int dest_len, const char *def);
     90 
     91 int video_get_option_int(const char *options, const char *name, int def);
     92 
     93 int video_edid_dtd_to_ctfb_res_modes(struct edid_detailed_timing *t,
     94 				     struct ctfb_res_modes *mode);
     95