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

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

?? i2c.c

?? 基于華恒2410板子的uboot代碼
?? C
字號:
/* *  i2c Support for Atmel's AT91RM9200 Two-Wire Interface * *  (c) Rick Bronson * *  Borrowed heavily from original work by: *  Copyright (c) 2000 Philip Edelbrock <phil@stimpy.netroedge.com> * *  Modified to work with u-boot by (C) 2004 Gary Jennejohn garyj@denx.de * *  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. **/#include <common.h>#ifdef CONFIG_HARD_I2C#include <i2c.h>#include <asm/io.h>#include <asm/arch/hardware.h>#include <at91rm9200_i2c.h>/* define DEBUG *//* * Poll the i2c status register until the specified bit is set. * Returns 0 if timed out (100 msec) */static short at91_poll_status(AT91PS_TWI twi, unsigned long bit) {	int loop_cntr = 10000;	do {		udelay(10);	} while (!(twi->TWI_SR & bit) && (--loop_cntr > 0));	return (loop_cntr > 0);}/* * Generic i2c master transfer entrypoint * * rw == 1 means that this is a read */static intat91_xfer(unsigned char chip, unsigned int addr, int alen,						unsigned char *buffer, int len, int rw){	AT91PS_TWI twi = (AT91PS_TWI) AT91_TWI_BASE;	int length;	unsigned char *buf;	/* Set the TWI Master Mode Register */	twi->TWI_MMR = (chip << 16) | (alen << 8)		| ((rw == 1) ? AT91C_TWI_MREAD : 0);	/* Set TWI Internal Address Register with first messages data field */	if (alen > 0)		twi->TWI_IADR = addr;	length = len;	buf = buffer;	if (length && buf) {	/* sanity check */		if (rw) {			twi->TWI_CR = AT91C_TWI_START;			while (length--) {				if (!length)					twi->TWI_CR = AT91C_TWI_STOP;				/* Wait until transfer is finished */				if (!at91_poll_status(twi, AT91C_TWI_RXRDY)) {					debug ("at91_i2c: timeout 1\n");					return 1;				}				*buf++ = twi->TWI_RHR;			}			if (!at91_poll_status(twi, AT91C_TWI_TXCOMP)) {				debug ("at91_i2c: timeout 2\n");				return 1;			}		} else {			twi->TWI_CR = AT91C_TWI_START;			while (length--) {				twi->TWI_THR = *buf++;				if (!length)					twi->TWI_CR = AT91C_TWI_STOP;				if (!at91_poll_status(twi, AT91C_TWI_TXRDY)) {					debug ("at91_i2c: timeout 3\n");					return 1;				}			}			/* Wait until transfer is finished */			if (!at91_poll_status(twi, AT91C_TWI_TXCOMP)) {				debug ("at91_i2c: timeout 4\n");				return 1;			}		}	}	return 0;}inti2c_probe(unsigned char chip){	unsigned char buffer[1];	return at91_xfer(chip, 0, 0, buffer, 1, 1);}inti2c_read (unsigned char chip, unsigned int addr, int alen,	  unsigned char *buffer, int len){#ifdef CFG_I2C_EEPROM_ADDR_OVERFLOW	/* we only allow one address byte */	if (alen > 1)		return 1;	/* XXX assume an ATMEL AT24C16 */	if (alen == 1) {#if 0 /* EEPROM code already sets this correctly */		chip |= (addr >> 8) & 0xff;#endif		addr = addr & 0xff;	}#endif	return at91_xfer(chip, addr, alen, buffer, len, 1);}inti2c_write(unsigned char chip, unsigned int addr, int alen,	  unsigned char *buffer, int len){#ifdef CFG_I2C_EEPROM_ADDR_OVERFLOW	int i;	unsigned char *buf;	/* we only allow one address byte */	if (alen > 1)		return 1;	/* XXX assume an ATMEL AT24C16 */	if (alen == 1) {		buf = buffer;		/* do single byte writes */		for (i = 0; i < len; i++) {#if 0 /* EEPROM code already sets this correctly */			chip |= (addr >> 8) & 0xff;#endif			addr = addr & 0xff;			if (at91_xfer(chip, addr, alen, buf++, 1, 0))				return 1;			addr++;		}		return 0;	}#endif	return at91_xfer(chip, addr, alen, buffer, len, 0);}/* * Main initialization routine */voidi2c_init(int speed, int slaveaddr){	AT91PS_TWI twi = (AT91PS_TWI) AT91_TWI_BASE;	*AT91C_PIOA_PDR = AT91C_PA25_TWD | AT91C_PA26_TWCK;	*AT91C_PIOA_ASR = AT91C_PA25_TWD | AT91C_PA26_TWCK;	*AT91C_PIOA_MDER = AT91C_PA25_TWD | AT91C_PA26_TWCK;	*AT91C_PMC_PCER = 1 << AT91C_ID_TWI;		/* enable peripheral clock */	twi->TWI_IDR = 0x3ff;				/* Disable all interrupts */	twi->TWI_CR = AT91C_TWI_SWRST;			/* Reset peripheral */	twi->TWI_CR = AT91C_TWI_MSEN | AT91C_TWI_SVDIS;	/* Set Master mode */	/* Here, CKDIV = 1 and CHDIV=CLDIV  ==> CLDIV = CHDIV = 1/4*((Fmclk/FTWI) -6) */	twi->TWI_CWGR = AT91C_TWI_CKDIV1 | AT91C_TWI_CLDIV3 | (AT91C_TWI_CLDIV3 << 8);	debug ("Found AT91 i2c\n");	return;}uchar i2c_reg_read(uchar i2c_addr, uchar reg){	unsigned char buf;	i2c_read(i2c_addr, reg, 1, &buf, 1);	return(buf);}void i2c_reg_write(uchar i2c_addr, uchar reg, uchar val){	i2c_write(i2c_addr, reg, 1, &val, 1);}#endif /* CONFIG_HARD_I2C */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
丁香网亚洲国际| 欧美一区二视频| 色婷婷久久久亚洲一区二区三区| av网站免费线看精品| 欧美图区在线视频| 26uuu亚洲综合色| 欧美激情一区在线观看| 亚洲欧美在线观看| 一区二区三区在线观看网站| 蜜臀99久久精品久久久久久软件 | 香蕉加勒比综合久久| 美女精品自拍一二三四| 伦理电影国产精品| 日韩伦理免费电影| 日韩精品高清不卡| 国产精品久久久久9999吃药| 亚洲一区日韩精品中文字幕| 亚洲高清视频在线| 99久久精品国产毛片| 日韩视频在线你懂得| 欧美国产一区二区| 成人精品小蝌蚪| 欧美系列亚洲系列| 精品久久久久一区二区国产| 亚洲午夜国产一区99re久久| 欧美亚洲国产怡红院影院| 一区在线中文字幕| 91污在线观看| 日韩精品视频网| 日韩小视频在线观看专区| 美腿丝袜亚洲色图| 国产午夜精品理论片a级大结局| 久久成人免费网站| 欧美一二三区在线| 成人一区在线看| 亚洲视频香蕉人妖| 欧美日韩国产在线观看| 亚洲高清在线精品| 26uuu色噜噜精品一区二区| 精品亚洲免费视频| 久久久久久99精品| 色女孩综合影院| 国内精品久久久久影院薰衣草| 中文字幕乱码一区二区免费| 欧美区一区二区三区| 亚洲男人都懂的| 精品人在线二区三区| 99国产欧美另类久久久精品| 亚洲一本大道在线| 欧美日韩一区不卡| 99综合影院在线| 成人成人成人在线视频| 日韩电影免费一区| 中文字幕不卡一区| 91麻豆精品国产91久久久更新时间 | 天天综合日日夜夜精品| 欧美绝品在线观看成人午夜影视| 欧美丝袜自拍制服另类| 国产一区不卡精品| 亚洲美女淫视频| 日韩欧美一级片| 欧美一级生活片| 欧美日韩精品专区| 欧美日韩亚洲综合| 欧美日韩国产中文| 欧美乱熟臀69xxxxxx| 欧美日韩高清一区二区三区| 91成人免费在线| 欧美精品成人一区二区三区四区| 欧美色窝79yyyycom| 5月丁香婷婷综合| 欧美成人一区二区三区片免费 | 国产精品一二三| 国产毛片精品视频| 成人午夜免费视频| 一本大道久久a久久精二百| 在线观看欧美精品| 精品国产乱码久久| 国产精品初高中害羞小美女文| 亚洲一区二区欧美日韩| 久久99热这里只有精品| 大胆欧美人体老妇| 91精品国产一区二区三区| 精品久久久久久最新网址| 国产精品的网站| 裸体一区二区三区| 色综合久久久网| 欧美一级高清片在线观看| |精品福利一区二区三区| 卡一卡二国产精品 | 欧美精品99久久久**| 精品日韩99亚洲| 国产精品国产三级国产aⅴ入口 | 亚洲欧洲一区二区在线播放| 欧美精品在线观看一区二区| 欧美无人高清视频在线观看| 久久精品视频在线免费观看| 日韩三级高清在线| www.色精品| 天堂成人国产精品一区| 91同城在线观看| 亚洲第一电影网| 欧美电视剧免费观看| 亚洲视频每日更新| 在线不卡免费欧美| 国产欧美一区二区在线| 亚洲黄色免费电影| 成人午夜在线播放| 欧美一级片在线观看| 欧美激情在线一区二区| 丝袜美腿亚洲一区| 欧美做爰猛烈大尺度电影无法无天| 7777精品伊人久久久大香线蕉的 | 一区二区三区影院| 国产一区二区在线观看视频| 日韩视频免费观看高清完整版 | 亚洲综合免费观看高清完整版| 国产乱码精品一区二区三区忘忧草 | 91精品综合久久久久久| 男女男精品视频网| 丰满少妇久久久久久久| 久久先锋影音av鲁色资源| 国产亚洲成av人在线观看导航| 国产suv精品一区二区6| 欧美不卡视频一区| 波多野结衣中文一区| 国产精品视频线看| 在线观看亚洲精品| 极品少妇xxxx精品少妇| 久久精品一区二区三区不卡| 在线一区二区三区四区五区| 蜜臀av一区二区在线观看| 中文字幕一区二区三区四区| 欧美日本精品一区二区三区| 热久久一区二区| xnxx国产精品| 日本精品视频一区二区三区| 国产精品99久久久久久有的能看| 日韩三级伦理片妻子的秘密按摩| 中文字幕亚洲精品在线观看| 91视视频在线观看入口直接观看www| 美女视频黄 久久| 国产一区不卡视频| eeuss鲁片一区二区三区| 色久优优欧美色久优优| 欧美巨大另类极品videosbest| 精品国产99国产精品| 亚洲成av人影院| 午夜精品一区在线观看| 无吗不卡中文字幕| 亚洲男人的天堂一区二区| 亚洲女同ⅹxx女同tv| 夜色激情一区二区| 亚洲国产成人porn| 亚洲成人激情综合网| 日韩高清在线观看| 国产精品一色哟哟哟| 欧美性极品少妇| www成人在线观看| 中文字幕一区视频| 日韩午夜电影av| 777午夜精品视频在线播放| 国产成人夜色高潮福利影视| 最新热久久免费视频| 国产精品美女久久久久av爽李琼| 国产精品美女久久久久久久久| 一区二区在线观看视频在线观看| 天天影视网天天综合色在线播放| 国产尤物一区二区在线| 91福利在线看| 国产精品久久久久9999吃药| 日韩vs国产vs欧美| 91老师国产黑色丝袜在线| 日韩视频免费观看高清完整版在线观看 | 亚洲一二三四在线观看| 国产精品综合二区| 欧美图区在线视频| 久久综合久久99| 亚洲va在线va天堂| 欧美做爰猛烈大尺度电影无法无天| 2023国产一二三区日本精品2022| 亚洲国产欧美在线| 欧美日韩国产综合一区二区| 亚洲图片欧美视频| 欧美无人高清视频在线观看| 亚洲精品菠萝久久久久久久| 风间由美性色一区二区三区| 国产精品网友自拍| av电影天堂一区二区在线观看| 久久久美女毛片| 国产98色在线|日韩| 精品粉嫩超白一线天av| 韩国三级中文字幕hd久久精品| 欧美一区中文字幕| 蜜臀a∨国产成人精品| 精品久久久久久无| 99久久国产综合色|国产精品| 中文字幕在线一区免费| 91精品国产综合久久精品| 高清日韩电视剧大全免费|