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

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

?? mpc107_i2c.c

?? gumstiz u-boot loader in linux
?? 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 *//* includes */#include <common.h>#include "srom.h"/* locals */static unsigned long mpc107_eumb_addr = 0;/*----------------------------------------------------------------------------*//* * 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);}/*----------------------------------------------------------------------------*/static int mpc107_i2c_wait ( unsigned long timeout ){    unsigned long x;    while (((x = in32r(MPC107_I2CSR)) & 0x82) != 0x82)    {	if (!timeout--)	    return -1;    }    if (x & 0x10)    {	return -1;    }    out32r(MPC107_I2CSR, 0);    return 0;}/*----------------------------------------------------------------------------*/static int mpc107_i2c_wait_idle ( unsigned long timeout ){    while (in32r(MPC107_I2CSR) & 0x20)    {	if (!timeout--)	    return -1;    }    return 0;}/*----------------------------------------------------------------------------*/int mpc107_i2c_read_byte (    unsigned char device,    unsigned char block,    unsigned char offset ){    unsigned long timeout = MPC107_I2C_TIMEOUT;    int data;    if (!mpc107_eumb_addr)	return -6;    mpc107_i2c_wait_idle (timeout);    /* Start with MEN */    out32r(MPC107_I2CCR, 0x80);    /* Start as master */    out32r(MPC107_I2CCR, 0xB0);    out32r(MPC107_I2CDR, (0xA0 | device | block));    if (mpc107_i2c_wait(timeout) < 0)    {	printf("mpc107_i2c_read Error 1\n");	return -2;    }    if (in32r(MPC107_I2CSR)&0x1)    {	/* Generate STOP condition; device busy or not existing */	out32r(MPC107_I2CCR, 0x80);	return -1;    }    /* Data address */    out32r(MPC107_I2CDR, offset);    if (mpc107_i2c_wait(timeout) < 0)    {	printf("mpc107_i2c_read Error 2\n");	return -3;    }    /* Switch to read - restart */    out32r(MPC107_I2CCR, 0xB4);    out32r(MPC107_I2CDR, (0xA1 | device | block));    if (mpc107_i2c_wait(timeout) < 0)    {	printf("mpc107_i2c_read Error 3\n");	return -4;    }    out32r(MPC107_I2CCR, 0xA8); /* no ACK */    in32r(MPC107_I2CDR);    if (mpc107_i2c_wait(timeout) < 0)    {	printf("mpc107_i2c_read Error 4\n");	return -5;    }    /* Generate STOP condition */    out32r(MPC107_I2CCR, 0x88);    /* read */    data = in32r(MPC107_I2CDR);    return (data);}/*----------------------------------------------------------------------------*/int mpc107_i2c_write_byte (    unsigned char device,    unsigned char block,    unsigned char offset,    unsigned char val ){    unsigned long timeout = MPC107_I2C_TIMEOUT;    if (!mpc107_eumb_addr)	return -6;    mpc107_i2c_wait_idle(timeout);    /* Start with MEN */    out32r(MPC107_I2CCR, 0x80);    /* Start as master */    out32r(MPC107_I2CCR, 0xB0);    out32r(MPC107_I2CDR, (0xA0 | device | block));    if (mpc107_i2c_wait(timeout) < 0)    {	printf("mpc107_i2c_write Error 1\n");	return -1;    }    /* Data address */    out32r(MPC107_I2CDR, offset);    if (mpc107_i2c_wait(timeout) < 0)    {	printf("mpc107_i2c_write Error 2\n");	return -1;    }    /* Write */    out32r(MPC107_I2CDR, val);    if (mpc107_i2c_wait(timeout) < 0)    {	printf("mpc107_i2c_write Error 3\n");	return -1;    }    /* Generate Stop Condition */    out32r(MPC107_I2CCR, 0x80);    /* Return ACK or no ACK */    return (in32r(MPC107_I2CSR) & 0x01);}/*----------------------------------------------------------------------------*/int mpc107_srom_load (    unsigned char addr,    unsigned char *pBuf,    int          cnt,    unsigned char device,    unsigned char block ){    register int i;    int val;    int timeout;    for (i = 0; i < cnt; i++)    {	timeout=100;	do	{	    val = mpc107_i2c_read_byte (device, block, addr);	    if (val < -1)	    {	    printf("i2c_read_error %d at dev %x block %x addr %x\n",		   val, device, block, addr);	    return -1;	    }	    else if (timeout==0)	    {		printf ("i2c_read_error: timeout at dev %x block %x addr %x\n",			device, block, addr);		return -1;	    }	    timeout--;	} while (val == -1); /* if no ack: try again! */	*pBuf++ = (unsigned char)val;	addr++;	if ((addr == 0) && (i != cnt-1))    /* is it the same block ? */	{	    if (block == FIRST_BLOCK)		block = SECOND_BLOCK;	    else	    {		printf ("ic2_read_error: read beyond 2. block !\n");		return -1;	    }	}    }    udelay(100000);    return (cnt);}/*----------------------------------------------------------------------------*/int mpc107_srom_store (    unsigned char addr,    unsigned char *pBuf,    int          cnt,    unsigned char device,    unsigned char block ){    register int i;    for (i = 0; i < cnt; i++)    {	while (mpc107_i2c_write_byte (device,block,addr,*pBuf) == 1);	addr++;	pBuf++;	if ((addr == 0) && (i != cnt-1))     /* is it the same block ? */	{	    if (block == FIRST_BLOCK)		block = SECOND_BLOCK;	    else	    {		printf ("ic2_write_error: write beyond 2. block !\n");		return -1;	    }	}    }    udelay(100000);    return(cnt);}/*----------------------------------------------------------------------------*/int mpc107_i2c_init ( unsigned long eumb_addr, unsigned long divider ){    unsigned long x;    if (eumb_addr)	mpc107_eumb_addr = eumb_addr;    else	return -1;    /* Set I2C clock */    x = in32r(MPC107_I2CFDR) & 0xffffff00;    out32r(MPC107_I2CFDR, (x | divider));    /* Clear arbitration */    out32r(MPC107_I2CSR, 0);    return mpc107_eumb_addr;}/*----------------------------------------------------------------------------*/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久精品一区四区| 国产风韵犹存在线视精品| 麻豆极品一区二区三区| 岛国一区二区在线观看| 欧美老女人第四色| 国产精品麻豆网站| 激情综合五月婷婷| 91精品免费观看| 亚洲三级在线播放| 丁香网亚洲国际| 欧美成人性战久久| 日韩精品一区第一页| 91蝌蚪porny| 国产精品日韩成人| 国产成人精品免费看| 日韩欧美中文字幕公布| 性欧美大战久久久久久久久| 91在线视频免费观看| 中文字幕免费不卡| 国产伦精品一区二区三区免费迷 | 夜夜嗨av一区二区三区中文字幕| 久久精工是国产品牌吗| 欧美日韩国产大片| 亚洲午夜激情av| 91老师国产黑色丝袜在线| 国产精品视频第一区| 国产成人精品影院| 国产丝袜美腿一区二区三区| 国产一区二区精品久久91| 欧美第一区第二区| 卡一卡二国产精品| 欧美r级电影在线观看| 六月婷婷色综合| 91精品国产91久久久久久最新毛片| 亚洲天堂av一区| 97久久精品人人做人人爽50路| 国产精品乱码一区二区三区软件| 国产精品一区专区| 国产欧美日韩亚州综合| www.av亚洲| 中文字幕日韩av资源站| 色婷婷国产精品久久包臀| 一区二区三区四区在线播放 | 亚洲理论在线观看| 色婷婷综合久久久久中文一区二区| 亚洲视频小说图片| 在线精品视频免费播放| 午夜欧美电影在线观看| 欧美一区二区三区视频在线| 日韩精品一级二级| 久久人人97超碰com| 国产69精品久久久久毛片| 亚洲欧洲精品成人久久奇米网| av亚洲精华国产精华精华| 亚洲老妇xxxxxx| 欧美剧情片在线观看| 国产又黄又大久久| 亚洲三级电影网站| 这里只有精品电影| 国产.欧美.日韩| 亚洲乱码中文字幕| 欧美成人国产一区二区| 99精品在线观看视频| 亚洲成国产人片在线观看| 26uuu成人网一区二区三区| 高清成人在线观看| 亚洲午夜久久久久久久久电影院| 91精品久久久久久久99蜜桃| 福利一区福利二区| 石原莉奈在线亚洲三区| 中文字幕成人网| 欧美日韩在线亚洲一区蜜芽| 国产美女一区二区三区| 一区二区三区不卡在线观看 | 欧美日本一道本| 国产精品一区二区果冻传媒| 亚洲精选免费视频| 久久久不卡网国产精品二区| 欧美日韩三级视频| 成人av电影在线| 美女视频网站久久| 夜色激情一区二区| 国产精品视频一二| 日韩精品影音先锋| 欧美亚洲高清一区二区三区不卡| 久久se精品一区二区| 亚洲精品伦理在线| 欧美国产激情一区二区三区蜜月| 这里只有精品电影| 欧美性猛交xxxx黑人交| 成人av在线电影| 免播放器亚洲一区| 亚洲大片在线观看| 亚洲色图欧美激情| 成人欧美一区二区三区视频网页 | 懂色av中文一区二区三区| 久久国产生活片100| 亚洲国产你懂的| 日韩理论电影院| 国产精品国产三级国产三级人妇| 日韩女同互慰一区二区| 欧美高清你懂得| 欧美日韩在线三级| 色婷婷综合中文久久一本| 91亚洲国产成人精品一区二区三| 国产成人啪免费观看软件| 国精产品一区一区三区mba视频| 日本不卡高清视频| 日韩精品久久久久久| 午夜精品视频一区| 亚洲成人精品在线观看| 一区二区三区av电影| 亚洲精品综合在线| 亚洲美女一区二区三区| 亚洲欧美日韩国产综合在线| 亚洲人快播电影网| 亚洲精品中文字幕乱码三区 | 中文字幕一区二区三区蜜月| 中文字幕第一页久久| 亚洲天堂免费看| 亚洲视频免费在线| 亚洲最新视频在线观看| 亚洲伊人色欲综合网| 亚洲高清不卡在线| 日韩专区中文字幕一区二区| 日韩高清电影一区| 精品亚洲porn| 床上的激情91.| 一本久久精品一区二区| 欧美自拍丝袜亚洲| 日韩欧美久久久| 国产欧美日韩麻豆91| 亚洲色图欧洲色图| 天天操天天色综合| 国产综合成人久久大片91| 懂色av噜噜一区二区三区av| 91老师片黄在线观看| 正在播放一区二区| 亚洲国产精品精华液ab| 亚洲码国产岛国毛片在线| 天堂av在线一区| 国产精品99久久不卡二区| 色一区在线观看| 91精品国产手机| 中文一区二区在线观看| 亚洲精品欧美综合四区| 久久国产精品无码网站| 成人午夜在线视频| 欧美天堂一区二区三区| 26uuu国产日韩综合| 一区二区三区四区视频精品免费| 五月婷婷综合在线| 国产成人精品免费在线| 欧美军同video69gay| 中日韩免费视频中文字幕| 亚洲国产精品麻豆| 国产精品一区二区你懂的| 欧美性猛交一区二区三区精品| 精品国产伦一区二区三区观看体验 | 国内精品在线播放| 欧美日韩一区在线| 久久噜噜亚洲综合| 亚洲地区一二三色| 成人成人成人在线视频| 欧美一区午夜视频在线观看| 日韩码欧中文字| 韩国女主播一区| 欧美日韩视频不卡| 亚洲免费观看高清完整| 国产精品白丝av| 日韩一级二级三级| 亚洲午夜久久久| 94-欧美-setu| 国产欧美一区二区三区鸳鸯浴| 麻豆精品视频在线观看| 在线观看亚洲精品视频| 国产精品免费视频网站| 国内精品写真在线观看| 日韩一级片在线播放| 亚洲不卡一区二区三区| 色国产综合视频| 亚洲国产精品成人综合| 国产一区二区电影| 精品国产欧美一区二区| 婷婷丁香久久五月婷婷| 欧美艳星brazzers| 亚洲精品第1页| 99精品国产热久久91蜜凸| 国产欧美精品一区二区色综合| 久久精品久久精品| 91精品国产福利| 天天综合日日夜夜精品| 欧美日韩国产高清一区| 亚洲www啪成人一区二区麻豆| 欧洲精品一区二区| 亚洲一级片在线观看| 欧美日韩免费电影| 亚洲bt欧美bt精品777| 欧美日韩国产天堂| 亚洲电影第三页|