📄 sis_accel.h
字号:
if (CmdQueLen <= 1) SiS300Idle;\ MMIO_OUT32(ivideo.mmio_vbase, 0x8224, color);\ MMIO_OUT32(ivideo.mmio_vbase, 0x8228, color);\ CmdQueLen -= 2;#define SiS300SetupDSTTrans(color) \ if (CmdQueLen <= 1) SiS300Idle;\ MMIO_OUT32(ivideo.mmio_vbase, 0x821C, color); \ MMIO_OUT32(ivideo.mmio_vbase, 0x8220, color); \ CmdQueLen -= 2;#define SiS300SetupMONOPAT(p0,p1) \ if (CmdQueLen <= 1) SiS300Idle;\ MMIO_OUT32(ivideo.mmio_vbase, BR(11), p0);\ MMIO_OUT32(ivideo.mmio_vbase, BR(12), p1);\ CmdQueLen -= 2;#define SiS300SetupClipLT(left,top) \ if (CmdQueLen <= 0) SiS300Idle;\ MMIO_OUT32(ivideo.mmio_vbase, BR(13), ((left) & 0xFFFF) | (top)<<16 );\ CmdQueLen--;#define SiS300SetupClipRB(right,bottom) \ if (CmdQueLen <= 0) SiS300Idle;\ MMIO_OUT32(ivideo.mmio_vbase, BR(14), ((right) & 0xFFFF) | (bottom)<<16 );\ CmdQueLen--;/* General */#define SiS300SetupROP(rop) \ ivideo.CommandReg = (rop) << 8;#define SiS300SetupCMDFlag(flags) \ ivideo.CommandReg |= (flags);#define SiS300DoCMD \ if (CmdQueLen <= 1) SiS300Idle;\ MMIO_OUT32(ivideo.mmio_vbase, BR(15), ivideo.CommandReg); \ MMIO_OUT32(ivideo.mmio_vbase, BR(16), 0);\ CmdQueLen -= 2;/* Line */#define SiS300SetupX0Y0(x,y) \ if (CmdQueLen <= 0) SiS300Idle;\ MMIO_OUT32(ivideo.mmio_vbase, BR(2), (y)<<16 | (x) );\ CmdQueLen--;#define SiS300SetupX1Y1(x,y) \ if (CmdQueLen <= 0) SiS300Idle;\ MMIO_OUT32(ivideo.mmio_vbase, BR(3), (y)<<16 | (x) );\ CmdQueLen--;#define SiS300SetupLineCount(c) \ if (CmdQueLen <= 0) SiS300Idle;\ MMIO_OUT16(ivideo.mmio_vbase, BR(6), c);\ CmdQueLen--;#define SiS300SetupStylePeriod(p) \ if (CmdQueLen <= 0) SiS300Idle;\ MMIO_OUT16(ivideo.mmio_vbase, BR(6)+2, p);\ CmdQueLen--;#define SiS300SetupStyleLow(ls) \ if (CmdQueLen <= 0) SiS300Idle;\ MMIO_OUT32(ivideo.mmio_vbase, BR(11), ls);\ CmdQueLen--;#define SiS300SetupStyleHigh(ls) \ if (CmdQueLen <= 0) SiS300Idle;\ MMIO_OUT32(ivideo.mmio_vbase, BR(12), ls);\ CmdQueLen--;/* ----------- SiS 310/325 series --------------- *//* Q_STATUS: bit 31 = 1: All engines idle and all queues empty bit 30 = 1: Hardware Queue (=HW CQ, 2D queue, 3D queue) empty bit 29 = 1: 2D engine is idle bit 28 = 1: 3D engine is idle bit 27 = 1: HW command queue empty bit 26 = 1: 2D queue empty bit 25 = 1: 3D queue empty bit 24 = 1: SW command queue empty bits 23:16: 2D counter 3 bits 15:8: 2D counter 2 bits 7:0: 2D counter 1 Where is the command queue length (current amount of commands the queue can accept) on the 310/325 series? (The current implementation is taken from 300 series and certainly wrong...)*//* TW: FIXME: CmdQueLen is... where....? */#define SiS310Idle \ { \ while( (MMIO_IN16(ivideo.mmio_vbase, Q_STATUS+2) & 0x8000) != 0x8000){}; \ while( (MMIO_IN16(ivideo.mmio_vbase, Q_STATUS+2) & 0x8000) != 0x8000){}; \ CmdQueLen=MMIO_IN16(ivideo.mmio_vbase, Q_STATUS); \ }#define SiS310SetupSRCBase(base) \ if (CmdQueLen <= 0) SiS310Idle;\ MMIO_OUT32(ivideo.mmio_vbase, SRC_ADDR, base);\ CmdQueLen--;#define SiS310SetupSRCPitch(pitch) \ if (CmdQueLen <= 0) SiS310Idle;\ MMIO_OUT16(ivideo.mmio_vbase, SRC_PITCH, pitch);\ CmdQueLen--;#define SiS310SetupSRCXY(x,y) \ if (CmdQueLen <= 0) SiS310Idle;\ MMIO_OUT32(ivideo.mmio_vbase, SRC_Y, (x)<<16 | (y) );\ CmdQueLen--;#define SiS310SetupDSTBase(base) \ if (CmdQueLen <= 0) SiS310Idle;\ MMIO_OUT32(ivideo.mmio_vbase, DST_ADDR, base);\ CmdQueLen--;#define SiS310SetupDSTXY(x,y) \ if (CmdQueLen <= 0) SiS310Idle;\ MMIO_OUT32(ivideo.mmio_vbase, DST_Y, (x)<<16 | (y) );\ CmdQueLen--;#define SiS310SetupDSTRect(x,y) \ if (CmdQueLen <= 0) SiS310Idle;\ MMIO_OUT32(ivideo.mmio_vbase, DST_PITCH, (y)<<16 | (x) );\ CmdQueLen--;#define SiS310SetupDSTColorDepth(bpp) \ if (CmdQueLen <= 0) SiS310Idle;\ MMIO_OUT16(ivideo.mmio_vbase, AGP_BASE, bpp);\ CmdQueLen--;#define SiS310SetupRect(w,h) \ if (CmdQueLen <= 0) SiS310Idle;\ MMIO_OUT32(ivideo.mmio_vbase, RECT_WIDTH, (h)<<16 | (w) );\ CmdQueLen--;#define SiS310SetupPATFG(color) \ if (CmdQueLen <= 0) SiS310Idle;\ MMIO_OUT32(ivideo.mmio_vbase, PAT_FGCOLOR, color);\ CmdQueLen--;#define SiS310SetupPATBG(color) \ if (CmdQueLen <= 0) SiS310Idle;\ MMIO_OUT32(ivideo.mmio_vbase, PAT_BGCOLOR, color);\ CmdQueLen--;#define SiS310SetupSRCFG(color) \ if (CmdQueLen <= 0) SiS310Idle;\ MMIO_OUT32(ivideo.mmio_vbase, SRC_FGCOLOR, color);\ CmdQueLen--;#define SiS310SetupSRCBG(color) \ if (CmdQueLen <= 0) SiS310Idle;\ MMIO_OUT32(ivideo.mmio_vbase, SRC_BGCOLOR, color);\ CmdQueLen--;#define SiS310SetupSRCTrans(color) \ if (CmdQueLen <= 1) SiS310Idle;\ MMIO_OUT32(ivideo.mmio_vbase, TRANS_SRC_KEY_HIGH, color);\ MMIO_OUT32(ivideo.mmio_vbase, TRANS_SRC_KEY_LOW, color);\ CmdQueLen -= 2;#define SiS310SetupDSTTrans(color) \ if (CmdQueLen <= 1) SiS310Idle;\ MMIO_OUT32(ivideo.mmio_vbase, TRANS_DST_KEY_HIGH, color); \ MMIO_OUT32(ivideo.mmio_vbase, TRANS_DST_KEY_LOW, color); \ CmdQueLen -= 2;#define SiS310SetupMONOPAT(p0,p1) \ if (CmdQueLen <= 1) SiS310Idle;\ MMIO_OUT32(ivideo.mmio_vbase, MONO_MASK, p0);\ MMIO_OUT32(ivideo.mmio_vbase, MONO_MASK+4, p1);\ CmdQueLen -= 2;#define SiS310SetupClipLT(left,top) \ if (CmdQueLen <= 0) SiS310Idle;\ MMIO_OUT32(ivideo.mmio_vbase, LEFT_CLIP, ((left) & 0xFFFF) | (top)<<16 );\ CmdQueLen--;#define SiS310SetupClipRB(right,bottom) \ if (CmdQueLen <= 0) SiS310Idle;\ MMIO_OUT32(ivideo.mmio_vbase, RIGHT_CLIP, ((right) & 0xFFFF) | (bottom)<<16 );\ CmdQueLen--;#define SiS310SetupROP(rop) \ ivideo.CommandReg = (rop) << 8;#define SiS310SetupCMDFlag(flags) \ ivideo.CommandReg |= (flags);#define SiS310DoCMD \ if (CmdQueLen <= 1) SiS310Idle;\ MMIO_OUT32(ivideo.mmio_vbase, COMMAND_READY, ivideo.CommandReg); \ MMIO_OUT32(ivideo.mmio_vbase, FIRE_TRIGGER, 0); \ CmdQueLen -= 2;#define SiS310SetupX0Y0(x,y) \ if (CmdQueLen <= 0) SiS310Idle;\ MMIO_OUT32(ivideo.mmio_vbase, LINE_X0, (y)<<16 | (x) );\ CmdQueLen--;#define SiS310SetupX1Y1(x,y) \ if (CmdQueLen <= 0) SiS310Idle;\ MMIO_OUT32(ivideo.mmio_vbase, LINE_X1, (y)<<16 | (x) );\ CmdQueLen--;#define SiS310SetupLineCount(c) \ if (CmdQueLen <= 0) SiS310Idle;\ MMIO_OUT16(ivideo.mmio_vbase, LINE_COUNT, c);\ CmdQueLen--;#define SiS310SetupStylePeriod(p) \ if (CmdQueLen <= 0) SiS310Idle;\ MMIO_OUT16(ivideo.mmio_vbase, LINE_STYLE_PERIOD, p);\ CmdQueLen--;#define SiS310SetupStyleLow(ls) \ if (CmdQueLen <= 0) SiS310Idle;\ MMIO_OUT32(ivideo.mmio_vbase, LINE_STYLE_0, ls);\ CmdQueLen--;#define SiS310SetupStyleHigh(ls) \ if (CmdQueLen <= 0) SiS310Idle;\ MMIO_OUT32(ivideo.mmio_vbase, LINE_STYLE_1, ls);\ CmdQueLen--;int sisfb_initaccel(void);#if LINUX_VERSION_CODE <= KERNEL_VERSION(2,5,33)void fbcon_sis_bmove(struct display *p, int srcy, int srcx, int dsty, int dstx, int height, int width);void fbcon_sis_revc(struct display *p, int srcy, int srcx);void fbcon_sis_clear8(struct vc_data *conp, struct display *p, int srcy, int srcx, int height, int width);void fbcon_sis_clear16(struct vc_data *conp, struct display *p, int srcy, int srcx, int height, int width);void fbcon_sis_clear32(struct vc_data *conp, struct display *p, int srcy, int srcx, int height, int width);#endif#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,34)extern int sisfb_accel;void fbcon_sis_fillrect(struct fb_info *info, struct fb_fillrect *rect);void fbcon_sis_copyarea(struct fb_info *info, struct fb_copyarea *area);extern void cfb_fillrect(struct fb_info *info, struct fb_fillrect *rect);extern void cfb_copyarea(struct fb_info *info, struct fb_copyarea *area);#endif#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -