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

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

?? i2c-elv.c

?? linux下S3C2410的I2C總線的驅動
?? C
字號:
/* ------------------------------------------------------------------------- *//* i2c-elv.c i2c-hw access for philips style parallel port adapters	     *//* ------------------------------------------------------------------------- *//*   Copyright (C) 1995-2000 Simon G. Vogl    This program is free software; you can redistribute it and/or modify    it under the terms of the GNU General Public License as published by    the Free Software Foundation; either version 2 of the License, or    (at your option) any later version.    This program is distributed in the hope that it will be useful,    but WITHOUT ANY WARRANTY; without even the implied warranty of    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the    GNU General Public License for more details.    You should have received a copy of the GNU General Public License    along with this program; if not, write to the Free Software    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.		     *//* ------------------------------------------------------------------------- *//* With some changes from Ky鰏ti M鋖kki <kmalkki@cc.hut.fi> and even   Frodo Looijaard <frodol@dds.nl> *//* $Id: i2c-elv.c,v 1.2 2004/02/06 13:19:45 laputa Exp $ */#include <linux/kernel.h>#include <linux/module.h>#include <linux/delay.h>#include <linux/slab.h>#include <linux/version.h>#include <linux/init.h>#include <asm/uaccess.h>#include <linux/ioport.h>#include <asm/io.h>#include <linux/errno.h>#include <linux/i2c.h>#include <linux/i2c-algo-bit.h>#define DEFAULT_BASE 0x378static int base=0;static unsigned char PortData = 0;/* ----- global defines -----------------------------------------------	*/#define DEB(x)		/* should be reasonable open, close &c. 	*/#define DEB2(x) 	/* low level debugging - very slow 		*/#define DEBE(x)	x	/* error messages 				*/#define DEBINIT(x) x	/* detection status messages			*//* --- Convenience defines for the parallel port:			*/#define BASE	(unsigned int)(data)#define DATA	BASE			/* Centronics data port		*/#define STAT	(BASE+1)		/* Centronics status port	*/#define CTRL	(BASE+2)		/* Centronics control port	*//* ----- local functions ----------------------------------------------	*/static void bit_elv_setscl(void *data, int state){	if (state) {		PortData &= 0xfe;	} else {		PortData |=1;	}	outb(PortData, DATA);}static void bit_elv_setsda(void *data, int state){	if (state) {		PortData &=0xfd;	} else {		PortData |=2;	}	outb(PortData, DATA);} static int bit_elv_getscl(void *data){	return ( 0 == ( (inb_p(STAT)) & 0x08 ) );}static int bit_elv_getsda(void *data){	return ( 0 == ( (inb_p(STAT)) & 0x40 ) );}static int bit_elv_init(void){	if (check_region(base,(base == 0x3bc)? 3 : 8) < 0 ) {		return -ENODEV;		} else {						/* test for ELV adap. 	*/		if (inb(base+1) & 0x80) {	/* BUSY should be high	*/			DEBINIT(printk("i2c-elv.o: Busy was low.\n"));			return -ENODEV;		} else {			outb(0x0c,base+2);	/* SLCT auf low		*/			udelay(400);			if ( !(inb(base+1) && 0x10) ) {				outb(0x04,base+2);				DEBINIT(printk("i2c-elv.o: Select was high.\n"));				return -ENODEV;			}		}		request_region(base,(base == 0x3bc)? 3 : 8,			"i2c (ELV adapter)");		PortData = 0;		bit_elv_setsda((void*)base,1);		bit_elv_setscl((void*)base,1);	}	return 0;}static void __exit bit_elv_exit(void){	release_region( base , (base == 0x3bc)? 3 : 8 );}static int bit_elv_reg(struct i2c_client *client){	return 0;}static int bit_elv_unreg(struct i2c_client *client){	return 0;}static void bit_elv_inc_use(struct i2c_adapter *adap){	MOD_INC_USE_COUNT;}static void bit_elv_dec_use(struct i2c_adapter *adap){	MOD_DEC_USE_COUNT;}/* ------------------------------------------------------------------------ * Encapsulate the above functions in the correct operations structure. * This is only done when more than one hardware adapter is supported. */static struct i2c_algo_bit_data bit_elv_data = {	NULL,	bit_elv_setsda,	bit_elv_setscl,	bit_elv_getsda,	bit_elv_getscl,	80, 80, 100,		/*	waits, timeout */};static struct i2c_adapter bit_elv_ops = {	"ELV Parallel port adaptor",	I2C_HW_B_ELV,	NULL,	&bit_elv_data,	bit_elv_inc_use,	bit_elv_dec_use,	bit_elv_reg,	bit_elv_unreg,	};static int __init i2c_bitelv_init(void){	printk("i2c-elv.o: i2c ELV parallel port adapter module\n");	if (base==0) {		/* probe some values */		base=DEFAULT_BASE;		bit_elv_data.data=(void*)DEFAULT_BASE;		if (bit_elv_init()==0) {			if(i2c_bit_add_bus(&bit_elv_ops) < 0)				return -ENODEV;		} else {			return -ENODEV;		}	} else {		bit_elv_ops.data=(void*)base;		if (bit_elv_init()==0) {			if(i2c_bit_add_bus(&bit_elv_ops) < 0)				return -ENODEV;		} else {			return -ENODEV;		}	}	printk("i2c-elv.o: found device at %#x.\n",base);	return 0;}static void __exit i2c_bitelv_exit(void){	i2c_bit_del_bus(&bit_elv_ops);	bit_elv_exit();}EXPORT_NO_SYMBOLS;MODULE_AUTHOR("Simon G. Vogl <simon@tk.uni-linz.ac.at>");MODULE_DESCRIPTION("I2C-Bus adapter routines for ELV parallel port adapter");MODULE_LICENSE("GPL");MODULE_PARM(base, "i");module_init(i2c_bitelv_init);module_exit(i2c_bitelv_exit);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美丝袜丝nylons| 欧美主播一区二区三区| 六月丁香婷婷久久| 奇米影视一区二区三区| 日本不卡免费在线视频| 日韩二区在线观看| 久久不见久久见中文字幕免费| 久久99精品久久久久久国产越南 | 亚洲精品伦理在线| 一区二区三区在线视频免费观看| 亚洲欧美日韩国产成人精品影院| 亚洲色图都市小说| 亚洲一区精品在线| 日韩av在线免费观看不卡| 久久国产精品99久久久久久老狼| 五月婷婷另类国产| 久久99精品国产| 成人性生交大片免费看中文网站| 成人性色生活片| 91精品办公室少妇高潮对白| 欧美在线视频不卡| 欧美本精品男人aⅴ天堂| 国产亲近乱来精品视频| 亚洲另类在线视频| 日本免费在线视频不卡一不卡二| 韩国三级在线一区| jvid福利写真一区二区三区| 欧美视频一区二区三区四区| 日韩三级视频在线看| 久久精品一区蜜桃臀影院| 综合色天天鬼久久鬼色| 天天射综合影视| 高清成人免费视频| 欧美日韩激情在线| 国产日韩影视精品| 亚洲国产欧美在线| 国产成人精品亚洲日本在线桃色| 91论坛在线播放| 2024国产精品| 亚洲最大成人综合| 国产成人免费网站| 欧美日韩国产免费一区二区| 国产天堂亚洲国产碰碰| 亚洲国产综合视频在线观看| 国产成人99久久亚洲综合精品| 欧美精品欧美精品系列| 国产精品福利一区二区三区| 久久国产福利国产秒拍| 欧美在线不卡一区| 国产精品色噜噜| 国产一区二区三区蝌蚪| 欧美日韩中字一区| 国产精品夫妻自拍| 国产精一区二区三区| 欧美日韩久久久一区| 最新日韩在线视频| 国产99久久久国产精品潘金 | 国产午夜亚洲精品午夜鲁丝片| 一个色综合网站| 成人高清av在线| 26uuu精品一区二区在线观看| 国产精品污网站| 色悠久久久久综合欧美99| 欧美成人乱码一区二区三区| 亚洲综合视频在线观看| 99久久精品国产观看| 久久综合久久综合九色| 婷婷丁香激情综合| 在线精品视频免费播放| 亚洲欧洲中文日韩久久av乱码| 国产乱人伦精品一区二区在线观看| 欧美美女一区二区| 亚洲电影中文字幕在线观看| 欧美午夜精品理论片a级按摩| 国产精品久久久久三级| 不卡电影一区二区三区| 中文字幕欧美日韩一区| 黄网站免费久久| 久久久夜色精品亚洲| 国产精品一区在线观看你懂的| 26uuu亚洲| 国产成人高清在线| 日本一区二区三区电影| 国产成a人亚洲精品| 亚洲欧洲在线观看av| 99久久久无码国产精品| 亚洲少妇30p| 欧美天堂亚洲电影院在线播放| 亚洲一区二区三区自拍| 正在播放亚洲一区| 另类中文字幕网| 久久免费午夜影院| 成人免费毛片app| 亚洲激情欧美激情| 欧美久久久久久蜜桃| 久久精品国产亚洲aⅴ| 国产网站一区二区三区| 91麻豆6部合集magnet| 亚洲成av人片| 精品乱码亚洲一区二区不卡| 国产传媒欧美日韩成人| 18欧美乱大交hd1984| 精品视频在线免费| 国产成人av一区| 中文字幕一区二区三区精华液| 色国产精品一区在线观看| 日韩成人dvd| 国产精品理论片在线观看| 在线影院国内精品| 免费人成黄页网站在线一区二区 | 欧美激情综合五月色丁香| 99精品欧美一区| 日本欧美大码aⅴ在线播放| 国产精品毛片无遮挡高清| 欧美日韩国产高清一区二区| 国产精品69毛片高清亚洲| 亚洲综合一区在线| 久久夜色精品一区| 欧美日韩久久久| 不卡的电影网站| 久久国产尿小便嘘嘘尿| 一区二区日韩电影| 国产亚洲成年网址在线观看| 91精品国产综合久久久久久| 成人激情午夜影院| 久久91精品久久久久久秒播| 亚洲视频资源在线| 久久久精品欧美丰满| 538prom精品视频线放| 91老司机福利 在线| 国产黑丝在线一区二区三区| 蜜臀91精品一区二区三区| 成人欧美一区二区三区1314 | 波多野结衣亚洲一区| 麻豆一区二区三区| 亚洲成人资源网| 亚洲精品视频一区| 中文字幕一区二区三区四区不卡| 久久综合色天天久久综合图片| 在线播放中文一区| 欧美性猛片xxxx免费看久爱| 99在线视频精品| 成人小视频在线观看| 国产乱人伦精品一区二区在线观看 | 自拍偷拍亚洲综合| 国产精品欧美一区二区三区| 久久久久久久电影| 久久精品夜夜夜夜久久| 精品国产sm最大网站免费看| 欧美变态口味重另类| 欧美成人欧美edvon| 亚洲精品一区二区三区99| 欧美xxxx老人做受| 日韩欧美一区二区免费| 日韩一区二区三区免费观看| 欧美一区二区三区不卡| 日韩美女视频在线| 欧美大黄免费观看| 久久无码av三级| 久久婷婷久久一区二区三区| 国产日本欧美一区二区| 国产亚洲欧美中文| 国产精品午夜电影| 亚洲蜜桃精久久久久久久| 亚洲成人av免费| 蜜桃91丨九色丨蝌蚪91桃色| 黄色日韩三级电影| 波多野结衣在线一区| 色综合久久天天综合网| 欧美视频一二三区| 欧美成人精品3d动漫h| 国产午夜精品久久久久久免费视 | 中文字幕精品在线不卡| 亚洲欧美日韩国产综合在线 | 久久精品一区四区| 自拍偷拍亚洲欧美日韩| 午夜精品久久久久久久99水蜜桃| 日本在线观看不卡视频| 成人午夜精品在线| 欧美午夜免费电影| 日韩精品一区二区三区视频在线观看 | 亚洲福利视频一区| 久久99国产乱子伦精品免费| 国产成人精品亚洲日本在线桃色| 日本韩国精品一区二区在线观看| 宅男在线国产精品| 国产精品系列在线| 偷窥少妇高潮呻吟av久久免费| 激情综合色播激情啊| 色欧美88888久久久久久影院| 91精品国产色综合久久ai换脸| 国产视频视频一区| 亚洲高清在线视频| 成人污污视频在线观看| 欧美日韩另类国产亚洲欧美一级| 久久婷婷综合激情| 日韩激情视频在线观看| www.成人在线| 精品久久国产字幕高潮| 亚洲影院在线观看|