亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
69堂精品视频| 视频一区二区三区中文字幕| 天天av天天翘天天综合网| 精品一区二区三区不卡| 欧美亚洲国产bt| 国产精品成人午夜| 国产一区二区不卡老阿姨| 欧美日本在线一区| 1000精品久久久久久久久| 九九精品一区二区| 欧美精品在线一区二区三区| 亚洲女人的天堂| 成人精品视频一区| 精品日产卡一卡二卡麻豆| 性做久久久久久免费观看欧美| 91在线视频免费观看| 精品少妇一区二区三区在线播放 | 一本在线高清不卡dvd| 久久先锋影音av| 六月婷婷色综合| 欧美日韩一区视频| 亚洲一区二区在线视频| 波多野洁衣一区| 国产精品国产馆在线真实露脸| 国内精品免费**视频| 欧美一级午夜免费电影| 免费在线观看一区二区三区| 欧美日韩一二三| 亚洲va在线va天堂| 欧美三级乱人伦电影| 亚洲一卡二卡三卡四卡无卡久久| 色呦呦一区二区三区| 一区二区三区中文字幕| 日本国产一区二区| 亚洲国产精品久久久久秋霞影院 | 日韩欧美成人一区二区| 日韩av一区二区在线影视| 欧美吻胸吃奶大尺度电影| 亚洲一区二区免费视频| 欧美日韩精品一区二区三区| 亚洲第一在线综合网站| 欧美精品 国产精品| 婷婷综合在线观看| 欧美成人欧美edvon| 国产麻豆日韩欧美久久| 国产精品久久国产精麻豆99网站| 菠萝蜜视频在线观看一区| 亚洲欧洲制服丝袜| 精品视频免费在线| 另类小说视频一区二区| 国产亚洲欧美色| 91麻豆文化传媒在线观看| 性欧美疯狂xxxxbbbb| 日韩午夜激情免费电影| 国产白丝精品91爽爽久久| 亚洲美女偷拍久久| 欧美一区二区三区视频免费播放| 国产中文字幕精品| 亚洲柠檬福利资源导航| 日韩午夜激情av| 99久久精品国产观看| 三级欧美韩日大片在线看| 精品国产欧美一区二区| 91在线观看污| 琪琪久久久久日韩精品| 欧美激情一区二区三区全黄| 色丁香久综合在线久综合在线观看| 亚洲电影第三页| 国产农村妇女毛片精品久久麻豆| 在线观看av一区二区| 精品一区精品二区高清| 一区二区三区四区不卡在线 | 欧美美女一区二区三区| 国产精品自拍网站| 亚洲国产精品久久不卡毛片| 久久久久久久久蜜桃| 欧美四级电影网| 懂色av一区二区夜夜嗨| 香蕉av福利精品导航 | 欧美不卡视频一区| 成人18视频日本| 久久不见久久见免费视频7| 亚洲免费在线观看| 欧美精品一区二区三区四区| 欧美视频完全免费看| av一区二区三区在线| 精品夜夜嗨av一区二区三区| 亚洲亚洲精品在线观看| 国产拍揄自揄精品视频麻豆| 欧美一级免费观看| 在线观看三级视频欧美| 99久久99久久久精品齐齐| 国内精品国产成人国产三级粉色| 亚洲精品videosex极品| 国产精品麻豆久久久| 精品国产乱码久久久久久免费 | 青青草一区二区三区| 亚洲已满18点击进入久久| 国产精品麻豆欧美日韩ww| 久久久久久久久蜜桃| 久久综合视频网| 日韩一区二区三区四区 | 精品日韩一区二区| 678五月天丁香亚洲综合网| 91久久精品日日躁夜夜躁欧美| 成人美女视频在线观看| 成人丝袜高跟foot| 成人免费毛片片v| 高清在线成人网| 国产精品一区在线| 国产精品一区三区| 国产69精品久久久久777| 国产很黄免费观看久久| 高清在线成人网| 9久草视频在线视频精品| 成人国产视频在线观看| 99久久er热在这里只有精品15| 成人深夜视频在线观看| 91女厕偷拍女厕偷拍高清| 91美女在线观看| 欧美日韩另类一区| 91麻豆精品91久久久久同性| 日韩一区二区三区视频在线观看| 欧美一区日本一区韩国一区| 日韩一区二区视频| 久久伊人蜜桃av一区二区| 国产三级三级三级精品8ⅰ区| 欧美激情中文字幕| 亚洲色图都市小说| 性做久久久久久免费观看欧美| 日韩avvvv在线播放| 看片的网站亚洲| 成人性生交大片免费看中文| 91免费视频网址| 欧美日韩国产a| 精品少妇一区二区三区日产乱码| 国产女人aaa级久久久级| 中文字幕一区二区三区四区不卡| 亚洲一区二区高清| 黄一区二区三区| 色综合激情久久| 91精品国产入口| 中文字幕不卡在线播放| 一区二区欧美精品| 狠狠色狠狠色综合日日91app| 不卡欧美aaaaa| 日韩一区二区精品葵司在线| 国产精品色在线观看| 亚洲电影第三页| 国产超碰在线一区| 欧美久久久影院| 欧美激情一区二区三区全黄| 天天综合网 天天综合色| 国产精品中文欧美| 欧美色精品在线视频| 日本一区二区三区在线不卡| 首页综合国产亚洲丝袜| 成人黄色国产精品网站大全在线免费观看| 欧美日韩色综合| 国产精品视频看| 久久精品国产亚洲高清剧情介绍| 99re这里都是精品| 久久嫩草精品久久久精品一| 午夜国产不卡在线观看视频| 成人av网在线| 久久青草国产手机看片福利盒子| 樱桃视频在线观看一区| 国产成人精品免费一区二区| 777午夜精品视频在线播放| 自拍偷自拍亚洲精品播放| 久久99精品国产.久久久久久 | 精品久久久久久久人人人人传媒| 亚洲品质自拍视频网站| 国产精品996| 欧美一级高清大全免费观看| 亚洲已满18点击进入久久| 成人a免费在线看| 2017欧美狠狠色| 日本特黄久久久高潮| 欧美午夜一区二区三区| 18涩涩午夜精品.www| 国产成人av电影在线观看| 欧美一级淫片007| 水蜜桃久久夜色精品一区的特点 | 久久久国产一区二区三区四区小说| 性做久久久久久免费观看| 一本久道中文字幕精品亚洲嫩| 国产精品丝袜黑色高跟| 成人一区在线看| 国产欧美日本一区视频| 国产成人精品影视| 国产欧美在线观看一区| 国产一区二区中文字幕| 欧美大尺度电影在线| 日韩中文字幕亚洲一区二区va在线 | 亚洲视频狠狠干| 99久久精品国产精品久久| 亚洲欧美一区二区不卡| 91亚洲精品乱码久久久久久蜜桃| 国产精品视频一二三|