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

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

?? irq.c

?? ucosii下的arm9LCD程序
?? 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 -*- */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
2023国产精品自拍| 欧美变态tickle挠乳网站| 国产在线日韩欧美| 日韩欧美在线影院| 国产精品538一区二区在线| 色综合天天综合| 午夜精品一区二区三区三上悠亚 | 欧美日韩中文字幕精品| 国产精品久久久久久一区二区三区 | www欧美成人18+| av中文一区二区三区| 天天色综合成人网| 91精品国产综合久久久蜜臀图片| 91精品国产综合久久久蜜臀粉嫩| 精品国产一区二区三区久久久蜜月| 免费在线成人网| 宅男噜噜噜66一区二区66| 韩日av一区二区| 在线这里只有精品| 成人精品电影在线观看| 福利一区在线观看| 日本高清无吗v一区| 亚洲图片欧美色图| 欧美老女人第四色| 无吗不卡中文字幕| 五月天激情综合| 日韩中文字幕av电影| 中文字幕欧美一区| 免费日韩伦理电影| 欧美日韩小视频| 色狠狠色噜噜噜综合网| 国产电影精品久久禁18| 奇米影视在线99精品| 日韩激情一区二区| 欧美在线色视频| 色偷偷久久人人79超碰人人澡| 日韩午夜在线观看视频| 成人免费在线播放视频| 久久婷婷色综合| 欧美一级片免费看| 91精品国产黑色紧身裤美女| 久久精品夜色噜噜亚洲aⅴ| 亚洲大片一区二区三区| 国产精品99久久久久久宅男| 精品粉嫩超白一线天av| 美女视频网站久久| 日本欧洲一区二区| 亚洲永久精品国产| 国产成人a级片| 精品国产一区二区三区四区四| 日韩在线一二三区| 亚洲一区欧美一区| 亚洲一区二区在线播放相泽| 激情图片小说一区| 亚洲自拍都市欧美小说| 亚洲一区二区三区中文字幕| 国产精品日韩精品欧美在线| 亚洲精选视频在线| 国产美女在线观看一区| 欧美日韩一区二区在线观看| 国产欧美精品一区二区色综合 | 日韩美女在线视频| 国产欧美日韩三区| 韩国av一区二区三区| 欧美精品乱人伦久久久久久| 国产拍欧美日韩视频二区| 亚洲国产精品久久不卡毛片| 99久久er热在这里只有精品15| 久久美女高清视频| 久久精品国产精品青草| 8v天堂国产在线一区二区| 午夜欧美在线一二页| 91视频国产资源| 久久亚洲一级片| 欧美一级免费大片| 欧美一区二区三区小说| 精品国产乱码久久久久久牛牛| 538prom精品视频线放| 自拍偷拍欧美精品| 日本欧美大码aⅴ在线播放| 成人av在线影院| 国产午夜一区二区三区| 精品捆绑美女sm三区| 天堂久久一区二区三区| 亚洲制服丝袜一区| 亚洲一二三四在线| 91免费国产视频网站| 成人91在线观看| 久久9热精品视频| 91老师片黄在线观看| 国产精品美女久久久久久久久久久| 最新高清无码专区| 激情综合五月婷婷| 欧美日韩精品高清| 中文字幕国产一区| 粉嫩av一区二区三区粉嫩| 亚洲影院久久精品| 日韩精品一区二区三区视频在线观看 | 日韩欧美亚洲一区二区| 99在线精品观看| 亚洲成人综合网站| 韩国欧美国产一区| 欧日韩精品视频| 日本中文字幕一区| 中文字幕一区二区三区不卡在线| 北条麻妃国产九九精品视频| 亚洲在线中文字幕| 日韩欧美一卡二卡| 国产成人在线看| 日韩国产欧美三级| 欧美激情一区二区三区| 欧美性极品少妇| 日韩电影网1区2区| 亚洲视频电影在线| 欧美成人午夜电影| 欧美三级三级三级| 国产不卡在线视频| 日韩黄色免费电影| 成人免费在线观看入口| 欧美精品久久一区二区三区| 丁香六月综合激情| 美女一区二区久久| 亚洲蜜臀av乱码久久精品蜜桃| 亚洲欧洲在线观看av| 国产清纯白嫩初高生在线观看91 | 国产精品主播直播| 欧美久久免费观看| 国产精品69毛片高清亚洲| 午夜精品久久久久久久99水蜜桃| 久久99精品国产.久久久久久| 欧美精品在线观看播放| 一区二区在线观看av| 91日韩一区二区三区| 一本大道av一区二区在线播放| 972aa.com艺术欧美| 在线免费观看一区| 欧美色老头old∨ideo| 色综合久久中文综合久久牛| 91在线精品一区二区| 欧美影视一区在线| 欧美一区二区三区系列电影| 欧美激情一区三区| 中文字幕高清不卡| 日韩毛片精品高清免费| 成人美女视频在线观看18| jizz一区二区| www.亚洲人| 色综合久久久久| 欧美美女喷水视频| 免费在线成人网| 九色综合狠狠综合久久| 成人三级在线视频| 亚洲国产精品久久久久婷婷884| 天堂蜜桃一区二区三区 | 国产精品理伦片| 亚洲黄一区二区三区| 免费在线成人网| 欧洲精品一区二区| 中文字幕在线视频一区| 日韩国产精品久久| 久久久蜜臀国产一区二区| 欧美无人高清视频在线观看| 亚洲午夜久久久| 东方aⅴ免费观看久久av| 成人动漫一区二区在线| 欧美精品日韩一区| 国产精品美日韩| 午夜婷婷国产麻豆精品| 成人av电影在线播放| 美国精品在线观看| 久久久久久久综合| 色综合网色综合| av电影在线观看不卡| 欧美精品久久99久久在免费线 | 免费观看30秒视频久久| 色呦呦国产精品| 中文子幕无线码一区tr| 日本欧美久久久久免费播放网| 成人h动漫精品一区二区| 日韩欧美国产电影| 91亚洲国产成人精品一区二区三 | 国产精品女人毛片| 欧美一级片在线看| 欧美日韩午夜影院| 99国产精品久久久久| 91麻豆国产在线观看| av电影在线观看不卡| 国产成人av资源| 国产自产视频一区二区三区| 六月丁香综合在线视频| 久久国产精品99精品国产| 成人教育av在线| 欧美怡红院视频| 日韩欧美123| 久久久99精品免费观看| 日本一区二区久久| 尤物视频一区二区| 美国十次了思思久久精品导航| 久久国产麻豆精品| 成人激情综合网站|