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

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

?? i2c-ixp4xx.c

?? LINUX 2.6.17.4的源碼
?? C
字號:
/* * drivers/i2c/i2c-adap-ixp4xx.c * * Intel's IXP4xx XScale NPU chipsets (IXP420, 421, 422, 425) do not have * an on board I2C controller but provide 16 GPIO pins that are often * used to create an I2C bus. This driver provides an i2c_adapter  * interface that plugs in under algo_bit and drives the GPIO pins * as instructed by the alogorithm driver. * * Author: Deepak Saxena <dsaxena@plexity.net> * * 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. * * NOTE: Since different platforms will use different GPIO pins for *       I2C, this driver uses an IXP4xx-specific platform_data *       pointer to pass the GPIO numbers to the driver. This  *       allows us to support all the different IXP4xx platforms *       w/o having to put #ifdefs in this driver. * *       See arch/arm/mach-ixp4xx/ixdp425.c for an example of building a  *       device list and filling in the ixp4xx_i2c_pins data structure  *       that is passed as the platform_data to this driver. */#include <linux/kernel.h>#include <linux/init.h>#include <linux/platform_device.h>#include <linux/module.h>#include <linux/i2c.h>#include <linux/i2c-algo-bit.h>#include <asm/hardware.h>	/* Pick up IXP4xx-specific bits */static inline int ixp4xx_scl_pin(void *data){	return ((struct ixp4xx_i2c_pins*)data)->scl_pin;}static inline int ixp4xx_sda_pin(void *data){	return ((struct ixp4xx_i2c_pins*)data)->sda_pin;}static void ixp4xx_bit_setscl(void *data, int val){	gpio_line_set(ixp4xx_scl_pin(data), 0);	gpio_line_config(ixp4xx_scl_pin(data),		val ? IXP4XX_GPIO_IN : IXP4XX_GPIO_OUT );}static void ixp4xx_bit_setsda(void *data, int val){	gpio_line_set(ixp4xx_sda_pin(data), 0);	gpio_line_config(ixp4xx_sda_pin(data),		val ? IXP4XX_GPIO_IN : IXP4XX_GPIO_OUT );}static int ixp4xx_bit_getscl(void *data){	int scl;	gpio_line_config(ixp4xx_scl_pin(data), IXP4XX_GPIO_IN );	gpio_line_get(ixp4xx_scl_pin(data), &scl);	return scl;}	static int ixp4xx_bit_getsda(void *data){	int sda;	gpio_line_config(ixp4xx_sda_pin(data), IXP4XX_GPIO_IN );	gpio_line_get(ixp4xx_sda_pin(data), &sda);	return sda;}	struct ixp4xx_i2c_data {	struct ixp4xx_i2c_pins *gpio_pins;	struct i2c_adapter adapter;	struct i2c_algo_bit_data algo_data;};static int ixp4xx_i2c_remove(struct platform_device *plat_dev){	struct ixp4xx_i2c_data *drv_data = platform_get_drvdata(plat_dev);	platform_set_drvdata(plat_dev, NULL);	i2c_bit_del_bus(&drv_data->adapter);	kfree(drv_data);	return 0;}static int ixp4xx_i2c_probe(struct platform_device *plat_dev){	int err;	struct ixp4xx_i2c_pins *gpio = plat_dev->dev.platform_data;	struct ixp4xx_i2c_data *drv_data = 		kzalloc(sizeof(struct ixp4xx_i2c_data), GFP_KERNEL);	if(!drv_data)		return -ENOMEM;	drv_data->gpio_pins = gpio;	/*	 * We could make a lot of these structures static, but	 * certain platforms may have multiple GPIO-based I2C	 * buses for various device domains, so we need per-device	 * algo_data->data. 	 */	drv_data->algo_data.data = gpio;	drv_data->algo_data.setsda = ixp4xx_bit_setsda;	drv_data->algo_data.setscl = ixp4xx_bit_setscl;	drv_data->algo_data.getsda = ixp4xx_bit_getsda;	drv_data->algo_data.getscl = ixp4xx_bit_getscl;	drv_data->algo_data.udelay = 10;	drv_data->algo_data.mdelay = 10;	drv_data->algo_data.timeout = 100;	drv_data->adapter.id = I2C_HW_B_IXP4XX;	drv_data->adapter.class = I2C_CLASS_HWMON;	strlcpy(drv_data->adapter.name, plat_dev->dev.driver->name,		I2C_NAME_SIZE);	drv_data->adapter.algo_data = &drv_data->algo_data;	drv_data->adapter.dev.parent = &plat_dev->dev;	gpio_line_config(gpio->scl_pin, IXP4XX_GPIO_IN);	gpio_line_config(gpio->sda_pin, IXP4XX_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)) {		printk(KERN_ERR "ERROR: Could not install %s\n", plat_dev->dev.bus_id);		kfree(drv_data);		return err;	}	platform_set_drvdata(plat_dev, drv_data);	return 0;}static struct platform_driver ixp4xx_i2c_driver = {	.probe		= ixp4xx_i2c_probe,	.remove		= ixp4xx_i2c_remove,	.driver		= {		.name	= "IXP4XX-I2C",		.owner	= THIS_MODULE,	},};static int __init ixp4xx_i2c_init(void){	return platform_driver_register(&ixp4xx_i2c_driver);}static void __exit ixp4xx_i2c_exit(void){	platform_driver_unregister(&ixp4xx_i2c_driver);}module_init(ixp4xx_i2c_init);module_exit(ixp4xx_i2c_exit);MODULE_DESCRIPTION("GPIO-based I2C adapter for IXP4xx systems");MODULE_LICENSE("GPL");MODULE_AUTHOR("Deepak Saxena <dsaxena@plexity.net>");

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩一区在线| 亚洲电影一区二区| 国产不卡高清在线观看视频| 国产亚洲精品久| 国产精品一色哟哟哟| 国产欧美日韩中文久久| aaa亚洲精品| 一个色综合网站| 日韩一区二区高清| 国产精选一区二区三区| 国产精品免费看片| 色婷婷av一区二区三区软件| 国产不卡免费视频| 一区二区三区精品视频在线| 91精品国产福利| 国内成人自拍视频| 亚洲天堂成人网| 538prom精品视频线放| 国内精品在线播放| 亚洲婷婷国产精品电影人久久| 色94色欧美sute亚洲线路二| 日韩av二区在线播放| 中文字幕av资源一区| 欧美亚洲综合色| 国内成人精品2018免费看| 亚洲视频一二三区| 欧美精品久久久久久久多人混战 | 欧美精品精品一区| 激情五月激情综合网| 成人免费在线播放视频| 制服丝袜亚洲精品中文字幕| 国产精品亚洲专一区二区三区 | 日本韩国一区二区三区视频| 日韩电影免费在线观看网站| 久久久精品综合| 色综合 综合色| 国产中文一区二区三区| 亚洲一级二级三级在线免费观看| 久久综合五月天婷婷伊人| 在线免费观看不卡av| 国产一区二区三区在线观看免费视频 | 国产一区二区导航在线播放| 一区二区免费在线播放| 国产夜色精品一区二区av| 在线国产电影不卡| 丰满白嫩尤物一区二区| 奇米影视一区二区三区小说| 亚洲美女屁股眼交| 国产精品视频线看| 精品国产乱码久久久久久图片| 欧美日韩一区三区四区| 国产91丝袜在线18| 欧美a级一区二区| 亚洲国产精品精华液网站| 亚洲视频一区在线观看| 国产日韩欧美电影| 精品国产一区二区三区久久影院| 欧美日高清视频| 色国产综合视频| 99v久久综合狠狠综合久久| 精品午夜久久福利影院| 日本亚洲电影天堂| 尤物av一区二区| 亚洲欧美综合色| 国产农村妇女精品| 久久婷婷综合激情| 久久免费午夜影院| 国产亚洲综合色| 久久亚洲捆绑美女| 精品久久久网站| 日韩一级黄色片| 日韩手机在线导航| 91精品中文字幕一区二区三区| 欧美日韩中文字幕一区二区| 欧洲日韩一区二区三区| 色综合中文综合网| 一区二区三区四区在线免费观看| 国产精品国产a| 国产精品日韩成人| 国产拍欧美日韩视频二区| 国产女主播视频一区二区| 中文字幕成人av| 一区二区中文字幕在线| 亚洲欧洲av在线| 一区二区在线观看不卡| 一区二区三区精品| 天天综合网 天天综合色| 免费在线成人网| 美日韩一级片在线观看| 激情图片小说一区| 国产一区二区按摩在线观看| 大白屁股一区二区视频| 91无套直看片红桃| 欧美性猛交一区二区三区精品| 欧美在线免费视屏| 在线不卡一区二区| 欧美mv日韩mv| 中文字幕欧美国产| 亚洲人成电影网站色mp4| 亚洲成av人片| 激情五月婷婷综合网| 99视频精品在线| 欧美日韩精品免费观看视频| 欧美成人国产一区二区| 欧美经典一区二区| 亚洲精品中文在线影院| 日韩电影在线观看一区| 国产一区二区三区国产| 91美女视频网站| 日韩女优av电影| 国产精品二三区| 日本欧美久久久久免费播放网| 国产老妇另类xxxxx| 色综合av在线| 欧美mv日韩mv亚洲| 亚洲乱码国产乱码精品精98午夜| 亚洲成人免费视| 国产成人精品免费一区二区| 色女孩综合影院| 精品福利在线导航| 一区二区三区国产| 国产成人啪午夜精品网站男同| 色系网站成人免费| 久久人人爽爽爽人久久久| 亚洲精品高清视频在线观看| 国内精品国产三级国产a久久| 在线国产亚洲欧美| 中文字幕欧美激情| 日韩av午夜在线观看| a4yy欧美一区二区三区| 欧美精品一区二区三区蜜桃| 一个色在线综合| 成人av网站免费| 91精品国产一区二区三区| 日韩美女视频一区| 国产精品夜夜嗨| 日韩亚洲欧美综合| 亚洲电影在线播放| 91香蕉视频污在线| 中文字幕不卡在线播放| 久久精品国产久精国产爱| 在线观看日韩一区| 中文字幕一区二区三区视频| 久久99热这里只有精品| 欧美午夜影院一区| 亚洲免费资源在线播放| 高清成人在线观看| 久久综合久久综合亚洲| 日本女人一区二区三区| 欧美做爰猛烈大尺度电影无法无天| 国产嫩草影院久久久久| 激情久久五月天| 欧美一区二区三区人| 亚洲影院在线观看| 91在线免费播放| 亚洲天堂久久久久久久| gogogo免费视频观看亚洲一| 国产色产综合产在线视频| 精品一二线国产| 精品久久久三级丝袜| 黑人精品欧美一区二区蜜桃| 欧美一级在线免费| 男人的j进女人的j一区| 在线播放一区二区三区| 午夜精品久久久| 欧美区一区二区三区| 天天做天天摸天天爽国产一区| 欧美日韩综合在线免费观看| 亚洲高清三级视频| 欧美久久久久中文字幕| 天天影视涩香欲综合网| 91麻豆精品国产91久久久久久| 日产精品久久久久久久性色| 日韩视频一区二区三区在线播放 | 精品一区二区三区在线观看 | 日韩欧美在线不卡| 美女视频黄 久久| 日韩精品一区二区三区中文不卡| 青青草成人在线观看| 26uuu国产在线精品一区二区| 国产一区久久久| 国产精品欧美一区二区三区| av资源网一区| 五月天激情综合| 日韩欧美亚洲另类制服综合在线| 九九九久久久精品| 国产精品天干天干在线综合| 99精品视频在线播放观看| 亚洲午夜日本在线观看| 日韩免费观看高清完整版| 国产乱码字幕精品高清av | 成人在线综合网| 亚洲三级免费观看| 欧美影视一区在线| 麻豆久久久久久久| 国产精品情趣视频| 精品视频色一区| 国产乱子伦一区二区三区国色天香| 国产精品伦一区| 欧美亚洲一区二区三区四区|