| /* | 
 |  * (C) Copyright 1997-2002 ELTEC Elektronik AG | 
 |  * Frank Gottschling <fgottschling@eltec.de> | 
 |  * | 
 |  * See file CREDITS for list of people who contributed to this | 
 |  * project. | 
 |  * | 
 |  * This program is free software; you can redistribute it and/or | 
 |  * modify it under the terms of the GNU General Public License as | 
 |  * published by the Free Software Foundation; either version 2 of | 
 |  * the License, or (at your option) any later version. | 
 |  * | 
 |  * This program is distributed in the hope that it will be useful, | 
 |  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
 |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
 |  * GNU General Public License for more details. | 
 |  * | 
 |  * You should have received a copy of the GNU General Public License | 
 |  * along with this program; if not, write to the Free Software | 
 |  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, | 
 |  * MA 02111-1307 USA | 
 |  */ | 
 |  | 
 | /* | 
 |  * smiLynxEM.h | 
 |  * Silicon Motion graphic interface for sm810/sm710/sm712 accelerator | 
 |  * | 
 |  * | 
 |  *  modification history | 
 |  *  -------------------- | 
 |  *  04-18-2002 Rewritten for U-Boot <fgottschling@eltec.de>. | 
 |  */ | 
 |  | 
 | #ifndef _SMI_LYNX_EM_H_ | 
 | #define _SMI_LYNX_EM_H_ | 
 |  | 
 | /* | 
 |  * SMI 710/712 have 4MB internal RAM; SMI 810 2MB internal + 2MB external | 
 |  */ | 
 | #define VIDEO_MEM_SIZE  0x400000 | 
 |  | 
 | /* | 
 |  * Supported video modes for SMI Lynx E/EM/EM+ | 
 |  */ | 
 | #define VIDEO_MODES             7 | 
 | #define DUAL_800_600            0   /* SMI710:VGA1:75Hz     (pitch=1600) */ | 
 | 				    /*        VGA2:60/120Hz (pitch=1600) */ | 
 | 				    /* SMI810:VGA1:75Hz     (pitch=1600) */ | 
 | 				    /*        VGA2:75Hz     (pitch=1600) */ | 
 | #define DUAL_1024_768           1   /* VGA1:75Hz VGA2:73Hz (pitch=2048)  */ | 
 | #define SINGLE_800_600          2   /* VGA1:75Hz (pitch=800)             */ | 
 | #define SINGLE_1024_768         3   /* VGA1:75Hz (pitch=1024)            */ | 
 | #define SINGLE_1280_1024        4   /* VGA1:75Hz (pitch=1280)            */ | 
 | #define TV_MODE_CCIR            5   /* VGA1:50Hz (h=720;v=576;pitch=720) */ | 
 | #define TV_MODE_EIA             6   /* VGA1:60Hz (h=720;v=484;pitch=720) */ | 
 |  | 
 |  | 
 | /* | 
 |  * ISA mapped regs | 
 |  */ | 
 | #define SMI_INDX_C4             (pGD->isaBase + 0x03c4)    /* index reg */ | 
 | #define SMI_DATA_C5             (pGD->isaBase + 0x03c5)    /* data reg */ | 
 | #define SMI_INDX_D4             (pGD->isaBase + 0x03d4)    /* index reg */ | 
 | #define SMI_DATA_D5             (pGD->isaBase + 0x03d5)    /* data reg */ | 
 | #define SMI_INDX_CE             (pGD->isaBase + 0x03ce)    /* index reg */ | 
 | #define SMI_DATA_CF             (pGD->isaBase + 0x03cf)    /* data reg */ | 
 | #define SMI_LOCK_REG            (pGD->isaBase + 0x03c3)    /* unlock/lock ext crt reg */ | 
 | #define SMI_MISC_REG            (pGD->isaBase + 0x03c2)    /* misc reg */ | 
 | #define SMI_LUT_MASK            (pGD->isaBase + 0x03c6)    /* lut mask reg */ | 
 | #define SMI_LUT_START           (pGD->isaBase + 0x03c8)    /* lut start index */ | 
 | #define SMI_LUT_RGB             (pGD->isaBase + 0x03c9)    /* lut colors auto incr.*/ | 
 |  | 
 |  | 
 | /* | 
 |  * Video processor control | 
 |  */ | 
 | typedef struct { | 
 |     unsigned int   control; | 
 |     unsigned int   colorKey; | 
 |     unsigned int   colorKeyMask; | 
 |     unsigned int   start; | 
 |     unsigned short offset; | 
 |     unsigned short width; | 
 |     unsigned int   fifoPrio; | 
 |     unsigned int   fifoERL; | 
 |     unsigned int   YUVtoRGB; | 
 | } SmiVideoProc; | 
 |  | 
 | /* | 
 |  * Video window control | 
 |  */ | 
 | typedef struct { | 
 |     unsigned short top; | 
 |     unsigned short left; | 
 |     unsigned short bottom; | 
 |     unsigned short right; | 
 |     unsigned int   srcStart; | 
 |     unsigned short width; | 
 |     unsigned short offset; | 
 |     unsigned char  hStretch; | 
 |     unsigned char  vStretch; | 
 | } SmiVideoWin; | 
 |  | 
 | /* | 
 |  * Capture port control | 
 |  */ | 
 | typedef struct { | 
 |     unsigned int   control; | 
 |     unsigned short topClip; | 
 |     unsigned short leftClip; | 
 |     unsigned short srcHeight; | 
 |     unsigned short srcWidth; | 
 |     unsigned int   srcBufStart1; | 
 |     unsigned int   srcBufStart2; | 
 |     unsigned short srcOffset; | 
 |     unsigned short fifoControl; | 
 | } SmiCapturePort; | 
 |  | 
 |  | 
 | /******************************************************************************/ | 
 | /* Export Graphic Driver Control                                              */ | 
 | /******************************************************************************/ | 
 |  | 
 | typedef struct { | 
 |     unsigned int isaBase; | 
 |     unsigned int pciBase; | 
 |     unsigned int dprBase; | 
 |     unsigned int vprBase; | 
 |     unsigned int cprBase; | 
 |     unsigned int frameAdrs; | 
 |     unsigned int memSize; | 
 |     unsigned int mode; | 
 |     unsigned int gdfIndex; | 
 |     unsigned int gdfBytesPP; | 
 |     unsigned int fg; | 
 |     unsigned int bg; | 
 |     unsigned int plnSizeX; | 
 |     unsigned int plnSizeY; | 
 |     unsigned int winSizeX; | 
 |     unsigned int winSizeY; | 
 |     char modeIdent[80]; | 
 | } GraphicDevice; | 
 |  | 
 | extern GraphicDevice smi; | 
 |  | 
 |  | 
 | /******************************************************************************/ | 
 | /* Export Graphic Functions                                                   */ | 
 | /******************************************************************************/ | 
 |  | 
 | void *video_hw_init (void);       /* returns GraphicDevice struct or NULL */ | 
 |  | 
 | void video_hw_bitblt ( | 
 |     unsigned int bpp,             /* bytes per pixel */ | 
 |     unsigned int src_x,           /* source pos x */ | 
 |     unsigned int src_y,           /* source pos y */ | 
 |     unsigned int dst_x,           /* dest pos x */ | 
 |     unsigned int dst_y,           /* dest pos y */ | 
 |     unsigned int dim_x,           /* frame width */ | 
 |     unsigned int dim_y            /* frame height */ | 
 |     ); | 
 |  | 
 | void video_hw_rectfill ( | 
 |     unsigned int bpp,             /* bytes per pixel */ | 
 |     unsigned int dst_x,           /* dest pos x */ | 
 |     unsigned int dst_y,           /* dest pos y */ | 
 |     unsigned int dim_x,           /* frame width */ | 
 |     unsigned int dim_y,           /* frame height */ | 
 |     unsigned int color            /* fill color */ | 
 |      ); | 
 |  | 
 | void video_set_lut ( | 
 |     unsigned int index,           /* color number */ | 
 |     unsigned char r,              /* red */ | 
 |     unsigned char g,              /* green */ | 
 |     unsigned char b               /* blue */ | 
 |     ); | 
 |  | 
 | #endif /*_SMI_LYNX_EM_H_ */ |