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

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

?? fpga.c

?? 優(yōu)龍2410linux2.6.8內(nèi)核源代碼
?? C
字號(hào):
/* * linux/arch/arm/mach-omap/fpga.c * * Interrupt handler for OMAP-1510 Innovator FPGA * * Copyright (C) 2001 RidgeRun, Inc. * Author: Greg Lonnon <glonnon@ridgerun.com> * * Copyright (C) 2002 MontaVista Software, Inc. * * Separated FPGA interrupts from innovator1510.c and cleaned up for 2.6 * Copyright (C) 2004 Nokia Corporation by Tony Lindrgen <tony@atomide.com> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */#include <linux/config.h>#include <linux/types.h>#include <linux/init.h>#include <linux/kernel.h>#include <linux/device.h>#include <linux/errno.h>#include <asm/hardware.h>#include <asm/io.h>#include <asm/irq.h>#include <asm/mach/irq.h>#include <asm/arch/fpga.h>#include <asm/arch/gpio.h>unsigned char fpga_read(int reg){	return __raw_readb(reg);}void fpga_write(unsigned char val, int reg){	__raw_writeb(val, reg);}static void fpga_mask_irq(unsigned int irq){	irq -= IH_FPGA_BASE;	if (irq < 8)		__raw_writeb((__raw_readb(OMAP1510_FPGA_IMR_LO)			      & ~(1 << irq)), OMAP1510_FPGA_IMR_LO);	else if (irq < 16)		__raw_writeb((__raw_readb(OMAP1510_FPGA_IMR_HI)			      & ~(1 << (irq - 8))), OMAP1510_FPGA_IMR_HI);	else		__raw_writeb((__raw_readb(INNOVATOR_FPGA_IMR2)			      & ~(1 << (irq - 16))), INNOVATOR_FPGA_IMR2);}static inline u32 get_fpga_unmasked_irqs(void){	return		((__raw_readb(OMAP1510_FPGA_ISR_LO) &		  __raw_readb(OMAP1510_FPGA_IMR_LO))) |		((__raw_readb(OMAP1510_FPGA_ISR_HI) &		  __raw_readb(OMAP1510_FPGA_IMR_HI)) << 8) |		((__raw_readb(INNOVATOR_FPGA_ISR2) &		  __raw_readb(INNOVATOR_FPGA_IMR2)) << 16);}static void fpga_ack_irq(unsigned int irq){	/* Don't need to explicitly ACK FPGA interrupts */}static void fpga_unmask_irq(unsigned int irq){	irq -= IH_FPGA_BASE;	if (irq < 8)		__raw_writeb((__raw_readb(OMAP1510_FPGA_IMR_LO) | (1 << irq)),		     OMAP1510_FPGA_IMR_LO);	else if (irq < 16)		__raw_writeb((__raw_readb(OMAP1510_FPGA_IMR_HI)			      | (1 << (irq - 8))), OMAP1510_FPGA_IMR_HI);	else		__raw_writeb((__raw_readb(INNOVATOR_FPGA_IMR2)			      | (1 << (irq - 16))), INNOVATOR_FPGA_IMR2);}static void fpga_mask_ack_irq(unsigned int irq){	fpga_mask_irq(irq);	fpga_ack_irq(irq);}void innovator_fpga_IRQ_demux(unsigned int irq, struct irqdesc *desc,			      struct pt_regs *regs){	struct irqdesc *d;	u32 stat;	int fpga_irq;	/*	 * Acknowledge the parent IRQ.	 */	desc->chip->ack(irq);	for (;;) {		stat = get_fpga_unmasked_irqs();		if (!stat) {			break;		}		for (fpga_irq = IH_FPGA_BASE;			(fpga_irq < (IH_FPGA_BASE + NR_FPGA_IRQS)) && stat;			fpga_irq++, stat >>= 1) {			if (stat & 1) {				d = irq_desc + fpga_irq;				d->handle(fpga_irq, d, regs);				desc->chip->unmask(irq);			}		}	}}static struct irqchip omap_fpga_irq_ack = {	.ack		= fpga_mask_ack_irq,	.mask		= fpga_mask_irq,	.unmask		= fpga_unmask_irq,};static struct irqchip omap_fpga_irq = {	.ack		= fpga_ack_irq,	.mask		= fpga_mask_irq,	.unmask		= fpga_unmask_irq,};/* * All of the FPGA interrupt request inputs except for the touchscreen are * edge-sensitive; the touchscreen is level-sensitive.  The edge-sensitive * interrupts are acknowledged as a side-effect of reading the interrupt * status register from the FPGA.  The edge-sensitive interrupt inputs * cause a problem with level interrupt requests, such as Ethernet.  The * problem occurs when a level interrupt request is asserted while its * interrupt input is masked in the FPGA, which results in a missed * interrupt. * * In an attempt to workaround the problem with missed interrupts, the * mask_ack routine for all of the FPGA interrupts has been changed from * fpga_mask_ack_irq() to fpga_ack_irq() so that the specific FPGA interrupt * being serviced is left unmasked.  We can do this because the FPGA cascade * interrupt is installed with the SA_INTERRUPT flag, which leaves all * interrupts masked at the CPU while an FPGA interrupt handler executes. * * Limited testing indicates that this workaround appears to be effective * for the smc9194 Ethernet driver used on the Innovator.  It should work * on other FPGA interrupts as well, but any drivers that explicitly mask * interrupts at the interrupt controller via disable_irq/enable_irq * could pose a problem. */void fpga_init_irq(void){	int i;	__raw_writeb(0, OMAP1510_FPGA_IMR_LO);	__raw_writeb(0, OMAP1510_FPGA_IMR_HI);	__raw_writeb(0, INNOVATOR_FPGA_IMR2);	for (i = IH_FPGA_BASE; i < (IH_FPGA_BASE + NR_FPGA_IRQS); i++) {		if (i == INT_FPGA_TS) {			/*			 * The touchscreen interrupt is level-sensitive, so			 * we'll use the regular mask_ack routine for it.			 */			set_irq_chip(i, &omap_fpga_irq_ack);		}		else {			/*			 * All FPGA interrupts except the touchscreen are			 * edge-sensitive, so we won't mask them.			 */			set_irq_chip(i, &omap_fpga_irq);		}		set_irq_handler(i, do_level_IRQ);		set_irq_flags(i, IRQF_VALID);	}	/*	 * The FPGA interrupt line is connected to GPIO13. Claim this pin for	 * the ARM.	 *	 * NOTE: For general GPIO/MPUIO access and interrupts, please see	 * gpio.[ch]	 */	omap_request_gpio(13);	omap_set_gpio_direction(13, 1);	omap_set_gpio_edge_ctrl(13, OMAP_GPIO_RISING_EDGE);	set_irq_chained_handler(INT_FPGA, innovator_fpga_IRQ_demux);}EXPORT_SYMBOL(fpga_init_irq);EXPORT_SYMBOL(fpga_read);EXPORT_SYMBOL(fpga_write);

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
午夜精品久久久久久久久久久| 激情综合一区二区三区| 大陆成人av片| 久久综合丝袜日本网| 日韩av一区二区在线影视| 欧美午夜一区二区三区| 自拍偷拍欧美精品| 久久综合国产精品| 岛国av在线一区| 久久国产视频网| 久久久久国产精品厨房| 99精品国产热久久91蜜凸| 亚洲成人在线免费| 日韩亚洲国产中文字幕欧美| 国内外成人在线| 国产精品久久久久久久第一福利| 在线亚洲人成电影网站色www| 精品入口麻豆88视频| 成年人国产精品| 久久精品一区二区三区av| 国产在线看一区| 久久久亚洲综合| 国产91丝袜在线播放0| 成人免费在线视频| 欧洲亚洲国产日韩| 丝袜亚洲精品中文字幕一区| 欧美精品日韩一区| 免费看欧美女人艹b| 欧美mv和日韩mv国产网站| 精品一区二区久久| 国产欧美日韩亚州综合| 9i看片成人免费高清| 亚洲综合一区在线| 欧美另类变人与禽xxxxx| 麻豆国产欧美日韩综合精品二区| 欧美电影免费观看高清完整版| 韩国成人精品a∨在线观看| 国产欧美日韩在线| 一本高清dvd不卡在线观看| 午夜在线电影亚洲一区| 91精品国产黑色紧身裤美女| 国产真实乱对白精彩久久| 国产精品久久久久久亚洲伦| 在线精品视频一区二区三四| 蜜臀国产一区二区三区在线播放| 久久久精品蜜桃| 色菇凉天天综合网| 久久精品久久99精品久久| 国产精品久线在线观看| 欧美色窝79yyyycom| 激情综合亚洲精品| 亚洲激情在线激情| 日韩欧美aaaaaa| 91免费版在线| 免费观看成人鲁鲁鲁鲁鲁视频| 国产欧美一区二区三区网站| 欧美性猛交xxxx黑人交| 国内欧美视频一区二区| 亚洲欧美另类小说| 欧美成人r级一区二区三区| 99久久国产综合色|国产精品| 日日嗨av一区二区三区四区| 日本一区二区三区免费乱视频| 欧洲日韩一区二区三区| 韩国v欧美v亚洲v日本v| 亚洲国产中文字幕在线视频综合| 精品国产人成亚洲区| 日本丶国产丶欧美色综合| 久久免费偷拍视频| 国产精品五月天| 日韩国产成人精品| 大美女一区二区三区| 色欧美片视频在线观看| 91高清在线观看| 欧美精品丝袜久久久中文字幕| 欧洲一区二区三区在线| 欧美xxx久久| 国产日韩欧美精品一区| 亚洲精品成人精品456| 亚洲a一区二区| 色综合色狠狠综合色| 色琪琪一区二区三区亚洲区| 麻豆精品久久久| 一区二区三区日本| 久久精品亚洲一区二区三区浴池| 欧美私模裸体表演在线观看| 国产成a人亚洲精品| 亚洲成av人**亚洲成av**| 国产精品午夜久久| 精品卡一卡二卡三卡四在线| 欧美三级视频在线观看| av电影在线不卡| 国产乱理伦片在线观看夜一区| 一区二区三区在线视频免费观看| 久久久精品蜜桃| 日韩欧美美女一区二区三区| 欧美亚洲另类激情小说| 9l国产精品久久久久麻豆| 国产乱码精品一区二区三| 日本亚洲三级在线| 亚洲一区二区综合| ...av二区三区久久精品| 久久精品人人做人人爽人人| 日韩视频免费观看高清在线视频| 在线影院国内精品| www.性欧美| 国产成人免费高清| 麻豆中文一区二区| 日韩国产一区二| 亚洲成av人片在www色猫咪| 亚洲精品视频免费看| 日韩一区日韩二区| 国产精品白丝在线| 国产精品乱人伦一区二区| 久久久国产一区二区三区四区小说 | 国产一区二区三区高清播放| 日韩主播视频在线| 午夜精品福利一区二区三区蜜桃| 亚洲精品国产第一综合99久久 | 亚洲制服丝袜在线| 一区二区三区在线播放| 亚洲视频精选在线| 最新国产精品久久精品| 欧美激情一区二区三区蜜桃视频 | 国产欧美精品一区| 久久精品人人爽人人爽| 久久久久久久久岛国免费| 精品美女在线播放| 另类人妖一区二区av| 亚洲摸摸操操av| 3atv一区二区三区| 天天综合色天天综合色h| 国产一区二区在线看| 欧美日韩你懂得| 一区二区成人在线| 97久久人人超碰| 一区二区三区不卡视频在线观看| 成人手机电影网| 一区二区不卡在线播放| 久久综合中文字幕| 欧美日韩在线综合| 色久优优欧美色久优优| 欧美激情一二三区| 久久亚洲精华国产精华液| 久久久一区二区| 国产亚洲成aⅴ人片在线观看| 欧美激情一区二区三区不卡| 日韩欧美电影一二三| 亚洲精品在线观| 欧美国产精品一区| 中文字幕欧美区| 亚洲裸体xxx| 一区二区视频免费在线观看| 亚瑟在线精品视频| 五月激情综合色| 精品一二三四在线| 国产一区二区成人久久免费影院| 成人午夜av电影| 色网综合在线观看| 欧美日韩在线播放三区四区| 欧美一三区三区四区免费在线看| 91精品国产欧美一区二区18| 久久久噜噜噜久噜久久综合| 国产亚洲综合av| 亚洲日本va午夜在线影院| 中文字幕制服丝袜成人av| 亚洲日本在线看| 亚洲成人中文在线| 蜜臀a∨国产成人精品| 精品午夜久久福利影院| 久久国产麻豆精品| 国产精品一区在线观看你懂的| 成人综合在线网站| 欧美日韩视频在线第一区| 欧美成人一级视频| 国产精品免费丝袜| 五月天激情综合网| 国产一区二区三区久久悠悠色av| 99久久精品免费看国产| 欧美日韩亚洲综合在线 | 成人动漫视频在线| 欧美日韩在线三区| 日韩视频在线你懂得| 18欧美亚洲精品| 亚洲444eee在线观看| 国产99久久久国产精品潘金| 欧美视频一区二| 久久综合色8888| 亚洲午夜久久久久久久久久久| 国产欧美日韩综合精品一区二区| 一区2区3区在线看| 国产激情91久久精品导航| 91久久精品日日躁夜夜躁欧美| 欧美一区二区视频观看视频| 国产日韩欧美电影| 日韩精品亚洲专区| 91麻豆视频网站| 日韩欧美激情四射| 亚洲国产视频一区| 国产一区二区三区香蕉|