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

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

?? sysi2ckahlua.c

?? VxWorks下 Mv2100的BSP源碼
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
/* sysI2cKahlua.c - I2C Driver Source Module *//* Copyright 1998-2002 Motorola, Inc. All Rights Reserved *//*modification history--------------------01g,16apr02,dat  Update for T2.2 release01f,16sep01,dat  Use of WRS_ASM macro01e,14apr00,krp  'bclr' short circuits stack cleanup with optimization turned                 off.01d,08feb00,rhk  Added patch for I2C BUS BUSY lockup condition.01c,28may99,dmw  Updated to Wind River coding standards.01b,18may99,rhk  changes to support compressed builds.01a,18feb99,dmw  created - based on MCG DVT group's Kahlua I2C driver. *//*DESCRIPTIONI2C Driver Source (Low Level Routines) ModuleKahlua Memory Controller (PowerPlus Architecture)Notes:   1. GREAT care must be made when sending commands to the       MPC8240(Kahlua).  Several "i2cCycleKahluaDelay" calls are made      in order to not overwhelm the I2C interface.  If commands      are sent too fast, the I2C interface will lockup and the I2C      bus may become unusable without a powercycle.  Generally, if      if you cause a I2C bus cycle, you should wait for "a while".      A possible cause is that the caches were turned on when this      driver was written.*//* includes */#include "vxWorks.h"		/* vxWorks generics */#include "sysI2cKahlua.h"	/* low level definitions, specific */#include "config.h"		/* BSP specifics */#include "kahlua.h"		/* processor specifics - MPC8240 */#include "arch/ppc/vxPpcLib.h"	/* for vxDecGet() */#ifdef DEBUG_I2C#  include "sdramSpd.h"#  include "stdio.h"#endif/* externals */IMPORT int i2cRead();		/* device read operation */IMPORT int i2cWrite();		/* device write operation */#ifdef DEBUG_I2CIMPORT logMsg ();#endifIMPORT UINT32 i2cPciIoctl (UINT32 ioctlflg, UINT32 address, UINT32, UINT32);IMPORT UINT32 abs(UINT32 old);IMPORT STATUS i2cDrvInit (int i2cControllerType);/* forward declarations */void sysKahluaMsDelay (UINT mSeconds);LOCAL UINT32 sysKahluaGetDec(void);void i2cCycleKahluaDelay (int mSeconds);/* debug declarations */#ifdef DEBUG_I2C#define REAL_SPD_SIZE	256char defaultSPD[SPD_SIZE];#endif /* DEBUG_I2C *//* Global flag */int I2CDoRepeatStart = 0;	/* indicates if a "Repeat Start" is requested *//******************************************************************************* * i2cCycleKahluaStart - perform I2C "start" cycle* *	This function's purpose is to perform an I2C start cycle.* * RETURNS:*	zero		= operation successful*	non-zero	= operation failed*/int i2cCycleKahluaStart (void)     {    unsigned int timeOutCount;    unsigned int statusReg = 0;    /*      * if this is a repeat start, then set the required bits and return.     *     * NOTE:     * this driver ONLY supports one repeat start between the start     * stop and cycles.     */    if(I2CDoRepeatStart == 1)         {        i2cCycleKahluaDelay(1);        i2cPciIoctl(2, (UINT32)KAHLUA_I2C_CONTROL_REG,                     (KAHLUA_I2C_CONTROL_REG_RSTA |                     KAHLUA_I2C_CONTROL_REG_MSTA |                     KAHLUA_I2C_CONTROL_REG_MTX),0);        SYNC;        i2cCycleKahluaDelay(1);        I2CDoRepeatStart = 0;  /* one repeat start only, so clear this bit */        return(0);        }    /*      * 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))             {            break;            }        }    if (!timeOutCount)          {        return (-1);         }    /*     * since this is the first time through, generate a START(MSTA) and     * place the I2C interface into a master transmitter mode(MTX).     */    i2cPciIoctl(2, (UINT32)KAHLUA_I2C_CONTROL_REG,                 (KAHLUA_I2C_CONTROL_REG_MTX |                 KAHLUA_I2C_CONTROL_REG_MSTA),0);    SYNC;    i2cCycleKahluaDelay(1);    /*      * The first time through, set "I2CDoRepeatStart".  If this function     * is called again BEFORE a STOP is sent, then we are doing a      * "dummy write", which sets the devices internal byte pointer      * to the byte we intend to read.     */    I2CDoRepeatStart = 1;    return (0);    }/******************************************************************************* * i2cCycleKahluaStop - perform I2C "stop" cycle* *	This function's purpose is to perform an I2C stop cycle.* * RETURNS:*	zero		= operation successful*	non-zero	= operation failed*/int i2cCycleKahluaStop (void)    {    i2cCycleKahluaDelay(1);    /*     * turn off MSTA bit(which will generate a STOP bus cycle)     * turn off MTX bit(which places the MPC8240 interface into receive mode     * turn off TXAK bit(which allows 9th clock cycle acknowledges)     */    i2cPciIoctl(3, (UINT32)KAHLUA_I2C_CONTROL_REG,                 (~(KAHLUA_I2C_CONTROL_REG_MTX  |                KAHLUA_I2C_CONTROL_REG_MSTA |                KAHLUA_I2C_CONTROL_REG_TXAK)),0);    SYNC;    i2cCycleKahluaDelay(1);    /*      * Clear the global I2C "Repeat Start" flag.     */    I2CDoRepeatStart = 0;    return (0);    }/******************************************************************************* * i2cCycleKahluaRead - perform I2C "read" cycle* *	This function's purpose is to perform an I2C read cycle.* * RETURNS:*	zero		= operation successful*	non-zero	= operation failed*/int i2cCycleKahluaRead    (    unsigned char *pReadDataBuf	/* pointer to read data buffer */    )    {    unsigned int readData = 0;    i2cCycleKahluaDelay(1);    /*     * place the I2C interface into receive mode(MTX=0) and set the interface     * to NOT acknowledge(TXAK=1) the incoming data on the 9th clock cycle.     * this is required when doing random reads of a I2C device.     */    i2cPciIoctl(4, (UINT32)KAHLUA_I2C_CONTROL_REG,                (~KAHLUA_I2C_CONTROL_REG_MTX),                KAHLUA_I2C_CONTROL_REG_TXAK);    SYNC;    i2cCycleKahluaDelay(1);    /* do a "dummy read".  this latches the data off the bus. */    i2cPciIoctl(1, (UINT32)KAHLUA_I2C_DATA_REG, 0, 0);    SYNC;    i2cCycleKahluaDelay(1);    /* now do the actual read, make this one count */    readData = i2cPciIoctl(1, (UINT32)KAHLUA_I2C_DATA_REG, 0, 0);    SYNC;    *pReadDataBuf = (unsigned char)readData;    return (0);    }/******************************************************************************* * i2cCycleKahluaWrite - perform I2C "write" cycle* *	This function's purpose is to perform an I2C write cycle.* * RETURNS:*	zero		= operation successful*	non-zero	= operation failed*/int i2cCycleKahluaWrite    (    unsigned char writeData	/* character to write */    )    {    i2cCycleKahluaDelay(1);    /*     * write the requested data to the data register, which will cause     * it to be transmitted on the I2C bus.     */    i2cPciIoctl(0, (UINT32)KAHLUA_I2C_DATA_REG, writeData, 0);    SYNC;    i2cCycleKahluaDelay(1);    return (0);    }/******************************************************************************* * i2cCycleKahluaAckIn - perform I2C "acknowledge-in" cycle* *	This function's purpose is to perform an I2C acknowledge-in*	cycle.* * RETURNS:*	zero		= operation successful*	non-zero	= operation failed*/int i2cCycleKahluaAckIn (void)    {    unsigned int statusReg = 0;    unsigned int timeOutCount;    /*     * wait until an *internal* device interrupt has been generated, then     * clear it.  if it is not received, return with an error.     * we are polling, so NO processor interrupt is generated.     */    for (timeOutCount = 100; timeOutCount; timeOutCount--)         {        i2cCycleKahluaDelay(1);        statusReg = i2cPciIoctl(1, (UINT32)KAHLUA_I2C_STATUS_REG, 0, 0);        SYNC;        if (statusReg & KAHLUA_I2C_STATUS_REG_MIF)              {            i2cPciIoctl(3, (UINT32)KAHLUA_I2C_STATUS_REG,                         (~KAHLUA_I2C_STATUS_REG_MIF), 0);            SYNC;            break;            }        }    if (!timeOutCount)          {        return (-1);        }    return (0);    }/******************************************************************************* * i2cCycleKahluaAckOut - perform I2C "acknowledge-out" cycle* *	This function's purpose is to perform an I2C acknowledge-out*	cycle.* * RETURN:*	zero		= operation successful*	non-zero	= operation failed*/int i2cCycleKahluaAckOut (void)    {    return (0);    }/******************************************************************************* * i2cCycleKahluaKnownState - initialize the I2C bus to a known state* *	This function's purpose is to initialize the I2C bus to a*	known state.* * RETURNS:*	zero		= operation successful*	non-zero	= operation failed*/int i2cCycleKahluaKnownState (void)    {    STATUS status;    UINT   timeOutCount;    UINT   statusReg;

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
偷拍一区二区三区四区| 欧美日韩在线观看一区二区| 精品一区二区三区香蕉蜜桃| 亚洲成a人v欧美综合天堂下载 | 欧美r级在线观看| 欧美精品乱码久久久久久按摩| 色综合网站在线| 国产精品视频麻豆| 国产欧美日韩视频一区二区| 久久精品水蜜桃av综合天堂| 日本一区二区成人在线| 国产精品国产自产拍高清av| 成人免费视频在线观看| 亚洲另类春色校园小说| 亚洲欧美一区二区三区孕妇| 亚洲欧美日本韩国| 亚洲一区二区av在线| 婷婷丁香久久五月婷婷| 蜜桃av一区二区三区| 国产一区二区电影| 99久久婷婷国产| 色婷婷亚洲综合| 91麻豆精品国产综合久久久久久| 日韩一级视频免费观看在线| 久久久不卡影院| 亚洲欧美日韩精品久久久久| 夜夜夜精品看看| 麻豆成人91精品二区三区| 国产成人高清在线| 91福利区一区二区三区| 6080午夜不卡| 中文字幕免费不卡在线| 一区二区三区四区在线播放| 天堂成人国产精品一区| 久久综合久久综合久久| 亚洲欧洲精品一区二区三区| 亚洲一卡二卡三卡四卡| 精品中文字幕一区二区| 菠萝蜜视频在线观看一区| 欧美性色黄大片| 久久久久九九视频| 亚洲国产精品久久艾草纯爱| 久久99精品国产.久久久久久| 国产99一区视频免费| 欧美艳星brazzers| 久久精品在这里| 亚洲v精品v日韩v欧美v专区| 美腿丝袜亚洲一区| 91玉足脚交白嫩脚丫在线播放| 在线播放视频一区| 中文字幕在线不卡一区二区三区| 首页综合国产亚洲丝袜| 成人免费看黄yyy456| 欧美另类一区二区三区| 国产精品久久久久久久久动漫| 亚洲电影你懂得| 国产盗摄女厕一区二区三区 | 国产性色一区二区| 亚洲一区二区五区| 国产精品1区2区3区| 欧美日高清视频| 顶级嫩模精品视频在线看| 欧美日韩一区二区三区在线| 欧美国产国产综合| 美女一区二区三区在线观看| 色综合天天综合网国产成人综合天 | 日韩av一级电影| 91免费看片在线观看| 久久亚洲一区二区三区四区| 亚洲国产一二三| 99国产一区二区三精品乱码| 亚洲精品一区二区三区影院 | 青青草国产精品97视觉盛宴| 91丝袜美女网| 国产拍欧美日韩视频二区| 日韩av高清在线观看| 91在线观看一区二区| 国产亚洲精品bt天堂精选| 老司机午夜精品| 91超碰这里只有精品国产| 亚洲欧美在线视频| 国产精品1024久久| 精品电影一区二区三区| 欧美午夜寂寞影院| 亚洲视频一区二区在线| 成人动漫精品一区二区| 久久综合色播五月| 久久成人免费网| 欧美一级二级三级蜜桃| 日韩av中文字幕一区二区| 欧美日韩国产天堂| 亚洲国产成人tv| 欧美视频一区二区三区四区| 综合网在线视频| 97久久超碰精品国产| 中文字幕一区三区| 99精品视频在线免费观看| 中文字幕国产一区| 成人免费av资源| 中文字幕中文在线不卡住| 国产美女一区二区三区| 久久久久久黄色| 国产成人免费在线观看| 中文字幕精品一区二区三区精品| 国产一区二区三区精品欧美日韩一区二区三区 | 3d动漫精品啪啪| 欧美日韩一区国产| 五月婷婷久久综合| 91精品国产手机| 美女在线视频一区| 欧美成人福利视频| 国产毛片一区二区| 国产欧美一区二区三区在线老狼| 国产剧情一区在线| 日本一区二区不卡视频| 成人免费视频caoporn| 中文字幕亚洲成人| 色综合一个色综合亚洲| 亚洲国产精品综合小说图片区| 精品视频1区2区3区| 日本大胆欧美人术艺术动态| 日韩一级片在线播放| 久久精品国产网站| 日韩免费在线观看| 国产成人午夜99999| 1区2区3区精品视频| 欧美性色aⅴ视频一区日韩精品| 天涯成人国产亚洲精品一区av| 欧美日本视频在线| 精品一区二区三区不卡 | 久久av老司机精品网站导航| 精品国产乱码久久久久久牛牛| 国内成+人亚洲+欧美+综合在线| 国产色综合一区| 99视频精品在线| 亚洲一区二区在线免费看| 午夜精品久久久| 26uuu精品一区二区在线观看| 成人午夜激情在线| 亚洲国产日韩精品| 2023国产精品| 91蜜桃婷婷狠狠久久综合9色| 亚洲妇女屁股眼交7| 精品国产乱码久久久久久老虎| 成人免费视频网站在线观看| 亚洲va天堂va国产va久| 久久色在线视频| 在线观看欧美日本| 久久精品国产久精国产爱| 国产精品青草久久| 91麻豆精品国产自产在线| 丰满亚洲少妇av| 性久久久久久久| 国产精品国产三级国产专播品爱网| 欧美三级三级三级| 国产福利一区在线| 午夜电影一区二区| 国产精品久久久久久久久图文区| 欧美日韩精品欧美日韩精品 | 成人性色生活片| 性久久久久久久久| 久久影院电视剧免费观看| 色婷婷久久一区二区三区麻豆| 日本午夜一本久久久综合| 国产精品视频一区二区三区不卡| 欧美人与z0zoxxxx视频| 成人av在线影院| 欧美精品亚洲二区| av一本久道久久综合久久鬼色| 日本欧美肥老太交大片| 亚洲欧美电影院| 久久久国产一区二区三区四区小说| 在线观看日产精品| 成+人+亚洲+综合天堂| 九一九一国产精品| 亚洲成av人**亚洲成av**| 《视频一区视频二区| 久久久青草青青国产亚洲免观| 欧美日本韩国一区| 色视频成人在线观看免| 成人免费黄色大片| 国产一区二区三区在线观看免费| 婷婷国产v国产偷v亚洲高清| 亚洲欧美国产三级| 国产精品乱码人人做人人爱| 久久久亚洲精华液精华液精华液| 欧美精品v日韩精品v韩国精品v| 色伊人久久综合中文字幕| 福利91精品一区二区三区| 激情国产一区二区| 日本不卡在线视频| 日韩高清在线观看| 午夜一区二区三区视频| 亚洲精品亚洲人成人网在线播放| 欧美韩日一区二区三区四区| 久久综合九色综合97婷婷| 日韩一级片网址| 欧美电影精品一区二区| 日韩三级精品电影久久久| 欧美一区二区三区视频|