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

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

?? i2c.c

?? AT9260的BOOTLOADER,還有幾個版本的,需要的我再放
?? 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){	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){	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一区二区三区免费野_久草精品视频
欧美日韩国产一二三| 欧美成人艳星乳罩| 国产福利91精品| 懂色av一区二区三区免费看| 国内成人免费视频| 久久精工是国产品牌吗| 毛片av中文字幕一区二区| 麻豆国产精品777777在线| 国产一区二区在线电影| 国产精品亚洲视频| 日韩三级av在线播放| 日韩欧美中文字幕制服| 国产人成一区二区三区影院| 中文av字幕一区| 亚洲一区二区三区美女| 极品少妇xxxx精品少妇偷拍| 成人小视频在线观看| 精品污污网站免费看| 久久综合色综合88| 亚洲一卡二卡三卡四卡无卡久久| 日韩高清国产一区在线| 国产美女娇喘av呻吟久久| 欧洲中文字幕精品| 91精品国产综合久久久久| 久久久精品一品道一区| 亚洲一二三四在线| 欧美日韩亚洲综合在线 欧美亚洲特黄一级 | 色激情天天射综合网| 777久久久精品| 国产精品麻豆欧美日韩ww| 午夜精品福利视频网站| 国产精品18久久久久久久网站| 欧美伊人精品成人久久综合97| 久久综合九色综合久久久精品综合| av电影在线观看完整版一区二区| 国产精品系列在线观看| 欧美日韩一区高清| 欧美激情一区不卡| 国产中文字幕一区| 欧美视频在线不卡| 亚洲九九爱视频| eeuss鲁片一区二区三区在线看| 日韩三级精品电影久久久 | 欧美一级黄色录像| 亚洲精品国产成人久久av盗摄 | 一本大道av伊人久久综合| 国产日韩欧美电影| 久久精品国产久精国产| 777奇米四色成人影色区| 日本免费新一区视频| 欧美精品日日鲁夜夜添| 亚洲欧洲日韩在线| 狠狠久久亚洲欧美| 欧美韩日一区二区三区| 国产 日韩 欧美大片| 午夜伦理一区二区| 91精品国产黑色紧身裤美女| 日韩专区欧美专区| 欧美本精品男人aⅴ天堂| 久久精品国产**网站演员| 精品成人免费观看| 国产电影一区二区三区| 久久精品一区四区| 91亚洲资源网| 日韩国产精品久久久| 日韩午夜在线观看视频| 国产乱理伦片在线观看夜一区 | 国内精品在线播放| 日本一区二区三区四区| 成人一道本在线| 亚洲国产精品久久久久婷婷884 | 国产蜜臀av在线一区二区三区| 成人深夜福利app| 五月天亚洲婷婷| 国产精品久久午夜夜伦鲁鲁| 色偷偷成人一区二区三区91| 亚洲丰满少妇videoshd| 色婷婷综合中文久久一本| 日韩综合在线视频| 中文字幕一区二区5566日韩| 色哟哟精品一区| 日韩高清不卡在线| 亚洲欧美日韩国产综合| 精品国产伦一区二区三区观看方式| 免费在线观看精品| 欧美国产日韩亚洲一区| 国产乱码精品1区2区3区| 一区二区三区久久| 久久网这里都是精品| 日本高清无吗v一区| 国产精品99久久不卡二区| 亚洲福利一二三区| 亚洲欧洲日韩在线| 国产欧美日韩在线观看| 欧美电影免费观看高清完整版在线 | 欧美老女人第四色| 91成人免费电影| 国产成人免费9x9x人网站视频| 亚洲在线中文字幕| 亚洲视频免费看| 国产精品乱人伦中文| 日韩精品最新网址| 精品国产乱码久久久久久夜甘婷婷| 欧美日韩一区高清| 色婷婷综合久久久中文一区二区| 美国十次了思思久久精品导航| 亚洲国产一区二区视频| 亚洲欧美欧美一区二区三区| 综合激情成人伊人| 中文字幕一区二区三区四区不卡 | 日韩毛片视频在线看| 中文字幕亚洲精品在线观看| 国产精品久久二区二区| 久久精品男人天堂av| 中文字幕亚洲一区二区va在线| 中文字幕av不卡| 亚洲小少妇裸体bbw| 一区二区三区鲁丝不卡| 日韩精品乱码免费| 极品少妇一区二区| 国产一区二区三区四区五区入口 | 国产成人高清在线| 成人免费视频视频| 欧美三级韩国三级日本一级| 91精品国产乱码久久蜜臀| 精品国产不卡一区二区三区| 亚洲国产精品二十页| 亚洲电影一区二区| 美女视频一区二区三区| va亚洲va日韩不卡在线观看| youjizz国产精品| 中文字幕人成不卡一区| 夜夜嗨av一区二区三区中文字幕| 亚洲男帅同性gay1069| 美女网站视频久久| 欧美视频一区二区三区在线观看 | 国产精品丝袜久久久久久app| 亚洲综合999| 成人深夜视频在线观看| 日韩欧美一二三四区| 亚洲免费伊人电影| 国产精品亚洲第一区在线暖暖韩国| 欧美日本一道本在线视频| 国产欧美在线观看一区| 日韩激情视频网站| 狠狠色综合播放一区二区| 国产91在线|亚洲| 精品成人一区二区三区四区| 一区二区三区加勒比av| 不卡一区二区在线| 中文字幕欧美日本乱码一线二线 | 91官网在线免费观看| 国产日韩精品一区| 天堂在线一区二区| 91丨九色丨黑人外教| 亚洲视频在线观看三级| 国产精品自产自拍| 欧美日韩三级一区二区| 国产精品久线观看视频| 久久精品国产99| 日韩女优av电影在线观看| 老汉av免费一区二区三区| 欧美狂野另类xxxxoooo| 亚洲欧美日韩国产综合| 色综合天天综合色综合av | 久久尤物电影视频在线观看| 久久草av在线| 制服丝袜av成人在线看| 奇米影视一区二区三区| 欧美一区二区视频免费观看| 奇米一区二区三区| 欧美欧美欧美欧美| 日本美女视频一区二区| 欧美群妇大交群的观看方式| 老司机一区二区| 国产欧美一区二区三区鸳鸯浴| 99久久精品99国产精品| 亚洲综合在线电影| 欧美手机在线视频| 九九**精品视频免费播放| 精品国产一区a| 国模娜娜一区二区三区| 成人欧美一区二区三区在线播放| 99久久精品一区二区| 日本不卡1234视频| 国产精品少妇自拍| 欧美日韩精品欧美日韩精品一| 午夜av一区二区| 久久色成人在线| 欧美日韩精品一区二区在线播放| 蜜臀av一区二区| 亚洲欧美日韩在线| 精品国产乱码久久久久久免费| 91浏览器打开| 粉嫩av亚洲一区二区图片| 一区二区三区小说| 久久午夜电影网| 欧美日韩国产综合一区二区| 国产suv精品一区二区883| 亚洲网友自拍偷拍|