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

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

?? i2c-ixp2000.c

?? 底層驅(qū)動開發(fā)
?? C
字號:
/* * drivers/i2c/busses/i2c-ixp2000.c * * I2C adapter for IXP2000 systems using GPIOs for I2C bus * * Author: Deepak Saxena <dsaxena@plexity.net> * Based on IXDP2400 code by: Naeem M. Afzal <naeem.m.afzal@intel.com> * Made generic by: Jeff Daly <jeffrey.daly@intel.com> * * Copyright (c) 2003-2004 MontaVista Software Inc. * * This file is licensed under  the terms of the GNU General Public  * License version 2. This program is licensed "as is" without any  * warranty of any kind, whether express or implied. * * From Jeff Daly: * * I2C adapter driver for Intel IXDP2xxx platforms. This should work for any * IXP2000 platform if it uses the HW GPIO in the same manner.  Basically,  * SDA and SCL GPIOs have external pullups.  Setting the respective GPIO to  * an input will make the signal a '1' via the pullup.  Setting them to  * outputs will pull them down.  * * The GPIOs are open drain signals and are used as configuration strap inputs * during power-up so there's generally a buffer on the board that needs to be  * 'enabled' to drive the GPIOs. */#include <linux/kernel.h>#include <linux/init.h>#include <linux/device.h>#include <linux/module.h>#include <linux/i2c.h>#include <linux/i2c-algo-bit.h>#include <asm/hardware.h>	/* Pick up IXP2000-specific bits */#include <asm/arch/gpio.h>static inline int ixp2000_scl_pin(void *data){	return ((struct ixp2000_i2c_pins*)data)->scl_pin;}static inline int ixp2000_sda_pin(void *data){	return ((struct ixp2000_i2c_pins*)data)->sda_pin;}static void ixp2000_bit_setscl(void *data, int val){	int i = 5000;	if (val) {		gpio_line_config(ixp2000_scl_pin(data), GPIO_IN);		while(!gpio_line_get(ixp2000_scl_pin(data)) && i--);	} else {		gpio_line_config(ixp2000_scl_pin(data), GPIO_OUT);	}}static void ixp2000_bit_setsda(void *data, int val){	if (val) {		gpio_line_config(ixp2000_sda_pin(data), GPIO_IN);	} else {		gpio_line_config(ixp2000_sda_pin(data), GPIO_OUT);	}}static int ixp2000_bit_getscl(void *data){	return gpio_line_get(ixp2000_scl_pin(data));}static int ixp2000_bit_getsda(void *data){	return gpio_line_get(ixp2000_sda_pin(data));}struct ixp2000_i2c_data {	struct ixp2000_i2c_pins *gpio_pins;	struct i2c_adapter adapter;	struct i2c_algo_bit_data algo_data;};static int ixp2000_i2c_remove(struct device *dev){	struct platform_device *plat_dev = to_platform_device(dev);	struct ixp2000_i2c_data *drv_data = dev_get_drvdata(&plat_dev->dev);	dev_set_drvdata(&plat_dev->dev, NULL);	i2c_bit_del_bus(&drv_data->adapter);	kfree(drv_data);	return 0;}static int ixp2000_i2c_probe(struct device *dev){	int err;	struct platform_device *plat_dev = to_platform_device(dev);	struct ixp2000_i2c_pins *gpio = plat_dev->dev.platform_data;	struct ixp2000_i2c_data *drv_data = 		kmalloc(sizeof(struct ixp2000_i2c_data), GFP_KERNEL);	if (!drv_data)		return -ENOMEM;	memzero(drv_data, sizeof(*drv_data));	drv_data->gpio_pins = gpio;	drv_data->algo_data.data = gpio;	drv_data->algo_data.setsda = ixp2000_bit_setsda;	drv_data->algo_data.setscl = ixp2000_bit_setscl;	drv_data->algo_data.getsda = ixp2000_bit_getsda;	drv_data->algo_data.getscl = ixp2000_bit_getscl;	drv_data->algo_data.udelay = 6;	drv_data->algo_data.mdelay = 6;	drv_data->algo_data.timeout = 100;	drv_data->adapter.id = I2C_HW_B_IXP2000,	drv_data->adapter.algo_data = &drv_data->algo_data,	drv_data->adapter.dev.parent = &plat_dev->dev;	gpio_line_config(gpio->sda_pin, GPIO_IN);	gpio_line_config(gpio->scl_pin, GPIO_IN);	gpio_line_set(gpio->scl_pin, 0);	gpio_line_set(gpio->sda_pin, 0);	if ((err = i2c_bit_add_bus(&drv_data->adapter)) != 0) {		dev_err(dev, "Could not install, error %d\n", err);		kfree(drv_data);		return err;	} 	dev_set_drvdata(&plat_dev->dev, drv_data);	return 0;}static struct device_driver ixp2000_i2c_driver = {	.name		= "IXP2000-I2C",	.bus		= &platform_bus_type,	.probe		= ixp2000_i2c_probe,	.remove		= ixp2000_i2c_remove,};static int __init ixp2000_i2c_init(void){	return driver_register(&ixp2000_i2c_driver);}static void __exit ixp2000_i2c_exit(void){	driver_unregister(&ixp2000_i2c_driver);}module_init(ixp2000_i2c_init);module_exit(ixp2000_i2c_exit);MODULE_AUTHOR ("Deepak Saxena <dsaxena@plexity.net>");MODULE_DESCRIPTION("IXP2000 GPIO-based I2C bus driver");MODULE_LICENSE("GPL");

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91麻豆福利精品推荐| 色综合天天综合在线视频| 福利一区福利二区| 欧美性生活影院| www国产成人| 亚洲va国产va欧美va观看| 国产99久久久国产精品潘金网站| 欧洲国产伦久久久久久久| 国产欧美日韩在线观看| 乱中年女人伦av一区二区| 欧美午夜影院一区| 中文字幕一区免费在线观看 | 一区二区三区高清| 精品一二三四区| 欧美欧美欧美欧美首页| 樱花影视一区二区| 成人免费高清在线| 欧美激情综合五月色丁香小说| 日韩不卡手机在线v区| 欧美男生操女生| 亚洲国产毛片aaaaa无费看| 色综合久久天天| 国产精品麻豆一区二区| 成人久久18免费网站麻豆| 久久久亚洲欧洲日产国码αv| 美腿丝袜在线亚洲一区| 欧美精品777| 亚洲欧美日韩小说| 91碰在线视频| 亚洲黄色免费电影| 色悠悠亚洲一区二区| 亚洲天天做日日做天天谢日日欢| 成人免费精品视频| 中文字幕亚洲区| www.欧美色图| 国产精品每日更新在线播放网址| 国产91露脸合集magnet| 国产农村妇女毛片精品久久麻豆 | 久久这里只有精品首页| 国产精品一区不卡| 国产日韩av一区二区| 91精品在线观看入口| 日韩精品91亚洲二区在线观看| 欧美日韩一区久久| 久久成人免费电影| 国产片一区二区| 91蝌蚪porny九色| 日日嗨av一区二区三区四区| 欧美电影免费观看高清完整版在线观看| 日本伊人色综合网| 久久影院午夜论| www.99精品| 五月天婷婷综合| 精品国产成人系列| av在线免费不卡| 视频一区视频二区中文字幕| 26uuu成人网一区二区三区| 高清成人在线观看| 亚洲成av人在线观看| 久久久综合视频| 91女厕偷拍女厕偷拍高清| 亚洲一区二区三区激情| 久久综合色婷婷| 91亚洲精品久久久蜜桃网站| 亚洲超碰精品一区二区| 久久精品视频免费| 91官网在线免费观看| 久草这里只有精品视频| 亚洲人成在线观看一区二区| 欧美日韩三级在线| 成人深夜在线观看| 香港成人在线视频| 国产精品女同互慰在线看| 欧美日韩精品三区| 成人18精品视频| 麻豆国产欧美日韩综合精品二区| 国产精品水嫩水嫩| 欧美一区二区免费视频| 91天堂素人约啪| 国产在线不卡一区| 午夜精品久久久久影视| 国产农村妇女毛片精品久久麻豆 | 色综合激情久久| 久久精品国产第一区二区三区| 亚洲女厕所小便bbb| 日韩欧美国产精品| 欧美激情综合五月色丁香| 日韩亚洲国产中文字幕欧美| 91在线观看免费视频| 国产在线播精品第三| 日韩va亚洲va欧美va久久| 一区二区理论电影在线观看| 欧美高清在线精品一区| 26uuu亚洲综合色欧美| 欧美精品久久久久久久多人混战 | 国产不卡免费视频| 麻豆视频一区二区| 图片区日韩欧美亚洲| 一级做a爱片久久| 亚洲少妇30p| 亚洲人成伊人成综合网小说| 国产亲近乱来精品视频| 久久久久久久久久久黄色| 精品国产三级a在线观看| 日韩一区二区视频| 欧美精品乱码久久久久久按摩| 欧美少妇xxx| 欧美日韩亚州综合| 欧美性色黄大片手机版| 欧洲精品一区二区三区在线观看| 日本道免费精品一区二区三区| aaa国产一区| 91在线国内视频| 成人午夜电影网站| 成人午夜av影视| 成人黄页在线观看| 成人蜜臀av电影| 色婷婷一区二区三区四区| 日本韩国一区二区三区| 精品视频一区 二区 三区| 欧美日韩亚洲另类| 91麻豆精品国产91久久久资源速度| 欧美最新大片在线看| 欧美专区日韩专区| 欧美日韩精品电影| 亚洲免费在线电影| 亚洲一区欧美一区| 蜜桃视频免费观看一区| 国产一区欧美二区| 97久久精品人人做人人爽| 99久久精品费精品国产一区二区| 91天堂素人约啪| 欧美日韩成人在线| 日韩欧美高清dvd碟片| 久久久久成人黄色影片| 亚洲欧洲精品一区二区三区| 一区二区在线看| 日韩精品三区四区| 粉嫩蜜臀av国产精品网站| 91国产丝袜在线播放| 日韩一级黄色大片| 欧美国产丝袜视频| 亚洲国产视频在线| 久久精品99国产精品| 高清不卡在线观看| 欧美日韩国产小视频在线观看| 日韩欧美一二三区| 中文字幕一区在线观看| 亚洲成人av一区二区| 国产一区91精品张津瑜| 一本大道久久a久久综合婷婷| 日韩欧美一二区| 亚洲视频一区二区在线| 免费的国产精品| 色呦呦网站一区| 欧美变态凌虐bdsm| 亚洲一区二区三区在线看| 精品一区中文字幕| 欧美性淫爽ww久久久久无| 久久久国产精品麻豆| 亚洲午夜三级在线| 国产成人免费xxxxxxxx| 欧美精品日韩一区| 亚洲欧洲韩国日本视频| 久久精品噜噜噜成人av农村| 97精品超碰一区二区三区| 日韩欧美亚洲国产精品字幕久久久| 国产精品毛片久久久久久| 麻豆精品视频在线观看| 欧美性大战久久久久久久蜜臀| 国产欧美一区二区三区在线看蜜臀| 天天av天天翘天天综合网 | 精品亚洲国内自在自线福利| 99re热这里只有精品免费视频| 日韩女同互慰一区二区| 亚洲图片欧美色图| www.日本不卡| 国产亚洲精品中文字幕| 日本sm残虐另类| 在线成人免费观看| 亚洲日本护士毛茸茸| 成人国产精品免费| 久久奇米777| 久久国产免费看| 日韩欧美国产精品一区| 青椒成人免费视频| 欧美放荡的少妇| 亚洲一区精品在线| 欧美亚洲日本一区| 一级日本不卡的影视| 日本道精品一区二区三区| 国产精品天干天干在线综合| 国产一区二区三区综合| 久久综合久久鬼色| 国产一二三精品| 国产亚洲短视频| 国产iv一区二区三区| 国产欧美一区二区精品婷婷| 国产精品亚洲成人| 国产精品无遮挡|