1 /* SPDX-License-Identifier: GPL-2.0+ */ 2 /* 3 * (C) Copyright 2004 4 * Pierre Aubert, Staubli Faverges , <p.aubert@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