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

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

?? el_srom.c

?? uboot for at91rm9200dk
?? C
字號:
/* * (C) Copyright 2002 ELTEC Elektronik AG * Frank Gottschling <fgottschling@eltec.de> * * See file CREDITS for list of people who contributed to this * project. * * 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., 59 Temple Place, Suite 330, Boston, * MA 02111-1307 USA */#include <common.h>#include "srom.h"/*----------------------------------------------------------------------------*//* *  START sequence *        _ _________ *  SCLK  _>         \____ *        _ ____ *  SDIO  _>    \_________ *         :    :    : */static void eepStart (void){    out8(I2C_BUS_DAT, 0x60);     /* SCLK = high  SDIO = high */    out8(I2C_BUS_DIR, 0x60);     /* set output direction for SCLK/SDIO */    udelay(10);    out8(I2C_BUS_DAT, 0x40);     /* SCLK = high  SDIO = low */    udelay(10);    out8(I2C_BUS_DAT, 0x00);     /* SCLK = low   SDIO = low */    udelay(10);}/*----------------------------------------------------------------------------*//* *  STOP sequence *              _______ *  SCLK  _____/ *        _         ___ *  SDIO  _>_______/ *         :   :   : */static void eepStop (void){    out8(I2C_BUS_DAT, 0x00);      /* SCLK = low   SDIO = low */    out8(I2C_BUS_DIR, 0x60);      /* set output direction for SCLK/SDIO */    udelay(10);    out8(I2C_BUS_DAT, 0x40);      /* SCLK = high  SDIO = low */    udelay(10);    out8(I2C_BUS_DAT, 0x60);      /* SCLK = high  SDIO = high */    udelay(10);    out8(I2C_BUS_DIR, 0x00);      /* reset to input direction */}/*----------------------------------------------------------------------------*//* *  Read one byte from EEPROM *            ___     ___     ___     ___     ___     ___     ___     ___ *  SCLK  ___/   \___/   \___/   \___/   \___/   \___/   \___/   \___/   \ *        _________________________________________________________________ *  SDIO  >     ^       ^       ^       ^       ^       ^       ^       ^ *        :  :   :   :   :   :   :   :   :   :   :   :   :   :   :   :   : */static unsigned char eepReadByte (void){    register unsigned char buf = 0x00;    register int i;    out8(I2C_BUS_DIR, 0x40);    for (i = 0; i < 8; i++)    {	out8(I2C_BUS_DAT, 0x00);    /* SCLK = low   SDIO = high */	udelay(10);	out8(I2C_BUS_DAT, 0x40);    /* SCLK = high  SDIO = high */	udelay(15);	buf <<= 1;	buf = (in8(I2C_BUS_DAT) & 0x20) ? (buf | 0x01) : (buf & 0xFE);	out8(I2C_BUS_DAT, 0x00);    /* SCLK = low   SDIO = high */	udelay(10);    }    return(buf);}/*----------------------------------------------------------------------------*//* *  Write one byte to EEPROM *           ___     ___     ___     ___     ___     ___     ___     ___ *  SCLK  __/   \___/   \___/   \___/   \___/   \___/   \___/   \___/   \__ *         _______ _______ _______ _______ _______ _______ _______ ________ *  SDIO  X_______X_______X_______X_______X_______X_______X_______X________ *      :   7   :   6   :   5   :   4   :   3   :   2   :   1   :   0 */static void eepWriteByte (register unsigned char buf){    register int    i;    (buf & 0x80) ? out8(I2C_BUS_DAT, 0x20) : out8(I2C_BUS_DAT, 0x00);     /* SCLK = low   SDIO = data */    out8(I2C_BUS_DIR, 0x60);    for (i = 7; i >= 0; i--)    {	(buf & 0x80) ? out8(I2C_BUS_DAT, 0x20) : out8(I2C_BUS_DAT, 0x00); /* SCLK=low  SDIO=data */	udelay(10);	(buf & 0x80) ? out8(I2C_BUS_DAT, 0x60) : out8(I2C_BUS_DAT, 0x40); /* SCLK=high SDIO=data */	udelay(15);	(buf & 0x80) ? out8(I2C_BUS_DAT, 0x20) : out8(I2C_BUS_DAT, 0x00); /* SCLK=low  SDIO=data */	udelay(10);	buf <<= 1;    }}/*----------------------------------------------------------------------------*//* *  Read data acknowledge of EEPROM *             _______ *  SCLK  ____/       \___ *         _______________ *  SDIO  > *        :   :   ^   : */static int eepReadAck (void){    int retval;    out8(I2C_BUS_DIR, 0x40);    out8(I2C_BUS_DAT, 0x00);            /* SCLK = low   SDIO = high */    udelay(10);    out8(I2C_BUS_DAT, 0x40);            /* SCLK = high  SDIO = high */    udelay(10);    retval = (in8(I2C_BUS_DAT) & 0x20) ? ERROR : 0;    udelay(10);    out8(I2C_BUS_DAT, 0x00);            /* SCLK = low   SDIO = high */    udelay(10);    return(retval);}/*----------------------------------------------------------------------------*//* *  Write data acknowledge to EEPROM *             _______ *  SCLK  ____/       \___ * *  SDIO  >_______________ *        :   :       : */static void eepWriteAck (unsigned char ack){    ack ? out8(I2C_BUS_DAT, 0x20) : out8(I2C_BUS_DAT, 0x00); /* SCLK = low   SDIO = ack */    out8(I2C_BUS_DIR, 0x60);    udelay(10);    ack ? out8(I2C_BUS_DAT, 0x60) : out8(I2C_BUS_DAT, 0x40); /* SCLK = high  SDIO = ack */    udelay(15);    ack ? out8(I2C_BUS_DAT, 0x20) : out8(I2C_BUS_DAT, 0x00); /* SCLK = low   SDIO = ack */    udelay(10);}/*----------------------------------------------------------------------------*//* * Read bytes from EEPROM */int el_srom_load (addr, buf, cnt, device, block)unsigned char addr;unsigned char *buf;int cnt;unsigned char device;unsigned char block;{    register int i;    for (i=0;i<cnt;i++)    {	eepStart();	eepWriteByte(0xA0 | device | block);	if (eepReadAck() == ERROR)	{	   eepStop();	    return(ERROR);	}	eepWriteByte(addr++);	if (eepReadAck() == ERROR)	{	    eepStop();	    return(ERROR);	}	eepStart();	eepWriteByte(0xA1 | device | block);	if (eepReadAck() == ERROR)	{	    eepStop();	    return(ERROR);	}	*buf++ = eepReadByte();	eepWriteAck(1);	eepStop();	if ((addr == 0) && (i != (cnt-1)))    /* is it the same block ? */	{	    if (block == FIRST_BLOCK)		block = SECOND_BLOCK;	    else		return(ERROR);	}    }    return(cnt);}/*----------------------------------------------------------------------------*//* * * Write bytes to EEPROM * */int el_srom_store (addr, buf, cnt, device, block)unsigned char    addr, *buf, device, block;int        cnt;{    register int i, retVal;    for (i=0;i<cnt;i++)    {	retVal = ERROR;	do	{	    eepStart();	    eepWriteByte(0xA0 | device | block);	    if ((retVal = eepReadAck()) == ERROR)		eepStop();	} while (retVal == ERROR);	eepWriteByte(addr++);	if (eepReadAck() == ERROR)  return(ERROR);	if ((addr == 0) && (i != (cnt-1)))    /* is it the same block ? */	{	    if (block == FIRST_BLOCK)		block = SECOND_BLOCK;	    else	    return(ERROR);	}	eepWriteByte(*buf++);	if (eepReadAck() == ERROR)	    return(ERROR);	eepStop();    }    return(cnt);}/*----------------------------------------------------------------------------*//* * calculate checksum for ELTEC revision srom */unsigned long el_srom_checksum (ptr, size)register unsigned char *ptr;unsigned long size;{    u_long f, accu = 0;    u_int  i;    u_char byte;    for (; size; size--)    {	byte = *ptr++;	for (i = 8; i; i--)	{	    f =  ((byte & 1) ^ (accu & 1)) ? 0x84083001 : 0;	    accu >>= 1; accu ^= f;	    byte >>= 1;	}    }    return(accu);}/*----------------------------------------------------------------------------*/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久精品欧美日韩精品| 国产精品 欧美精品| 91蝌蚪porny成人天涯| 国产日韩欧美高清| 九九视频精品免费| 欧美大片免费久久精品三p| 午夜精品一区二区三区三上悠亚| 盗摄精品av一区二区三区| 久久这里只有精品首页| 美女网站在线免费欧美精品| 欧美日韩免费一区二区三区视频| 国产精品理论片在线观看| 国产精品亚洲一区二区三区在线| 欧美xxxx老人做受| 韩国在线一区二区| 久久久久久影视| 国产**成人网毛片九色| 久久久国产一区二区三区四区小说 | 欧美人与性动xxxx| 五月天精品一区二区三区| 91精品免费观看| 国产在线精品一区二区不卡了 | 亚洲色图一区二区| 欧美午夜在线观看| 免费精品视频在线| 国产亚洲成av人在线观看导航| 成人免费高清在线| 亚洲电影一级片| 7777精品伊人久久久大香线蕉 | 最新不卡av在线| 在线视频亚洲一区| 久久国产精品色| 中文字幕第一区综合| 在线一区二区三区四区五区| 香蕉av福利精品导航| wwww国产精品欧美| 91丨porny丨在线| 极品美女销魂一区二区三区 | 国产成人精品一区二| 亚洲免费观看高清完整版在线| 3d成人h动漫网站入口| 国产不卡在线一区| 日韩精品一级中文字幕精品视频免费观看 | 成人免费毛片片v| 日本亚洲三级在线| 成人欧美一区二区三区视频网页| 欧美日韩国产高清一区二区三区 | 亚洲欧洲制服丝袜| 欧美v国产在线一区二区三区| 一本色道久久综合亚洲91 | 麻豆成人免费电影| 亚洲男同性恋视频| 亚洲国产精品传媒在线观看| 3d动漫精品啪啪一区二区竹菊| 99久久伊人网影院| 久草中文综合在线| 日韩电影在线免费观看| 亚洲精品水蜜桃| 国产精品乱人伦| 欧美精品一区二区三区在线播放| 欧美在线色视频| 在线免费观看视频一区| 97久久精品人人澡人人爽| 国产jizzjizz一区二区| 精品一区二区三区欧美| 蜜桃av噜噜一区| 日韩电影网1区2区| 午夜久久电影网| 亚洲午夜羞羞片| 日韩美女视频19| 国产精品久久久久久久久果冻传媒 | 免费在线观看视频一区| 亚洲欧洲国产专区| 欧美激情中文不卡| 亚洲日本一区二区| 亚洲国产成人av好男人在线观看| 一区二区三区在线视频观看58| 亚洲美女在线一区| 五月综合激情日本mⅴ| 免费高清在线视频一区·| 国产综合色视频| 成人高清免费在线播放| 日本道精品一区二区三区| 欧美日韩在线播放三区四区| 91精品国产高清一区二区三区蜜臀| 日韩一区二区免费高清| 中文字幕+乱码+中文字幕一区| 18成人在线观看| 日本中文在线一区| 国产另类ts人妖一区二区| 色狠狠一区二区三区香蕉| 欧美精品久久天天躁| 中文字幕欧美激情| 午夜电影一区二区三区| 国产激情视频一区二区三区欧美 | 中文字幕精品一区二区精品绿巨人 | 亚洲一区在线视频| 韩国av一区二区三区| 日本韩国一区二区| 精品国产91乱码一区二区三区| 国产精品对白交换视频| 久久不见久久见免费视频7| 一本色道亚洲精品aⅴ| 欧美成人福利视频| 夜夜操天天操亚洲| 成人激情文学综合网| 精品久久久网站| 视频在线观看国产精品| 9人人澡人人爽人人精品| 精品国产乱码久久久久久浪潮| 亚洲一区二区三区三| 97精品久久久久中文字幕| 久久精品一区二区| 国产在线精品视频| 日韩精品一区二区三区视频| 午夜精品视频一区| 欧美偷拍一区二区| 樱花影视一区二区| 91在线视频播放地址| 国产欧美日韩不卡| 99热99精品| 中文字幕亚洲一区二区va在线| 久久国产精品第一页| 欧美一级视频精品观看| 麻豆精品视频在线观看视频| 91精品午夜视频| 午夜精品久久久久久久蜜桃app| 欧美在线|欧美| 日产精品久久久久久久性色| 91精品国产综合久久精品麻豆| 亚洲国产精品久久不卡毛片 | 欧美日韩成人综合天天影院| 亚洲va韩国va欧美va| 欧美丰满少妇xxxxx高潮对白| 日韩精品国产欧美| 日韩欧美一二三区| 成人午夜免费av| 亚洲欧美激情视频在线观看一区二区三区| 97se狠狠狠综合亚洲狠狠| 一区二区三区在线影院| 欧美精品电影在线播放| 激情另类小说区图片区视频区| 久久奇米777| 色婷婷狠狠综合| 麻豆精品国产传媒mv男同| 欧美经典三级视频一区二区三区| 91欧美一区二区| 青娱乐精品视频在线| 国产精品麻豆久久久| 在线播放国产精品二区一二区四区 | xfplay精品久久| 91国偷自产一区二区三区观看 | 欧美一区二区三区免费观看视频| 欧洲中文字幕精品| 日日噜噜夜夜狠狠视频欧美人| 日韩美女视频一区二区在线观看| av一区二区三区| 黑人巨大精品欧美黑白配亚洲| 成人免费在线视频观看| 日韩欧美国产成人一区二区| av电影一区二区| 国产麻豆9l精品三级站| 日日摸夜夜添夜夜添亚洲女人| 国产偷国产偷精品高清尤物| 欧美精品丝袜中出| 91蝌蚪porny| 在线观看www91| 懂色一区二区三区免费观看| 中文字幕免费不卡在线| 成人福利视频在线看| 蜜桃av一区二区| 婷婷丁香激情综合| 亚洲精品v日韩精品| 国产精品久久久久永久免费观看| 精品裸体舞一区二区三区| 777午夜精品免费视频| 成人app网站| 99久精品国产| caoporn国产一区二区| 成人免费毛片a| 不卡在线观看av| 91啦中文在线观看| 色婷婷狠狠综合| 欧美日韩午夜在线| 91精品国产欧美一区二区| 欧美绝品在线观看成人午夜影视| 色噜噜久久综合| 精品视频在线免费看| 欧美日韩的一区二区| 欧美一级二级在线观看| 2024国产精品视频| 久久久精品免费网站| 中文字幕在线不卡一区二区三区| 中文字幕一区二区三区精华液 | 精品久久国产字幕高潮| 精品粉嫩超白一线天av| 欧美国产1区2区| 亚洲一区日韩精品中文字幕| 首页国产欧美久久| 国产一区二区美女|