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

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

?? i2c-ixp4xx.c

?? 底層驅(qū)動開發(fā)
?? 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/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 device *dev){	struct platform_device *plat_dev = to_platform_device(dev);	struct ixp4xx_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 ixp4xx_i2c_probe(struct device *dev){	int err;	struct platform_device *plat_dev = to_platform_device(dev);	struct ixp4xx_i2c_pins *gpio = plat_dev->dev.platform_data;	struct ixp4xx_i2c_data *drv_data = 		kmalloc(sizeof(struct ixp4xx_i2c_data), GFP_KERNEL);	if(!drv_data)		return -ENOMEM;	memzero(drv_data, sizeof(struct ixp4xx_i2c_data));	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.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", dev->bus_id);		kfree(drv_data);		return err;	}	dev_set_drvdata(&plat_dev->dev, drv_data);	return 0;}static struct device_driver ixp4xx_i2c_driver = {	.name		= "IXP4XX-I2C",	.bus		= &platform_bus_type,	.probe		= ixp4xx_i2c_probe,	.remove		= ixp4xx_i2c_remove,};static int __init ixp4xx_i2c_init(void){	return driver_register(&ixp4xx_i2c_driver);}static void __exit ixp4xx_i2c_exit(void){	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>");

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
韩国欧美国产1区| 成人动漫一区二区三区| 国产欧美视频在线观看| 在线看日本不卡| 国产成人午夜片在线观看高清观看| 一区二区三区在线免费观看| 精品少妇一区二区三区| 欧美视频三区在线播放| 99精品国产热久久91蜜凸| 精品夜夜嗨av一区二区三区| 亚洲成人黄色小说| |精品福利一区二区三区| 久久伊人中文字幕| 欧美一区二区三区在线看| 日本韩国一区二区| 不卡的电影网站| 国产一区二区伦理片| 日本成人在线电影网| 一区二区三区欧美日韩| 国产精品拍天天在线| 久久影视一区二区| 欧美mv和日韩mv的网站| 日韩欧美国产午夜精品| 91精品一区二区三区久久久久久| 色悠悠久久综合| 91亚洲国产成人精品一区二三| 国产乱妇无码大片在线观看| 精品一区在线看| 麻豆成人综合网| 奇米影视一区二区三区小说| 亚洲成人第一页| 午夜久久久久久久久久一区二区| 亚洲综合色成人| 亚洲综合成人在线视频| 亚洲综合免费观看高清完整版| 自拍偷拍亚洲综合| 亚洲欧美综合另类在线卡通| 国产精品欧美综合在线| 国产精品女同一区二区三区| 亚洲国产精品精华液2区45| 国产色一区二区| 国产精品美女久久久久久久久| 国产日韩欧美高清| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 亚洲一区二区精品视频| 亚洲综合av网| 午夜欧美2019年伦理| 日韩高清不卡在线| 久久99国产精品久久99果冻传媒| 免费不卡在线观看| 狠狠色综合日日| 成人网在线免费视频| 成人精品免费看| 91啪亚洲精品| 欧美日韩中文字幕精品| 日韩欧美一级特黄在线播放| 久久麻豆一区二区| 国产精品美女久久久久久久| 一区二区三区影院| 日韩国产成人精品| 激情五月婷婷综合网| 国产xxx精品视频大全| 99久久综合狠狠综合久久| 色欧美日韩亚洲| 这里只有精品视频在线观看| 欧美成人精品3d动漫h| 久久久国际精品| 一区二区视频在线| 蜜桃一区二区三区四区| 国产91对白在线观看九色| 色又黄又爽网站www久久| 欧美美女视频在线观看| 久久综合网色—综合色88| 中文字幕亚洲在| 亚洲国产精品久久久久婷婷884| 麻豆视频观看网址久久| 99免费精品在线观看| 欧美精品xxxxbbbb| 国产欧美一区二区三区鸳鸯浴| 又紧又大又爽精品一区二区| 美洲天堂一区二卡三卡四卡视频| 国产91丝袜在线播放0| 色噜噜久久综合| 日韩女优毛片在线| 国产精品久久毛片a| 婷婷一区二区三区| 成人h版在线观看| 欧美一区二区三区四区久久| 中文字幕一区二区不卡| 日本不卡视频一二三区| 高清国产一区二区| 欧美精品成人一区二区三区四区| 欧美激情自拍偷拍| 日韩国产精品大片| 91免费在线看| 久久伊人中文字幕| 日韩国产成人精品| 99re热视频精品| 精品不卡在线视频| 天天色天天操综合| 色综合天天综合网国产成人综合天 | 精品一区二区三区的国产在线播放| 91视频在线观看| 久久久久国产精品人| 五月婷婷综合在线| 一本一道久久a久久精品| 亚洲午夜激情网站| 亚洲第一av色| 国产精品一区在线观看你懂的| 欧日韩精品视频| 国产精品免费观看视频| 麻豆精品视频在线观看| 欧亚洲嫩模精品一区三区| 国产女主播在线一区二区| 免费精品视频在线| 欧美日韩视频在线观看一区二区三区| 国产色一区二区| 激情久久久久久久久久久久久久久久| 欧美日韩精品三区| 亚洲久草在线视频| av激情亚洲男人天堂| 国产亚洲自拍一区| 激情综合色综合久久| 91精品国产色综合久久不卡蜜臀 | 9l国产精品久久久久麻豆| 久久久久久久一区| 激情五月婷婷综合| 精品国精品自拍自在线| 美女视频免费一区| 91精品国产综合久久香蕉的特点| 午夜精品影院在线观看| 欧美日韩精品一区二区三区| 亚洲国产日韩综合久久精品| 欧美在线免费观看亚洲| 一区二区视频免费在线观看| 欧美亚洲国产怡红院影院| 亚洲一区在线播放| 在线看国产一区| 五月天激情综合网| 91精品国产色综合久久久蜜香臀| 日韩国产在线观看| 精品日韩在线观看| 国产真实乱对白精彩久久| 国产亚洲精品久| 成人黄色777网| 亚洲欧洲精品天堂一级| 在线看日本不卡| 日韩综合一区二区| 精品国产sm最大网站| 国产69精品久久久久毛片 | 久久99精品视频| www一区二区| 国产·精品毛片| 亚洲美女精品一区| 欧美日韩另类国产亚洲欧美一级| 日本在线观看不卡视频| 久久久久亚洲综合| aaa国产一区| 亚洲第一主播视频| 26uuu精品一区二区三区四区在线| 国内成人精品2018免费看| 国产欧美一区二区三区在线看蜜臀 | 日韩美女视频在线| 国产精品一区不卡| 亚洲免费伊人电影| 7878成人国产在线观看| 国产一区91精品张津瑜| 亚洲色图视频网| 欧美一级日韩不卡播放免费| 东方欧美亚洲色图在线| 一区二区免费看| 日韩免费看的电影| 色综合色狠狠综合色| 蜜乳av一区二区三区| 国产精品免费久久久久| 69久久99精品久久久久婷婷| 国产成人在线视频网站| 亚洲国产视频直播| xvideos.蜜桃一区二区| 在线观看视频一区| 国产在线视频不卡二| 一区二区三区.www| 精品99999| 欧美色综合久久| 国产成人av一区二区三区在线| 亚洲精品亚洲人成人网在线播放| 欧美xxxxx牲另类人与| a级精品国产片在线观看| 秋霞电影网一区二区| 中文字幕在线一区| 精品乱人伦小说| 精品视频一区二区三区免费| 不卡的av在线播放| 精品一区二区久久久| 亚洲国产精品自拍| 国产精品久99| 精品成a人在线观看| 欧美顶级少妇做爰| 99re热视频这里只精品| 国产又粗又猛又爽又黄91精品|