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

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

?? hd64465_gpio.c

?? 該文件是rt_linux
?? C
字號:
/* * $Id: hd64465_gpio.c,v 1.2 2001/05/24 00:13:47 gniibe 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 void 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));	}}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;	    	save_and_cli(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)));	restore_flags(flags);}void hd64465_gpio_unregister_irq(int portpin){    	unsigned long flags;	unsigned short icr;		save_and_cli(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;		restore_flags(flags);}static int __init hd64465_gpio_init(void){    	/* TODO: check return values */    	request_region(HD64465_REG_GPACR, 0x1000, MODNAME);	request_irq(HD64465_IRQ_GPIO, hd64465_gpio_interrupt,	    SA_INTERRUPT, MODNAME, 0);    	printk("HD64465 GPIO layer on irq %d\n", HD64465_IRQ_GPIO);	return 0;}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);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美丰满高潮xxxx喷水动漫 | 久久成人av少妇免费| 美女一区二区三区| 91在线丨porny丨国产| 欧美一级夜夜爽| 中文字幕一区二区三区在线不卡 | 久久精品国内一区二区三区 | 国产精品69毛片高清亚洲| 欧美三级视频在线播放| 国产精品少妇自拍| 九九热在线视频观看这里只有精品| 成人app在线| 2017欧美狠狠色| 日本成人超碰在线观看| 91成人在线精品| 国产精品久久久久久久久果冻传媒| 日韩av在线播放中文字幕| 91国偷自产一区二区三区观看| 久久久亚洲精品一区二区三区| 亚洲成人自拍网| 一本色道a无线码一区v| 中文乱码免费一区二区| 国产激情一区二区三区四区| 日韩欧美国产综合| 日本一区二区成人在线| 国产一区二区不卡| 26uuu国产电影一区二区| 日日夜夜免费精品| 91精品视频网| 日本中文字幕一区二区视频| 欧美男女性生活在线直播观看| 亚洲天堂福利av| av不卡在线播放| 国产精品电影一区二区三区| 成人av高清在线| 国产精品免费aⅴ片在线观看| 国产美女一区二区| 国产欧美一区二区三区在线看蜜臀| 精品综合久久久久久8888| 欧美大尺度电影在线| 韩国v欧美v亚洲v日本v| 精品国产污污免费网站入口 | www.在线欧美| 中文字幕一区不卡| 色婷婷精品久久二区二区蜜臂av | 91在线云播放| 一区二区三区四区国产精品| 欧美综合一区二区三区| 亚洲va韩国va欧美va| 在线电影一区二区三区| 久久国产婷婷国产香蕉| 日本一区二区三区在线观看| 国产寡妇亲子伦一区二区| 国产精品日韩成人| 在线观看亚洲a| 亚洲成人av一区二区三区| 日韩精品中文字幕一区二区三区 | 欧美r级电影在线观看| 国产一区二区不卡| 亚洲欧美另类久久久精品| 欧美伊人久久久久久久久影院 | 国产一区二区美女| 中文字幕一区二区三区av| 一本大道av一区二区在线播放| 久久中文娱乐网| 国产精品中文有码| 最新成人av在线| 欧美午夜寂寞影院| 精品一区二区三区在线视频| 国产精品你懂的在线欣赏| 在线这里只有精品| 日本v片在线高清不卡在线观看| 欧美精品一区男女天堂| 91色九色蝌蚪| 韩国视频一区二区| 亚洲精品成人悠悠色影视| 欧美一级二级在线观看| 99免费精品视频| 久久精品国产亚洲高清剧情介绍 | 日韩一卡二卡三卡四卡| 国产.精品.日韩.另类.中文.在线.播放| 亚洲天堂中文字幕| 精品久久五月天| 欧美在线免费播放| 国产做a爰片久久毛片| 亚洲国产欧美在线人成| 国产婷婷精品av在线| 欧美美女一区二区三区| 91在线观看高清| 国产精品亚洲人在线观看| 午夜亚洲福利老司机| 国产精品丝袜一区| 精品三级在线看| 欧美精品日日鲁夜夜添| 色欧美日韩亚洲| 成人性视频免费网站| 久久精品国产久精国产| 亚洲小说欧美激情另类| 中文字幕日韩一区| 久久亚洲综合色一区二区三区| 欧美日韩免费观看一区二区三区 | 欧美四级电影网| 99久久精品99国产精品| 国产成人一区在线| 精品一区二区三区在线播放| 一区二区日韩电影| 亚洲黄色录像片| 亚洲人成在线观看一区二区| 久久久久亚洲综合| 精品国产99国产精品| 日韩欧美中文一区二区| 欧美精品国产精品| 4438x亚洲最大成人网| 欧美性受xxxx黑人xyx性爽| 99精品视频在线免费观看| 成人高清在线视频| 成人福利视频在线| 97aⅴ精品视频一二三区| 99re成人精品视频| 色中色一区二区| 色av成人天堂桃色av| 色综合久久综合网| 91国偷自产一区二区三区观看 | 粉嫩久久99精品久久久久久夜| 久久国产欧美日韩精品| 久久精品国产99久久6| 激情丁香综合五月| 国产一区激情在线| 成人v精品蜜桃久久一区| 粉嫩高潮美女一区二区三区 | 日韩电影在线免费| 蜜臀av在线播放一区二区三区| 三级亚洲高清视频| 久久精品国产在热久久| 国产精品99久| 国产精品亚洲专一区二区三区| 国产电影精品久久禁18| aaa亚洲精品| 欧美日韩成人一区| 精品久久久久av影院 | 亚洲欧洲av在线| 亚洲一区二区视频在线| 奇米精品一区二区三区在线观看一| 三级欧美韩日大片在线看| 狠狠色丁香婷综合久久| 成年人国产精品| 欧美日韩国产高清一区| 日韩午夜av一区| 国产精品久久久久久久久快鸭 | 精品一区二区三区视频| 丁香天五香天堂综合| 日本高清视频一区二区| 欧美二区乱c少妇| 国产欧美1区2区3区| 一区二区三区国产精华| 久久精品噜噜噜成人88aⅴ| 成人精品视频.| 欧美一区二区在线观看| 中文一区二区在线观看| 亚洲午夜久久久久| 国产一区二区导航在线播放| 91色porny蝌蚪| 欧美精品一区视频| 亚洲狠狠爱一区二区三区| 国产成人日日夜夜| 精品视频123区在线观看| 国产午夜精品美女毛片视频| 一区二区免费在线| 成人免费黄色大片| 欧美电影在线免费观看| 亚洲欧美日本在线| 国产精品一品二品| 日韩亚洲欧美高清| 一区二区三区日韩欧美| 韩国av一区二区三区在线观看| 欧美亚洲动漫制服丝袜| 欧美极品美女视频| 精品一区二区久久久| 欧美男女性生活在线直播观看| 国产精品成人网| 麻豆精品蜜桃视频网站| 欧美羞羞免费网站| 最新中文字幕一区二区三区| 精品一区二区影视| 日韩你懂的在线播放| 天天综合网天天综合色| 91福利在线免费观看| 国产精品成人免费| 成人一区二区三区| 久久综合九色欧美综合狠狠| 五月激情综合色| 欧美日韩一区视频| 亚洲精品国产高清久久伦理二区| 国产精品综合二区| 精品福利在线导航| 激情综合网av| 2023国产精华国产精品| 久久99精品久久久久久动态图| 欧美一区二区三区爱爱| 免费在线观看精品|