⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 smilynxem.c

📁 PPC Linux Driver, use makefile to compare the routen in Linux.
💻 C
📖 第 1 页 / 共 3 页
字号:
/* * (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.c * * Silicon Motion graphic interface for sm810/sm710/sm712 accelerator  * * modification history * -------------------- * 04-18-2002 Rewritten for PPCBoot <fgottschling@eltec.de>. *  */#include <common.h>#if defined(CONFIG_VIDEO_SMI_LYNXEM)#include <pci.h>#include <video_fb.h>/* * Export Graphic Device */GraphicDevice smi;/* * 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;/* * Register values for common video modes */static char SMI_SCR[22] = {    /* all modes */    0x10, 0xff, 0x11, 0xff, 0x12, 0xff, 0x13, 0xff, 0x14, 0x00, 0x15, 0x90,    0x16, 0x10, 0x17, 0x2c, 0x18, 0xb1, 0x19, 0x20, 0x1a, 0x01};static char SMI_EXT_CRT[VIDEO_MODES][24] = {    { /* DUAL_800_600_8 */    0x30, 0x00, 0x31, 0x00, 0x32, 0x00, 0x33, 0x00, 0x34, 0x00, 0x35, 0x00,    0x36, 0x00, 0x3b, 0x00, 0x3c, 0x00, 0x3d, 0x00, 0x3e, 0x00, 0x3f, 0x00    },    { /* DUAL_1024_768_8 */    0x30, 0x00, 0x31, 0x00, 0x32, 0x00, 0x33, 0x00, 0x34, 0x00, 0x35, 0x00,    0x36, 0x00, 0x3b, 0x00, 0x3c, 0x00, 0x3d, 0x00, 0x3e, 0x00, 0x3f, 0x00    },    { /* SINGLE_800_600_8 */    0x30, 0x00, 0x31, 0x00, 0x32, 0x00, 0x33, 0x00, 0x34, 0x00, 0x35, 0x00,    0x36, 0x00, 0x3b, 0x00, 0x3c, 0x00, 0x3d, 0x00, 0x3e, 0x00, 0x3f, 0x00    },    { /* SINGLE_1024_768_8 */    0x30, 0x00, 0x31, 0x00, 0x32, 0x00, 0x33, 0x00, 0x34, 0x00, 0x35, 0x00,    0x36, 0x00, 0x3b, 0x00, 0x3c, 0x00, 0x3d, 0x00, 0x3e, 0x00, 0x3f, 0x00    },    { /* SINGLE_1280_1024_8 */    0x30, 0x09, 0x31, 0x00, 0x32, 0x00, 0x33, 0x00, 0x34, 0x00, 0x35, 0x00,    0x36, 0x00, 0x3b, 0x00, 0x3c, 0x00, 0x3d, 0x00, 0x3e, 0x00, 0x3f, 0x00    },    { /* TV_MODE_CCIR */    0x30, 0x80, 0x31, 0x2b, 0x32, 0x06, 0x33, 0x01, 0x34, 0x26, 0x35, 0x88,    0x36, 0x02, 0x38, 0x11, 0x39, 0x11, 0x3a, 0x20, 0x3e, 0xa3, 0x3f, 0x00    },    { /* TV_MODE_EIA */    0x30, 0x80, 0x31, 0x2b, 0x32, 0x06, 0x33, 0x00, 0x34, 0xf8, 0x35, 0x88,    0x36, 0x02, 0x38, 0x11, 0x39, 0x11, 0x3a, 0x20, 0x3e, 0xa3, 0x3f, 0x00    },};static char SMI_CRTCR[VIDEO_MODES][50] = {    { /* DUAL_800_600_8 */    0x00, 0x7f, 0x01, 0x63, 0x02, 0x63, 0x03, 0x00, 0x04, 0x68, 0x05, 0x12,    0x06, 0x6f, 0x07, 0xf0, 0x08, 0x00, 0x09, 0x60, 0x0a, 0x00, 0x0b, 0x00,    0x0c, 0x00, 0x0d, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x10, 0x59, 0x11, 0x2c,    0x12, 0x57, 0x13, 0x64, 0x14, 0x40, 0x15, 0x57, 0x16, 0x00, 0x17, 0xe3,    0x18, 0xff    },    { /* DUAL_1024_768_8 */    0x00, 0x9f, 0x01, 0x7f, 0x02, 0x7f, 0x03, 0x00, 0x04, 0x82, 0x05, 0x0e,    0x06, 0x1e, 0x07, 0xf5, 0x08, 0x00, 0x09, 0x60, 0x0a, 0x00, 0x0b, 0x00,    0x0c, 0x00, 0x0d, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x10, 0x01, 0x11, 0x24,    0x12, 0xff, 0x13, 0x80, 0x14, 0x40, 0x15, 0xff, 0x16, 0x00, 0x17, 0xe3,    0x18, 0xff    },    { /* SINGLE_800_600_8 */    0x00, 0x7f, 0x01, 0x63, 0x02, 0x63, 0x03, 0x00, 0x04, 0x68, 0x05, 0x12,    0x06, 0x6f, 0x07, 0xf0, 0x08, 0x00, 0x09, 0x60, 0x0a, 0x00, 0x0b, 0x00,    0x0c, 0x00, 0x0d, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x10, 0x59, 0x11, 0x2c,    0x12, 0x57, 0x13, 0x32, 0x14, 0x40, 0x15, 0x57, 0x16, 0x00, 0x17, 0xe3,    0x18, 0xff    },    { /* SINGLE_1024_768_8 */    0x00, 0x9f, 0x01, 0x7f, 0x02, 0x7f, 0x03, 0x00, 0x04, 0x82, 0x05, 0x0e,    0x06, 0x1e, 0x07, 0xf5, 0x08, 0x00, 0x09, 0x60, 0x0a, 0x00, 0x0b, 0x00,    0x0c, 0x00, 0x0d, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x10, 0x01, 0x11, 0x24,    0x12, 0xff, 0x13, 0x40, 0x14, 0x40, 0x15, 0xff, 0x16, 0x00, 0x17, 0xe3,    0x18, 0xff    },    { /* SINGLE_1280_1024_8 */    0x00, 0xce, 0x01, 0x9f, 0x02, 0x9f, 0x03, 0x00, 0x04, 0xa2, 0x05, 0x12,    0x06, 0x2a, 0x07, 0x5a, 0x08, 0x00, 0x09, 0x60, 0x0a, 0x00, 0x0b, 0x00,    0x0c, 0x00, 0x0d, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x10, 0x01, 0x11, 0x23,    0x12, 0xff, 0x13, 0x50, 0x14, 0x40, 0x15, 0xff, 0x16, 0x00, 0x17, 0xe3,    0x18, 0xff    },    { /* TV_MODE_CCIR */    0x00, 0x00, 0x01, 0x59, 0x02, 0x63, 0x03, 0x00, 0x04, 0x69, 0x05, 0x10,    0x06, 0x72, 0x07, 0xf0, 0x08, 0x00, 0x09, 0x60, 0x0a, 0x00, 0x0b, 0x00,    0x0c, 0x00, 0x0d, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x10, 0x58, 0x11, 0x2c,    0x12, 0x57, 0x13, 0x2d, 0x14, 0x40, 0x15, 0x57, 0x16, 0x00, 0x17, 0xe3,    0x18, 0xff    },    { /* TV_MODE_EIA */    0x00, 0x00, 0x01, 0x59, 0x02, 0x63, 0x03, 0x00, 0x04, 0x69, 0x05, 0x10,    0x06, 0x72, 0x07, 0xf0, 0x08, 0x00, 0x09, 0x60, 0x0a, 0x00, 0x0b, 0x00,    0x0c, 0x00, 0x0d, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x10, 0x58, 0x11, 0x2c,    0x12, 0x57, 0x13, 0x2d, 0x14, 0x40, 0x15, 0x57, 0x16, 0x00, 0x17, 0xe3,    0x18, 0xff    },};static char SMI_SEQR[10] = {    0x00, 0x03, 0x01, 0x01, 0x02, 0x0f, 0x03, 0x03, 0x04, 0x0e};static char SMI_PCR[VIDEO_MODES][8] = {    { /* DUAL_800_600_8 */    0x20, 0x04, 0x21, 0x20, 0x22, 0x00, 0x23, 0x00    },    { /* DUAL_1024_768_8 */    0x20, 0x04, 0x21, 0x20, 0x22, 0x00, 0x23, 0x00    },    { /* SINGLE_800_600_8 */    0x20, 0x04, 0x21, 0x30, 0x22, 0x02, 0x23, 0x00    },    { /* SINGLE_1024_768_8 */    0x20, 0x04, 0x21, 0x30, 0x22, 0x02, 0x23, 0x00    },    { /* SINGLE_1280_1024_8 */    0x20, 0x04, 0x21, 0x30, 0x22, 0x02, 0x23, 0x00    },    { /* TV_MODE_CCIR */    0x20, 0x04, 0x21, 0x30, 0x22, 0x02, 0x23, 0x00    },    { /* TV_MODE_EIA */    0x20, 0x04, 0x21, 0x30, 0x22, 0x02, 0x23, 0x00    },};static char SMI_MCR[VIDEO_MODES][6] = {    { /* DUAL_800_600_8 */    0x60, 0x01, 0x61, 0x00, 0x62, 0x7a    },    { /* DUAL_1024_768_8 */    0x60, 0x01, 0x61, 0x00, 0x62, 0x7a    },    { /* SINGLE_800_600_8 */    0x60, 0x00, 0x61, 0x00, 0x62, 0x34    },    { /* SINGLE_1024_768_8 */    0x60, 0x00, 0x61, 0x00, 0x62, 0xfe    },    { /* SINGLE_1280_1024_8 */    0x60, 0x00, 0x61, 0x00, 0x62, 0xfe    },    { /* TV_MODE_CCIR */    0x60, 0x00, 0x61, 0x00, 0x62, 0x34    },    { /* TV_MODE_EIA */    0x60, 0x00, 0x61, 0x00, 0x62, 0x34    },};static char SMI_CCR[VIDEO_MODES][18] = {    { /* DUAL_800_600_8 */    0x65, 0x34, 0x68, 0x50, 0x69, 0x05, 0x6a, 0x53, 0x6b, 0x15, 0x6c, 0x15,    0x6d, 0x06, 0x6e, 0x3d, 0x6f, 0x12    },    { /* DUAL_1024_768_8 */    0x65, 0x00, 0x68, 0x50, 0x69, 0x06, 0x6a, 0x53, 0x6b, 0x15, 0x6c, 0x0b,    0x6d, 0x02, 0x6e, 0x0b, 0x6f, 0x02    },    { /* SINGLE_800_600_8 */    0x65, 0x34, 0x68, 0x40, 0x69, 0x03, 0x6a, 0x53, 0x6b, 0x15, 0x6c, 0x15,    0x6d, 0x06, 0x6e, 0x3d, 0x6f, 0x12    },    { /* SINGLE_1024_768_8 */    0x65, 0x00, 0x68, 0x50, 0x69, 0x03, 0x6a, 0x53, 0x6b, 0x15, 0x6c, 0x0b,    0x6d, 0x02, 0x6e, 0x0b, 0x6f, 0x02    },    { /* SINGLE_1280_1024_8 */    0x65, 0x00, 0x68, 0x50, 0x69, 0x03, 0x6a, 0x53, 0x6b, 0x15, 0x6c, 0xd9,    0x6d, 0x17, 0x6e, 0xd9, 0x6f, 0x17    },    { /* TV_MODE_CCIR */    0x65, 0x07, 0x68, 0xc0, 0x69, 0x81, 0x6a, 0x53, 0x6b, 0x15, 0x6c, 0x15,    0x6d, 0x06, 0x6e, 0x3d, 0x6f, 0x12    },    { /* TV_MODE_EIA */    0x65, 0x07, 0x68, 0xc0, 0x69, 0x81, 0x6a, 0x53, 0x6b, 0x15, 0x6c, 0x15,    0x6d, 0x06, 0x6e, 0x3d, 0x6f, 0x12    },};static char SMI_SHVGA[VIDEO_MODES][24] = {    { /* DUAL_800_600_8 */    0x40, 0x7f, 0x41, 0x63, 0x42, 0x00, 0x43, 0x68, 0x44, 0x12, 0x45, 0x6f,    0x46, 0x57, 0x47, 0x00, 0x48, 0x59, 0x49, 0x0c, 0x4a, 0xa0, 0x4b, 0x20,    },    { /* DUAL_1024_768_8 */    0x40, 0x9f, 0x41, 0x7f, 0x42, 0x00, 0x43, 0x82, 0x44, 0x0e, 0x45, 0x1e,    0x46, 0xff, 0x47, 0x00, 0x48, 0x00, 0x49, 0x03, 0x4a, 0xe5, 0x4b, 0x20,    },    { /* SINGLE_800_600_8 */    0x40, 0x7f, 0x41, 0x63, 0x42, 0x00, 0x43, 0x68, 0x44, 0x12, 0x45, 0x6f,    0x46, 0x57, 0x47, 0x00, 0x48, 0x59, 0x49, 0x0c, 0x4a, 0xa0, 0x4b, 0x20,    },    { /* SINGLE_1024_768_8 */    0x40, 0x9f, 0x41, 0x7f, 0x42, 0x00, 0x43, 0x82, 0x44, 0x0e, 0x45, 0x1e,    0x46, 0xff, 0x47, 0x00, 0x48, 0x01, 0x49, 0x04, 0x4a, 0xa5, 0x4b, 0x20,    },    { /* SINGLE_1280_1024_8 */    0x40, 0xce, 0x41, 0x9f, 0x42, 0x00, 0x43, 0xa2, 0x44, 0x12, 0x45, 0x2a,    0x46, 0xff, 0x47, 0x00, 0x48, 0x01, 0x49, 0x03, 0x4a, 0x4a, 0x4b, 0x20,    },    { /* TV_MODE_CCIR */    0x40, 0x6d, 0x41, 0x59, 0x42, 0x00, 0x43, 0x60, 0x44, 0x09, 0x45, 0x38,    0x46, 0x25, 0x47, 0x05, 0x48, 0x2a, 0x49, 0x00, 0x4a, 0x4d, 0x4b, 0x00,    },    { /* TV_MODE_EIA */    0x40, 0x6d, 0x41, 0x59, 0x42, 0x00, 0x43, 0x60, 0x44, 0x09, 0x45, 0x06,    0x46, 0xf7, 0x47, 0x05, 0x48, 0xfa, 0x49, 0x00, 0x4a, 0x41, 0x4b, 0x00,    },};static char SMI_GPR[VIDEO_MODES][12] = {    { /* DUAL_800_600_8 */    0x70, 0x00, 0x71, 0xa2, 0x72, 0x0f, 0x73, 0x30, 0x74, 0x40, 0x75, 0x00    },    { /* DUAL_1024_768_8 */    0x70, 0x00, 0x71, 0xa2, 0x72, 0x0f, 0x73, 0x30, 0x74, 0x40, 0x75, 0x00    },    { /* SINGLE_800_600_8 */    0x70, 0x00, 0x71, 0xa2, 0x72, 0x0f, 0x73, 0x30, 0x74, 0x40, 0x75, 0x00    },    { /* SINGLE_1024_768_8 */    0x70, 0x00, 0x71, 0xa2, 0x72, 0x0f, 0x73, 0x30, 0x74, 0x40, 0x75, 0x00    },    { /* SINGLE_1280_1024_8 */    0x70, 0x00, 0x71, 0xa2, 0x72, 0x0f, 0x73, 0x30, 0x74, 0x40, 0x75, 0x00    },    { /* TV_MODE_CCIR */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -