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

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

?? el_srom.c

?? ppcboot2.0 華恒光盤里帶的BOOTLOADER
?? 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);}/*----------------------------------------------------------------------------*/

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲电影视频在线| 久久66热偷产精品| 欧美一区二区三区四区久久 | 99久久综合狠狠综合久久| 欧美韩国日本综合| 91黄色小视频| 激情综合色播激情啊| 亚洲激情网站免费观看| 精品欧美一区二区在线观看| 91一区一区三区| 久久99精品视频| 亚洲综合色噜噜狠狠| 国产亚洲欧洲一区高清在线观看| 色婷婷av一区二区三区大白胸 | 在线视频亚洲一区| 国产精品一区二区三区乱码| 亚洲香蕉伊在人在线观| 亚洲国产电影在线观看| 91精品国产色综合久久ai换脸| 波波电影院一区二区三区| 久久精品99国产精品| 亚洲一区二区三区中文字幕在线| 欧美激情一二三区| 久久久久国产精品麻豆| 欧美一区二区性放荡片| 日本高清不卡视频| jizz一区二区| 国产福利91精品一区二区三区| 日本一不卡视频| 日韩电影一二三区| 亚洲一区精品在线| 伊人色综合久久天天人手人婷| 国产欧美日韩视频在线观看| wwwwww.欧美系列| 精品国产精品一区二区夜夜嗨| 91精品国产美女浴室洗澡无遮挡| 欧美色综合网站| 精品婷婷伊人一区三区三| 91国产免费看| 欧美日韩亚洲另类| 欧美另类一区二区三区| 欧美精品777| 日韩精品中文字幕在线一区| 日韩精品中文字幕一区二区三区| 欧美va亚洲va国产综合| 精品久久久久久亚洲综合网 | 国产精品天美传媒沈樵| 国产精品乱子久久久久| 综合色中文字幕| 亚洲影院在线观看| 日本怡春院一区二区| 激情综合色综合久久| 国产成人综合视频| 91影视在线播放| 欧美精品第1页| 亚洲精品一区在线观看| 国产精品你懂的在线| 亚洲图片欧美综合| 毛片av中文字幕一区二区| 国产精品66部| 欧美在线视频全部完| 欧美大片国产精品| 中文字幕在线一区| 亚洲v精品v日韩v欧美v专区| 国模少妇一区二区三区| 91丨porny丨户外露出| 制服.丝袜.亚洲.另类.中文| 久久精品人人做| 亚洲成av人综合在线观看| 国产精品一区一区三区| 在线免费观看一区| 久久久久97国产精华液好用吗| 亚洲人妖av一区二区| 九九九久久久精品| 欧美艳星brazzers| 日本一区二区不卡视频| 亚洲综合男人的天堂| 国产suv精品一区二区三区| 欧美精品在线观看播放| 国产精品欧美经典| 国内精品视频一区二区三区八戒| 色婷婷久久久久swag精品| 国产欧美一二三区| 韩国一区二区视频| 欧美一区二区三区免费观看视频| 亚洲精品水蜜桃| 成人aaaa免费全部观看| 久久久精品黄色| 精品无人码麻豆乱码1区2区| 26uuu国产电影一区二区| 无码av中文一区二区三区桃花岛| 91丨porny丨户外露出| 国产精品福利av | 亚洲国产岛国毛片在线| 韩国三级在线一区| 久久综合九色欧美综合狠狠| 免费精品视频在线| 欧美一区二区三区不卡| 日韩电影一区二区三区四区| 欧美日韩久久久一区| 午夜国产精品一区| 欧美一区二区三区四区久久| 美腿丝袜在线亚洲一区| 日韩欧美中文字幕一区| 乱一区二区av| 久久久久国产精品麻豆ai换脸| 国内久久精品视频| 亚洲国产精品黑人久久久| 不卡一区二区三区四区| 亚洲欧洲美洲综合色网| 91在线国产观看| 午夜久久久久久电影| 欧美一区欧美二区| 国产一二精品视频| 国产精品传媒入口麻豆| 91麻豆免费视频| 日韩精品1区2区3区| xfplay精品久久| proumb性欧美在线观看| 亚洲国产精品一区二区久久恐怖片| 欧美日韩免费一区二区三区视频 | 国产激情视频一区二区三区欧美| 国产精品久久久久aaaa| 91高清视频免费看| 精品一区二区三区的国产在线播放| 久久久久久久久久美女| 99re这里都是精品| 亚洲国产一区二区a毛片| 久久综合色播五月| 国产精品久久久久一区| 这里只有精品99re| 成人91在线观看| 日本成人在线视频网站| 国产精品看片你懂得| 欧美福利视频一区| 97久久精品人人澡人人爽| 日韩二区三区四区| 国产精品国产三级国产普通话蜜臀 | 国产一区999| 午夜视频一区二区三区| 国产精品久久久久久久久图文区| 欧美日韩精品欧美日韩精品一 | 欧美videossexotv100| 欧美在线啊v一区| 国产·精品毛片| 国产乱妇无码大片在线观看| 首页国产丝袜综合| 曰韩精品一区二区| 中文字幕一区二区日韩精品绯色| 欧美人xxxx| 欧美日本高清视频在线观看| 日本韩国精品在线| 91视频www| 91玉足脚交白嫩脚丫在线播放| 国产精品夜夜爽| 精品一区二区日韩| 国产美女一区二区三区| 久久99精品国产.久久久久久| 亚洲成人激情社区| 亚洲国产美国国产综合一区二区| 综合分类小说区另类春色亚洲小说欧美| 久久久久成人黄色影片| 国产调教视频一区| 国产欧美日韩在线| 26uuuu精品一区二区| 欧美性生交片4| 欧美性感一类影片在线播放| 欧美无乱码久久久免费午夜一区| 成人妖精视频yjsp地址| 成人激情视频网站| 91论坛在线播放| 色婷婷久久久久swag精品| 久久精品一区二区三区四区| 欧美在线一二三四区| 日韩午夜激情av| 久久久亚洲精品一区二区三区| 欧美一区二区三区免费视频 | 亚洲视频你懂的| 亚洲精品亚洲人成人网| 三级一区在线视频先锋| 捆绑调教美女网站视频一区| 九九久久精品视频| av在线一区二区| 69成人精品免费视频| 日韩亚洲欧美在线| 国产精品护士白丝一区av| 午夜私人影院久久久久| 激情五月播播久久久精品| 99视频在线精品| 欧美丰满少妇xxxxx高潮对白| 久久综合视频网| 亚洲精品免费在线播放| 久久综合综合久久综合| www.亚洲色图| 欧美一级一级性生活免费录像| 亚洲国产岛国毛片在线| 日韩国产在线观看| 波多野结衣欧美| 精品久久99ma| 亚洲va中文字幕|