Commit 4ec16d90 authored by James Simmons's avatar James Simmons

Updates to SIS framebuffer driver

parent dc20135e
This source diff could not be displayed because it is too large. You can view the blob instead.
This diff is collapsed.
This source diff could not be displayed because it is too large. You can view the blob instead.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
#define LINUX_KERNEL /* #define WINCE_HEADER */
/* #define WIN2000 */
/* #define TC */
#define LINUX_KERNEL /* Kernel framebuffer */
/* #define LINUX_XF86 */ /* XFree86 */
/**********************************************************************/
#ifdef LINUX_KERNEL
#include <linux/config.h>
#ifdef CONFIG_FB_SIS_300
#define SIS300
#endif
#ifdef CONFIG_FB_SIS_315
#define SIS315H
#endif
#else
/* #define SIS300*/
#define SIS315H
#endif
#ifdef LINUX_XF86
#define SIS300
/* #define SIS315H */ /* TW: done above */
#endif
/**********************************************************************/
#ifdef TC
#endif
#ifdef WIN2000
#endif
#ifdef WINCE_HEADER
#endif
#ifdef LINUX_XF86
#endif
#ifdef LINUX_KERNEL
#endif
/**********************************************************************/
#ifdef TC
#define SiS_SetMemory(MemoryAddress,MemorySize,value) memset(MemoryAddress, value, MemorySize);
#endif
#ifdef WIN2000
#define SiS_SetMemory(MemoryAddress,MemorySize,value) MemFill((PVOID) MemoryAddress,(ULONG) MemorySize,(UCHAR) value);
#endif
#ifdef WINCE_HEADER
#define SiS_SetMemory(MemoryAddress,MemorySize,value) memset(MemoryAddress, value, MemorySize);
#endif
#ifdef LINUX_XF86
#define SiS_SetMemory(MemoryAddress,MemorySize,value) memset(MemoryAddress, value, MemorySize)
#endif
#ifdef LINUX_KERNEL
#define SiS_SetMemory(MemoryAddress,MemorySize,value) memset(MemoryAddress, value, MemorySize) #define SiS_SetMemory(MemoryAddress,MemorySize,value) memset(MemoryAddress, value, MemorySize)
#endif
/**********************************************************************/
/**********************************************************************/
#ifdef TC
#define SiS_MemoryCopy(Destination,Soruce,Length) memmove(Destination, Soruce, Length);
#endif
#ifdef WIN2000
#define SiS_MemoryCopy(Destination,Soruce,Length) /*VideoPortMoveMemory((PUCHAR)Destination , Soruce,length);*/
#endif
#ifdef WINCE_HEADER
#define SiS_MemoryCopy(Destination,Soruce,Length) memmove(Destination, Soruce, Length);
#endif
#ifdef LINUX_XF86
#define SiS_MemoryCopy(Destination,Soruce,Length) memcpy(Destination,Soruce,Length)
#endif
#ifdef LINUX_KERNEL
#define SiS_MemoryCopy(Destination,Soruce,Length) memcpy(Destination,Soruce,Length) #define SiS_MemoryCopy(Destination,Soruce,Length) memcpy(Destination,Soruce,Length)
#endif
/**********************************************************************/ /**********************************************************************/
...@@ -29,9 +96,64 @@ ...@@ -29,9 +96,64 @@
#undef InPortLong #undef InPortLong
#endif /* InPortLong */ #endif /* InPortLong */
/**********************************************************************/
/* TC */
/**********************************************************************/
#ifdef TC
#define OutPortByte(p,v) outp((unsigned short)(p),(unsigned char)(v))
#define OutPortWord(p,v) outp((unsigned short)(p),(unsigned short)(v))
#define OutPortLong(p,v) outp((unsigned short)(p),(unsigned long)(v))
#define InPortByte(p) inp((unsigned short)(p))
#define InPortWord(p) inp((unsigned short)(p))
#define InPortLong(p) ((inp((unsigned short)(p+2))<<16) | inp((unsigned short)(p)))
#endif
/**********************************************************************/
/* LINUX XF86 */
/**********************************************************************/
#ifdef LINUX_XF86
#define OutPortByte(p,v) outb((CARD16)(p),(CARD8)(v))
#define OutPortWord(p,v) outw((CARD16)(p),(CARD16)(v))
#define OutPortLong(p,v) outl((CARD16)(p),(CARD32)(v))
#define InPortByte(p) inb((CARD16)(p))
#define InPortWord(p) inw((CARD16)(p))
#define InPortLong(p) inl((CARD16)(p))
#endif
#ifdef LINUX_KERNEL
#define OutPortByte(p,v) outb((u8)(v),(u16)(p)) #define OutPortByte(p,v) outb((u8)(v),(u16)(p))
#define OutPortWord(p,v) outw((u16)(v),(u16)(p)) #define OutPortWord(p,v) outw((u16)(v),(u16)(p))
#define OutPortLong(p,v) outl((u32)(v),(u16)(p)) #define OutPortLong(p,v) outl((u32)(v),(u16)(p))
#define InPortByte(p) inb((u16)(p)) #define InPortByte(p) inb((u16)(p))
#define InPortWord(p) inw((u16)(p)) #define InPortWord(p) inw((u16)(p))
#define InPortLong(p) inl((u16)(p)) #define InPortLong(p) inl((u16)(p))
#endif
/**********************************************************************/
/* WIN 2000 */
/**********************************************************************/
#ifdef WIN2000
#define OutPortByte(p,v) VideoPortWritePortUchar ((PUCHAR) (p), (UCHAR) (v))
#define OutPortWord(p,v) VideoPortWritePortUshort((PUSHORT) (p), (USHORT) (v))
#define OutPortLong(p,v) VideoPortWritePortUlong ((PULONG) (p), (ULONG) (v))
#define InPortByte(p) VideoPortReadPortUchar ((PUCHAR) (p))
#define InPortWord(p) VideoPortReadPortUshort ((PUSHORT) (p))
#define InPortLong(p) VideoPortReadPortUlong ((PULONG) (p))
#endif
/**********************************************************************/
/* WIN CE */
/**********************************************************************/
#ifdef WINCE_HEADER
#define OutPortByte(p,v) WRITE_PORT_UCHAR ((PUCHAR) (p), (UCHAR) (v))
#define OutPortWord(p,v) WRITE_PORT_USHORT((PUSHORT) (p), (USHORT) (v))
#define OutPortLong(p,v) WRITE_PORT_ULONG ((PULONG) (p), (ULONG) (v))
#define InPortByte(p) READ_PORT_UCHAR ((PUCHAR) (p))
#define InPortWord(p) READ_PORT_USHORT ((PUSHORT) (p))
#define InPortLong(p) READ_PORT_ULONG ((PULONG) (p))
#endif
This diff is collapsed.
This diff is collapsed.
#ifndef _LINUX_SISFB
#define _LINUX_SISFB
#include <asm/ioctl.h>
#include <asm/types.h>
#define DISPTYPE_CRT1 0x00000008L
#define DISPTYPE_CRT2 0x00000004L
#define DISPTYPE_LCD 0x00000002L
#define DISPTYPE_TV 0x00000001L
#define DISPTYPE_DISP1 DISPTYPE_CRT1
#define DISPTYPE_DISP2 (DISPTYPE_CRT2 | DISPTYPE_LCD | DISPTYPE_TV)
#define DISPMODE_SINGLE 0x00000020L
#define DISPMODE_MIRROR 0x00000010L
#define DISPMODE_DUALVIEW 0x00000040L
#define HASVB_NONE 0x00
#define HASVB_301 0x01
#define HASVB_LVDS 0x02
#define HASVB_TRUMPION 0x04
#define HASVB_LVDS_CHRONTEL 0x10
#define HASVB_302 0x20
#define HASVB_303 0x40
#define HASVB_CHRONTEL 0x80
/* TW: *Never* change the order of the following enum */
typedef enum _SIS_CHIP_TYPE {
SIS_VGALegacy = 0,
SIS_300,
SIS_630,
SIS_540,
SIS_730,
SIS_315H,
SIS_315,
SIS_550,
SIS_315PRO,
SIS_640,
SIS_740,
SIS_650,
SIS_330,
MAX_SIS_CHIP
} SIS_CHIP_TYPE;
typedef enum _TVTYPE {
TVMODE_NTSC = 0,
TVMODE_PAL,
TVMODE_HIVISION,
TVMODE_TOTAL
} SIS_TV_TYPE;
typedef enum _TVPLUGTYPE {
TVPLUG_Legacy = 0,
TVPLUG_COMPOSITE,
TVPLUG_SVIDEO,
TVPLUG_SCART,
TVPLUG_TOTAL
} SIS_TV_PLUG;
struct sis_memreq {
unsigned long offset;
unsigned long size;
};
struct mode_info {
int bpp;
int xres;
int yres;
int v_xres;
int v_yres;
int org_x;
int org_y;
unsigned int vrate;
};
struct ap_data {
struct mode_info minfo;
unsigned long iobase;
unsigned int mem_size;
unsigned long disp_state;
SIS_CHIP_TYPE chip;
unsigned char hasVB;
SIS_TV_TYPE TV_type;
SIS_TV_PLUG TV_plug;
unsigned long version;
char reserved[256];
};
struct video_info {
int chip_id;
unsigned int video_size;
unsigned long video_base;
char *video_vbase;
unsigned long mmio_base;
char *mmio_vbase;
unsigned long vga_base;
unsigned long mtrr;
unsigned long heapstart;
int video_bpp;
int video_width;
int video_height;
int video_vwidth;
int video_vheight;
int org_x;
int org_y;
unsigned int refresh_rate;
unsigned long disp_state;
unsigned char hasVB;
unsigned char TV_type;
unsigned char TV_plug;
SIS_CHIP_TYPE chip;
unsigned char revision_id;
char reserved[256];
};
/* TW: Addtional IOCTL for communication sisfb <> X driver */
/* If changing this, vgatypes.h must also be changed (for X driver) */
/* TW: ioctl for identifying and giving some info (esp. memory heap start) */
#define SISFB_GET_INFO _IOR('n',0xF8,sizeof(__u32))
/* TW: Structure argument for SISFB_GET_INFO ioctl */
typedef struct _SISFB_INFO sisfb_info, *psisfb_info;
struct _SISFB_INFO {
unsigned long sisfb_id; /* for identifying sisfb */
#ifndef SISFB_ID
#define SISFB_ID 0x53495346 /* Identify myself with 'SISF' */
#endif
int chip_id; /* PCI ID of detected chip */
int memory; /* video memory in KB which sisfb manages */
int heapstart; /* heap start (= sisfb "mem" argument) in KB */
unsigned char fbvidmode; /* current sisfb mode */
unsigned char sisfb_version;
unsigned char sisfb_revision;
unsigned char sisfb_patchlevel;
char reserved[253]; /* for future use */
};
#ifdef __KERNEL__
extern struct video_info ivideo;
extern void sis_malloc(struct sis_memreq *req);
extern void sis_free(unsigned long base);
extern void sis_dispinfo(struct ap_data *rec);
#endif
#endif
#ifndef _VGATYPES_ #ifndef _VGATYPES_
#define _VGATYPES_ #define _VGATYPES_
#ifdef LINUX_XF86
#include "xf86Pci.h"
#endif
#ifdef LINUX_KERNEL /* TW: We don't want the X driver to depend on kernel source */
#include <linux/ioctl.h>
#endif
#ifndef TC #ifndef TC
#define far #define far
#endif #endif
...@@ -68,24 +76,49 @@ typedef UCHAR BOOLEAN; ...@@ -68,24 +76,49 @@ typedef UCHAR BOOLEAN;
#ifndef bool #ifndef bool
typedef UCHAR bool; typedef UCHAR bool;
#endif #endif
#endif /* WINCE_HEADER */ #endif /*WINCE_HEADER*/
#ifndef VBIOS_VER_MAX_LENGTH #ifndef VBIOS_VER_MAX_LENGTH
#define VBIOS_VER_MAX_LENGTH 4 #define VBIOS_VER_MAX_LENGTH 4
#endif #endif
#ifndef LINUX_KERNEL /* For kernel, this is defined in sisfb.h */
#ifndef WIN2000
#ifndef SIS_CHIP_TYPE
typedef enum _SIS_CHIP_TYPE {
SIS_VGALegacy = 0,
#ifdef LINUX_XF86
SIS_530, /* TW */
SIS_OLD, /* TW */
#endif
SIS_300,
SIS_630,
SIS_730,
SIS_540,
SIS_315H, /* SiS 310 */
SIS_315,
SIS_315PRO, /* SiS 325 */
SIS_550,
SIS_640,
SIS_740,
SIS_650,
SIS_330,
MAX_SIS_CHIP
} SIS_CHIP_TYPE;
#endif
#endif
#endif
#ifndef WIN2000 #ifndef WIN2000
#ifndef SIS_VB_CHIP_TYPE #ifndef SIS_VB_CHIP_TYPE
typedef enum _SIS_VB_CHIP_TYPE { typedef enum _SIS_VB_CHIP_TYPE {
VB_CHIP_Legacy = 0, VB_CHIP_Legacy = 0,
VB_CHIP_301, VB_CHIP_301,
VB_CHIP_301B, VB_CHIP_301B,
VB_CHIP_301BLCD, VB_CHIP_301LV,
VB_CHIP_301BTV,
VB_CHIP_302, VB_CHIP_302,
VB_CHIP_302B, VB_CHIP_302B,
VB_CHIP_302BLCD, VB_CHIP_302LV,
VB_CHIP_302BTV,
VB_CHIP_303, VB_CHIP_303,
VB_CHIP_UNKNOWN, /* other video bridge or no video bridge */ VB_CHIP_UNKNOWN, /* other video bridge or no video bridge */
MAX_VB_CHIP MAX_VB_CHIP
...@@ -105,14 +138,21 @@ typedef enum _SIS_LCD_TYPE { ...@@ -105,14 +138,21 @@ typedef enum _SIS_LCD_TYPE {
LCD_1600x1200, LCD_1600x1200,
LCD_1920x1440, LCD_1920x1440,
LCD_2048x1536, LCD_2048x1536,
LCD_320x480, /* TW: FSTN */
LCD_1400x1050,
LCD_1152x864,
LCD_1152x768,
LCD_1280x768,
LCD_1024x600,
LCD_UNKNOWN LCD_UNKNOWN
} SIS_LCD_TYPE; } SIS_LCD_TYPE;
#endif #endif
#endif #endif
#ifndef WIN2000 /* mark by Paul ,Move definition to sisv.h */ #ifndef WIN2000 /* mark by Paul, Move definition to sisv.h*/
#ifndef PSIS_DSReg #ifndef PSIS_DSReg
typedef struct _SIS_DSReg { typedef struct _SIS_DSReg
{
UCHAR jIdx; UCHAR jIdx;
UCHAR jVal; UCHAR jVal;
} SIS_DSReg, *PSIS_DSReg; } SIS_DSReg, *PSIS_DSReg;
...@@ -124,23 +164,25 @@ typedef struct _SIS_HW_DEVICE_INFO SIS_HW_DEVICE_INFO, *PSIS_HW_DEVICE_INFO; ...@@ -124,23 +164,25 @@ typedef struct _SIS_HW_DEVICE_INFO SIS_HW_DEVICE_INFO, *PSIS_HW_DEVICE_INFO;
typedef BOOLEAN (*PSIS_QUERYSPACE) (PSIS_HW_DEVICE_INFO, ULONG, ULONG, ULONG *); typedef BOOLEAN (*PSIS_QUERYSPACE) (PSIS_HW_DEVICE_INFO, ULONG, ULONG, ULONG *);
struct _SIS_HW_DEVICE_INFO {
struct _SIS_HW_DEVICE_INFO
{
PVOID pDevice; /* The pointer to the physical device data structure PVOID pDevice; /* The pointer to the physical device data structure
in each OS or NULL for unused. */ in each OS or NULL for unused. */
UCHAR *pjVirtualRomBase; /* Only for NT, NULL for WinCE & Linux. */ UCHAR *pjVirtualRomBase; /* base virtual address of VBIOS ROM Space */
/* base virtual address of VBIOS ROM Space */
/* or base virtual address of ROM image file. */ /* or base virtual address of ROM image file. */
/* if NULL, then read from pjROMImage; */ /* if NULL, then read from pjROMImage; */
/* Note:ROM image file is the file of VBIOS ROM */ /* Note:ROM image file is the file of VBIOS ROM */
UCHAR *pjCustomizedROMImage; /* base virtual address of ROM image file. */
UCHAR *pjCustomizedROMImage;/* base virtual address of ROM image file. */
/* wincE:ROM image file is the file for OEM */ /* wincE:ROM image file is the file for OEM */
/* customized table */ /* customized table */
/* Linux: not used */ /* Linux: not used */
/* NT : not used */ /* NT : not used */
/* Note : pjCustomizedROMImage=NULL if no ROM image file */ /* Note : pjCustomizedROMImage=NULL if no ROM image file */
UCHAR *pjVideoMemoryAddress; /* base virtual memory address */ UCHAR *pjVideoMemoryAddress;/* base virtual memory address */
/* of Linear VGA memory */ /* of Linear VGA memory */
ULONG ulVideoMemorySize; /* size, in bytes, of the memory on the board */ ULONG ulVideoMemorySize; /* size, in bytes, of the memory on the board */
...@@ -170,7 +212,7 @@ struct _SIS_HW_DEVICE_INFO { ...@@ -170,7 +212,7 @@ struct _SIS_HW_DEVICE_INFO {
ULONG ulCRT2LCDType; /* defined in the data structure type */ ULONG ulCRT2LCDType; /* defined in the data structure type */
/* "SIS_LCD_TYPE" */ /* "SIS_LCD_TYPE" */
BOOLEAN bIntegratedMMEnabled; /* supporting integration MM enable */ BOOLEAN bIntegratedMMEnabled;/* supporting integration MM enable */
BOOLEAN bSkipDramSizing; /* True: Skip video memory sizing. */ BOOLEAN bSkipDramSizing; /* True: Skip video memory sizing. */
PSIS_DSReg pSR; /* restore SR registers in initial function. */ PSIS_DSReg pSR; /* restore SR registers in initial function. */
...@@ -186,15 +228,50 @@ struct _SIS_HW_DEVICE_INFO { ...@@ -186,15 +228,50 @@ struct _SIS_HW_DEVICE_INFO {
PSIS_QUERYSPACE pQueryVGAConfigSpace; /* Get/Set VGA Configuration */ PSIS_QUERYSPACE pQueryVGAConfigSpace; /* Get/Set VGA Configuration */
/* space */ /* space */
PSIS_QUERYSPACE pQueryNorthBridgeSpace; /* Get/Set North Bridge */ PSIS_QUERYSPACE pQueryNorthBridgeSpace;/* Get/Set North Bridge */
/* space */ /* space */
UCHAR szVBIOSVer[VBIOS_VER_MAX_LENGTH]; UCHAR szVBIOSVer[VBIOS_VER_MAX_LENGTH];
UCHAR pdc; /* TW: PanelDelayCompensation */
#ifdef LINUX_XF86
PCITAG PciTag; /* PCI Tag for Linux XF86 */
#endif
}; };
#endif #endif
#endif /*~ mark by Paul ,Move definition to sisv.h */ #endif /*~ mark by Paul ,Move definition to sisv.h */
/* TW: Addtional IOCTL for communication sisfb <> X driver */
/* If changing this, sisfb.h must also be changed (for sisfb) */
#ifdef LINUX_XF86 /* We don't want the X driver to depend on the kernel source */
/* TW: ioctl for identifying and giving some info (esp. memory heap start) */
#define SISFB_GET_INFO 0x80046ef8 /* Wow, what a terrible hack... */
/* TW: Structure argument for SISFB_GET_INFO ioctl */
typedef struct _SISFB_INFO sisfb_info, *psisfb_info;
struct _SISFB_INFO {
unsigned long sisfb_id; /* for identifying sisfb */
#ifndef SISFB_ID
#define SISFB_ID 0x53495346 /* Identify myself with 'SISF' */
#endif
int chip_id; /* PCI ID of detected chip */
int memory; /* video memory in KB which sisfb manages */
int heapstart; /* heap start (= sisfb "mem" argument) in KB */
unsigned char fbvidmode; /* current sisfb mode */
unsigned char sisfb_version;
unsigned char sisfb_revision;
unsigned char sisfb_patchlevel;
char reserved[253]; /* for future use */
};
#endif
#ifndef WIN2000 #ifndef WIN2000
#ifndef WINCE_HEADER #ifndef WINCE_HEADER
#ifndef BUS_DATA_TYPE #ifndef BUS_DATA_TYPE
...@@ -255,6 +332,7 @@ typedef struct _PCI_COMMON_CONFIG { ...@@ -255,6 +332,7 @@ typedef struct _PCI_COMMON_CONFIG {
UCHAR MaximumLatency; /* (ro) */ UCHAR MaximumLatency; /* (ro) */
} type0; } type0;
} u; } u;
UCHAR DeviceSpecific[192]; UCHAR DeviceSpecific[192];
......
...@@ -4,11 +4,13 @@ ...@@ -4,11 +4,13 @@
#define EXTERN extern #define EXTERN extern
#endif /* _INIT_ */ #endif /* _INIT_ */
typedef struct _SiS_PanelDelayTblStruct { typedef struct _SiS_PanelDelayTblStruct
{
UCHAR timer[2]; UCHAR timer[2];
} SiS_PanelDelayTblStruct; } SiS_PanelDelayTblStruct;
typedef struct _SiS_LCDDataStruct { typedef struct _SiS_LCDDataStruct
{
USHORT RVBHCMAX; USHORT RVBHCMAX;
USHORT RVBHCFACT; USHORT RVBHCFACT;
USHORT VGAHT; USHORT VGAHT;
...@@ -17,7 +19,8 @@ typedef struct _SiS_LCDDataStruct { ...@@ -17,7 +19,8 @@ typedef struct _SiS_LCDDataStruct {
USHORT LCDVT; USHORT LCDVT;
} SiS_LCDDataStruct; } SiS_LCDDataStruct;
typedef struct _SiS_TVDataStruct { typedef struct _SiS_TVDataStruct
{
USHORT RVBHCMAX; USHORT RVBHCMAX;
USHORT RVBHCFACT; USHORT RVBHCFACT;
USHORT VGAHT; USHORT VGAHT;
...@@ -33,32 +36,38 @@ typedef struct _SiS_TVDataStruct { ...@@ -33,32 +36,38 @@ typedef struct _SiS_TVDataStruct {
UCHAR RY4COE; UCHAR RY4COE;
} SiS_TVDataStruct; } SiS_TVDataStruct;
typedef struct _SiS_LVDSDataStruct { typedef struct _SiS_LVDSDataStruct
{
USHORT VGAHT; USHORT VGAHT;
USHORT VGAVT; USHORT VGAVT;
USHORT LCDHT; USHORT LCDHT;
USHORT LCDVT; USHORT LCDVT;
} SiS_LVDSDataStruct; } SiS_LVDSDataStruct;
typedef struct _SiS_LVDSDesStruct { typedef struct _SiS_LVDSDesStruct
{
USHORT LCDHDES; USHORT LCDHDES;
USHORT LCDVDES; USHORT LCDVDES;
} SiS_LVDSDesStruct; } SiS_LVDSDesStruct;
typedef struct _SiS_LVDSCRT1DataStruct { typedef struct _SiS_LVDSCRT1DataStruct
{
UCHAR CR[15]; UCHAR CR[15];
} SiS_LVDSCRT1DataStruct; } SiS_LVDSCRT1DataStruct;
/*add for LCDA*/ /*add for LCDA*/
typedef struct _SiS_LCDACRT1DataStruct { typedef struct _SiS_LCDACRT1DataStruct
{
UCHAR CR[17]; UCHAR CR[17];
} SiS_LCDACRT1DataStruct; } SiS_LCDACRT1DataStruct;
typedef struct _SiS_CHTVRegDataStruct { typedef struct _SiS_CHTVRegDataStruct
UCHAR Reg[5]; {
UCHAR Reg[16];
} SiS_CHTVRegDataStruct; } SiS_CHTVRegDataStruct;
typedef struct _SiS_StStruct { typedef struct _SiS_StStruct
{
UCHAR St_ModeID; UCHAR St_ModeID;
USHORT St_ModeFlag; USHORT St_ModeFlag;
UCHAR St_StTableIndex; UCHAR St_StTableIndex;
...@@ -69,7 +78,8 @@ typedef struct _SiS_StStruct { ...@@ -69,7 +78,8 @@ typedef struct _SiS_StStruct {
UCHAR VB_StTVYFilterIndex; UCHAR VB_StTVYFilterIndex;
} SiS_StStruct; } SiS_StStruct;
typedef struct _SiS_VBModeStruct { typedef struct _SiS_VBModeStruct
{
UCHAR ModeID; UCHAR ModeID;
UCHAR VB_TVDelayIndex; UCHAR VB_TVDelayIndex;
UCHAR VB_TVFlickerIndex; UCHAR VB_TVFlickerIndex;
...@@ -80,7 +90,8 @@ typedef struct _SiS_VBModeStruct { ...@@ -80,7 +90,8 @@ typedef struct _SiS_VBModeStruct {
UCHAR _VB_LCDVIndex; UCHAR _VB_LCDVIndex;
} SiS_VBModeStruct; } SiS_VBModeStruct;
typedef struct _SiS_StandTableStruct { typedef struct _SiS_StandTableStruct
{
UCHAR CRT_COLS; UCHAR CRT_COLS;
UCHAR ROWS; UCHAR ROWS;
UCHAR CHAR_HEIGHT; UCHAR CHAR_HEIGHT;
...@@ -92,7 +103,8 @@ typedef struct _SiS_StandTableStruct { ...@@ -92,7 +103,8 @@ typedef struct _SiS_StandTableStruct {
UCHAR GRC[9]; UCHAR GRC[9];
} SiS_StandTableStruct; } SiS_StandTableStruct;
typedef struct _SiS_ExtStruct { typedef struct _SiS_ExtStruct
{
UCHAR Ext_ModeID; UCHAR Ext_ModeID;
USHORT Ext_ModeFlag; USHORT Ext_ModeFlag;
USHORT Ext_ModeInfo; USHORT Ext_ModeInfo;
...@@ -106,7 +118,8 @@ typedef struct _SiS_ExtStruct { ...@@ -106,7 +118,8 @@ typedef struct _SiS_ExtStruct {
UCHAR REFindex; UCHAR REFindex;
} SiS_ExtStruct; } SiS_ExtStruct;
typedef struct _SiS_Ext2Struct { typedef struct _SiS_Ext2Struct
{
USHORT Ext_InfoFlag; USHORT Ext_InfoFlag;
UCHAR Ext_CRT1CRTC; UCHAR Ext_CRT1CRTC;
UCHAR Ext_CRTVCLK; UCHAR Ext_CRTVCLK;
...@@ -117,36 +130,48 @@ typedef struct _SiS_Ext2Struct { ...@@ -117,36 +130,48 @@ typedef struct _SiS_Ext2Struct {
USHORT ROM_OFFSET; USHORT ROM_OFFSET;
} SiS_Ext2Struct; } SiS_Ext2Struct;
typedef struct _SiS_CRT1TableStruct { typedef struct _SiS_Part2PortTblStruct
{
UCHAR CR[12];
} SiS_Part2PortTblStruct;
typedef struct _SiS_CRT1TableStruct
{
UCHAR CR[17]; UCHAR CR[17];
} SiS_CRT1TableStruct; } SiS_CRT1TableStruct;
typedef struct _SiS_MCLKDataStruct { typedef struct _SiS_MCLKDataStruct
UCHAR SR28, SR29, SR2A; {
UCHAR SR28,SR29,SR2A;
USHORT CLOCK; USHORT CLOCK;
} SiS_MCLKDataStruct; } SiS_MCLKDataStruct;
typedef struct _SiS_ECLKDataStruct { typedef struct _SiS_ECLKDataStruct
UCHAR SR2E, SR2F, SR30; {
UCHAR SR2E,SR2F,SR30;
USHORT CLOCK; USHORT CLOCK;
} SiS_ECLKDataStruct; } SiS_ECLKDataStruct;
typedef struct _SiS_VCLKDataStruct { typedef struct _SiS_VCLKDataStruct
UCHAR SR2B, SR2C; {
UCHAR SR2B,SR2C;
USHORT CLOCK; USHORT CLOCK;
} SiS_VCLKDataStruct; } SiS_VCLKDataStruct;
typedef struct _SiS_VBVCLKDataStruct { typedef struct _SiS_VBVCLKDataStruct
UCHAR Part4_A, Part4_B; {
UCHAR Part4_A,Part4_B;
USHORT CLOCK; USHORT CLOCK;
} SiS_VBVCLKDataStruct; } SiS_VBVCLKDataStruct;
typedef struct _SiS_StResInfoStruct { typedef struct _SiS_StResInfoStruct
{
USHORT HTotal; USHORT HTotal;
USHORT VTotal; USHORT VTotal;
} SiS_StResInfoStruct; } SiS_StResInfoStruct;
typedef struct _SiS_ModeResInfoStruct { typedef struct _SiS_ModeResInfoStruct
{
USHORT HTotal; USHORT HTotal;
USHORT VTotal; USHORT VTotal;
UCHAR XChar; UCHAR XChar;
...@@ -159,7 +184,8 @@ EXTERN SiS_ExtStruct *SiS_EModeIDTable; ...@@ -159,7 +184,8 @@ EXTERN SiS_ExtStruct *SiS_EModeIDTable;
EXTERN SiS_Ext2Struct *SiS_RefIndex; EXTERN SiS_Ext2Struct *SiS_RefIndex;
EXTERN SiS_VBModeStruct *SiS_VBModeIDTable; EXTERN SiS_VBModeStruct *SiS_VBModeIDTable;
EXTERN SiS_CRT1TableStruct *SiS_CRT1Table; EXTERN SiS_CRT1TableStruct *SiS_CRT1Table;
EXTERN SiS_MCLKDataStruct *SiS_MCLKData; EXTERN SiS_MCLKDataStruct *SiS_MCLKData_0;
EXTERN SiS_MCLKDataStruct *SiS_MCLKData_1;
EXTERN SiS_ECLKDataStruct *SiS_ECLKData; EXTERN SiS_ECLKDataStruct *SiS_ECLKData;
EXTERN SiS_VCLKDataStruct *SiS_VCLKData; EXTERN SiS_VCLKDataStruct *SiS_VCLKData;
EXTERN SiS_VBVCLKDataStruct *SiS_VBVCLKData; EXTERN SiS_VBVCLKDataStruct *SiS_VBVCLKData;
...@@ -192,7 +218,7 @@ EXTERN UCHAR *pSiS_CRT2Data_4_10; ...@@ -192,7 +218,7 @@ EXTERN UCHAR *pSiS_CRT2Data_4_10;
EXTERN USHORT *pSiS_RGBSenseData; EXTERN USHORT *pSiS_RGBSenseData;
EXTERN USHORT *pSiS_VideoSenseData; EXTERN USHORT *pSiS_VideoSenseData;
EXTERN USHORT *pSiS_YCSenseData; EXTERN USHORT *pSiS_YCSenseData;
EXTERN USHORT *pSiS_RGBSenseData2; /*301b */ EXTERN USHORT *pSiS_RGBSenseData2; /*301b*/
EXTERN USHORT *pSiS_VideoSenseData2; EXTERN USHORT *pSiS_VideoSenseData2;
EXTERN USHORT *pSiS_YCSenseData2; EXTERN USHORT *pSiS_YCSenseData2;
...@@ -202,13 +228,16 @@ EXTERN UCHAR *SiS_NTSCPhase2; ...@@ -202,13 +228,16 @@ EXTERN UCHAR *SiS_NTSCPhase2;
EXTERN UCHAR *SiS_PALPhase2; EXTERN UCHAR *SiS_PALPhase2;
EXTERN UCHAR *SiS_PALMPhase; EXTERN UCHAR *SiS_PALMPhase;
EXTERN UCHAR *SiS_PALNPhase; EXTERN UCHAR *SiS_PALNPhase;
EXTERN UCHAR *SiS_PALMPhase2;
EXTERN UCHAR *SiS_PALNPhase2;
EXTERN SiS_LCDDataStruct *SiS_StLCD1024x768Data; EXTERN SiS_LCDDataStruct *SiS_StLCD1024x768Data;
EXTERN SiS_LCDDataStruct *SiS_ExtLCD1024x768Data; EXTERN SiS_LCDDataStruct *SiS_ExtLCD1024x768Data;
EXTERN SiS_LCDDataStruct *SiS_St2LCD1024x768Data; EXTERN SiS_LCDDataStruct *SiS_St2LCD1024x768Data;
EXTERN SiS_LCDDataStruct *SiS_StLCD1280x1024Data; EXTERN SiS_LCDDataStruct *SiS_StLCD1280x1024Data;
EXTERN SiS_LCDDataStruct *SiS_ExtLCD1280x1024Data; EXTERN SiS_LCDDataStruct *SiS_ExtLCD1280x1024Data;
EXTERN SiS_LCDDataStruct *SiS_St2LCD1280x1024Data; EXTERN SiS_LCDDataStruct *SiS_St2LCD1280x1024Data;
EXTERN SiS_LCDDataStruct *SiS_NoScaleData; EXTERN SiS_LCDDataStruct *SiS_NoScaleData1024x768;
EXTERN SiS_LCDDataStruct *SiS_NoScaleData1280x1024;
EXTERN SiS_LCDDataStruct *SiS_LCD1280x960Data; EXTERN SiS_LCDDataStruct *SiS_LCD1280x960Data;
EXTERN SiS_TVDataStruct *SiS_StPALData; EXTERN SiS_TVDataStruct *SiS_StPALData;
EXTERN SiS_TVDataStruct *SiS_ExtPALData; EXTERN SiS_TVDataStruct *SiS_ExtPALData;
...@@ -228,13 +257,24 @@ EXTERN UCHAR *SiS_HiTVGroup3Simu; ...@@ -228,13 +257,24 @@ EXTERN UCHAR *SiS_HiTVGroup3Simu;
EXTERN UCHAR *SiS_HiTVGroup3Text; EXTERN UCHAR *SiS_HiTVGroup3Text;
EXTERN SiS_PanelDelayTblStruct *SiS_PanelDelayTbl; EXTERN SiS_PanelDelayTblStruct *SiS_PanelDelayTbl;
EXTERN SiS_PanelDelayTblStruct *SiS_PanelDelayTblLVDS;
EXTERN SiS_LVDSDataStruct *SiS_LVDS800x600Data_1; EXTERN SiS_LVDSDataStruct *SiS_LVDS800x600Data_1;
EXTERN SiS_LVDSDataStruct *SiS_LVDS800x600Data_2; EXTERN SiS_LVDSDataStruct *SiS_LVDS800x600Data_2;
EXTERN SiS_LVDSDataStruct *SiS_LVDS1024x768Data_1; EXTERN SiS_LVDSDataStruct *SiS_LVDS1024x768Data_1;
EXTERN SiS_LVDSDataStruct *SiS_LVDS1024x768Data_2; EXTERN SiS_LVDSDataStruct *SiS_LVDS1024x768Data_2;
EXTERN SiS_LVDSDataStruct *SiS_LVDS1280x1024Data_1; EXTERN SiS_LVDSDataStruct *SiS_LVDS1280x1024Data_1;
EXTERN SiS_LVDSDataStruct *SiS_LVDS1280x1024Data_2; EXTERN SiS_LVDSDataStruct *SiS_LVDS1280x1024Data_2;
EXTERN SiS_LVDSDataStruct *SiS_LVDS1280x960Data_1;
EXTERN SiS_LVDSDataStruct *SiS_LVDS1280x960Data_2;
EXTERN SiS_LVDSDataStruct *SiS_LVDS1400x1050Data_1;
EXTERN SiS_LVDSDataStruct *SiS_LVDS1400x1050Data_2;
EXTERN SiS_LVDSDataStruct *SiS_LVDS1024x600Data_1;
EXTERN SiS_LVDSDataStruct *SiS_LVDS1024x600Data_2;
EXTERN SiS_LVDSDataStruct *SiS_LVDS1152x768Data_1;
EXTERN SiS_LVDSDataStruct *SiS_LVDS1152x768Data_2;
EXTERN SiS_LVDSDataStruct *SiS_LVDS640x480Data_1; EXTERN SiS_LVDSDataStruct *SiS_LVDS640x480Data_1;
EXTERN SiS_LVDSDataStruct *SiS_LVDS320x480Data_1;
EXTERN SiS_LVDSDataStruct *SiS_LVDSXXXxXXXData_1;
EXTERN SiS_LVDSDataStruct *SiS_CHTVUNTSCData; EXTERN SiS_LVDSDataStruct *SiS_CHTVUNTSCData;
EXTERN SiS_LVDSDataStruct *SiS_CHTVONTSCData; EXTERN SiS_LVDSDataStruct *SiS_CHTVONTSCData;
EXTERN SiS_LVDSDataStruct *SiS_CHTVUPALData; EXTERN SiS_LVDSDataStruct *SiS_CHTVUPALData;
...@@ -271,14 +311,14 @@ EXTERN SiS_LVDSDesStruct *SiS_PanelType0c_2; ...@@ -271,14 +311,14 @@ EXTERN SiS_LVDSDesStruct *SiS_PanelType0c_2;
EXTERN SiS_LVDSDesStruct *SiS_PanelType0d_2; EXTERN SiS_LVDSDesStruct *SiS_PanelType0d_2;
EXTERN SiS_LVDSDesStruct *SiS_PanelType0e_2; EXTERN SiS_LVDSDesStruct *SiS_PanelType0e_2;
EXTERN SiS_LVDSDesStruct *SiS_PanelType0f_2; EXTERN SiS_LVDSDesStruct *SiS_PanelType0f_2;
/*301b*/
EXTERN SiS_LVDSDesStruct *LVDS1024x768Des_1; EXTERN SiS_LVDSDesStruct *LVDS1024x768Des_1;
EXTERN SiS_LVDSDesStruct *LVDS1280x1024Des_1; EXTERN SiS_LVDSDesStruct *LVDS1280x1024Des_1;
EXTERN SiS_LVDSDesStruct *LVDS1280x960Des_1; EXTERN SiS_LVDSDesStruct *LVDS1280x960Des_1;
EXTERN SiS_LVDSDesStruct *LVDS1024x768Des_2; EXTERN SiS_LVDSDesStruct *LVDS1024x768Des_2;
EXTERN SiS_LVDSDesStruct *LVDS1280x1024Des_2; EXTERN SiS_LVDSDesStruct *LVDS1280x1024Des_2;
EXTERN SiS_LVDSDesStruct *LVDS1280x960Des_2; EXTERN SiS_LVDSDesStruct *LVDS1280x960Des_2;
/*end 301b*/
EXTERN SiS_LVDSDesStruct *SiS_CHTVUNTSCDesData; EXTERN SiS_LVDSDesStruct *SiS_CHTVUNTSCDesData;
EXTERN SiS_LVDSDesStruct *SiS_CHTVONTSCDesData; EXTERN SiS_LVDSDesStruct *SiS_CHTVONTSCDesData;
EXTERN SiS_LVDSDesStruct *SiS_CHTVUPALDesData; EXTERN SiS_LVDSDesStruct *SiS_CHTVUPALDesData;
...@@ -286,20 +326,36 @@ EXTERN SiS_LVDSDesStruct *SiS_CHTVOPALDesData; ...@@ -286,20 +326,36 @@ EXTERN SiS_LVDSDesStruct *SiS_CHTVOPALDesData;
EXTERN SiS_LVDSCRT1DataStruct *SiS_LVDSCRT1800x600_1; EXTERN SiS_LVDSCRT1DataStruct *SiS_LVDSCRT1800x600_1;
EXTERN SiS_LVDSCRT1DataStruct *SiS_LVDSCRT11024x768_1; EXTERN SiS_LVDSCRT1DataStruct *SiS_LVDSCRT11024x768_1;
EXTERN SiS_LVDSCRT1DataStruct *SiS_LVDSCRT11280x1024_1; EXTERN SiS_LVDSCRT1DataStruct *SiS_LVDSCRT11280x1024_1;
EXTERN SiS_LVDSCRT1DataStruct *SiS_LVDSCRT11400x1050_1;
EXTERN SiS_LVDSCRT1DataStruct *SiS_LVDSCRT11024x600_1;
EXTERN SiS_LVDSCRT1DataStruct *SiS_LVDSCRT11152x768_1;
EXTERN SiS_LVDSCRT1DataStruct *SiS_LVDSCRT1800x600_1_H; EXTERN SiS_LVDSCRT1DataStruct *SiS_LVDSCRT1800x600_1_H;
EXTERN SiS_LVDSCRT1DataStruct *SiS_LVDSCRT11024x768_1_H; EXTERN SiS_LVDSCRT1DataStruct *SiS_LVDSCRT11024x768_1_H;
EXTERN SiS_LVDSCRT1DataStruct *SiS_LVDSCRT11280x1024_1_H; EXTERN SiS_LVDSCRT1DataStruct *SiS_LVDSCRT11280x1024_1_H;
EXTERN SiS_LVDSCRT1DataStruct *SiS_LVDSCRT11400x1050_1_H;
EXTERN SiS_LVDSCRT1DataStruct *SiS_LVDSCRT11024x600_1_H;
EXTERN SiS_LVDSCRT1DataStruct *SiS_LVDSCRT11152x768_1_H;
EXTERN SiS_LVDSCRT1DataStruct *SiS_LVDSCRT1800x600_2; EXTERN SiS_LVDSCRT1DataStruct *SiS_LVDSCRT1800x600_2;
EXTERN SiS_LVDSCRT1DataStruct *SiS_LVDSCRT11024x768_2; EXTERN SiS_LVDSCRT1DataStruct *SiS_LVDSCRT11024x768_2;
EXTERN SiS_LVDSCRT1DataStruct *SiS_LVDSCRT11280x1024_2; EXTERN SiS_LVDSCRT1DataStruct *SiS_LVDSCRT11280x1024_2;
EXTERN SiS_LVDSCRT1DataStruct *SiS_LVDSCRT11400x1050_2;
EXTERN SiS_LVDSCRT1DataStruct *SiS_LVDSCRT11024x600_2;
EXTERN SiS_LVDSCRT1DataStruct *SiS_LVDSCRT11152x768_2;
EXTERN SiS_LVDSCRT1DataStruct *SiS_LVDSCRT1800x600_2_H; EXTERN SiS_LVDSCRT1DataStruct *SiS_LVDSCRT1800x600_2_H;
EXTERN SiS_LVDSCRT1DataStruct *SiS_LVDSCRT11024x768_2_H; EXTERN SiS_LVDSCRT1DataStruct *SiS_LVDSCRT11024x768_2_H;
EXTERN SiS_LVDSCRT1DataStruct *SiS_LVDSCRT11280x1024_2_H; EXTERN SiS_LVDSCRT1DataStruct *SiS_LVDSCRT11280x1024_2_H;
EXTERN SiS_LVDSCRT1DataStruct *SiS_LVDSCRT11400x1050_2_H;
EXTERN SiS_LVDSCRT1DataStruct *SiS_LVDSCRT11024x600_2_H;
EXTERN SiS_LVDSCRT1DataStruct *SiS_LVDSCRT11152x768_2_H;
EXTERN SiS_LVDSCRT1DataStruct *SiS_LVDSCRT1XXXxXXX_1;
EXTERN SiS_LVDSCRT1DataStruct *SiS_LVDSCRT1XXXxXXX_1_H;
EXTERN SiS_LVDSCRT1DataStruct *SiS_CHTVCRT1UNTSC; EXTERN SiS_LVDSCRT1DataStruct *SiS_CHTVCRT1UNTSC;
EXTERN SiS_LVDSCRT1DataStruct *SiS_CHTVCRT1ONTSC; EXTERN SiS_LVDSCRT1DataStruct *SiS_CHTVCRT1ONTSC;
EXTERN SiS_LVDSCRT1DataStruct *SiS_CHTVCRT1UPAL; EXTERN SiS_LVDSCRT1DataStruct *SiS_CHTVCRT1UPAL;
EXTERN SiS_LVDSCRT1DataStruct *SiS_CHTVCRT1OPAL; EXTERN SiS_LVDSCRT1DataStruct *SiS_CHTVCRT1OPAL;
/*add for LCDA*/
EXTERN SiS_LVDSCRT1DataStruct *SiS_LVDSCRT1320x480_1;
EXTERN SiS_LCDACRT1DataStruct *SiS_LCDACRT1800x600_1; EXTERN SiS_LCDACRT1DataStruct *SiS_LCDACRT1800x600_1;
EXTERN SiS_LCDACRT1DataStruct *SiS_LCDACRT11024x768_1; EXTERN SiS_LCDACRT1DataStruct *SiS_LCDACRT11024x768_1;
EXTERN SiS_LCDACRT1DataStruct *SiS_LCDACRT11280x1024_1; EXTERN SiS_LCDACRT1DataStruct *SiS_LCDACRT11280x1024_1;
...@@ -312,7 +368,14 @@ EXTERN SiS_LCDACRT1DataStruct *SiS_LCDACRT11280x1024_2; ...@@ -312,7 +368,14 @@ EXTERN SiS_LCDACRT1DataStruct *SiS_LCDACRT11280x1024_2;
EXTERN SiS_LCDACRT1DataStruct *SiS_LCDACRT1800x600_2_H; EXTERN SiS_LCDACRT1DataStruct *SiS_LCDACRT1800x600_2_H;
EXTERN SiS_LCDACRT1DataStruct *SiS_LCDACRT11024x768_2_H; EXTERN SiS_LCDACRT1DataStruct *SiS_LCDACRT11024x768_2_H;
EXTERN SiS_LCDACRT1DataStruct *SiS_LCDACRT11280x1024_2_H; EXTERN SiS_LCDACRT1DataStruct *SiS_LCDACRT11280x1024_2_H;
/*end 301b*/
/* TW: New from 650/301LV BIOS */
EXTERN SiS_Part2PortTblStruct *SiS_CRT2Part2_1024x768_1;
EXTERN SiS_Part2PortTblStruct *SiS_CRT2Part2_1280x1024_1;
EXTERN SiS_Part2PortTblStruct *SiS_CRT2Part2_1024x768_2;
EXTERN SiS_Part2PortTblStruct *SiS_CRT2Part2_1280x1024_2;
EXTERN SiS_Part2PortTblStruct *SiS_CRT2Part2_1024x768_3;
EXTERN SiS_Part2PortTblStruct *SiS_CRT2Part2_1280x1024_3;
EXTERN SiS_CHTVRegDataStruct *SiS_CHTVReg_UNTSC; EXTERN SiS_CHTVRegDataStruct *SiS_CHTVReg_UNTSC;
EXTERN SiS_CHTVRegDataStruct *SiS_CHTVReg_ONTSC; EXTERN SiS_CHTVRegDataStruct *SiS_CHTVReg_ONTSC;
...@@ -322,3 +385,6 @@ EXTERN UCHAR *SiS_CHTVVCLKUNTSC; ...@@ -322,3 +385,6 @@ EXTERN UCHAR *SiS_CHTVVCLKUNTSC;
EXTERN UCHAR *SiS_CHTVVCLKONTSC; EXTERN UCHAR *SiS_CHTVVCLKONTSC;
EXTERN UCHAR *SiS_CHTVVCLKUPAL; EXTERN UCHAR *SiS_CHTVVCLKUPAL;
EXTERN UCHAR *SiS_CHTVVCLKOPAL; EXTERN UCHAR *SiS_CHTVVCLKOPAL;
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment