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

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

?? gpio.c

?? h內核
?? C
字號:
/* * $Id: gpio.c,v 1.4 2003/05/19 22:24:18 lethal Exp $ * by Greg Banks <gbanks@pocketpenguins.com> * (c) 2000 PocketPenguins Inc * * GPIO pin support for HD64465 companion chip. */#include <linux/kernel.h>#include <linux/init.h>#include <linux/module.h>#include <linux/sched.h>#include <linux/ioport.h>#include <asm/io.h>#include <asm/hd64465/gpio.h>#define _PORTOF(portpin)    (((portpin)>>3)&0x7)#define _PINOF(portpin)     ((portpin)&0x7)/* Register addresses parametrised on port */#define GPIO_CR(port)	    (HD64465_REG_GPACR+((port)<<1))#define GPIO_DR(port)	    (HD64465_REG_GPADR+((port)<<1))#define GPIO_ICR(port)	    (HD64465_REG_GPAICR+((port)<<1))#define GPIO_ISR(port)	    (HD64465_REG_GPAISR+((port)<<1))#define GPIO_NPORTS 5#define MODNAME "hd64465_gpio"EXPORT_SYMBOL(hd64465_gpio_configure);EXPORT_SYMBOL(hd64465_gpio_get_pin);EXPORT_SYMBOL(hd64465_gpio_get_port);EXPORT_SYMBOL(hd64465_gpio_register_irq);EXPORT_SYMBOL(hd64465_gpio_set_pin);EXPORT_SYMBOL(hd64465_gpio_set_port);EXPORT_SYMBOL(hd64465_gpio_unregister_irq);/* TODO: each port should be protected with a spinlock */void hd64465_gpio_configure(int portpin, int direction){    	unsigned short cr;	unsigned int shift = (_PINOF(portpin)<<1);	cr = inw(GPIO_CR(_PORTOF(portpin)));	cr &= ~(3<<shift);	cr |= direction<<shift;	outw(cr, GPIO_CR(_PORTOF(portpin)));}void hd64465_gpio_set_pin(int portpin, unsigned int value){    	unsigned short d;	unsigned short mask = 1<<(_PINOF(portpin));		d = inw(GPIO_DR(_PORTOF(portpin)));	if (value)	    d |= mask;	else	    d &= ~mask;	outw(d, GPIO_DR(_PORTOF(portpin)));}unsigned int hd64465_gpio_get_pin(int portpin){	return inw(GPIO_DR(_PORTOF(portpin))) & (1<<(_PINOF(portpin)));}/* TODO: for cleaner atomicity semantics, add a mask to this routine */void hd64465_gpio_set_port(int port, unsigned int value){	outw(value, GPIO_DR(port));}unsigned int hd64465_gpio_get_port(int port){	return inw(GPIO_DR(port));}static struct {    void (*func)(int portpin, void *dev);    void *dev;} handlers[GPIO_NPORTS * 8];static irqreturn_t hd64465_gpio_interrupt(int irq, void *dev, struct pt_regs *regs){    	unsigned short port, pin, isr, mask, portpin;		for (port=0 ; port<GPIO_NPORTS ; port++) {	    isr = inw(GPIO_ISR(port));	    	    for (pin=0 ; pin<8 ; pin++) {	    	mask = 1<<pin;	    	if (isr & mask) {		    portpin = (port<<3)|pin;		    if (handlers[portpin].func != 0)		    	handlers[portpin].func(portpin, handlers[portpin].dev);    	    	    else		    	printk(KERN_NOTICE "unexpected GPIO interrupt, pin %c%d\n",			    port+'A', (int)pin);		}	    }	    	    /* Write 1s back to ISR to clear it?  That's what the manual says.. */	    outw(isr, GPIO_ISR(port));	}	return IRQ_HANDLED;}void hd64465_gpio_register_irq(int portpin, int mode,	void (*handler)(int portpin, void *dev), void *dev){    	unsigned long flags;	unsigned short icr, mask;	if (handler == 0)	    return;	    	local_irq_save(flags);		handlers[portpin].func = handler;	handlers[portpin].dev = dev;    	/*	 * Configure Interrupt Control Register	 */	icr = inw(GPIO_ICR(_PORTOF(portpin)));	mask = (1<<_PINOF(portpin));		/* unmask interrupt */	icr &= ~mask;		/* set TS bit */	mask <<= 8;	icr &= ~mask;	if (mode == HD64465_GPIO_RISING)	    icr |= mask;	    	outw(icr, GPIO_ICR(_PORTOF(portpin)));	local_irq_restore(flags);}void hd64465_gpio_unregister_irq(int portpin){    	unsigned long flags;	unsigned short icr;		local_irq_save(flags);    	/*	 * Configure Interrupt Control Register	 */	icr = inw(GPIO_ICR(_PORTOF(portpin)));	icr |= (1<<_PINOF(portpin));	/* mask interrupt */	outw(icr, GPIO_ICR(_PORTOF(portpin)));	handlers[portpin].func = 0;	handlers[portpin].dev = 0;		local_irq_restore(flags);}static int __init hd64465_gpio_init(void){	if (!request_region(HD64465_REG_GPACR, 0x1000, MODNAME))		return -EBUSY;	if (request_irq(HD64465_IRQ_GPIO, hd64465_gpio_interrupt,	    		SA_INTERRUPT, MODNAME, 0))		goto out_irqfailed;    	printk("HD64465 GPIO layer on irq %d\n", HD64465_IRQ_GPIO);	return 0;out_irqfailed:	release_region(HD64465_REG_GPACR, 0x1000);	return -EINVAL;}static void __exit hd64465_gpio_exit(void){    	release_region(HD64465_REG_GPACR, 0x1000);	free_irq(HD64465_IRQ_GPIO, 0);}module_init(hd64465_gpio_init);module_exit(hd64465_gpio_exit);MODULE_LICENSE("GPL");

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲人成人一区二区在线观看| 一级做a爱片久久| 亚洲天堂2016| 久久精品国产亚洲a| 一本色道久久综合亚洲91| 欧美成人bangbros| 亚洲大尺度视频在线观看| 粉嫩在线一区二区三区视频| 欧美肥大bbwbbw高潮| 亚洲欧美视频一区| 成人午夜激情片| 国产亚洲一区二区三区四区| 午夜婷婷国产麻豆精品| 综合激情成人伊人| 粗大黑人巨茎大战欧美成人| 日韩成人一级大片| 国产精品羞羞答答xxdd| 国产日韩欧美一区二区三区乱码 | 国产女人18毛片水真多成人如厕 | 欧洲一区二区三区免费视频| 欧美日韩国产成人在线免费| 欧美日韩国产另类不卡| 精品一区二区三区av| 国产a久久麻豆| 成人福利电影精品一区二区在线观看| 不卡电影免费在线播放一区| 色悠悠久久综合| 欧美性欧美巨大黑白大战| 一本大道久久精品懂色aⅴ| 日韩欧美国产电影| 国产精品一区在线观看乱码 | 久久精品一区二区三区四区| 色8久久精品久久久久久蜜| 亚洲精品中文在线| 94-欧美-setu| 91丨porny丨国产入口| 欧美va亚洲va| 色婷婷久久久亚洲一区二区三区| 亚洲成a人v欧美综合天堂 | 成人高清在线视频| 精品亚洲aⅴ乱码一区二区三区| 99国产精品一区| 免费在线视频一区| 99re热这里只有精品免费视频 | 欧美四级电影网| 久久久久9999亚洲精品| 国产美女精品在线| 久久久99精品久久| 国产福利电影一区二区三区| 国内精品在线播放| 久久久久久久久久美女| 色综合天天做天天爱| 日韩精品一区二区三区中文精品| 日韩av电影免费观看高清完整版 | 亚洲六月丁香色婷婷综合久久| 成人免费高清视频| 精品国产凹凸成av人网站| 老司机精品视频在线| 日韩中文字幕av电影| 日韩亚洲电影在线| 久久成人18免费观看| 亚洲精品在线免费观看视频| 91亚洲大成网污www| 日日夜夜精品视频免费| 在线观看成人免费视频| 日韩av在线播放中文字幕| 欧美一区二区三区视频在线| 久久国产三级精品| 欧美一级久久久| 日韩欧美一级片| 另类人妖一区二区av| 国产精品久久久久影视| 亚洲视频免费在线观看| 成人在线一区二区三区| 国产成人小视频| 一区二区三区高清| 婷婷开心久久网| 欧美性大战xxxxx久久久| 欧美日韩免费高清一区色橹橹| 亚洲国产欧美另类丝袜| 中文字幕在线观看一区| 中文字幕高清不卡| 91丨porny丨首页| 亚洲日本一区二区| 91亚洲国产成人精品一区二区三| 国产黑丝在线一区二区三区| 精品一区二区三区久久久| 久久久久久免费| 成人精品高清在线| 亚洲欧美偷拍卡通变态| 国产欧美精品国产国产专区| 一本高清dvd不卡在线观看| 国产在线精品一区二区| 久久蜜桃av一区精品变态类天堂| 欧美精品久久久久久久多人混战 | 蜜臀久久99精品久久久画质超高清 | 欧美性大战xxxxx久久久| 韩日av一区二区| 欧美一卡在线观看| 亚洲国产精品尤物yw在线观看| 精品一区二区影视| 日韩vs国产vs欧美| 一本到三区不卡视频| 国产清纯美女被跳蛋高潮一区二区久久w | 成人av影院在线| 国产麻豆精品久久一二三| 欧美bbbbb| 奇米影视一区二区三区| 天天综合色天天综合| 亚洲成a人片在线观看中文| 亚洲观看高清完整版在线观看 | 久久疯狂做爰流白浆xx| 蜜臀精品久久久久久蜜臀 | 成人app在线| 播五月开心婷婷综合| www.色精品| 99精品在线免费| 色综合视频在线观看| 一本大道av伊人久久综合| 91福利视频在线| 欧美午夜精品一区| 欧美日韩www| 日韩欧美激情一区| 2023国产一二三区日本精品2022| 欧美一区在线视频| 精品欧美一区二区久久| 欧美电影免费观看高清完整版| 国产精品女同一区二区三区| 亚洲欧美日韩一区二区| 精品美女一区二区| 亚洲激情男女视频| 欧美影视一区在线| 欧美色爱综合网| 97超碰欧美中文字幕| 国产精品系列在线观看| 91麻豆.com| 成人av网址在线观看| 高清不卡在线观看| 欧洲av一区二区嗯嗯嗯啊| 3d动漫精品啪啪一区二区竹菊| 欧美日韩精品一区视频| 日韩欧美国产综合在线一区二区三区| 日韩一区二区精品葵司在线 | 亚洲欧美日韩成人高清在线一区| 一区二区三区免费| 日韩电影免费在线观看网站| 国产精品亚洲一区二区三区在线| 99精品欧美一区二区三区小说 | 国产一区二区精品久久| 波多野结衣亚洲| 欧美日韩国产一区| 久久久久久久久久电影| 一区二区三区四区乱视频| 免费视频一区二区| 91浏览器在线视频| 久久这里只有精品首页| 怡红院av一区二区三区| 精品一区免费av| 欧美亚洲一区二区三区四区| 久久综合成人精品亚洲另类欧美| 亚洲精选视频在线| 国产精品一区二区三区99 | 在线视频国内自拍亚洲视频| 日韩美女视频在线| 亚洲国产精品久久久久秋霞影院 | 色网站国产精品| 色综合天天做天天爱| 日韩欧美亚洲另类制服综合在线 | 欧美亚洲国产bt| 精品成a人在线观看| 亚洲国产精品久久久男人的天堂| 蜜桃视频一区二区三区在线观看| 中文字幕一区视频| 亚洲国产精品一区二区www| 粉嫩aⅴ一区二区三区四区五区| 日韩一区在线看| 亚洲日本成人在线观看| 久久精品国产一区二区三| 欧美日本不卡视频| 丁香啪啪综合成人亚洲小说| 亚洲色图色小说| 91丨porny丨户外露出| 国产精品对白交换视频| 乱一区二区av| 国产精品美女久久久久av爽李琼| 国产中文字幕一区| 久久久国产精华| 在线成人小视频| 视频一区中文字幕国产| 色噜噜狠狠色综合欧洲selulu| 亚洲一区二区三区免费视频| 久久伊人蜜桃av一区二区| 亚洲国产精品久久久久婷婷884| 9人人澡人人爽人人精品| 精品国产精品网麻豆系列| 精彩视频一区二区| 日韩丝袜情趣美女图片| 捆绑调教一区二区三区| 日韩欧美成人激情| 在线日韩av片|