/* * (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_ */