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

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

?? sysi2ckahlua.c

?? VxWorks下 Mv2100的BSP源碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
    status = OK;    /*     * wait until the I2C bus is free.  if it doesn't become free     * within a *reasonable* amount of time, exit with an error.     */    for (timeOutCount = 10; timeOutCount; timeOutCount--)        {        i2cCycleKahluaDelay(1);        statusReg = i2cPciIoctl(1, (UINT32)KAHLUA_I2C_STATUS_REG, 0, 0);        SYNC;        if (!(statusReg & KAHLUA_I2C_STATUS_REG_MBB))            {	    status = OK;            break;            }        /* 	 * re-initialize the I2C if the BUS BUSY does not clear	 * after trying half the *reasonable* amount of reads of the 	 * status register.	 */	if (!(timeOutCount % 5))	    status = i2cDrvInit(I2C_DRV_TYPE);        }    if (!timeOutCount)	status = ERROR;    return (status);    }/******************************************************************************* * i2cCycleKahluaDelay - perform interface's I2C delay routine * *	This function's purpose is to perform whatever delay *       required for the device.* * RETURNS:*       none.*/void i2cCycleKahluaDelay    (    int mSeconds	/* time to delay in milliseconds */    )    {    sysKahluaMsDelay(mSeconds);    }/******************************************************************************** sysKahluaMsDelay - delay for the specified amount of time (MS)** This routine will delay for the specified amount of time by counting* decrementer ticks.** This routine is not dependent on a particular rollover value for* the decrementer, it should work no matter what the rollover* value is.** A small amount of count may be lost at the rollover point resulting in* the sysKahluaMsDelay() causing a slightly longer delay than requested.** This routine will produce incorrect results if the delay time requested* requires a count larger than 0xffffffff to hold the decrementer* elapsed tick count.  For a System Bus Speed of 67 MHZ this amounts to* about 258 seconds.** RETURNS: N/A*/void sysKahluaMsDelay    (    UINT        delay            /* length of time in MS to delay */    )    {    register UINT32 oldval;      /* decrementer value */    register UINT32 newval;      /* decrementer value */    register UINT32 totalDelta;  /* Dec. delta for entire delay period */    register UINT32 decElapsed;  /* cumulative decrementer ticks */    /* Calculate delta of decrementer ticks for desired elapsed time. */    totalDelta = ((DEFAULT_BUS_CLOCK / 4) / 1000) * delay;    /*     * Now keep grabbing decrementer value and incrementing "decElapsed" until     * we hit the desired delay value.  Compensate for the fact that we may     * read the decrementer at 0xffffffff before the interrupt service     * routine has a chance to set in the rollover value.     */    decElapsed = 0;    oldval = sysKahluaGetDec();    while (decElapsed < totalDelta)        {        newval = sysKahluaGetDec();        if ( DELTA(oldval,newval) < 1000 )            decElapsed += DELTA(oldval,newval);  /* no rollover */        else            if (newval > oldval)                decElapsed += abs((int)oldval);  /* rollover */        oldval = newval;        }  }/******************************************************************************** sysKahluaGetDec - read from the Decrementer register SPR22.** This routine will read the contents the decrementer (SPR22)** RETURNS: value of SPR22 (in r3)*/LOCAL UINT32 sysKahluaGetDec(void)    {    return vxDecGet();    }/** DEBUG FUNCTIONS **/#ifdef DEBUG_I2C/*  * SDRAM SPD Data for mv2100 SDRAM spec'd parts. 32mb_no_eccaddress data0000000 8008 040c 0801 4000 01a0 6000 8010 00010000010 8f04 0601 0100 0e0d 7000 001e 141e 3c080000020 2510 2510 0000 0000 0000 0000 0000 00000000030 0000 0000 0000 0000 0000 0000 0000 029932mb_eccaddress data0000000 8008 040c 0801 4800 01a0 6002 8010 10010000010 8f04 0601 0100 0e0d 7000 001e 141e 3c080000020 2510 2510 0000 0000 0000 0000 0000 00000000030 0000 0000 0000 0000 0000 0000 0000 02b364mb_no_eccaddress data0000000 8008 040c 0901 4000 01a0 6000 8008 00010000010 8f04 0601 0100 0e0d 7000 001e 141e 3c100000020 2510 2510 0000 0000 0000 0000 0000 00000000030 0000 0000 0000 0000 0000 0000 0000 029a64mb_eccaddress data0000000 8008 040c 0901 4800 01a0 6002 8008 08010000010 8f04 0601 0100 0e0d 7000 001e 141e 3c100000020 2510 2510 0000 0000 0000 0000 0000 00000000030 0000 0000 0000 0000 0000 0000 0000 02ac*//******************************************************************************** i2cProgramSPD - Demonstration function to program an SPD EEPROM.** This routine programs an SPD EEPROM with the contents of* defaultSPD.  This program is enabled by defining DEBUG_I2C.** RETURNS: OK/ERROR*/int i2cProgramSPD    (    int deviceAddress,	/* address of I2C device - 0xa0, 0xa2 */    int size,		/* Size of the bank: 32 or 64Mg bytes */    int ecc		/* 1 = ECC capable parts */    )    {    int index, checksum = 0;    char verifyData[REAL_SPD_SIZE];    for (index=0;index<REAL_SPD_SIZE;index++)        defaultSPD[index] = 0;    defaultSPD[SPD_NUM_BYTES_INDEX]         = 0x80;    defaultSPD[SPD_DEVICE_SIZE_INDEX]       = 0x08;    defaultSPD[SPD_MEMORY_TYPE_INDEX]       = 0x04;    defaultSPD[SPD_ROW_ADDR_INDEX]          = 0x0C;    if (size == 32)        {        defaultSPD[SPD_COL_ADDR_INDEX]      = 0x08;        defaultSPD[SPD_DEV_WIDTH_INDEX]     = 0x10;        if (ecc)            defaultSPD[SPD_ECC_WIDTH_INDEX] = 0x10;        else            defaultSPD[SPD_ECC_WIDTH_INDEX] = 0x0;        defaultSPD[31]                      = 0x08; /* density */        if (ecc)            defaultSPD[SPD_CHECKSUM_INDEX]  = 0xb3;        else            defaultSPD[SPD_CHECKSUM_INDEX]  = 0x99;        }    else        {        defaultSPD[SPD_COL_ADDR_INDEX]      = 0x09;        defaultSPD[SPD_DEV_WIDTH_INDEX]     = 0x08;        if (ecc)            defaultSPD[SPD_ECC_WIDTH_INDEX] = 0x08;        else            defaultSPD[SPD_ECC_WIDTH_INDEX] = 0x0;        defaultSPD[31]                      = 0x10; /* density */        if (ecc)            defaultSPD[SPD_CHECKSUM_INDEX]  = 0xac;        else            defaultSPD[SPD_CHECKSUM_INDEX]  = 0x9a;        }    defaultSPD[SPD_NUM_DIMMBANKS_INDEX]     = 0x01;    if (ecc)        defaultSPD[6]                       = 0x48; /* data width */    else        defaultSPD[6]                       = 0x40; /* data width */    defaultSPD[7]                           = 0x00; /* data width continued */    defaultSPD[8]                           = 0x01; /* voltage inerface */    defaultSPD[SPD_TCYC_INDEX]              = 0xa0;    defaultSPD[10]                          = 0x60; /* highest CAS latency */    if (ecc)        defaultSPD[SPD_DIMM_TYPE_INDEX]     = 0x02;    else        defaultSPD[SPD_DIMM_TYPE_INDEX]     = 0x0;    defaultSPD[SPD_REFRESH_RATE_INDEX]      = 0x80;    defaultSPD[15]                          = 0x01; /* min back-to-back */    defaultSPD[16]                          = 0x8F; /* burst lengths */    defaultSPD[SPD_DEV_BANKS_INDEX]         = 0x04;    defaultSPD[SPD_CL_INDEX]                = 0x06;    defaultSPD[SPD_CS_LATENCY_INDEX]        = 0x01;    defaultSPD[SPD_WE_LATENCY_INDEX]        = 0x01;    defaultSPD[21]                          = 0x00; /* module attributes */    defaultSPD[22]                          = 0x0E; /* device attributes */    defaultSPD[SPD_TCYC_RCL_INDEX]          = 0x0D;    defaultSPD[24]                          = 0x70; /* access frm clk @ clkx1 */    defaultSPD[25]                          = 0x00; /* min cycle time */    defaultSPD[26]                          = 0x00; /* max frm clk @ clkx2 */    defaultSPD[SPD_TRP_INDEX]               = 0x1E;    defaultSPD[28]                          = 0x14; /* row act 2 row act(Trrd)*/    defaultSPD[SPD_TRCD_INDEX]              = 0x1E;    defaultSPD[SPD_TRAS_INDEX]              = 0x3C;    defaultSPD[32]                          = 0x25; /* superset information */    defaultSPD[33]                          = 0x10;    defaultSPD[34]                          = 0x25;    defaultSPD[35]                          = 0x10;    defaultSPD[62]                          = 0x02; /* revision code */    i2cWrite (deviceAddress, 0, REAL_SPD_SIZE, defaultSPD);    if (i2cRead (deviceAddress, 0, REAL_SPD_SIZE, verifyData) == OK)        {        for (index = 0; index < SPD_CHECKSUM_INDEX; index++)            checksum += verifyData[index];        checksum %= 256;         if (checksum != verifyData[SPD_CHECKSUM_INDEX])             {            logMsg("Bad Checksum calculated: %x found: %x\n",                    checksum, verifyData[SPD_CHECKSUM_INDEX],0,0,0,0);             }        for (index=0;index<REAL_SPD_SIZE;index++)            {            if (verifyData[index] != defaultSPD[index])                {                logMsg("SPD programming Failed: %d: %x != %x\r\n",                        index, verifyData[index], defaultSPD[index],0,0,0);                return (ERROR);                }            }        }    return (OK);    }/******************************************************************************** i2cShow - Dump i2c device.** This routine prints the number "size" bytes of EEPROM addresses at* "deviceAddress".  Valid addresses for the mv2100 are 0xa0 and 0xa2* for SPD SDRAM banks and VPD_BRD_EEPROM_ADRS for the board's VPD* EEPROM. ** RETURNS: OK/ERROR*/int i2cShow     (    int deviceAddress,	/* address of I2C device - 0xa0, 0xa2 */    int size		/* number of bytes to read/display */    )    {    int i;    char i2cBuff[REAL_SPD_SIZE] = {0};    if (size > REAL_SPD_SIZE)        return (ERROR);    if (i2cRead (deviceAddress, 0, size, i2cBuff) == ERROR)        {        logMsg("Driver returned error\n",0,0,0,0,0,0);        return (ERROR);        }    for (i=0;i<size;i++)        printf("%x ", i2cBuff[i]);    printf("\r\n");    return (0);    }/******************************************************************************** i2cFill - block fill a i2c device.** This routine writes the number "size" bytes of EEPROM addresses at* "deviceAddress" with the value "value".  Valid addresses for the mv2100 * are 0xa0 and 0xa2 for SPD SDRAM banks and VPD_BRD_EEPROM_ADRS for the * board's VPD EEPROM.  This will wipe out the existing data at the address. ** RETURNS: OK/ERROR*/int i2cFill    (    int deviceAddress,	/* address of I2C device - 0xa0, 0xa2 */    int size,		/* number of bytes to write */    int value		/* value to fill */    )    {    int ii;    char ptr[1];    if (size > REAL_SPD_SIZE)        return (ERROR);    for (ii=0;ii<size;ii++)        {        ptr[0] = value;        i2cWrite (deviceAddress, ii, 1, ptr);        }    i2cShow (deviceAddress, size);    return (OK);    }#endif /* DEBUG_I2C */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本电影欧美片| 欧美久久婷婷综合色| 欧美日韩1区2区| 欧美激情一区在线观看| 日本最新不卡在线| 在线视频一区二区三| 国产欧美日韩激情| 久久97超碰色| 欧美日韩国产高清一区| 亚洲精品国产一区二区三区四区在线| 国产一区二区久久| 精品国产制服丝袜高跟| 性久久久久久久久| 欧美性xxxxxxxx| 亚洲美女免费在线| 波多野结衣欧美| 欧美激情一区二区三区不卡 | 国产精品嫩草影院com| 三级一区在线视频先锋| 欧美性生活大片视频| 亚洲美女屁股眼交| 日本道精品一区二区三区| 日本一二三不卡| 国产精品18久久久久久久久 | 欧美影院一区二区| 亚洲黄一区二区三区| 色综合久久久久综合体| 国产精品久久777777| 91在线观看地址| 自拍偷拍欧美精品| 99视频一区二区| 自拍偷自拍亚洲精品播放| 成人h动漫精品一区二| 国产精品国模大尺度视频| 成人av电影免费观看| 日韩一区在线看| 色综合婷婷久久| 亚洲成人资源在线| 欧美一区二区精品在线| 国内精品视频一区二区三区八戒| 精品国产乱码久久久久久久久 | 美国十次综合导航| 欧美成人a视频| 国产精品亚洲а∨天堂免在线| 国产午夜精品在线观看| 99久久99久久免费精品蜜臀| 一区二区三区在线影院| 欧美日韩国产一区| 精品一区二区三区免费毛片爱 | 日本韩国精品在线| 丝袜美腿亚洲一区二区图片| 日韩美女主播在线视频一区二区三区| 国产在线国偷精品产拍免费yy| 久久久精品2019中文字幕之3| 国产成人免费高清| 一区二区三区欧美视频| 欧美一区二区在线播放| 国产精品一二三区在线| 亚洲乱码日产精品bd| 欧美性色黄大片| 国产一区二区三区黄视频| 一色屋精品亚洲香蕉网站| 欧美日韩免费观看一区三区| 韩国av一区二区三区| 亚洲天堂免费看| 欧美一区二区三区婷婷月色| 大胆欧美人体老妇| 日韩福利电影在线| 国产精品网站导航| 日韩欧美国产综合| 99久久国产综合色|国产精品| 免费高清在线视频一区·| 中文字幕中文在线不卡住| 日韩一区二区三区四区五区六区| 粉嫩av一区二区三区| 日韩精品1区2区3区| 亚洲人精品午夜| www国产成人| 欧美日韩一区二区在线视频| 国产91高潮流白浆在线麻豆| 日韩电影免费一区| 一区二区三区在线观看欧美| 国产日韩成人精品| 日韩欧美久久一区| 欧美日韩精品免费| 91原创在线视频| 国产suv精品一区二区三区| 日产欧产美韩系列久久99| 亚洲黄色免费网站| 国产精品理论在线观看| 亚洲精品在线观看视频| 678五月天丁香亚洲综合网| 色视频成人在线观看免| 成人国产在线观看| 国产精品一品二品| 久久精品理论片| 蜜臀av一区二区在线观看| 亚洲成av人**亚洲成av**| 亚洲色图19p| 综合在线观看色| 国产精品久久久久久亚洲毛片| 久久夜色精品国产噜噜av | 韩国成人精品a∨在线观看| 日韩精品一区第一页| 亚洲电影第三页| 亚洲一二三专区| 亚洲免费在线视频| 中文字幕综合网| 亚洲人亚洲人成电影网站色| 国产精品国产馆在线真实露脸 | 国产亚洲欧美日韩在线一区| 欧美videos中文字幕| 日韩三级在线观看| 欧美精品一区二区三区久久久| 日韩免费观看高清完整版在线观看| 欧美精品第1页| 欧美一区2区视频在线观看| 欧美一区二区三区不卡| 欧美一级二级三级蜜桃| 日韩视频一区二区在线观看| 4438x亚洲最大成人网| 91精品综合久久久久久| 日韩免费福利电影在线观看| 久久青草国产手机看片福利盒子| 精品久久国产字幕高潮| 久久精品一区二区| 国产精品久久精品日日| 亚洲一区二区三区四区在线 | 天堂蜜桃一区二区三区| 日韩av在线播放中文字幕| 久久99国产精品麻豆| 成人美女在线视频| 在线观看av一区| 日韩一级免费观看| 国产欧美精品一区aⅴ影院| 亚洲日本一区二区| 日韩精品视频网站| 国产不卡视频一区| 在线观看亚洲精品视频| 日韩一区二区三区视频在线 | 欧美tickling挠脚心丨vk| 国产精品视频第一区| 亚洲国产视频一区二区| 激情久久五月天| 91老司机福利 在线| 91精品久久久久久蜜臀| 国产亚洲欧美日韩俺去了| 亚洲天堂精品视频| 美女看a上一区| 一本大道综合伊人精品热热| 日韩精品一区二区三区三区免费| 欧美激情中文不卡| 日韩福利视频网| 99精品久久99久久久久| 日韩欧美视频在线| 亚洲欧美日韩成人高清在线一区| 男女男精品网站| 91影院在线免费观看| 亚洲精品一区二区三区福利| 亚洲色图.com| 国产高清亚洲一区| 91精品国产综合久久久久久| 国产精品久久久久aaaa樱花| 久久精品国产第一区二区三区| a4yy欧美一区二区三区| 欧美成人精品高清在线播放| 亚洲黄色录像片| 成人黄色在线网站| 精品成人a区在线观看| 亚洲一区二区av电影| av一区二区三区四区| 久久九九久久九九| 欧美aaaaaa午夜精品| 欧美色窝79yyyycom| 亚洲欧洲av一区二区三区久久| 国产一区999| 欧美一级国产精品| 三级亚洲高清视频| 欧美日韩在线免费视频| 亚洲美女屁股眼交| 91视频一区二区三区| 欧美激情一区二区三区蜜桃视频| 免费看欧美美女黄的网站| 欧美日韩和欧美的一区二区| 亚洲男人都懂的| 99久久综合色| 国产精品久久精品日日| 国产风韵犹存在线视精品| 精品盗摄一区二区三区| 久久国产日韩欧美精品| 日韩精品一区二区三区中文不卡| 午夜a成v人精品| 欧美军同video69gay| 亚洲成人一区在线| 3d动漫精品啪啪一区二区竹菊| 亚洲综合激情网| 欧美日韩日日骚| 日韩精品乱码免费| 日韩精品一区二区三区视频在线观看 | 日韩一级在线观看|