1*352d2591SJean-Christophe PLAGNIOL-VILLARD /* 2*352d2591SJean-Christophe PLAGNIOL-VILLARD * (C) Copyright 2004 3*352d2591SJean-Christophe PLAGNIOL-VILLARD * Pierre Aubert, Staubli Faverges , <p.aubert@staubli.com> 4*352d2591SJean-Christophe PLAGNIOL-VILLARD * 5*352d2591SJean-Christophe PLAGNIOL-VILLARD * See file CREDITS for list of people who contributed to this 6*352d2591SJean-Christophe PLAGNIOL-VILLARD * project. 7*352d2591SJean-Christophe PLAGNIOL-VILLARD * 8*352d2591SJean-Christophe PLAGNIOL-VILLARD * This program is free software; you can redistribute it and/or 9*352d2591SJean-Christophe PLAGNIOL-VILLARD * modify it under the terms of the GNU General Public License as 10*352d2591SJean-Christophe PLAGNIOL-VILLARD * published by the Free Software Foundation; either version 2 of 11*352d2591SJean-Christophe PLAGNIOL-VILLARD * the License, or (at your option) any later version. 12*352d2591SJean-Christophe PLAGNIOL-VILLARD * 13*352d2591SJean-Christophe PLAGNIOL-VILLARD * This program is distributed in the hope that it will be useful, 14*352d2591SJean-Christophe PLAGNIOL-VILLARD * but WITHOUT ANY WARRANTY; without even the implied warranty of 15*352d2591SJean-Christophe PLAGNIOL-VILLARD * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16*352d2591SJean-Christophe PLAGNIOL-VILLARD * GNU General Public License for more details. 17*352d2591SJean-Christophe PLAGNIOL-VILLARD * 18*352d2591SJean-Christophe PLAGNIOL-VILLARD * You should have received a copy of the GNU General Public License 19*352d2591SJean-Christophe PLAGNIOL-VILLARD * along with this program; if not, write to the Free Software 20*352d2591SJean-Christophe PLAGNIOL-VILLARD * Foundation, Inc., 59 Temple Place, Suite 330, Boston, 21*352d2591SJean-Christophe PLAGNIOL-VILLARD * MA 02111-1307 USA 22*352d2591SJean-Christophe PLAGNIOL-VILLARD */ 23*352d2591SJean-Christophe PLAGNIOL-VILLARD 24*352d2591SJean-Christophe PLAGNIOL-VILLARD 25*352d2591SJean-Christophe PLAGNIOL-VILLARD #ifndef CFG_DEFAULT_VIDEO_MODE 26*352d2591SJean-Christophe PLAGNIOL-VILLARD #define CFG_DEFAULT_VIDEO_MODE 0x301 27*352d2591SJean-Christophe PLAGNIOL-VILLARD #endif 28*352d2591SJean-Christophe PLAGNIOL-VILLARD 29*352d2591SJean-Christophe PLAGNIOL-VILLARD /* Some mode definitions */ 30*352d2591SJean-Christophe PLAGNIOL-VILLARD #define FB_SYNC_HOR_HIGH_ACT 1 /* horizontal sync high active */ 31*352d2591SJean-Christophe PLAGNIOL-VILLARD #define FB_SYNC_VERT_HIGH_ACT 2 /* vertical sync high active */ 32*352d2591SJean-Christophe PLAGNIOL-VILLARD #define FB_SYNC_EXT 4 /* external sync */ 33*352d2591SJean-Christophe PLAGNIOL-VILLARD #define FB_SYNC_COMP_HIGH_ACT 8 /* composite sync high active */ 34*352d2591SJean-Christophe PLAGNIOL-VILLARD #define FB_SYNC_BROADCAST 16 /* broadcast video timings */ 35*352d2591SJean-Christophe PLAGNIOL-VILLARD /* vtotal = 144d/288n/576i => PAL */ 36*352d2591SJean-Christophe PLAGNIOL-VILLARD /* vtotal = 121d/242n/484i => NTSC */ 37*352d2591SJean-Christophe PLAGNIOL-VILLARD #define FB_SYNC_ON_GREEN 32 /* sync on green */ 38*352d2591SJean-Christophe PLAGNIOL-VILLARD #define FB_VMODE_NONINTERLACED 0 /* non interlaced */ 39*352d2591SJean-Christophe PLAGNIOL-VILLARD #define FB_VMODE_INTERLACED 1 /* interlaced */ 40*352d2591SJean-Christophe PLAGNIOL-VILLARD #define FB_VMODE_DOUBLE 2 /* double scan */ 41*352d2591SJean-Christophe PLAGNIOL-VILLARD #define FB_VMODE_MASK 255 42*352d2591SJean-Christophe PLAGNIOL-VILLARD 43*352d2591SJean-Christophe PLAGNIOL-VILLARD #define FB_VMODE_YWRAP 256 /* ywrap instead of panning */ 44*352d2591SJean-Christophe PLAGNIOL-VILLARD #define FB_VMODE_SMOOTH_XPAN 512 /* smooth xpan possible (internally used) */ 45*352d2591SJean-Christophe PLAGNIOL-VILLARD #define FB_VMODE_CONUPDATE 512 /* don't update x/yoffset */ 46*352d2591SJean-Christophe PLAGNIOL-VILLARD 47*352d2591SJean-Christophe PLAGNIOL-VILLARD 48*352d2591SJean-Christophe PLAGNIOL-VILLARD /****************************************************************** 49*352d2591SJean-Christophe PLAGNIOL-VILLARD * Resolution Struct 50*352d2591SJean-Christophe PLAGNIOL-VILLARD ******************************************************************/ 51*352d2591SJean-Christophe PLAGNIOL-VILLARD struct ctfb_res_modes { 52*352d2591SJean-Christophe PLAGNIOL-VILLARD int xres; /* visible resolution */ 53*352d2591SJean-Christophe PLAGNIOL-VILLARD int yres; 54*352d2591SJean-Christophe PLAGNIOL-VILLARD /* Timing: All values in pixclocks, except pixclock (of course) */ 55*352d2591SJean-Christophe PLAGNIOL-VILLARD int pixclock; /* pixel clock in ps (pico seconds) */ 56*352d2591SJean-Christophe PLAGNIOL-VILLARD int left_margin; /* time from sync to picture */ 57*352d2591SJean-Christophe PLAGNIOL-VILLARD int right_margin; /* time from picture to sync */ 58*352d2591SJean-Christophe PLAGNIOL-VILLARD int upper_margin; /* time from sync to picture */ 59*352d2591SJean-Christophe PLAGNIOL-VILLARD int lower_margin; 60*352d2591SJean-Christophe PLAGNIOL-VILLARD int hsync_len; /* length of horizontal sync */ 61*352d2591SJean-Christophe PLAGNIOL-VILLARD int vsync_len; /* length of vertical sync */ 62*352d2591SJean-Christophe PLAGNIOL-VILLARD int sync; /* see FB_SYNC_* */ 63*352d2591SJean-Christophe PLAGNIOL-VILLARD int vmode; /* see FB_VMODE_* */ 64*352d2591SJean-Christophe PLAGNIOL-VILLARD }; 65*352d2591SJean-Christophe PLAGNIOL-VILLARD 66*352d2591SJean-Christophe PLAGNIOL-VILLARD /****************************************************************** 67*352d2591SJean-Christophe PLAGNIOL-VILLARD * Vesa Mode Struct 68*352d2591SJean-Christophe PLAGNIOL-VILLARD ******************************************************************/ 69*352d2591SJean-Christophe PLAGNIOL-VILLARD struct ctfb_vesa_modes { 70*352d2591SJean-Christophe PLAGNIOL-VILLARD int vesanr; /* Vesa number as in LILO (VESA Nr + 0x200} */ 71*352d2591SJean-Christophe PLAGNIOL-VILLARD int resindex; /* index to resolution struct */ 72*352d2591SJean-Christophe PLAGNIOL-VILLARD int bits_per_pixel; /* bpp */ 73*352d2591SJean-Christophe PLAGNIOL-VILLARD }; 74*352d2591SJean-Christophe PLAGNIOL-VILLARD 75*352d2591SJean-Christophe PLAGNIOL-VILLARD #define RES_MODE_640x480 0 76*352d2591SJean-Christophe PLAGNIOL-VILLARD #define RES_MODE_800x600 1 77*352d2591SJean-Christophe PLAGNIOL-VILLARD #define RES_MODE_1024x768 2 78*352d2591SJean-Christophe PLAGNIOL-VILLARD #define RES_MODE_960_720 3 79*352d2591SJean-Christophe PLAGNIOL-VILLARD #define RES_MODE_1152x864 4 80*352d2591SJean-Christophe PLAGNIOL-VILLARD #define RES_MODE_1280x1024 5 81*352d2591SJean-Christophe PLAGNIOL-VILLARD #define RES_MODES_COUNT 6 82*352d2591SJean-Christophe PLAGNIOL-VILLARD 83*352d2591SJean-Christophe PLAGNIOL-VILLARD #define VESA_MODES_COUNT 19 84*352d2591SJean-Christophe PLAGNIOL-VILLARD 85*352d2591SJean-Christophe PLAGNIOL-VILLARD extern const struct ctfb_vesa_modes vesa_modes[]; 86*352d2591SJean-Christophe PLAGNIOL-VILLARD extern const struct ctfb_res_modes res_mode_init[]; 87*352d2591SJean-Christophe PLAGNIOL-VILLARD 88*352d2591SJean-Christophe PLAGNIOL-VILLARD int video_get_params (struct ctfb_res_modes *pPar, char *penv); 89