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

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

?? i2c-algo-sgi.c

?? 2440下的I2C驅動源代碼 看了才知道一個驅動可以寫的這么結構化!
?? C
字號:
/* * i2c-algo-sgi.c: i2c driver algorithms for SGI adapters. *  * This file is subject to the terms and conditions of the GNU General Public * License version 2 as published by the Free Software Foundation. * * Copyright (C) 2003 Ladislav Michl <ladis@linux-mips.org> */#include <linux/kernel.h>#include <linux/module.h>#include <linux/init.h>#include <linux/errno.h>#include <linux/delay.h>#include <linux/i2c.h>#include <linux/i2c-algo-sgi.h>#define SGI_I2C_FORCE_IDLE	(0 << 0)#define SGI_I2C_NOT_IDLE	(1 << 0)#define SGI_I2C_WRITE		(0 << 1)#define SGI_I2C_READ		(1 << 1)#define SGI_I2C_RELEASE_BUS	(0 << 2)#define SGI_I2C_HOLD_BUS	(1 << 2)#define SGI_I2C_XFER_DONE	(0 << 4)#define SGI_I2C_XFER_BUSY	(1 << 4)#define SGI_I2C_ACK		(0 << 5)#define SGI_I2C_NACK		(1 << 5)#define SGI_I2C_BUS_OK		(0 << 7)#define SGI_I2C_BUS_ERR		(1 << 7)#define get_control()		adap->getctrl(adap->data)#define set_control(val)	adap->setctrl(adap->data, val)#define read_data()		adap->rdata(adap->data)#define write_data(val)		adap->wdata(adap->data, val)static int wait_xfer_done(struct i2c_algo_sgi_data *adap){	int i;	for (i = 0; i < adap->xfer_timeout; i++) {		if ((get_control() & SGI_I2C_XFER_BUSY) == 0)			return 0;		udelay(1);	}	return -ETIMEDOUT;}static int wait_ack(struct i2c_algo_sgi_data *adap){	int i;	if (wait_xfer_done(adap))		return -ETIMEDOUT;	for (i = 0; i < adap->ack_timeout; i++) {		if ((get_control() & SGI_I2C_NACK) == 0)			return 0;		udelay(1);	}	return -ETIMEDOUT;}static int force_idle(struct i2c_algo_sgi_data *adap){	int i;	set_control(SGI_I2C_FORCE_IDLE);	for (i = 0; i < adap->xfer_timeout; i++) {		if ((get_control() & SGI_I2C_NOT_IDLE) == 0)			goto out;		udelay(1);	}	return -ETIMEDOUT;out:	if (get_control() & SGI_I2C_BUS_ERR)		return -EIO;	return 0;}static int do_address(struct i2c_algo_sgi_data *adap, unsigned int addr,		      int rd){	if (rd)		set_control(SGI_I2C_NOT_IDLE);	/* Check if bus is idle, eventually force it to do so */	if (get_control() & SGI_I2C_NOT_IDLE)		if (force_idle(adap))	                return -EIO;	/* Write out the i2c chip address and specify operation */	set_control(SGI_I2C_HOLD_BUS | SGI_I2C_WRITE | SGI_I2C_NOT_IDLE);	if (rd)		addr |= 1;	write_data(addr);	if (wait_ack(adap))		return -EIO;	return 0;}static int i2c_read(struct i2c_algo_sgi_data *adap, unsigned char *buf,		    unsigned int len){	int i;	set_control(SGI_I2C_HOLD_BUS | SGI_I2C_READ | SGI_I2C_NOT_IDLE);	for (i = 0; i < len; i++) {		if (wait_xfer_done(adap))			return -EIO;		buf[i] = read_data();	}	set_control(SGI_I2C_RELEASE_BUS | SGI_I2C_FORCE_IDLE);	return 0;}static int i2c_write(struct i2c_algo_sgi_data *adap, unsigned char *buf,		     unsigned int len){	int i;	/* We are already in write state */	for (i = 0; i < len; i++) {		write_data(buf[i]);		if (wait_ack(adap))			return -EIO;	}	return 0;}static int sgi_xfer(struct i2c_adapter *i2c_adap, struct i2c_msg *msgs,		    int num){	struct i2c_algo_sgi_data *adap = i2c_adap->algo_data;	struct i2c_msg *p;	int i, err = 0;	for (i = 0; !err && i < num; i++) {		p = &msgs[i];		err = do_address(adap, p->addr, p->flags & I2C_M_RD);		if (err || !p->len)			continue;		if (p->flags & I2C_M_RD)			err = i2c_read(adap, p->buf, p->len);		else			err = i2c_write(adap, p->buf, p->len);	}	return err;}static u32 sgi_func(struct i2c_adapter *adap){	return I2C_FUNC_SMBUS_EMUL;}static struct i2c_algorithm sgi_algo = {	.name		= "SGI algorithm",	.id		= I2C_ALGO_SGI,	.master_xfer	= sgi_xfer,	.functionality	= sgi_func,};/*  * registering functions to load algorithms at runtime  */int i2c_sgi_add_bus(struct i2c_adapter *adap){	adap->id |= sgi_algo.id;	adap->algo = &sgi_algo;	return i2c_add_adapter(adap);}int i2c_sgi_del_bus(struct i2c_adapter *adap){	return i2c_del_adapter(adap);}EXPORT_SYMBOL(i2c_sgi_add_bus);EXPORT_SYMBOL(i2c_sgi_del_bus);MODULE_AUTHOR("Ladislav Michl <ladis@linux-mips.org>");MODULE_DESCRIPTION("I2C-Bus SGI algorithm");MODULE_LICENSE("GPL");

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
波多野结衣在线aⅴ中文字幕不卡| 美女视频黄免费的久久| 久久久精品国产免费观看同学| 7777精品伊人久久久大香线蕉超级流畅 | 在线观看日韩av先锋影音电影院| 国产v日产∨综合v精品视频| 国产精品一区二区久激情瑜伽 | 亚洲综合视频在线| 日韩伦理电影网| 亚洲精品高清在线观看| 亚洲狠狠丁香婷婷综合久久久| 依依成人精品视频| 亚洲宅男天堂在线观看无病毒| 亚洲福利视频三区| 久久国产精品免费| 成人永久aaa| 在线看国产一区二区| 欧美日韩亚洲综合| 欧美日韩一级片网站| 日韩一级大片在线| 国产视频一区二区在线观看| 日韩一区有码在线| 天堂在线一区二区| 国产一区二区三区电影在线观看| 成人午夜激情在线| 精品1区2区3区| 欧美精品一区二区三区蜜桃视频 | 亚洲最大色网站| 亚洲aaa精品| 国产91丝袜在线18| 色婷婷av一区二区三区之一色屋| 91麻豆精品国产91久久久久| 久久亚洲精精品中文字幕早川悠里 | 亚洲成av人片在www色猫咪| 日本一道高清亚洲日美韩| 国产精品66部| 欧美日本在线看| 中文字幕免费不卡| 蓝色福利精品导航| 欧美亚日韩国产aⅴ精品中极品| 精品国产乱码久久久久久久久 | 亚洲第一av色| 国产成人综合自拍| 制服.丝袜.亚洲.中文.综合| 国产嫩草影院久久久久| 日日夜夜精品视频免费| 99re这里都是精品| 欧美大肚乱孕交hd孕妇| 亚洲电影第三页| 国产一级精品在线| 欧美日韩三级一区| 亚洲日本一区二区| 丁香婷婷综合网| 日韩精品在线看片z| 亚洲国产aⅴ天堂久久| 成人久久久精品乱码一区二区三区| 91精品国产色综合久久| 亚洲综合成人在线视频| 国产69精品一区二区亚洲孕妇 | 国产成人av电影在线观看| 欧美精品tushy高清| 亚洲国产精品一区二区久久 | 激情综合网av| 91精品国产综合久久婷婷香蕉| 一区二区三区欧美| 色婷婷精品大在线视频| 最好看的中文字幕久久| 成人午夜av在线| 色吊一区二区三区| 国产精品美女久久久久久久网站| 国产在线视频精品一区| 欧美tickling挠脚心丨vk| 日韩电影在线一区二区| 日韩一级成人av| 久久www免费人成看片高清| 精品免费国产一区二区三区四区| 日本不卡不码高清免费观看| 欧美一级二级三级蜜桃| 奇米亚洲午夜久久精品| 日韩欧美国产麻豆| 国产一区二区三区在线观看免费视频| 欧美一卡2卡三卡4卡5免费| 青青青伊人色综合久久| 2021中文字幕一区亚洲| 国产麻豆欧美日韩一区| 欧美激情中文不卡| 日本电影亚洲天堂一区| 亚洲大型综合色站| 欧美一区二区三区在线观看 | 日本一道高清亚洲日美韩| 日韩一二三区不卡| 国产成人小视频| 一区二区在线观看免费 | 蜜桃91丨九色丨蝌蚪91桃色| 日韩精品在线网站| 波多野结衣91| 亚洲一区二区三区四区在线免费观看 | 欧美男女性生活在线直播观看| 蜜桃视频第一区免费观看| 日本一区二区三区四区在线视频| 91一区二区三区在线观看| 亚洲gay无套男同| 国产视频在线观看一区二区三区| 色婷婷激情久久| 国产在线精品免费| 亚洲综合在线视频| 精品美女在线观看| 色综合久久久久久久| 强制捆绑调教一区二区| 国产精品久线观看视频| 777a∨成人精品桃花网| 不卡电影一区二区三区| 蜜臂av日日欢夜夜爽一区| 国产欧美精品一区二区色综合| 国产日韩欧美在线一区| 色999日韩国产欧美一区二区| 亚洲精品一区二区三区蜜桃下载 | 成人激情视频网站| 丝袜国产日韩另类美女| 中文字幕av一区二区三区高| 日韩精品一区二区在线观看| 国产一区二区成人久久免费影院 | 国产高清在线观看免费不卡| 亚洲精品在线一区二区| 欧美mv日韩mv国产网站app| 精品国产电影一区二区| 国产日本亚洲高清| 国产精品全国免费观看高清| 国产日韩欧美精品一区| 亚洲欧洲日韩在线| 亚洲曰韩产成在线| 日韩va欧美va亚洲va久久| 九九精品一区二区| 国产91精品免费| 91电影在线观看| 91精品国产色综合久久久蜜香臀| 精品国产a毛片| 国产精品久久久久久久浪潮网站| 自拍偷拍亚洲欧美日韩| 日本vs亚洲vs韩国一区三区| 国产伦理精品不卡| 一本大道综合伊人精品热热 | 奇米888四色在线精品| 国产一区二区三区四| 91老司机福利 在线| 91麻豆精品国产91久久久更新时间| 亚洲精品在线电影| 亚洲精品一二三四区| 久久电影国产免费久久电影| 99久久精品国产精品久久| 日韩午夜精品电影| 亚洲欧美日韩系列| 久久国产婷婷国产香蕉| av爱爱亚洲一区| 精品少妇一区二区三区免费观看| 国产精品亲子伦对白| 丝袜美腿亚洲色图| 97久久精品人人澡人人爽| 精品国产免费一区二区三区香蕉| 亚洲人成亚洲人成在线观看图片| 日韩av电影天堂| 91猫先生在线| 国产日产亚洲精品系列| 蜜桃视频在线观看一区二区| 99久久精品一区| 久久久精品综合| 日韩av在线播放中文字幕| 91网址在线看| wwwwxxxxx欧美| 日韩中文字幕1| 91传媒视频在线播放| 国产拍揄自揄精品视频麻豆 | 一区二区三区日韩| 国产大片一区二区| 精品sm在线观看| 日本大胆欧美人术艺术动态| 色婷婷av一区| 国产精品久久久久久久第一福利| 免费av成人在线| 欧美狂野另类xxxxoooo| 综合久久国产九一剧情麻豆| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 欧美老肥妇做.爰bbww视频| 亚洲精品久久久蜜桃| av一二三不卡影片| 国产精品看片你懂得| 成人永久免费视频| 欧美经典三级视频一区二区三区| 久久99精品一区二区三区| 制服丝袜亚洲播放| 日韩国产一二三区| 在线成人免费视频| 午夜伦欧美伦电影理论片| 欧美图片一区二区三区| 一区二区三区日韩欧美| 91久久线看在观草草青青| 亚洲影院免费观看| 欧美网站一区二区| 亚洲sss视频在线视频| 91精品国产欧美一区二区18|