📄 sis_main.h
字号:
#ifndef _SISFB_MAIN#define _SISFB_MAIN/* Comments and changes marked with "TW" by Thomas Winischhofer <tw@webit.com> *//* ------------------- Constant Definitions ------------------------- */#undef LINUXBIOS /* turn on when use LINUXBIOS */#define AGPOFF /* default is turn off AGP */#define VER_MAJOR 1#define VER_MINOR 3#define VER_LEVEL 13 /* TW: To be included in pci_ids.h */#ifndef PCI_DEVICE_ID_SI_650_VGA#define PCI_DEVICE_ID_SI_650_VGA 0x6325#endif#ifndef PCI_DEVICE_ID_SI_650#define PCI_DEVICE_ID_SI_650 0x0650#endif/* TW end */#define DEFAULT_MODE 3#define DEFAULT_LCDMODE 12#define DEFAULT_TVMODE 12#define MODE_INDEX_NONE 0 /* TW: index for mode=none */#define MAX_ROM_SCAN 0x10000#define TURBO_QUEUE_CAP 0x80#define HW_CURSOR_CAP 0x40#define AGP_CMD_QUEUE_CAP 0x80#define VM_CMD_QUEUE_CAP 0x20/* For 300 series */#ifdef CONFIG_FB_SIS_300#define TURBO_QUEUE_AREA_SIZE 0x80000 /* 512K */#endif/* For 315 series */#ifdef CONFIG_FB_SIS_315#define COMMAND_QUEUE_AREA_SIZE 0x80000 /* 512K */#define COMMAND_QUEUE_THRESHOLD 0x1F#endif/* TW */#define HW_CURSOR_AREA_SIZE_315 0x4000 /* 16K */#define HW_CURSOR_AREA_SIZE_300 0x1000 /* 4K */#define OH_ALLOC_SIZE 4000#define SENTINEL 0x7fffffff#define SEQ_ADR 0x14#define SEQ_DATA 0x15#define DAC_ADR 0x18#define DAC_DATA 0x19#define CRTC_ADR 0x24#define CRTC_DATA 0x25#define DAC2_ADR (0x16-0x30)#define DAC2_DATA (0x17-0x30)#define VB_PART1_ADR (0x04-0x30)#define VB_PART1_DATA (0x05-0x30)#define VB_PART2_ADR (0x10-0x30)#define VB_PART2_DATA (0x11-0x30)#define VB_PART3_ADR (0x12-0x30)#define VB_PART3_DATA (0x13-0x30)#define VB_PART4_ADR (0x14-0x30)#define VB_PART4_DATA (0x15-0x30)#define IND_SIS_PASSWORD 0x05 /* SRs */#define IND_SIS_COLOR_MODE 0x06#define IND_SIS_RAMDAC_CONTROL 0x07#define IND_SIS_DRAM_SIZE 0x14#define IND_SIS_SCRATCH_REG_16 0x16#define IND_SIS_SCRATCH_REG_17 0x17#define IND_SIS_SCRATCH_REG_1A 0x1A#define IND_SIS_MODULE_ENABLE 0x1E#define IND_SIS_PCI_ADDRESS_SET 0x20#define IND_SIS_TURBOQUEUE_ADR 0x26#define IND_SIS_TURBOQUEUE_SET 0x27#define IND_SIS_POWER_ON_TRAP 0x38#define IND_SIS_POWER_ON_TRAP2 0x39#define IND_SIS_CMDQUEUE_SET 0x26#define IND_SIS_CMDQUEUE_THRESHOLD 0x27#define IND_SIS_SCRATCH_REG_CR30 0x30 /* CRs */#define IND_SIS_SCRATCH_REG_CR31 0x31#define IND_SIS_SCRATCH_REG_CR32 0x32#define IND_SIS_SCRATCH_REG_CR33 0x33#define IND_SIS_LCD_PANEL 0x36#define IND_SIS_SCRATCH_REG_CR37 0x37#define IND_SIS_AGP_IO_PAD 0x48#define IND_BRI_DRAM_STATUS 0x63 /* PCI memory size offset */#define MMIO_QUEUE_PHYBASE 0x85C0#define MMIO_QUEUE_WRITEPORT 0x85C4#define MMIO_QUEUE_READPORT 0x85C8/* Eden Chen; TW */#define IND_SIS_CRT2_WRITE_ENABLE_300 0x24#define IND_SIS_CRT2_WRITE_ENABLE_315 0x2F/* ~Eden Chen; TW */#define SIS_PASSWORD 0x86 /* SR05 */#define SIS_INTERLACED_MODE 0x20 /* SR06 */#define SIS_8BPP_COLOR_MODE 0x0 #define SIS_15BPP_COLOR_MODE 0x1 #define SIS_16BPP_COLOR_MODE 0x2 #define SIS_32BPP_COLOR_MODE 0x4 #define SIS_DRAM_SIZE_MASK 0x3F /* SR14 */#define SIS_DRAM_SIZE_1MB 0x00#define SIS_DRAM_SIZE_2MB 0x01#define SIS_DRAM_SIZE_4MB 0x03#define SIS_DRAM_SIZE_8MB 0x07#define SIS_DRAM_SIZE_16MB 0x0F#define SIS_DRAM_SIZE_32MB 0x1F#define SIS_DRAM_SIZE_64MB 0x3F#define SIS_DATA_BUS_MASK 0xC0#define SIS_DATA_BUS_32 0x00#define SIS_DATA_BUS_64 0x01#define SIS_DATA_BUS_128 0x02#define SIS315_DRAM_SIZE_MASK 0xF0 /* 315/640?/740? SR14 */#define SIS315_DRAM_SIZE_2MB 0x01#define SIS315_DRAM_SIZE_4MB 0x02#define SIS315_DRAM_SIZE_8MB 0x03#define SIS315_DRAM_SIZE_16MB 0x04#define SIS315_DRAM_SIZE_32MB 0x05#define SIS315_DRAM_SIZE_64MB 0x06#define SIS315_DRAM_SIZE_128MB 0x07#define SIS315_DATA_BUS_MASK 0x02#define SIS315_DATA_BUS_64 0x00#define SIS315_DATA_BUS_128 0x01#define SIS315_DUAL_CHANNEL_MASK 0x0C#define SIS315_SINGLE_CHANNEL_1_RANK 0x0#define SIS315_SINGLE_CHANNEL_2_RANK 0x1#define SIS315_ASYM_DDR 0x02#define SIS315_DUAL_CHANNEL_1_RANK 0x3#define SIS550_DRAM_SIZE_MASK 0x3F /* 550/650 SR14 */#define SIS550_DRAM_SIZE_4MB 0x00#define SIS550_DRAM_SIZE_8MB 0x01#define SIS550_DRAM_SIZE_16MB 0x03#define SIS550_DRAM_SIZE_24MB 0x05#define SIS550_DRAM_SIZE_32MB 0x07#define SIS550_DRAM_SIZE_64MB 0x0F#define SIS550_DRAM_SIZE_96MB 0x17#define SIS550_DRAM_SIZE_128MB 0x1F#define SIS550_DRAM_SIZE_256MB 0x3F#define SIS_SCRATCH_REG_1A_MASK 0x10#define SIS_ENABLE_2D 0x40 /* SR1E */#define SIS_MEM_MAP_IO_ENABLE 0x01 /* SR20 */#define SIS_PCI_ADDR_ENABLE 0x80#define SIS_AGP_CMDQUEUE_ENABLE 0x80 /* 315 SR26 */#define SIS_VRAM_CMDQUEUE_ENABLE 0x40#define SIS_MMIO_CMD_ENABLE 0x20#define SIS_CMD_QUEUE_SIZE_512k 0x00#define SIS_CMD_QUEUE_SIZE_1M 0x04#define SIS_CMD_QUEUE_SIZE_2M 0x08#define SIS_CMD_QUEUE_SIZE_4M 0x0C#define SIS_CMD_QUEUE_RESET 0x01#define SIS_CMD_AUTO_CORR 0x02#define SIS_SIMULTANEOUS_VIEW_ENABLE 0x01 /* CR30 */#define SIS_MODE_SELECT_CRT2 0x02#define SIS_VB_OUTPUT_COMPOSITE 0x04#define SIS_VB_OUTPUT_SVIDEO 0x08#define SIS_VB_OUTPUT_SCART 0x10#define SIS_VB_OUTPUT_LCD 0x20#define SIS_VB_OUTPUT_CRT2 0x40#define SIS_VB_OUTPUT_HIVISION 0x80#define SIS_VB_OUTPUT_DISABLE 0x20 /* CR31 */#define SIS_DRIVER_MODE 0x40#define SIS_VB_COMPOSITE 0x01 /* CR32 */#define SIS_VB_SVIDEO 0x02#define SIS_VB_SCART 0x04#define SIS_VB_LCD 0x08#define SIS_VB_CRT2 0x10#define SIS_CRT1 0x20#define SIS_VB_HIVISION 0x40#define SIS_VB_DVI 0x80#define SIS_VB_TV (SIS_VB_COMPOSITE | SIS_VB_SVIDEO | SIS_VB_SCART | SIS_VB_HIVISION)#define SIS_LCD_PANEL_800X600 0x1 /* CR36 */#define SIS_LCD_PANEL_1024X768 0x2#define SIS_LCD_PANEL_1280X1024 0x3#define SIS_LCD_PANEL_1280X960 0x4#define SIS_LCD_PANEL_640X480 0x5#define SIS_LCD_PANEL_1600x1200 0x6 /* TW */#define SIS_LCD_PANEL_320x480 0x7 /* TW: FSTN */#define SIS_EXTERNAL_CHIP_MASK 0x0E /* CR37 */#define SIS_EXTERNAL_CHIP_SIS301 0x01#define SIS_EXTERNAL_CHIP_LVDS 0x02 #define SIS_EXTERNAL_CHIP_TRUMPION 0x03#define SIS_EXTERNAL_CHIP_LVDS_CHRONTEL 0x04#define SIS_EXTERNAL_CHIP_CHRONTEL 0x05#define SIS_AGP_2X 0x20 /* CR48 */#define BRI_DRAM_SIZE_MASK 0x70 /* PCI bridge */#define BRI_DRAM_SIZE_2MB 0x00#define BRI_DRAM_SIZE_4MB 0x01#define BRI_DRAM_SIZE_8MB 0x02#define BRI_DRAM_SIZE_16MB 0x03#define BRI_DRAM_SIZE_32MB 0x04#define BRI_DRAM_SIZE_64MB 0x05// Eden Chen#define HW_DEVICE_EXTENSION SIS_HW_DEVICE_INFO#define PHW_DEVICE_EXTENSION PSIS_HW_DEVICE_INFO#define SR_BUFFER_SIZE 5#define CR_BUFFER_SIZE 5// ~Eden Chenint enable_dstn = 0;/* ------------------- Global Variables ----------------------------- *//* Fbcon variables */static struct fb_info fb_info;static struct display disp;static int video_type = FB_TYPE_PACKED_PIXELS;static int video_linelength;static int video_cmap_len;static struct display_switch sisfb_sw;static struct fb_var_screeninfo default_var = { 0, 0, 0, 0, 0, 0, 0, 0, {0, 8, 0}, {0, 8, 0}, {0, 8, 0}, {0, 0, 0}, 0, FB_ACTIVATE_NOW, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, FB_VMODE_NONINTERLACED, {0, 0, 0, 0, 0, 0}};static struct { u16 blue, green, red, pad;} palette[256];static union {#ifdef FBCON_HAS_CFB16 u16 cfb16[16];#endif#ifdef FBCON_HAS_CFB24 u32 cfb24[16];#endif#ifdef FBCON_HAS_CFB32 u32 cfb32[16];#endif} fbcon_cmap;/* display status */static int sisfb_off = 0;static int sisfb_crt1off = 0;static int sisfb_forcecrt1 = -1;static int sisfb_inverse = 0;static int sisvga_enabled = 0;static int currcon = 0;/*karl*/static int sisfb_tvmode = 0;static int sisfb_mem = 0;static enum _VGA_ENGINE { UNKNOWN_VGA = 0, SIS_300_VGA, SIS_315_VGA,} sisvga_engine = UNKNOWN_VGA;/* TW: These are to adapted to VGA_ENGINE type */static int sisfb_hwcursor_size = 0;static int sisfb_CRT2_write_enable = 0;/* mode-related variables */int sisfb_mode_idx = MODE_INDEX_NONE; /* (TW) was -1 */u8 sisfb_mode_no = 0;u8 sisfb_rate_idx = 0;int sisfb_crt2type = -1; /* TW: CRT2 type (for overriding autodetection) */int sisfb_queuemode = -1; /* TW: Use MMIO queue mode by default (310 series only) *//* data for sis components*/struct video_info ivideo;// Eden ChenHW_DEVICE_EXTENSION sishw_ext = { NULL, NULL, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL, NULL, {0, 0, 0, 0}};// ~Eden Chen/* card parameters */static unsigned long sisfb_mmio_size = 0;static u8 sisfb_caps = 0;typedef enum _SIS_CMDTYPE { MMIO_CMD = 0, AGP_CMD_QUEUE, VM_CMD_QUEUE,} SIS_CMDTYPE;/* Supported SiS Chips list */static struct board { u16 vendor, device; const char *name;} sisdev_list[] = { {PCI_VENDOR_ID_SI, PCI_DEVICE_ID_SI_300, "SIS 300"}, {PCI_VENDOR_ID_SI, PCI_DEVICE_ID_SI_540_VGA, "SIS 540"}, {PCI_VENDOR_ID_SI, PCI_DEVICE_ID_SI_630_VGA, "SIS 630"}, {PCI_VENDOR_ID_SI, PCI_DEVICE_ID_SI_315H, "SIS 315H"}, {PCI_VENDOR_ID_SI, PCI_DEVICE_ID_SI_315, "SIS 315"}, {PCI_VENDOR_ID_SI, PCI_DEVICE_ID_SI_315PRO, "SIS 315Pro"}, {PCI_VENDOR_ID_SI, PCI_DEVICE_ID_SI_550_VGA, "SIS 550"}, {PCI_VENDOR_ID_SI, PCI_DEVICE_ID_SI_650_VGA, "SIS 650 VGA"}, {0, 0, NULL}};/* mode table */static const struct _sisbios_mode { char name[15]; u8 mode_no; u16 xres; u16 yres; u16 bpp; u16 rate_idx; u16 cols; u16 rows;} sisbios_mode[] = { {"none", 0xFF, 0, 0, 0, 0, 0, 0}, /* TW: for mode "none" */ {"320x240x16", 0x56, 320, 240, 16, 1, 40, 15}, {"320x480x8", 0x5A, 320, 480, 8, 1, 40, 30}, {"320x480x16", 0x5B, 320, 480, 16, 1, 40, 30}, {"640x480x8", 0x2E, 640, 480, 8, 1, 80, 30}, {"640x480x16", 0x44, 640, 480, 16, 1, 80, 30}, {"640x480x24", 0x62, 640, 480, 32, 1, 80, 30}, /* TW: That's for people who mix up color- and fb depth */ {"640x480x32", 0x62, 640, 480, 32, 1, 80, 30}, {"720x480x8", 0x31, 720, 480, 8, 1, 90, 30}, {"720x480x16", 0x33, 720, 480, 16, 1, 90, 30}, {"720x480x24", 0x35, 720, 480, 32, 1, 90, 30}, /* TW */ {"720x480x32", 0x35, 720, 480, 32, 1, 90, 30}, {"720x576x8", 0x32, 720, 576, 8, 1, 90, 36}, {"720x576x16", 0x34, 720, 576, 16, 1, 90, 36}, {"720x576x24", 0x36, 720, 576, 32, 1, 90, 36}, /* TW */ {"720x576x32", 0x36, 720, 576, 32, 1, 90, 36}, {"800x600x8", 0x30, 800, 600, 8, 2, 100, 37}, {"800x600x16", 0x47, 800, 600, 16, 2, 100, 37}, {"800x600x24", 0x63, 800, 600, 32, 2, 100, 37}, /* TW */ {"800x600x32", 0x63, 800, 600, 32, 2, 100, 37}, {"1024x768x8", 0x38, 1024, 768, 8, 2, 128, 48}, {"1024x768x16", 0x4A, 1024, 768, 16, 2, 128, 48}, {"1024x768x24", 0x64, 1024, 768, 32, 2, 128, 48}, /* TW */ {"1024x768x32", 0x64, 1024, 768, 32, 2, 128, 48}, {"1280x960x8", 0x7C, 1280, 960, 8, 1, 160, 60}, /* TW */ {"1280x960x16", 0x7D, 1280, 960, 16, 1, 160, 60}, /* TW */ {"1280x960x24", 0x7E, 1280, 960, 32, 1, 160, 60}, /* TW */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -