亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? fbcon.h

?? 該程序是在linux arm下實現的基于framebuffer的LCD驅動
?? H
?? 第 1 頁 / 共 2 頁
字號:
/* *  linux/drivers/video/fbcon.h -- Low level frame buffer based console driver * *	Copyright (C) 1997 Geert Uytterhoeven * *  This file is subject to the terms and conditions of the GNU General Public *  License.  See the file COPYING in the main directory of this archive *  for more details. */#ifndef _VIDEO_FBCON_H#define _VIDEO_FBCON_H#include <linux/config.h>#include <linux/types.h>#include <linux/console_struct.h>#include <linux/vt_buffer.h>#include <asm/io.h>    /*                                       *  `switch' for the Low Level Operations     */ struct display_switch {                                                    void (*setup)(struct display *p);    void (*bmove)(struct display *p, int sy, int sx, int dy, int dx,		  int height, int width);    /* for clear, conp may be NULL, which means use a blanking (black) color */    void (*clear)(struct vc_data *conp, struct display *p, int sy, int sx,		  int height, int width);    void (*putc)(struct vc_data *conp, struct display *p, int c, int yy,    		 int xx);    void (*putcs)(struct vc_data *conp, struct display *p, const unsigned short *s,		  int count, int yy, int xx);         void (*revc)(struct display *p, int xx, int yy);    void (*cursor)(struct display *p, int mode, int xx, int yy);    int  (*set_font)(struct display *p, int width, int height);    void (*clear_margins)(struct vc_data *conp, struct display *p,			  int bottom_only);    unsigned int fontwidthmask;      /* 1 at (1 << (width - 1)) if width is supported */}; extern struct display_switch fbcon_dummy;   /*    *    This is the interface between the low-level console driver and the    *    low-level frame buffer device    */struct display {    /* Filled in by the frame buffer device */    struct fb_var_screeninfo var;   /* variable infos. yoffset and vmode */                                    /* are updated by fbcon.c */    struct fb_cmap cmap;            /* colormap */    char *screen_base;              /* pointer to top of virtual screen */                                        /* (virtual address) */    int visual;    int type;                       /* see FB_TYPE_* */    int type_aux;                   /* Interleave for interleaved Planes */    u_short ypanstep;               /* zero if no hardware ypan */    u_short ywrapstep;              /* zero if no hardware ywrap */    u_long line_length;             /* length of a line in bytes */    u_short can_soft_blank;         /* zero if no hardware blanking */    u_short inverse;                /* != 0 text black on white as default */    struct display_switch *dispsw;  /* low level operations */    void *dispsw_data;              /* optional dispsw helper data */#if 0    struct fb_fix_cursorinfo fcrsr;    struct fb_var_cursorinfo *vcrsr;    struct fb_cursorstate crsrstate;#endif    /* Filled in by the low-level console driver */    struct vc_data *conp;           /* pointer to console data */    struct fb_info *fb_info;        /* frame buffer for this console */    int vrows;                      /* number of virtual rows */    unsigned short cursor_x;        /* current cursor position */    unsigned short cursor_y;    int fgcol;                      /* text colors */    int bgcol;    u_long next_line;               /* offset to one line below */    u_long next_plane;              /* offset to next plane */    u_char *fontdata;               /* Font associated to this display */    unsigned short _fontheightlog;    unsigned short _fontwidthlog;    unsigned short _fontheight;    unsigned short _fontwidth;    int userfont;                   /* != 0 if fontdata kmalloc()ed */    u_short scrollmode;             /* Scroll Method */    short yscroll;                  /* Hardware scrolling */    unsigned char fgshift, bgshift;    unsigned short charmask;        /* 0xff or 0x1ff */};/* drivers/video/fbcon.c */extern struct display fb_display[MAX_NR_CONSOLES];extern char con2fb_map[MAX_NR_CONSOLES];extern int PROC_CONSOLE(const struct fb_info *info);extern void set_con2fb_map(int unit, int newidx);extern int set_all_vcs(int fbidx, struct fb_ops *fb,		       struct fb_var_screeninfo *var, struct fb_info *info);#define fontheight(p) ((p)->_fontheight)#define fontheightlog(p) ((p)->_fontheightlog)#ifdef CONFIG_FBCON_FONTWIDTH8_ONLY/* fontwidth w is supported by dispsw */#define FONTWIDTH(w)	(1 << ((8) - 1))/* fontwidths w1-w2 inclusive are supported by dispsw */#define FONTWIDTHRANGE(w1,w2)	FONTWIDTH(8)#define fontwidth(p) (8)#define fontwidthlog(p) (0)#else/* fontwidth w is supported by dispsw */#define FONTWIDTH(w)	(1 << ((w) - 1))/* fontwidths w1-w2 inclusive are supported by dispsw */#define FONTWIDTHRANGE(w1,w2)	(FONTWIDTH(w2+1) - FONTWIDTH(w1))#define fontwidth(p) ((p)->_fontwidth)#define fontwidthlog(p) ((p)->_fontwidthlog)#endif    /*     *  Attribute Decoding     *//* Color */#define attr_fgcol(p,s)    \	(((s) >> ((p)->fgshift)) & 0x0f)#define attr_bgcol(p,s)    \	(((s) >> ((p)->bgshift)) & 0x0f)#define	attr_bgcol_ec(p,conp) \	((conp) ? (((conp)->vc_video_erase_char >> ((p)->bgshift)) & 0x0f) : 0)/* Monochrome */#define attr_bold(p,s) \	((s) & 0x200)#define attr_reverse(p,s) \	(((s) & 0x800) ^ ((p)->inverse ? 0x800 : 0))#define attr_underline(p,s) \	((s) & 0x400)#define attr_blink(p,s) \	((s) & 0x8000)	    /*     *  Scroll Method     */     /* Internal flags */#define __SCROLL_YPAN		0x001#define __SCROLL_YWRAP		0x002#define __SCROLL_YMOVE		0x003#define __SCROLL_YREDRAW	0x004#define __SCROLL_YMASK		0x00f#define __SCROLL_YFIXED		0x010#define __SCROLL_YNOMOVE	0x020#define __SCROLL_YPANREDRAW	0x040#define __SCROLL_YNOPARTIAL	0x080/* Only these should be used by the drivers *//* Which one should you use? If you have a fast card and slow bus,   then probably just 0 to indicate fbcon should choose between   YWRAP/YPAN+MOVE/YMOVE. On the other side, if you have a fast bus   and even better if your card can do fonting (1->8/32bit painting),   you should consider either SCROLL_YREDRAW (if your card is   able to do neither YPAN/YWRAP), or SCROLL_YNOMOVE.   The best is to test it with some real life scrolling (usually, not   all lines on the screen are filled completely with non-space characters,   and REDRAW performs much better on such lines, so don't cat a file   with every line covering all screen columns, it would not be the right   benchmark). */#define SCROLL_YREDRAW		(__SCROLL_YFIXED|__SCROLL_YREDRAW)#define SCROLL_YNOMOVE		(__SCROLL_YNOMOVE|__SCROLL_YPANREDRAW)/* SCROLL_YNOPARTIAL, used in combination with the above, is for video   cards which can not handle using panning to scroll a portion of the   screen without excessive flicker.  Panning will only be used for   whole screens. *//* Namespace consistency */#define SCROLL_YNOPARTIAL	__SCROLL_YNOPARTIAL#if defined(__sparc__)/* We map all of our framebuffers such that big-endian accesses * are what we want, so the following is sufficient. */#define fb_readb sbus_readb#define fb_readw sbus_readw#define fb_readl sbus_readl#define fb_writeb sbus_writeb#define fb_writew sbus_writew#define fb_writel sbus_writel#define fb_memset sbus_memset_io#elif defined(__i386__) || defined(__alpha__) || \      defined(__x86_64__) || defined(__hppa__)#define fb_readb __raw_readb#define fb_readw __raw_readw#define fb_readl __raw_readl#define fb_writeb __raw_writeb#define fb_writew __raw_writew#define fb_writel __raw_writel#define fb_memset memset_io#else#define fb_readb(addr) (*(volatile u8 *) (addr))#define fb_readw(addr) (*(volatile u16 *) (addr))#define fb_readl(addr) (*(volatile u32 *) (addr))#define fb_writeb(b,addr) (*(volatile u8 *) (addr) = (b))#define fb_writew(b,addr) (*(volatile u16 *) (addr) = (b))#define fb_writel(b,addr) (*(volatile u32 *) (addr) = (b))#define fb_memset memset#endifextern void fbcon_redraw_clear(struct vc_data *, struct display *, int, int, int, int);extern void fbcon_redraw_bmove(struct display *, int, int, int, int, int, int);/* ================================================================= *//*                      Utility Assembler Functions                  *//* ================================================================= */#if defined(__mc68000__)/* ====================================================================== *//* Those of a delicate disposition might like to skip the next couple of * pages. * * These functions are drop in replacements for memmove and * memset(_, 0, _). However their five instances add at least a kilobyte * to the object file. You have been warned. * * Not a great fan of assembler for the sake of it, but I think * that these routines are at least 10 times faster than their C * equivalents for large blits, and that's important to the lowest level of * a graphics driver. Question is whether some scheme with the blitter * would be faster. I suspect not for simple text system - not much * asynchrony. * * Code is very simple, just gruesome expansion. Basic strategy is to * increase data moved/cleared at each step to 16 bytes to reduce * instruction per data move overhead. movem might be faster still * For more than 15 bytes, we try to align the write direction on a * longword boundary to get maximum speed. This is even more gruesome. * Unaligned read/write used requires 68020+ - think this is a problem? * * Sorry! *//* ++roman: I've optimized Robert's original versions in some minor * aspects, e.g. moveq instead of movel, let gcc choose the registers, * use movem in some places... * For other modes than 1 plane, lots of more such assembler functions * were needed (e.g. the ones using movep or expanding color values). *//* ++andreas: more optimizations:   subl #65536,d0 replaced by clrw d0; subql #1,d0 for dbcc   addal is faster than addaw   movep is rather expensive compared to ordinary move's   some functions rewritten in C for clarity, no speed loss */static __inline__ void *fb_memclear_small(void *s, size_t count){   if (!count)      return(0);   __asm__ __volatile__(         "lsrl   #1,%1 ; jcc 1f ; moveb %2,%0@-\n\t"      "1: lsrl   #1,%1 ; jcc 1f ; movew %2,%0@-\n\t"      "1: lsrl   #1,%1 ; jcc 1f ; movel %2,%0@-\n\t"      "1: lsrl   #1,%1 ; jcc 1f ; movel %2,%0@- ; movel %2,%0@-\n\t"      "1:"         : "=a" (s), "=d" (count)         : "d" (0), "0" ((char *)s+count), "1" (count)   );   __asm__ __volatile__(         "subql  #1,%1 ; jcs 3f\n\t"	 "movel %2,%%d4; movel %2,%%d5; movel %2,%%d6\n\t"      "2: moveml %2/%%d4/%%d5/%%d6,%0@-\n\t"         "dbra %1,2b\n\t"      "3:"         : "=a" (s), "=d" (count)         : "d" (0), "0" (s), "1" (count)	 : "d4", "d5", "d6"  );   return(0);}static __inline__ void *fb_memclear(void *s, size_t count){   if (!count)      return(0);   if (count < 16) {      __asm__ __volatile__(            "lsrl   #1,%1 ; jcc 1f ; clrb %0@+\n\t"         "1: lsrl   #1,%1 ; jcc 1f ; clrw %0@+\n\t"         "1: lsrl   #1,%1 ; jcc 1f ; clrl %0@+\n\t"         "1: lsrl   #1,%1 ; jcc 1f ; clrl %0@+ ; clrl %0@+\n\t"         "1:"            : "=a" (s), "=d" (count)            : "0" (s), "1" (count)     );   } else {      long tmp;      __asm__ __volatile__(            "movel %1,%2\n\t"            "lsrl   #1,%2 ; jcc 1f ; clrb %0@+ ; subqw #1,%1\n\t"            "lsrl   #1,%2 ; jcs 2f\n\t"  /* %0 increased=>bit 2 switched*/            "clrw   %0@+  ; subqw  #2,%1 ; jra 2f\n\t"         "1: lsrl   #1,%2 ; jcc 2f\n\t"            "clrw   %0@+  ; subqw  #2,%1\n\t"         "2: movew %1,%2; lsrl #2,%1 ; jeq 6f\n\t"            "lsrl   #1,%1 ; jcc 3f ; clrl %0@+\n\t"         "3: lsrl   #1,%1 ; jcc 4f ; clrl %0@+ ; clrl %0@+\n\t"         "4: subql  #1,%1 ; jcs 6f\n\t"         "5: clrl %0@+; clrl %0@+ ; clrl %0@+ ; clrl %0@+\n\t"            "dbra %1,5b   ; clrw %1; subql #1,%1; jcc 5b\n\t"         "6: movew %2,%1; btst #1,%1 ; jeq 7f ; clrw %0@+\n\t"         "7:            ; btst #0,%1 ; jeq 8f ; clrb %0@+\n\t"         "8:"            : "=a" (s), "=d" (count), "=d" (tmp)            : "0" (s), "1" (count)     );   }   return(0);}static __inline__ void *fb_memset255(void *s, size_t count){   if (!count)      return(0);   __asm__ __volatile__(         "lsrl   #1,%1 ; jcc 1f ; moveb %2,%0@-\n\t"      "1: lsrl   #1,%1 ; jcc 1f ; movew %2,%0@-\n\t"      "1: lsrl   #1,%1 ; jcc 1f ; movel %2,%0@-\n\t"      "1: lsrl   #1,%1 ; jcc 1f ; movel %2,%0@- ; movel %2,%0@-\n\t"      "1:"         : "=a" (s), "=d" (count)         : "d" (-1), "0" ((char *)s+count), "1" (count)   );   __asm__ __volatile__(         "subql  #1,%1 ; jcs 3f\n\t"	 "movel %2,%%d4; movel %2,%%d5; movel %2,%%d6\n\t"      "2: moveml %2/%%d4/%%d5/%%d6,%0@-\n\t"         "dbra %1,2b\n\t"      "3:"         : "=a" (s), "=d" (count)         : "d" (-1), "0" (s), "1" (count)	 : "d4", "d5", "d6"  );   return(0);}static __inline__ void *fb_memmove(void *d, const void *s, size_t count){   if (d < s) {      if (count < 16) {         __asm__ __volatile__(               "lsrl   #1,%2 ; jcc 1f ; moveb %1@+,%0@+\n\t"            "1: lsrl   #1,%2 ; jcc 1f ; movew %1@+,%0@+\n\t"            "1: lsrl   #1,%2 ; jcc 1f ; movel %1@+,%0@+\n\t"            "1: lsrl   #1,%2 ; jcc 1f ; movel %1@+,%0@+ ; movel %1@+,%0@+\n\t"            "1:"               : "=a" (d), "=a" (s), "=d" (count)               : "0" (d), "1" (s), "2" (count)        );      } else {         long tmp;         __asm__ __volatile__(               "movel  %0,%3\n\t"               "lsrl   #1,%3 ; jcc 1f ; moveb %1@+,%0@+ ; subqw #1,%2\n\t"               "lsrl   #1,%3 ; jcs 2f\n\t"  /* %0 increased=>bit 2 switched*/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品日韩一| 粉嫩一区二区三区性色av| youjizz久久| 久久蜜桃香蕉精品一区二区三区| 免费久久精品视频| 欧美视频精品在线观看| 一区二区三区在线高清| av不卡在线播放| 国产精品三级视频| 色综合中文综合网| 国产一区二区不卡老阿姨| 91精品国产91久久综合桃花| 日本亚洲欧美天堂免费| 欧美日韩精品欧美日韩精品一 | 国产蜜臀97一区二区三区| 国产制服丝袜一区| 精品国产一区二区三区久久久蜜月| 久久精品av麻豆的观看方式| 日韩一区二区在线观看视频 | 国产精品国产三级国产普通话三级 | 国产一区二区美女| 337p日本欧洲亚洲大胆色噜噜| 亚洲精品欧美激情| 7777精品伊人久久久大香线蕉完整版 | 日韩精品自拍偷拍| 欧美精品v国产精品v日韩精品| 亚洲视频一区在线观看| 色婷婷亚洲综合| 久久青草欧美一区二区三区| 91精品国产麻豆国产自产在线| 欧美日韩精品一区二区三区| 欧美色大人视频| 欧美福利电影网| 久久夜色精品一区| 日韩欧美中文字幕公布| 日韩视频一区二区在线观看| 欧美日韩国产123区| 欧美日韩国产成人在线免费| 欧美一区二区女人| 欧美精品一区二区高清在线观看| 久久久亚洲精品一区二区三区| 亚洲欧美自拍偷拍色图| 国产精品久线观看视频| 激情综合亚洲精品| 美女视频免费一区| 99热在这里有精品免费| 成人av电影免费在线播放| 亚洲一区在线观看免费| 午夜激情久久久| 免费美女久久99| 欧美精品丝袜中出| 国产69精品一区二区亚洲孕妇| 亚洲自拍另类综合| 天堂久久一区二区三区| 亚洲精品一区二区三区99| 国产麻豆91精品| 亚洲成人av资源| 久久精品亚洲麻豆av一区二区| 色悠久久久久综合欧美99| 蜜桃久久久久久久| 国产精品不卡在线| 亚洲精品亚洲人成人网| 亚洲一二三区在线观看| yourporn久久国产精品| 日本韩国精品在线| 三级久久三级久久久| 91在线免费看| 亚洲午夜电影网| 欧美亚洲日本国产| 久久伊99综合婷婷久久伊| 国产一区美女在线| 日本欧美在线看| 色爱区综合激月婷婷| 亚洲第一电影网| 国产精品久久久久久久久动漫| 欧美日韩国产成人在线91| 成人激情免费视频| 麻豆精品一区二区| 亚洲第一在线综合网站| 亚洲日本va午夜在线影院| 91精品国产综合久久久久久漫画| 91欧美激情一区二区三区成人| 久88久久88久久久| 五月天精品一区二区三区| 亚洲视频一区在线观看| 日韩一区二区精品在线观看| 色网站国产精品| 成人性生交大片免费看中文网站| 麻豆精品精品国产自在97香蕉| 亚洲精品免费视频| 日韩一区在线播放| 国产亚洲精品精华液| 精品剧情在线观看| 8x8x8国产精品| 欧美性受极品xxxx喷水| 日本精品视频一区二区| 色综合天天综合网国产成人综合天 | 91毛片在线观看| 成人在线一区二区三区| av毛片久久久久**hd| 精品日韩一区二区三区| 91麻豆精品91久久久久同性| 欧美唯美清纯偷拍| 日韩视频123| 日韩精品一区二区三区四区| 91精品国产丝袜白色高跟鞋| 精品动漫一区二区三区在线观看| 欧美一级搡bbbb搡bbbb| 欧美大尺度电影在线| 日韩一二三区视频| 欧美视频在线不卡| 国产亚洲一区二区在线观看| 9i在线看片成人免费| 色悠悠久久综合| 欧美一区二区三区视频免费播放| 国产网站一区二区| 国产精品美女久久久久久久| 国产精品国产三级国产三级人妇| 国产精品国产三级国产aⅴ无密码| 中文字幕va一区二区三区| 亚洲一区二区三区四区五区黄| 一区二区三区av电影 | 一本一本大道香蕉久在线精品 | 日韩美女天天操| 日韩美女在线视频| 国产精品不卡在线| 国产成人免费视频网站 | 亚洲一区二区成人在线观看| 一区二区三区欧美在线观看| 免费在线观看精品| 国产精品福利一区| 日韩精品资源二区在线| 成人激情小说乱人伦| 在线亚洲精品福利网址导航| 欧美大片免费久久精品三p| 中文字幕一区二区三区四区不卡| 亚洲成av人综合在线观看| 粉嫩在线一区二区三区视频| 在线电影院国产精品| 国产精品国产三级国产| 久久99精品视频| 欧美日韩国产美女| 亚洲特级片在线| 国产一区免费电影| 欧美一区二区在线视频| 成人午夜视频网站| 欧美成人三级在线| 午夜精品一区二区三区电影天堂 | 国产一区二区三区精品欧美日韩一区二区三区 | 日韩一区在线播放| 国产麻豆欧美日韩一区| 欧美一区日韩一区| 亚洲福利视频三区| 色综合视频一区二区三区高清| 精品国免费一区二区三区| 婷婷成人激情在线网| 欧洲色大大久久| 亚洲天堂免费看| 成人av午夜影院| 中文字幕电影一区| 欧美成人精品二区三区99精品| 亚洲成人福利片| 欧美主播一区二区三区美女| 日韩毛片精品高清免费| 国产sm精品调教视频网站| 亚洲精品一区在线观看| 另类小说一区二区三区| 日韩一区二区在线看| 日本午夜一本久久久综合| 欧美另类变人与禽xxxxx| 亚洲一二三四久久| 欧洲生活片亚洲生活在线观看| 中文字幕日韩av资源站| 成人精品亚洲人成在线| 国产精品久久网站| 99久久精品99国产精品| 中文字幕亚洲不卡| 一本到一区二区三区| 一区二区三区在线免费| 欧美在线你懂得| 午夜精品久久一牛影视| 欧美日韩国产一区| 秋霞午夜av一区二区三区| 在线综合视频播放| 久色婷婷小香蕉久久| 亚洲精品在线免费播放| 国产乱人伦精品一区二区在线观看| 久久久综合视频| av在线不卡观看免费观看| 亚洲精品免费一二三区| 欧美日韩在线电影| 乱一区二区av| 韩国理伦片一区二区三区在线播放| 精品欧美乱码久久久久久1区2区| 国产一区二区三区四区在线观看| 欧美激情一区二区三区不卡| 91浏览器入口在线观看| 首页国产欧美久久| 久久久亚洲欧洲日产国码αv| 97久久久精品综合88久久|