diff options
Diffstat (limited to 'include/smiLynxEM.h')
| -rw-r--r-- | include/smiLynxEM.h | 179 | 
1 files changed, 179 insertions, 0 deletions
| diff --git a/include/smiLynxEM.h b/include/smiLynxEM.h new file mode 100644 index 000000000..cdd2f2417 --- /dev/null +++ b/include/smiLynxEM.h @@ -0,0 +1,179 @@ +/* + * (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_ */ |