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

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

?? w90p710fb.c

?? winbond w90p710 lcd frame buffer driver。
?? C
?? 第 1 頁 / 共 3 頁
字號:
/**************************************************************************** *                                                                                     * Copyright (c) 2004 - 2006 Winbond Electronics Corp. All rights reserved.            *                                                                                     ***************************************************************************/ /**************************************************************************** *  * FILENAME *     w90p710fb.c * * VERSION *     1.0 * * DESCRIPTION *     W90P710 LCD frame buffer driver. * * * HISTORY *     05/02/06		 Ver 1.0 Created by NS22 CCWang * * REMARK *     None * **************************************************************************/#include <linux/config.h>#include <linux/module.h>#include <linux/kernel.h>#include <linux/sched.h>#include <linux/errno.h>#include <linux/string.h>#include <linux/interrupt.h>#include <linux/slab.h>#include <linux/fb.h>#include <linux/delay.h>#include <linux/pm.h>#include <linux/init.h>#include <asm/hardware.h>#include <asm/io.h>#include <asm/irq.h>#include <asm/mach-types.h>#include <asm/uaccess.h>#include <video/fbcon.h>#include <video/fbcon-mfb.h>#include <video/fbcon-cfb2.h>#include <video/fbcon-cfb4.h>#include <video/fbcon-cfb8.h>#include <video/fbcon-cfb16.h>#include <video/fbcon-cfb24.h>#include <linux/smp_lock.h>#include "w90p710_lcd.h"//#define WB_AU_DEBUG//#define WB_AU_DEBUG_ENTER_LEAVE#ifdef WB_AU_DEBUG#define DBG(fmt, arg...)			printk(fmt, ##arg)#else#define DBG(fmt, arg...)#endif#ifdef WB_AU_DEBUG_ENTER_LEAVE#define ENTER()					DBG("[%-10s] : Enter\n", __FUNCTION__)#define LEAVE()					DBG("[%-10s] : Leave\n", __FUNCTION__)#else#define ENTER()#define LEAVE()#endifvoid Disable_LCD(void);void Enable_LCD(void);void InitCasioLCD(void);void InitAUOLCD(void);int usiIsBusy(void);static void w90p710fb_handle_irq(int irq, void *dev_id, struct pt_regs *regs);#if 0void (*w90p710fb_blank_helper)(int blank);EXPORT_SYMBOL(w90p710fb_blank_helper);#endifstatic struct w90p710fb_rgb	rgb_8 = {	red:	{offset: 6, length: 2, },	green:	{offset: 4, length: 2, },	blue:	{offset: 0, length: 4, },	transp:	{offset: 0, length: 0, },};static struct w90p710fb_rgb	def_rgb_16 = {    red:	{offset: 11, length: 5, },	green:	{offset: 5,  length: 6, },	blue:	{offset: 0,  length: 5, },	transp:	{offset: 0,  length: 0, },};static struct w90p710fb_rgb	xxx_tft_rgb_16 = {    red:	{offset: 11,length: 5, },	green:	{offset: 5,	length: 6, },	blue:	{offset: 0,	length: 5, },	transp:	{offset: 0,	length: 0, },};static struct w90p710fb_rgb	xxx_tft_rgb_24 = {    red:	{offset: 16,length: 8, },	green:	{offset: 8,	length: 8, },	blue:	{offset: 0,	length: 8, },	transp:	{offset: 0,	length: 0, },};static struct w90p710fb_mach_info xxx_tft_info __initdata = {    	pixclock:	67797,	#ifdef CONFIG_W90P710_LCD_TFT_24BPP    	bpp:		24,#endif#if defined(CONFIG_W90P710_LCD_TFT_16BPP) || defined(CONFIG_W90P710_LCD_STN_16BPP)		bpp:		16,#endif#if defined(CONFIG_W90P710_LCD_TFT_8BPP) || defined(CONFIG_W90P710_LCD_STN_8BPP)		bpp:		8,#endif#if defined(CONFIG_W90P710_LCD_TFT_4BPP) || defined(CONFIG_W90P710_LCD_STN_4BPP)		bpp:		4,#endif#if defined(CONFIG_W90P710_LCD_TFT_2BPP) || defined(CONFIG_W90P710_LCD_STN_2BPP)		bpp:		2,#endif#if defined(CONFIG_W90P710_LCD_TFT_1BPP) || defined(CONFIG_W90P710_LCD_STN_1BPP)		bpp:		1,#endif#ifdef CONFIG_W90P710_LCD_TFT#ifdef CONFIG_W90P710_LCD_TFT_CASIO		xres:		480,		yres:		240,#else#ifdef CONFIG_W90P710_LCD_TFT_AUO960240		xres:		320,		yres:		240,#else#ifdef CONFIG_W90P710_LCD_TFT_TOPPOLY240320		xres:		240,		yres:		320,#else#ifdef CONFIG_W90P710_LCD_TFT_LG		xres:		640,		yres:		480,#endif#endif#endif#endif#else		xres:		320,		yres:		240,#endif		hsync_len   :  64,    vsync_len    :  6,		left_margin :  125,    upper_margin :  70,		right_margin:  115,    lower_margin :  36,		sync:		0,		cmap_static:	0,		reg : {			lcdcon : LCD_LCDCON_LCDBUS_24 | LCD_LCDCON_LCDTFTTYPE | LCD_LCDCON_LCDTFT | LCD_LCDCON_BPP_16 ,			lcdfifo1para : LCD_FIFO1PRM_F1BURSTY_08DATABURST | LCD_FIFO1PRM_F1TRANSZ_4BYTE,				},};volatile unsigned int _lcd_VSYNC,_lcd_VSYNCCount;static spinlock_t wb_osd_lock = SPIN_LOCK_UNLOCKED;static inline u_intchan_to_field(u_int chan, struct fb_bitfield *bf){    chan &= 0xffff;    chan >>= 16 - bf->length;    return chan << bf->offset;}#if 0/* * Convert bits-per-pixel to a hardware palette PBS value. */static inline u_intpalette_pbs(struct fb_var_screeninfo *var){   int ret = 0;   switch (var->bits_per_pixel) {#ifdef FBCON_HAS_CFB4      case 4:  ret = 0 << 12; break;#endif#ifdef FBCON_HAS_CFB8      case 8:  ret = 1 << 12; break;#endif#ifdef FBCON_HAS_CFB16      case 16: ret = 2 << 12; break;#endif   }   return ret;}#endifstatic struct w90p710fb_mach_info * __init w90p710fb_get_machine_info(struct w90p710fb_info *fbi){    struct w90p710fb_mach_info *inf = NULL;	       inf = &xxx_tft_info;    fbi->reg = inf->reg;    fbi->rgb[RGB_16] = &xxx_tft_rgb_16;    fbi->rgb[RGB_24] = &xxx_tft_rgb_24;    return inf;}static inline struct fb_var_screeninfo *get_con_var(struct fb_info *info, int con){    struct w90p710fb_info *fbi = (struct w90p710fb_info *)info;    return (con == fbi->currcon || con == -1) ? &fbi->fb.var : &fb_display[con].var;}static inline struct fb_cmap *get_con_cmap(struct fb_info *info, int con){    struct w90p710fb_info *fbi = (struct w90p710fb_info *)info;    return (con == fbi->currcon || con == -1) ? &fbi->fb.cmap : &fb_display[con].cmap;}static inline struct display *get_con_display(struct fb_info *info, int con){    struct w90p710fb_info *fbi = (struct w90p710fb_info *)info;    return (con < 0) ? (fbi->fb.disp) : &(fb_display[con]);}static intw90p710fb_validate_var(struct fb_var_screeninfo *var,			      struct w90p710fb_info *fbi){    int ret = -EINVAL;		//printk("w90p710fb_validate_var()..\n");    if (var->xres < MIN_XRES)		var->xres = MIN_XRES;    if (var->yres < MIN_YRES)		var->yres = MIN_YRES;    if (var->xres > fbi->max_xres)		var->xres = fbi->max_xres;    if (var->yres > fbi->max_yres)		var->yres = fbi->max_yres;    var->xres_virtual =	var->xres_virtual < var->xres ? var->xres : var->xres_virtual;    var->yres_virtual = 	var->yres_virtual < var->yres ? var->yres : var->yres_virtual;    switch(var->bits_per_pixel) {#ifdef FBCON_HAS_MFB	case 1:		ret = 0; break;#endif#ifdef FBCON_HAS_CFB2	case 2:		ret = 0; break;#endif#ifdef FBCON_HAS_CFB4	case 4:		ret = 0; break;#endif#ifdef FBCON_HAS_CFB8	case 8:		ret = 0; break;#endif#ifdef FBCON_HAS_CFB16	case 16:	ret = 0; break;#endif#ifdef FBCON_HAS_CFB24	case 24:	ret = 0; break;#endif	default:			break;    }    return ret;}static intw90p710fb_setpalettereg(u_int regno, u_int red, u_int green, u_int blue,			u_int trans, struct fb_info *info){    struct w90p710fb_info *fbi = (struct w90p710fb_info *)info;    u_int val, ret = 1;		ENTER();			if (regno < fbi->palette_size) 	{						#if 0			for(i = 0; i < fbi->palette_size; i++)		{			/* Configure entries of look-up table */			WriteLUT(i,fbi->palette_cpu[i]);		}#endif				//val =  (blue	        & 0x0000ff);    	//val |= ((green << 8) 	& 0x00ff00);    	//val |= ((red <<  16) 	& 0xff0000);		//val |= 1; /* intensity bit */				val = ((red & 0xff00) << 8) |			((green & 0xff00) >> 0) |			((blue & 0xff00) >> 8);					//if (regno == 0)	    //	val |= palette_pbs(&fbi->fb.var);		fbi->palette_cpu[regno] = val;				/* Clear VSYNC interrupt and FIFO1 VFRAME FINISH interrupt */        //_lcd_VSYNC = 0;        /* Wait until VSYNC interrupt and FIFO1 VFRAME FINISH interrupt occur */        //while(!_lcd_VSYNC);            		/* Configure TFT Look-up Table */		outpw(REG_LCD_LCDCON, (inpw(REG_LCD_LCDCON) | LCD_LCDCON_LUTWREN) & ~LCD_LCDCON_VDLUTEN);		//outpw(LCD_LCDCON, inpw(LCD_LCDCON) & ~LCD_LCDCON_LUTEN);				/* Configure entries of look-up table */		WriteLUT(regno,val);				/* Configure TFT Look-up Table */		outpw(REG_LCD_LCDCON, (inpw(REG_LCD_LCDCON) | LCD_LCDCON_VDLUTEN) & ~LCD_LCDCON_LUTWREN);		//outpw(LCD_LCDCON, inpw(LCD_LCDCON) & ~LCD_LCDCON_LUTWREN);		ret = 0;		//printk("regno = %d, r[%d] g[%d] b[%d],value = %d \n",regno,red,green,blue,val);		    }         LEAVE();    return ret;    }static intw90p710fb_setcolreg(u_int regno, u_int red, u_int green, u_int blue,		    u_int trans, struct fb_info *info){    struct w90p710fb_info *fbi = (struct w90p710fb_info *)info;    struct display *disp = get_con_display(info, fbi->currcon);    u_int var;    int ret = 1;		ENTER();	    if (disp->inverse) {	red 	= 0xffff - red;	green 	= 0xffff - green;	blue	= 0xffff - blue;    }    if (fbi->fb.var.grayscale) 	red = green = blue = (19595 * red + 38470 * green + 7471 * blue) >> 16;    switch (fbi->fb.disp->visual) {	case FB_VISUAL_TRUECOLOR:	    if (regno < 16) {		u16 *pal = fbi->fb.pseudo_palette;		var = chan_to_field(red, &fbi->fb.var.red);		var |= chan_to_field(green, &fbi->fb.var.green);		var |= chan_to_field(blue, &fbi->fb.var.blue);		pal[regno] = var;		ret = 0;	    }	    break;	case FB_VISUAL_STATIC_PSEUDOCOLOR:	case FB_VISUAL_PSEUDOCOLOR:			    ret = w90p710fb_setpalettereg(regno, red, green, blue, trans, info);	    break;    }		LEAVE();	    return ret;}static int w90p710fb_activate_var(struct fb_var_screeninfo *var, struct w90p710fb_info *fbi){    struct w90p710fb_lcd_reg new_regs;    u_long flags;	u_int half_screen_size/*, yres*/;	//u_int i = 0;	    unsigned long VideoPhysicalTemp = fbi->screen_dma;    ENTER();        save_flags_cli(flags);    //Disable_LCD();        /*********************************************************************/        new_regs.lcdfifo1saddr = VideoPhysicalTemp;	/*Configure FIFO1 transfer data source start address */    outpw(REG_LCD_F1SADDR, new_regs.lcdfifo1saddr);     fbi->reg.lcdfifo1saddr = new_regs.lcdfifo1saddr;        half_screen_size = var->bits_per_pixel;	half_screen_size = half_screen_size * var->xres * var->yres / 16;    new_regs.lcdfifo1count = fbi->reg.lcdfifo1count ;#ifdef CONFIG_W90P710_LCD_TFT_24BPP	/* FIFO1 transfer data count register */    outpw(REG_LCD_F1DREQCNT, (var->xres << 16) | var->yres);        /* FIFO 1 real column count register */    outpw(REG_LCD_FIFO1RELACOLCNT, var->xres); #endif #if defined(CONFIG_W90P710_LCD_TFT_16BPP) || defined(CONFIG_W90P710_LCD_STN_16BPP)	/* FIFO1 transfer data count register */    outpw(REG_LCD_F1DREQCNT, ((var->xres << 16) >> 1) | var->yres);        /* FIFO 1 real column count register */    outpw(REG_LCD_FIFO1RELACOLCNT, var->xres >> 1);#endif#if defined(CONFIG_W90P710_LCD_TFT_8BPP) || defined(CONFIG_W90P710_LCD_STN_8BPP)	/* FIFO1 transfer data count register */    outpw(REG_LCD_F1DREQCNT, ((var->xres << 16) >> 2) | var->yres);        /* FIFO 1 real column count register */    outpw(REG_LCD_FIFO1RELACOLCNT, var->xres >> 2);#endif#if defined(CONFIG_W90P710_LCD_TFT_4BPP) || defined(CONFIG_W90P710_LCD_STN_4BPP)	/* FIFO1 transfer data count register */    outpw(REG_LCD_F1DREQCNT, ((var->xres << 16) >> 3) | var->yres);        /* FIFO 1 real column count register */    outpw(REG_LCD_FIFO1RELACOLCNT, var->xres >> 3);#endif#if defined(CONFIG_W90P710_LCD_TFT_2BPP) || defined(CONFIG_W90P710_LCD_STN_2BPP)	/* FIFO1 transfer data count register */    outpw(REG_LCD_F1DREQCNT, ((var->xres << 16) >> 4) | var->yres);        /* FIFO 1 real column count register */    outpw(REG_LCD_FIFO1RELACOLCNT, var->xres >> 4);#endif#if defined(CONFIG_W90P710_LCD_TFT_1BPP) || defined(CONFIG_W90P710_LCD_STN_1BPP)	/* FIFO1 transfer data count register */    outpw(REG_LCD_F1DREQCNT, ((var->xres << 16) >> 5) | var->yres);        /* FIFO 1 real column count register */    outpw(REG_LCD_FIFO1RELACOLCNT, var->xres >> 5);#endif            		//printk("var->xres = %d, var->yres = %d\n",var->xres,var->yres);	//printk("var->bits_per_pixel = %d BPP\n",var->bits_per_pixel);	//printk("Frame Buffer address = %lx\n",VideoPhysicalTemp);    	    //Enable_LCD();         restore_flags(flags);    /*********************************************************************/         LEAVE();    	    return 0;}static inline void w90p710fb_set_truecolor(u_int is_true_color){    if (is_true_color) {    }    else {    }}    static voidw90p710fb_hw_set_var(struct fb_var_screeninfo *var, struct w90p710fb_info *fbi){    u_long palette_mem_size;		ENTER();	

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91亚洲永久精品| 久草热8精品视频在线观看| 国产成人精品免费看| 欧美精品一区二区三区蜜桃视频 | 精品视频一区三区九区| 亚洲综合激情小说| 在线观看成人小视频| 亚洲午夜电影网| 91精品国产91久久久久久最新毛片| 天天综合色天天综合色h| 欧美日韩高清一区二区不卡| 日韩国产一区二| 日韩一级片网址| 国产综合色视频| 国产精品久久久久久久岛一牛影视| k8久久久一区二区三区| 亚洲激情第一区| 欧美精品日韩一本| 国产一区二区看久久| 国产精品丝袜黑色高跟| 日韩欧美国产综合一区| 国产成人在线观看| 亚洲品质自拍视频| 欧美群妇大交群中文字幕| 久久99热狠狠色一区二区| 欧美激情艳妇裸体舞| 色婷婷精品大视频在线蜜桃视频| 亚洲成人黄色小说| 日韩你懂的电影在线观看| 国产91精品一区二区麻豆网站| 最新热久久免费视频| 欧美日韩一级片网站| 国产尤物一区二区在线| 亚洲免费观看高清完整| 日韩三级中文字幕| 成人黄色片在线观看| 午夜影院久久久| 国产日韩欧美综合一区| 欧美性大战久久久| 国产成人精品免费| 午夜国产不卡在线观看视频| 国产欧美精品一区二区色综合朱莉| 色哟哟一区二区在线观看| 久久精工是国产品牌吗| 亚洲欧美另类久久久精品| 日韩免费观看高清完整版 | 欧美日韩不卡一区二区| 国产精品123| 午夜视频一区在线观看| 中文字幕精品一区二区精品绿巨人 | 色8久久精品久久久久久蜜| 老司机精品视频导航| 亚洲一区二区视频在线观看| 国产清纯在线一区二区www| 欧美久久高跟鞋激| 91免费国产在线| 国产91对白在线观看九色| 日本不卡视频一二三区| 亚洲一区日韩精品中文字幕| 欧美激情综合五月色丁香| 日韩欧美成人午夜| 欧美色视频在线| 91女厕偷拍女厕偷拍高清| 国产夫妻精品视频| 麻豆91在线观看| 午夜电影一区二区三区| 亚洲一区二区在线免费看| 国产精品伦一区二区三级视频| 精品久久久久久久久久久久久久久久久 | 在线免费观看一区| 成人黄色av电影| 国产精品影视网| 久久国产乱子精品免费女| 天堂va蜜桃一区二区三区| 一区二区三区中文字幕电影| 综合网在线视频| 国产精品国产三级国产有无不卡| 日韩欧美国产1| 欧美一区二区黄色| 91精品在线免费观看| 欧美日韩激情一区二区三区| 欧美午夜在线观看| 日本丰满少妇一区二区三区| 91免费版在线| 色欧美片视频在线观看在线视频| 97精品久久久午夜一区二区三区| 成人激情免费视频| yourporn久久国产精品| 成人av电影在线| 97久久超碰国产精品| 91福利国产精品| 欧美日韩精品电影| 日韩一区二区三区视频| 欧美精品一区二区三区蜜桃视频| 久久亚洲捆绑美女| 亚洲国产精品激情在线观看| 国产精品美女久久久久久久| 亚洲欧美在线另类| 亚洲一区在线看| 偷拍自拍另类欧美| 老司机精品视频导航| 国产精品一区三区| 99久久99久久精品国产片果冻| 色综合av在线| 欧美精品欧美精品系列| 欧美草草影院在线视频| 久久精品在线免费观看| 亚洲欧洲日韩一区二区三区| 夜夜嗨av一区二区三区| 秋霞av亚洲一区二区三| 国产乱码精品一区二区三区忘忧草| 国产精品一级片在线观看| 91丨porny丨蝌蚪视频| 欧美美女黄视频| 久久久久亚洲蜜桃| 亚洲欧美日韩国产综合| 亚洲18色成人| 国产一区二区三区电影在线观看| 成人动漫视频在线| 欧美美女一区二区三区| 久久久久久久综合狠狠综合| 综合精品久久久| 日本sm残虐另类| 99精品欧美一区二区三区小说 | 亚洲九九爱视频| 秋霞影院一区二区| 波多野结衣中文字幕一区二区三区 | 久久欧美中文字幕| 亚洲欧美日韩国产一区二区三区| 天堂一区二区在线| 成人性生交大片免费看视频在线| 色香蕉成人二区免费| 欧美mv日韩mv国产网站app| 亚洲人被黑人高潮完整版| 久久99热这里只有精品| 91久久香蕉国产日韩欧美9色| 日韩欧美国产1| 亚洲高清不卡在线观看| 成人短视频下载| 日韩欧美在线影院| 夜夜嗨av一区二区三区中文字幕| 国产乱码字幕精品高清av | 99久久er热在这里只有精品66| 91麻豆精品国产91久久久更新时间 | 欧美mv日韩mv亚洲| 亚洲一区在线电影| 成人av资源下载| 久久―日本道色综合久久| 天天操天天色综合| 色综合视频在线观看| 国产日韩av一区二区| 美女免费视频一区| 欧美午夜精品久久久| 中文字幕在线视频一区| 国产美女娇喘av呻吟久久| 欧美一卡在线观看| 亚洲va天堂va国产va久| 色成人在线视频| 亚洲欧美日韩久久| aaa欧美日韩| 国产精品日韩成人| 国产精品自产自拍| 久久久亚洲精华液精华液精华液| 免费成人在线影院| 91精品国产色综合久久| 婷婷综合另类小说色区| 欧美性猛交xxxx乱大交退制版| 综合久久国产九一剧情麻豆| 不卡一区二区三区四区| 国产精品美女久久久久久久久久久| 国产一区不卡视频| 精品国精品自拍自在线| 久久国产三级精品| 欧美va亚洲va在线观看蝴蝶网| 日韩av一级电影| 欧美一级免费观看| 麻豆freexxxx性91精品| 精品国免费一区二区三区| 久草这里只有精品视频| 久久老女人爱爱| 国产精品综合久久| 国产精品乱码人人做人人爱 | 日韩欧美亚洲另类制服综合在线 | 国产精品嫩草影院com| 国产精品一区二区你懂的| 久久久久青草大香线综合精品| 国产精品自产自拍| 国产精品嫩草影院com| 99精品视频一区| 亚洲一区二区三区四区五区黄| 欧美自拍偷拍一区| 亚洲国产综合视频在线观看| 欧美麻豆精品久久久久久| 久久99精品国产91久久来源| 久久久久久久久久久久久久久99| 日韩一区二区三区视频在线观看| 日韩av一区二区在线影视| 亚洲精品一区二区三区99| 国产成人夜色高潮福利影视| 国产精品乱人伦一区二区|