180 lines
5.9 KiB
C
180 lines
5.9 KiB
C
/*
|
|
* (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_ */
|