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

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

?? irq.c

?? 對基于S3C2410開發(fā)平臺上的CS8900的驅動
?? C
?? 第 1 頁 / 共 2 頁
字號:
}static inline voids3c_irqsub_unmask(unsigned int irqno, unsigned int parentbit){	unsigned long mask;	unsigned long submask;	submask = __raw_readl(S3C2410_INTSUBMSK);	mask = __raw_readl(S3C2410_INTMSK);	submask &= ~(1UL << (irqno - IRQ_S3CUART_RX0));	mask &= ~parentbit;	/* write back masks */	__raw_writel(submask, S3C2410_INTSUBMSK);	__raw_writel(mask, S3C2410_INTMSK);}static inline voids3c_irqsub_maskack(unsigned int irqno, unsigned int parentmask, unsigned int group){	unsigned int bit = 1UL << (irqno - IRQ_S3CUART_RX0);	s3c_irqsub_mask(irqno, parentmask, group);	__raw_writel(bit, S3C2410_SUBSRCPND);	/* only ack parent if we've got all the irqs (seems we must	 * ack, all and hope that the irq system retriggers ok when	 * the interrupt goes off again)	 */	if (1) {		__raw_writel(parentmask, S3C2410_SRCPND);		__raw_writel(parentmask, S3C2410_INTPND);	}}/* UART0 */static voids3c_irq_uart0_mask(unsigned int irqno){	s3c_irqsub_mask(irqno, INTMSK_UART0, 7);}static voids3c_irq_uart0_unmask(unsigned int irqno){	s3c_irqsub_unmask(irqno, INTMSK_UART0);}static voids3c_irq_uart0_ack(unsigned int irqno){	s3c_irqsub_maskack(irqno, INTMSK_UART0, 7);}static struct irqchip s3c_irq_uart0 = {	.mask	    = s3c_irq_uart0_mask,	.unmask	    = s3c_irq_uart0_unmask,	.ack	    = s3c_irq_uart0_ack,};/* UART1 */static voids3c_irq_uart1_mask(unsigned int irqno){	s3c_irqsub_mask(irqno, INTMSK_UART1, 7 << 3);}static voids3c_irq_uart1_unmask(unsigned int irqno){	s3c_irqsub_unmask(irqno, INTMSK_UART1);}static voids3c_irq_uart1_ack(unsigned int irqno){	s3c_irqsub_maskack(irqno, INTMSK_UART1, 7 << 3);}static struct irqchip s3c_irq_uart1 = {	.mask	    = s3c_irq_uart1_mask,	.unmask	    = s3c_irq_uart1_unmask,	.ack	    = s3c_irq_uart1_ack,};/* UART2 */static voids3c_irq_uart2_mask(unsigned int irqno){	s3c_irqsub_mask(irqno, INTMSK_UART2, 7 << 6);}static voids3c_irq_uart2_unmask(unsigned int irqno){	s3c_irqsub_unmask(irqno, INTMSK_UART2);}static voids3c_irq_uart2_ack(unsigned int irqno){	s3c_irqsub_maskack(irqno, INTMSK_UART2, 7 << 6);}static struct irqchip s3c_irq_uart2 = {	.mask	    = s3c_irq_uart2_mask,	.unmask	    = s3c_irq_uart2_unmask,	.ack	    = s3c_irq_uart2_ack,};/* ADC and Touchscreen */static voids3c_irq_adc_mask(unsigned int irqno){	s3c_irqsub_mask(irqno, INTMSK_ADCPARENT, 3 << 9);}static voids3c_irq_adc_unmask(unsigned int irqno){	s3c_irqsub_unmask(irqno, INTMSK_ADCPARENT);}static voids3c_irq_adc_ack(unsigned int irqno){	s3c_irqsub_maskack(irqno, INTMSK_ADCPARENT, 3 << 9);}static struct irqchip s3c_irq_adc = {	.mask	    = s3c_irq_adc_mask,	.unmask	    = s3c_irq_adc_unmask,	.ack	    = s3c_irq_adc_ack,};/* irq demux for adc */static void s3c_irq_demux_adc(unsigned int irq,			      struct irqdesc *desc,			      struct pt_regs *regs){	unsigned int subsrc, submsk;	unsigned int offset = 9;	struct irqdesc *mydesc;	/* read the current pending interrupts, and the mask	 * for what it is available */	subsrc = __raw_readl(S3C2410_SUBSRCPND);	submsk = __raw_readl(S3C2410_INTSUBMSK);	subsrc &= ~submsk;	subsrc >>= offset;	subsrc &= 3;	if (subsrc != 0) {		if (subsrc & 1) {			mydesc = irq_desc + IRQ_TC;			mydesc->handle( IRQ_TC, mydesc, regs);		}		if (subsrc & 2) {			mydesc = irq_desc + IRQ_ADC;			mydesc->handle(IRQ_ADC, mydesc, regs);		}	}}static void s3c_irq_demux_uart(unsigned int start,			       struct pt_regs *regs){	unsigned int subsrc, submsk;	unsigned int offset = start - IRQ_S3CUART_RX0;	struct irqdesc *desc;	/* read the current pending interrupts, and the mask	 * for what it is available */	subsrc = __raw_readl(S3C2410_SUBSRCPND);	submsk = __raw_readl(S3C2410_INTSUBMSK);	irqdbf2("s3c_irq_demux_uart: start=%d (%d), subsrc=0x%08x,0x%08x\n",		start, offset, subsrc, submsk);	subsrc &= ~submsk;	subsrc >>= offset;	subsrc &= 7;	if (subsrc != 0) {		desc = irq_desc + start;		if (subsrc & 1)			desc->handle(start, desc, regs);		desc++;		if (subsrc & 2)			desc->handle(start+1, desc, regs);		desc++;		if (subsrc & 4)			desc->handle(start+2, desc, regs);	}}/* uart demux entry points */static voids3c_irq_demux_uart0(unsigned int irq,		    struct irqdesc *desc,		    struct pt_regs *regs){	irq = irq;	s3c_irq_demux_uart(IRQ_S3CUART_RX0, regs);}static voids3c_irq_demux_uart1(unsigned int irq,		    struct irqdesc *desc,		    struct pt_regs *regs){	irq = irq;	s3c_irq_demux_uart(IRQ_S3CUART_RX1, regs);}static voids3c_irq_demux_uart2(unsigned int irq,		    struct irqdesc *desc,		    struct pt_regs *regs){	irq = irq;	s3c_irq_demux_uart(IRQ_S3CUART_RX2, regs);}/* s3c24xx_init_irq * * Initialise S3C2410 IRQ system*/void __init s3c24xx_init_irq(void){	unsigned long pend;	unsigned long last;	int irqno;	int i;	irqdbf("s3c2410_init_irq: clearing interrupt status flags\n");	/* first, clear all interrupts pending... */	last = 0;	for (i = 0; i < 4; i++) {		pend = __raw_readl(S3C2410_EINTPEND);		if (pend == 0 || pend == last)			break;		__raw_writel(pend, S3C2410_EINTPEND);		printk("irq: clearing pending ext status %08x\n", (int)pend);		last = pend;	}	last = 0;	for (i = 0; i < 4; i++) {		pend = __raw_readl(S3C2410_INTPND);		if (pend == 0 || pend == last)			break;		__raw_writel(pend, S3C2410_SRCPND);		__raw_writel(pend, S3C2410_INTPND);		printk("irq: clearing pending status %08x\n", (int)pend);		last = pend;	}	last = 0;	for (i = 0; i < 4; i++) {		pend = __raw_readl(S3C2410_SUBSRCPND);		if (pend == 0 || pend == last)			break;		printk("irq: clearing subpending status %08x\n", (int)pend);		__raw_writel(pend, S3C2410_SUBSRCPND);		last = pend;	}	/* register the main interrupts */	irqdbf("s3c2410_init_irq: registering s3c2410 interrupt handlers\n");	for (irqno = IRQ_BATT_FLT; irqno <= IRQ_ADCPARENT; irqno++) {		/* set all the s3c2410 internal irqs */		switch (irqno) {			/* deal with the special IRQs (cascaded) */		case IRQ_UART0:		case IRQ_UART1:		case IRQ_UART2:		case IRQ_LCD:		case IRQ_ADCPARENT:			set_irq_chip(irqno, &s3c_irq_level_chip);			set_irq_handler(irqno, do_level_IRQ);			break;		case IRQ_RESERVED6:		case IRQ_RESERVED24:			/* no IRQ here */			break;		default:			//irqdbf("registering irq %d (s3c irq)\n", irqno);			set_irq_chip(irqno, &s3c_irq_chip);			set_irq_handler(irqno, do_edge_IRQ);			set_irq_flags(irqno, IRQF_VALID);		}	}	/* setup the cascade irq handlers */	set_irq_chained_handler(IRQ_UART0, s3c_irq_demux_uart0);	set_irq_chained_handler(IRQ_UART1, s3c_irq_demux_uart1);	set_irq_chained_handler(IRQ_UART2, s3c_irq_demux_uart2);	set_irq_chained_handler(IRQ_ADCPARENT, s3c_irq_demux_adc);	/* external interrupts */	for (irqno = IRQ_EINT0; irqno <= IRQ_EINT3; irqno++) {		irqdbf("registering irq %d (ext int)\n", irqno);		set_irq_chip(irqno, &s3c_irq_eint0t4);		set_irq_handler(irqno, do_edge_IRQ);		set_irq_flags(irqno, IRQF_VALID);	}	for (irqno = IRQ_EINT4; irqno <= IRQ_EINT23; irqno++) {		irqdbf("registering irq %d (extended s3c irq)\n", irqno);		set_irq_chip(irqno, &s3c_irqext_chip);		set_irq_handler(irqno, do_edge_IRQ);		set_irq_flags(irqno, IRQF_VALID);	}	/* register the uart interrupts */	irqdbf("s3c2410: registering external interrupts\n");	for (irqno = IRQ_S3CUART_RX0; irqno <= IRQ_S3CUART_ERR0; irqno++) {		irqdbf("registering irq %d (s3c uart0 irq)\n", irqno);		set_irq_chip(irqno, &s3c_irq_uart0);		set_irq_handler(irqno, do_level_IRQ);		set_irq_flags(irqno, IRQF_VALID);	}	for (irqno = IRQ_S3CUART_RX1; irqno <= IRQ_S3CUART_ERR1; irqno++) {		irqdbf("registering irq %d (s3c uart1 irq)\n", irqno);		set_irq_chip(irqno, &s3c_irq_uart1);		set_irq_handler(irqno, do_level_IRQ);		set_irq_flags(irqno, IRQF_VALID);	}	for (irqno = IRQ_S3CUART_RX2; irqno <= IRQ_S3CUART_ERR2; irqno++) {		irqdbf("registering irq %d (s3c uart2 irq)\n", irqno);		set_irq_chip(irqno, &s3c_irq_uart2);		set_irq_handler(irqno, do_level_IRQ);		set_irq_flags(irqno, IRQF_VALID);	}	for (irqno = IRQ_TC; irqno <= IRQ_ADC; irqno++) {		irqdbf("registering irq %d (s3c adc irq)\n", irqno);		set_irq_chip(irqno, &s3c_irq_adc);		set_irq_handler(irqno, do_edge_IRQ);		set_irq_flags(irqno, IRQF_VALID);	}	irqdbf("s3c2410: registered interrupt handlers\n");}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕亚洲视频| 日韩制服丝袜先锋影音| 一区二区日韩av| 理论片日本一区| 欧美自拍偷拍午夜视频| 久久久国产一区二区三区四区小说 | 日韩一区欧美二区| 丰满白嫩尤物一区二区| 日韩一区二区免费在线观看| 亚洲三级理论片| 国产美女一区二区| 欧美一区二区精美| 亚洲一区欧美一区| 波多野结衣的一区二区三区| 日韩精品资源二区在线| 亚洲成人免费看| 91麻豆精品在线观看| 国产日韩欧美精品一区| 久久国产婷婷国产香蕉| 欧美片网站yy| 一区二区三区四区av| 成人av在线一区二区三区| 久久综合色鬼综合色| 欧美aaa在线| 欧美精品v国产精品v日韩精品 | 日本在线观看不卡视频| 日韩欧美国产系列| 日韩va亚洲va欧美va久久| 在线国产亚洲欧美| 日韩一区欧美一区| 成+人+亚洲+综合天堂| 久久亚洲精品小早川怜子| 美女在线一区二区| 欧美一级专区免费大片| 日本不卡一区二区三区| 在线播放欧美女士性生活| 亚洲va欧美va人人爽| 欧美天天综合网| 亚洲成av人片在线观看| 欧美日韩视频一区二区| 五月天亚洲婷婷| 91精品免费在线| 青青草97国产精品免费观看无弹窗版| 欧美午夜一区二区三区| 天天色综合成人网| 日韩欧美国产三级| 国产乱码字幕精品高清av | 欧美三级午夜理伦三级中视频| 一区二区在线观看视频| 欧美亚洲图片小说| 视频一区二区欧美| 精品国产3级a| 高清不卡一区二区| 亚洲另类在线一区| 欧美伦理视频网站| 狠狠色狠狠色综合系列| 国产精品久久久久久妇女6080| 91在线你懂得| 日日夜夜免费精品视频| 久久亚洲精精品中文字幕早川悠里| 国产一区二区三区在线观看精品| 中文字幕精品在线不卡| 色婷婷综合久久久中文字幕| 日本中文一区二区三区| 久久无码av三级| 日本精品视频一区二区三区| 日本在线不卡一区| 国产精品麻豆99久久久久久| 日韩三级视频中文字幕| 青青草原综合久久大伊人精品优势| 欧美视频自拍偷拍| 秋霞午夜鲁丝一区二区老狼| 久久久久国产成人精品亚洲午夜| 99久久综合狠狠综合久久| 婷婷综合在线观看| 中文字幕中文在线不卡住| 777午夜精品免费视频| 国产999精品久久久久久| 亚洲不卡在线观看| 日本一区二区三区四区 | 精品视频一区二区三区免费| 久久国产精品无码网站| 亚洲精品欧美综合四区| 精品国产乱码久久久久久老虎| 一本大道av伊人久久综合| 国产在线视频一区二区| 亚洲二区视频在线| 国产精品久久久久久久久久免费看 | 亚洲制服丝袜一区| 中文字幕欧美日本乱码一线二线| 精品视频一区 二区 三区| 成人高清伦理免费影院在线观看| 日本sm残虐另类| 一区二区三区中文字幕电影 | 在线观看视频一区二区欧美日韩| 国产综合色视频| 五月激情综合婷婷| 亚洲欧美日韩在线| 中文字幕乱码久久午夜不卡| 欧美成人免费网站| 欧美久久久久久久久中文字幕| 99精品视频一区| 成人一区在线观看| 国产精品影视天天线| 免费成人结看片| 日韩高清欧美激情| 午夜成人免费电影| 亚洲一区在线视频观看| 亚洲女人小视频在线观看| 国产精品嫩草影院com| 久久久青草青青国产亚洲免观| 日韩欧美美女一区二区三区| 欧美精品第一页| 欧美高清一级片在线| 欧美日韩精品一区二区三区蜜桃| 91老师片黄在线观看| 91丝袜国产在线播放| 91在线免费视频观看| 91一区二区三区在线观看| 91视频.com| 91成人免费网站| 91福利在线观看| 欧美熟乱第一页| 欧美老肥妇做.爰bbww视频| 欧美天堂亚洲电影院在线播放| 欧美视频中文字幕| 欧美二区三区91| 日韩欧美的一区| 久久久久97国产精华液好用吗| 久久精品亚洲麻豆av一区二区| 亚洲国产精品精华液2区45| 国产精品免费久久| 亚洲另类春色校园小说| 成年人午夜久久久| 99天天综合性| 3d成人动漫网站| 国产亚洲美州欧州综合国| 国产亚洲精品资源在线26u| 久久久亚洲精品一区二区三区| 91在线精品一区二区| 在线观看日韩av先锋影音电影院| 在线观看国产一区二区| 欧美一级午夜免费电影| 久久影院午夜论| 亚洲欧洲日韩在线| 午夜欧美电影在线观看| 久久66热偷产精品| 成人av电影在线| 欧美久久久一区| 国产亚洲欧美色| 亚洲第一主播视频| 国产呦萝稀缺另类资源| 91丨国产丨九色丨pron| 欧美一区二区三区视频在线观看| 久久精品视频网| 亚洲欧美激情插| 久久99这里只有精品| 日本一区二区三区久久久久久久久不 | 蜜桃av一区二区三区| 粉嫩蜜臀av国产精品网站| 91九色最新地址| 久久久亚洲精品石原莉奈 | 99精品视频一区| 制服丝袜亚洲播放| 亚洲欧美在线aaa| 美美哒免费高清在线观看视频一区二区 | 亚洲一本大道在线| 成人做爰69片免费看网站| 欧美日韩不卡一区二区| 国产精品乱码妇女bbbb| 美女一区二区久久| 91久久久免费一区二区| 久久久亚洲高清| 视频精品一区二区| 91欧美一区二区| 日本一区二区三区在线观看| 日本vs亚洲vs韩国一区三区| 99vv1com这只有精品| 久久精品在线免费观看| 日本伊人色综合网| 色呦呦日韩精品| 国产精品久久毛片a| 国产中文字幕精品| 日韩视频免费直播| 亚洲国产日产av| 一本大道久久a久久综合婷婷| 国产欧美日韩激情| 国产一区二区三区电影在线观看| 欧美一区二区网站| 婷婷开心激情综合| 欧洲亚洲国产日韩| 亚洲男人都懂的| 97久久超碰国产精品电影| 欧美经典三级视频一区二区三区| 黄色小说综合网站| www欧美成人18+| 国产综合色产在线精品 | 欧美日韩国产综合一区二区| 亚洲青青青在线视频| 91丨九色丨蝌蚪富婆spa|