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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? irq.c

?? 基于ARM的觸摸屏幕的驅(qū)動wangqu 一定能用
?? C
字號:
/* * Copyright (C) 2002 MIZI Research, Inc. * * machine dependent irq handling routine * * Author: Nandy Lyu <nandy@mizi.com> * Date  : $Date: 2002/05/14 02:19:42 $  * * $Revision: 1.1.2.4 $   Tue May 21 2002 Nandy Lyu <nandy@mizi.com>   - initial   - BUG:	1) set_EINT_IRQ_edge 頰毫具 凳	2) INTSUBMSK綽 阿 device driver俊輯 力絹竅檔廢 秦具 竊.   Wed Aug 14 2002 Yong-iL Joh <tolkien@mizi.com>   - new irq scheme闌 利儈, 困俊 攫鞭等 bug 絆魔 * * 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. */#include "./hardware.h"#include "./irqs.h"#include "errno.h"#include "2410addr.h"#include "S3C2410.h"#define EINT_OFFSET(x)		((x) - NORMAL_IRQ_OFFSET + 4)#define SUBIRQ_OFFSET(x)	((x) - EXT_IRQ_OFFSET)#define EXTINT_MASK	0x7#if 1/* * set_GPIO_IRQ_edge - set interrupt signal for External Interrupts * * parameters: *	irq	number of external interrupt (IRQ_EINT0 ~ IRQ_EINT23) *	edge	signal method */#define EXTINT_OFFSET	0x4#define EXTINT_MASK	0x7int set_EXT_IRQ_mode(int irq, int edge) {	unsigned long flags;	int shift_value;	if (!(((IRQ_EINT4 <= irq) && (irq <= IRQ_EINT23)) ||	      ((IRQ_EINT0 <= irq) && (irq <= IRQ_EINT3))))	  return -EINVAL;	if (irq < IRQ_EINT4) {			/* IRQ_EINT0 ~ IRQ_EINT3 */	  shift_value = (irq % 8) * EXTINT_OFFSET;	  rEXTINT0 &= ~(EXTINT_MASK << shift_value);	  rEXTINT0 |= (edge << shift_value);	  ClearPending(0x1<<irq);	} else {	  shift_value = ((irq + 4) % 8) * EXTINT_OFFSET;	  if (irq < IRQ_EINT8) {		/* IRQ_EINT4 ~ IRQ_EINT7 */	    rEXTINT0 &= ~(EXTINT_MASK << shift_value);	    rEXTINT0 |= (edge << shift_value);	    rEINTPEND = (1 << shift_value);	    ClearPending(0x1<<IRQ_EINT4_7);	  } else if (irq < IRQ_EINT16) {	/* IRQ_EINT8 ~ IRQ_EINT15 */	    rEXTINT1 &= ~(EXTINT_MASK << shift_value);	    rEXTINT1 |= (edge << shift_value);	    rEINTPEND = (1 << shift_value);	    ClearPending(0x1<<IRQ_EINT8_23);	  } else {				/* IRQ_EINT16 ~ IRQ_EINT23 */	    rEXTINT2 &= ~(EXTINT_MASK << shift_value);	    rEXTINT2 |= (edge << shift_value);	    rEINTPEND = (1 << shift_value);	    ClearPending(0x1<<IRQ_EINT8_23);	  }	}		return 0;}#endif/* * External IRQ甫 力寇茄 IRQ甸闌 request_irq()肺 殿廢竅扁 傈俊 * 購啊 秦林絹具 瞪 老甸撈 樂闌鱉夸? 力 積阿俊綽 絕促絆 壕聰促. * IRQ甸 吝俊輯 External IRQ(伙己俊輯 林厘竅綽 儈絹)父撈 GPIO甫 * 固府 汲瀝竅絆 甸絹啊具 鄧聰促. 弊貳輯 竅唱狼 竊薦俊輯 * 葛電 巴闌 秦搬秦 滾府綽 巴籃 絹凍鱉 酵焙夸. * * 2002.09.03 厘繞. */static int fixup_irq_num(int irq){	if (irq < IRQ_EINT4) return irq;	else return ((irq + 4) - NORMAL_IRQ_OFFSET);}static voidset_gpios(int irq, int pullup){	int shift;	if (irq < 8) {		shift = 2*irq;		rGPFCON &= ~(0x3 << shift);		rGPFCON |= (0x2 << shift);		rGPFUP &= ~(GRAB_PULLUP(pullup) << irq);		rGPFUP |= (GRAB_PULLUP(pullup) << irq);	} else {		shift = 2*(irq - 8);		rGPGCON &= ~(0x3 << shift);		rGPGCON |= (0x2 << shift);		rGPGUP &= ~(GRAB_PULLUP(pullup) << (irq - 8));		rGPGUP |= (GRAB_PULLUP(pullup) << (irq - 8));	} }int set_external_irq(int irq, int edge, int pullup){	unsigned long flags;	int real_irq, reg_ofs, shift;	volatile unsigned *extint = (volatile unsigned *)(0x56000088);	//printk(__FUNCTION__" called\n");	if (((irq < IRQ_EINT0) && (irq > IRQ_EINT23)) ||	    ((irq > IRQ_EINT3) && (irq < IRQ_EINT4)))		return -EINVAL;	real_irq = fixup_irq_num(irq);	//printk(__FUNCTION__"(): real_irq = %d\n", real_irq);	set_gpios(real_irq, pullup);	reg_ofs = (real_irq / 8);	//printk(__FUNCTION__"(): regs_ofs = %d\n", reg_ofs);	shift = 4 * (real_irq - 8 * reg_ofs);	extint += reg_ofs;	*extint &= ~(EXTINT_MASK << shift);	*extint |= (edge << shift);	if (irq < 4) {		rSRCPND |= (1 << real_irq);		rINTPND |= (1 << real_irq);	} else {		rEINTPEND |= (1 << real_irq);	}		return 0;}/* * Defined irq handlers */static void s3c2410_mask_ack_irq(unsigned int irq){	rINTMSK |= (1 << irq);	rSRCPND = (1 << irq);	rINTPND = (1 << irq);}static void s3c2410_mask_irq(unsigned int irq){	rINTMSK |= (1 << irq);}static void s3c2410_unmask_irq(unsigned int irq){	rINTMSK &= ~(1 << irq);}/* for EINT? */static void EINT4_23mask_ack_irq(unsigned int irq){	irq = EINT_OFFSET(irq);	rEINTMASK |= (1 << irq);	rEINTPEND = (1 << irq);	if (irq < EINT_OFFSET(IRQ_EINT8)) {//	  INTMSK |= (1 << SHIFT_EINT4_7);	  ClearPending(0x1<<SHIFT_EINT4_7);	} else {//	  INTMSK |= (1 << SHIFT_EINT8_23);	  ClearPending(0x1<<SHIFT_EINT8_23);	}}static void EINT4_23mask_irq(unsigned int irq){#if 0	if (irq < IRQ_EINT8) {	  INTMSK |= (1 << SHIFT_EINT4_7);	} else {	  INTMSK |= (1 << SHIFT_EINT8_23);	}#endif	irq = EINT_OFFSET(irq);	rEINTMASK |= (1 << irq);}static void EINT4_23unmask_irq(unsigned int irq){	rEINTMASK &= ~(1 << EINT_OFFSET(irq));	if (irq < IRQ_EINT8) {	  rINTMSK &= ~(1 << SHIFT_EINT4_7);	} else {	  rINTMSK &= ~(1 << SHIFT_EINT8_23);	}}/* for sub_IRQ */static void SUB_mask_ack_irq(unsigned int irq){	rINTSUBMSK |= (1 << SUBIRQ_OFFSET(irq));	rSUBSRCPND = (1 << SUBIRQ_OFFSET(irq));	if (irq <= IRQ_ERR0) {	  ClearPending(0x1<<SHIFT_UART0);        } else if (irq <= IRQ_ERR1) {	  ClearPending(0x1<<SHIFT_UART1);	} else if (irq <= IRQ_ERR2){	  ClearPending(0x1<<SHIFT_UART2);        } else {	/* if ( irq <= IRQ_ADC_DONE ) { */	  ClearPending(0x1<<SHIFT_ADCTC);	}}static void SUB_mask_irq(unsigned int irq){	rINTSUBMSK |= (1 << SUBIRQ_OFFSET(irq));}static void SUB_unmask_irq(unsigned int irq){	rINTSUBMSK &= ~(1 << SUBIRQ_OFFSET(irq));	if (irq <= IRQ_ERR0) {		rINTMSK &= ~(1 << SHIFT_UART0);         } else if (irq <= IRQ_ERR1) {		rINTMSK &= ~(1 << SHIFT_UART1);	} else if (irq <= IRQ_ERR2){	    	rINTMSK &= ~(1 << SHIFT_UART2);        } else {	/* if ( irq <= IRQ_ADC_DONE ) { */		rINTMSK &= ~(1 << SHIFT_ADCTC);        }}/* *  fixup_irq() for do_IRQ() in kernel/irq.c */ unsigned int get_subIRQ(int irq, int begin, int end, int fail_irq) {	int i;	for(i=begin; i <= end; i++) {	  if (irq & (1 << i))	    return (EXT_IRQ_OFFSET + i);	}	return fail_irq;} unsigned int get_extIRQ(int irq, int begin, int end, int fail_irq) {	int i;	for(i=begin; i <= end; i++) {	  if (irq & (1 << i))	    return (NORMAL_IRQ_OFFSET - 4 + i);	}	return fail_irq;}unsigned int fixup_irq(int irq) {    unsigned int ret;    unsigned long sub_mask, ext_mask;    if (irq == OS_TIMER)      return irq;    switch (irq) {    case IRQ_UART0:      sub_mask = rSUBSRCPND & ~rINTSUBMSK;      ret = get_subIRQ(sub_mask, 0, 2, irq);      break;    case IRQ_UART1:      sub_mask = rSUBSRCPND & ~rINTSUBMSK;      ret = get_subIRQ(sub_mask, 3, 5, irq);      break;    case IRQ_UART2:      sub_mask = rSUBSRCPND & ~rINTSUBMSK;      ret = get_subIRQ(sub_mask, 6, 8, irq);      break;    case IRQ_ADCTC:      sub_mask = rSUBSRCPND & ~rINTSUBMSK;      ret = get_subIRQ(sub_mask, 9, 10, irq);      break;    case IRQ_EINT4_7:      ext_mask = rEINTPEND & ~rEINTMASK;      ret = get_extIRQ(ext_mask, 4, 7, irq);      break;    case IRQ_EINT8_23:      ext_mask = rEINTPEND & ~rEINTMASK;      ret = get_extIRQ(ext_mask, 8, 23, irq);      break;    default:      ret = irq;    }	    return ret;}void  s3c2410_init_irq(void) {    int irq;    /* disable all IRQs */    rINTMSK = 0xffffffff;    rINTSUBMSK = 0x7ff;    rEINTMASK = 0x00fffff0;    /* all IRQs are IRQ, not FIQ       0 : IRQ mode       1 : FIQ mode    */    rINTMOD = 0x00000000;    /* clear Source/Interrupt Pending Register */    rSRCPND = 0xffffffff;    rINTPND = 0xffffffff;    rSUBSRCPND = 0x7ff;    rEINTPEND = 0x00fffff0; }/* | $Id: event.c,v 1.1.2.4 2002/05/14 02:19:42 tolkien Exp $ | | Local Variables: | mode: c | mode: font-lock | version-control: t | delete-old-versions: t | End: | | -*- End-Of-File -*- */

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲视频在线一区观看| 不卡欧美aaaaa| 99久久精品国产精品久久| 欧美日韩在线免费视频| 国产欧美一区二区精品久导航 | 欧美老女人在线| 国产精品久久网站| 国产一区二区女| 欧美精品日韩综合在线| 亚洲精品日韩一| 国产成a人亚洲| 国产午夜亚洲精品不卡| 日本不卡一二三| 欧美少妇一区二区| 亚洲一区二区三区美女| av成人免费在线观看| 国产亚洲成aⅴ人片在线观看| 日本va欧美va精品发布| 欧美日韩高清一区二区不卡| 亚洲一区二区五区| 91免费视频观看| 亚洲欧美综合色| 成人av免费在线播放| 中文av一区二区| 国产成人综合在线观看| 国产色一区二区| 国产精品996| 国产人妖乱国产精品人妖| 国产中文字幕一区| www欧美成人18+| 国产成人精品一区二| 久久婷婷久久一区二区三区| 国产在线麻豆精品观看| 日韩午夜激情av| 青青草原综合久久大伊人精品优势| 欧美久久一二三四区| 奇米综合一区二区三区精品视频| 欧美一区二区三区电影| 毛片不卡一区二区| 久久综合国产精品| 国产剧情一区二区三区| 中文字幕免费不卡在线| av爱爱亚洲一区| 一区二区欧美在线观看| 欧美区一区二区三区| 美女尤物国产一区| 国产亚洲成av人在线观看导航| 国产精品中文字幕一区二区三区| 国产天堂亚洲国产碰碰| 92精品国产成人观看免费| 夜色激情一区二区| 欧美xxx久久| av在线综合网| 日韩国产欧美三级| 日本一区二区三区在线观看| 色偷偷88欧美精品久久久| 日本系列欧美系列| 国产欧美一区二区三区网站| 在线看一区二区| 亚洲成人综合视频| 欧美精品一区二区高清在线观看| 大陆成人av片| 亚洲chinese男男1069| 久久久亚洲高清| 欧洲视频一区二区| 激情六月婷婷久久| 亚洲永久免费av| 久久亚洲免费视频| 欧美图区在线视频| 粗大黑人巨茎大战欧美成人| 亚洲一区二区在线视频| 久久综合久久鬼色中文字| 91麻豆国产在线观看| 麻豆久久久久久久| 亚洲精品写真福利| 久久日韩精品一区二区五区| 在线观看日韩av先锋影音电影院| 加勒比av一区二区| 亚洲观看高清完整版在线观看| 日韩免费电影网站| 日本精品视频一区二区三区| 久久99国产乱子伦精品免费| 亚洲免费伊人电影| 日本一区二区三级电影在线观看| 欧美猛男超大videosgay| 色综合天天性综合| 国产成人综合亚洲91猫咪| 日日夜夜免费精品视频| 中文字幕一区二区三区在线播放| 日韩欧美一区二区视频| 欧美性感一类影片在线播放| 国产馆精品极品| 蜜臀91精品一区二区三区| 亚洲与欧洲av电影| 亚洲欧美另类图片小说| 中文字幕一区视频| 国产偷国产偷精品高清尤物| 欧美不卡一区二区三区| 在线播放中文一区| 欧美日韩国产综合草草| 91女厕偷拍女厕偷拍高清| 高清国产一区二区| 国产乱一区二区| 精品无人码麻豆乱码1区2区| 另类小说图片综合网| 丝袜亚洲另类丝袜在线| 五月婷婷激情综合网| 亚洲成在人线免费| 天天影视网天天综合色在线播放| 亚洲精品国产视频| 亚洲自拍偷拍网站| 亚洲成人福利片| 天堂一区二区在线| 日韩精品久久理论片| 午夜精品久久久久久久久久久| 亚洲观看高清完整版在线观看| 亚洲丶国产丶欧美一区二区三区| 亚洲国产成人高清精品| 日韩高清不卡在线| 久久国产精品99久久久久久老狼| 韩国中文字幕2020精品| 国产传媒一区在线| 99久久免费视频.com| 在线视频欧美区| 欧美一区二区精品| 国产亚洲制服色| 亚洲少妇屁股交4| 亚洲v中文字幕| 极品美女销魂一区二区三区免费| 国产成人免费视频网站高清观看视频| 粉嫩绯色av一区二区在线观看 | 亚洲一区二区偷拍精品| 亚洲福利视频一区| 黑人巨大精品欧美一区| 成人黄色小视频| 欧美人与性动xxxx| 欧美精品一区二区久久婷婷| 国产精品久久福利| 亚洲成人免费在线| 国产精品99久久久久久久女警| 99久久99久久精品国产片果冻| 欧美亚洲一区二区三区四区| 精品国产乱码久久久久久老虎 | 欧美精品乱码久久久久久按摩 | 国产精品自拍av| 色婷婷综合中文久久一本| 日韩视频免费观看高清完整版在线观看 | 亚洲精品视频一区二区| 蜜桃视频一区二区三区在线观看| 国产a视频精品免费观看| 91浏览器入口在线观看| 日韩美女天天操| 亚洲色图清纯唯美| 蜜臀a∨国产成人精品| av在线综合网| 精品乱码亚洲一区二区不卡| 亚洲乱码日产精品bd| 精品午夜一区二区三区在线观看| 91网站最新地址| 精品国产乱码久久| 亚洲一区日韩精品中文字幕| 国产成a人亚洲精品| 91精品国产色综合久久不卡电影| 国产精品国产馆在线真实露脸 | 成人黄色免费短视频| 欧美一区二区三区视频在线观看 | 日本vs亚洲vs韩国一区三区 | 国产美女在线精品| 欧美日韩成人一区| 亚洲天堂中文字幕| 国产成人午夜99999| 91麻豆精品国产自产在线观看一区| 国产精品毛片久久久久久久| 狠狠色丁香久久婷婷综合_中| 欧美日韩第一区日日骚| 一本大道av伊人久久综合| 中文字幕亚洲欧美在线不卡| 日日摸夜夜添夜夜添国产精品| 国内精品嫩模私拍在线| 欧美亚洲日本国产| 国产精品久久久久一区二区三区| 亚洲国产岛国毛片在线| 亚洲国产精品影院| 91麻豆福利精品推荐| 91在线免费视频观看| 亚洲视频综合在线| 欧美日韩大陆一区二区| 久久超碰97中文字幕| 久久久亚洲综合| 99精品视频中文字幕| 亚洲成人免费在线| xnxx国产精品| 99综合电影在线视频| 五月婷婷激情综合| 久久久99精品免费观看不卡| 99re66热这里只有精品3直播 | 久久国产精品72免费观看| 欧美激情自拍偷拍| 欧美色爱综合网| 激情六月婷婷久久|