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

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

?? cdr14iic.c

?? IIC總線驅動程序
?? C
?? 第 1 頁 / 共 3 頁
字號:
/* == IDENTIFICATION ================================================== * * Copyright (C) 2006, Philips Semiconductors Nuernberg * * System           : Vega Family * Component        : PT or FT * Module           : DRIVER * Unit             : IIC Bus Driver * File             : cdr14iic.c * *  @(#)   %filespec: cdr14iic.c-57 % * *//* == HISTORY ========================================================= *//* * Name      Date        Ver    Action * -------------------------------------------------------------------- * tcmc_asb  10-Jan-2006  57  assert GPIO config when DACKN changes * tcmc_ore  22-Dec-2005  56  no DACKN if UART is used  * tcmc_hyu  13-Dec-2005  55  change DACKN to GPIO 10 for platform 2 * tcmc_asb   5-Dec-2005  54  VegaOne, remove VOIP_HACK * tcmc_hyu  24-Jun-2005  52  remove warning: Undefined macro 'TBDemoboard' * tcmc_ore  23-Jun-2005  51  Merged version 50 and D75.2, init GPIO for IIC * tcmc_afn  02-Nov-2004 D75.2  Differnet DACKN pin in PT and FT for D75 * tcmc_afn  19-Oct-2004 D75.1  Added pin DACKN = 31 for ANYLINE project * tcmc_ore  21-Feb-2005  50  Set default IIC Clock to 96KHz for VoIP * tcmc_afn  24-Aug-2004  49  Modified Pin80onDemoBlue when modem is present * tcmc_ore  30-Apr-2004 D68b.3 Added Pin80onDemoBlue * tcmc_ore  16-Apr-2004  47  Replace XSonDemoBlue with Pin64OnDemoBlue * tcmc_ore  23-Mar-2004  46  Add XSonDemoBlue switch * tcmc_asb  25-Feb-2004  45  D53, PR297: provide result control  *                            flexiblility for common use in diff. projects: *                                   p_dr14_IICSetDackn *                                   p_dr14_IICSetClk *                            Note: Version aligned to D51 archive * tcmc_ore  10-Dec-2002  21  PR157: Improve SET_CONTROL so that a requested *                                   STOP is checked, instead of the STATUS *                                   This resolves the problem that arises *                                   in SET_CONTROL(IIC_START) when the STOP *                                   was requested but the status was not yet *                                   reset to 0xF8 because the slave did *                                   CLOCK stretching. *                                   Together with Lothar we decided not to *                                   use this solution at 10-Dec-2002 because *                                   VT was happy with the version -20 (they *                                   received at 6-Dec-02), clock stretching is *                                   only done by very old devices, and no *                                   one has time to test this right now! *                                   Nevertheless this new driver here did *                                   also not show any errors in TBR10 with *                                   additional IIC activity. *         * tcmc_ore   6-Dec-2002  20  PR157: Add some comments * tcmc_ore   4-Dec-2002  19  PR157: Change SET_CONTROL and add more *                                   debug info (#ifdef IIC_DUMP_SIZE) *                                   add IIC_GPIO_TRACE * tcmc_dbm  27-Nov-2002      add Switch for VegaLite * tcmc_hyu  22-Apr-2002      changes for VegaXS * tcmc_hyu  18-Apr-2002      delete Pullup setting for Dackn. This is                              done in cdr10int.c * tcmc_hyu  18-Apr-2002      use GPIO 24 as Dackn for VegaTB demoboard * tcmc_ore  26-Mar-2002      use IIC Clock of 36kHz for VegaTB too (LCD) * tcmc_hyu  26-Feb-2002      correct DR14_SET_CONTROL as suggested by asb * tcmc_hyu  07-Feb-2002      changes for VegaTB * tcmc_ore  23-Jan-2002      no SystemActive flag for BMP_TEST * tcmc_hyu  22-Jan-2002      first attempt to make it compile for VegaTB * tcmc_ore  11-Dec-2001      set SystemActive flag in IICSchedule * tcmc_hyu  19-Nov-2001      add semi-colon in empty while loop * tcmc_hyu  15-Nov-2001      correct use of curly braces * tcmc_hyu  07-Nov-2001      rework after code crosscheck * tcmc_asa  19-Oct-2001      change t_iic_exec to t_dr04_IICExecute * tcmc_asa  08-Aug-2001      SYS2_GPIO1_13_UART_RTS used for DACKN * tcmc_asa  17-Jul-2001      remove bbc.h  * tcmc_hyu  31-May-2001      SYS2_GPIO2_29_CS_N2 used for DACKN *                            signal instead of SYS2_GPIO2_21_KBIO6 * tcmc_asa  30-Nov-2000      created, copied from D46 dr_iic.c *                                              *//*MPM:::DRIVER::IIC Bus=================================================== * * ABSTRACT: * * This module comprises routines to access any device connected * to the IIC bus. The driver operates in master mode only. * The function list also includes some macros defined in cdr04iic.h. * * Global functions to be called by other layers: * ---------------------------------------------- * - p_dr14_IICDackn * - p_dr14_IICImmediate  * - p_dr14_IICRead   * - p_dr14_IICSchedule   * - p_dr14_IICTransmit   * - p_dr14_IICWrite  * * Layer local functions to be called from inside this layer: * ---------------------------------------------------------- * - p_dr14_IICInit * - p_dr14_IICSetDackn * - p_dr14_IICSetClk * * Module-local functions to be called from inside this module: * ------------------------------------------------------------ * - p_dr14_IICEndOfJob   * - p_dr14_IICInterrupt *//* == DESIGN ========================================================== * * The driver operates on a queue of t_dr04_IICJob, each of them consisting * of an arbitrary number of transmission steps. * * The function p_dr14_IICSchedule accepts an t_dr04_IICJob, puts it into the * queue and activates the IIC bus if necessary. It returns to the * caller asynchronously, without waiting for completion. * * According to the signals on the IIC bus the driver is invoked at * p_dr14_IICInterrupt and communicates with the IIC controller according * to the state of the IIC bus and the transmission in progress. * The p_dr14_IICInterrupt function will continue transmissions on the bus * until the queue becomes empty. * * The remaining interface functions are build around the asynchronous * driver kernel formed by p_dr14_IICSchedule and p_dr14_IICInterrupt. * *//* == GLOBAL DECLARATIONS            ======================================= */#define cdr14_c#include <string.h>           /* memmove */#include "cg0type.h"#ifndef BMP_TEST#include "cos00int.h"#endif#include "tclib.h"#include "cdr04iic.h"#include "csys5os.h"#include "csys0reg.h"#include "csys2vpb.h"#ifndef             SYS2_GPIO_MAX# ifndef VegaPro#  define           SYS2_GPIO_MAX 34# else#  define           SYS2_GPIO_MAX 31# endif#endif#ifndef   EXCEPTIONvoid      p_dr14_IICException(u32 u32_X){  while(1);}# define  EXCEPTION(x) p_dr14_IICException(x)#endif/* == DECLARATION OF MODULE LOCAL DATA ================================ *//* S1STA codes * *************/#define DR14_CONTROL_REG    (sys2_IIC.con)#define DR14_STATUS_REG     (sys2_IIC.sta)#define DR14_DATA_REG       (sys2_IIC.dat)#define DR14_ADDRESS_REG    (sys2_IIC.adr)#define DR14_IIC_00_BUS_ERROR        0x00  /* erroneous START/STOP on bus    *//* Master Transmitter mode      S1STA values */#define DR14_IIC_08_MT_STA_OK        0x08  /* STArt condition generated      */#define DR14_IIC_10_MT_REPSTA_OK     0x10  /* REPeatedSTA (w/o STOP)         */#define DR14_IIC_18_MT_SLA_ACK       0x18  /* SLA+W sent, ACK rcvd           */#define DR14_IIC_20_MT_SLA_NAK       0x20  /* SLA+W sent, NAK rcvd           */#define DR14_IIC_28_MT_DAT_ACK       0x28  /* DAT sent, ACK rcvd             */#define DR14_IIC_30_MT_DAT_NAK       0x30  /* DAT sent, NAK rcvd             *//* Master looses arbitration, but is not addressed as slave */#define DR14_IIC_38_MX_ARB_LOST      0x38  /* current Read/Write aborted     *//* Master Receiver mode         S1STA values */#define DR14_IIC_40_MR_SLA_ACK       0x40  /* SLA+R sent, ACK rcvd           */#define DR14_IIC_48_MR_SLA_NAK       0x48  /* SLA+R sent, NAK rcvd           */#define DR14_IIC_50_MR_DAT_ACK       0x50  /* DAT rcvd, ACK rcvd             */#define DR14_IIC_58_MR_DAT_NAK       0x58  /* DAT rcvd, NAK rcvd             *//* Slave Receiver mode          S1STA values */#define DR14_IIC_60_SR_SLA_ACK       0x60  /* own SLA+W rcvd, ACK sent       */#define DR14_IIC_68_SR_SLA_ACK_ARB   0x68  /* arb.lost, SLA+W rcvd, ACK sent */#define DR14_IIC_70_SR_GC_ACK        0x70  /* GC (0x00=GC+W)  rcvd, ACK sent */#define DR14_IIC_78_SR_GC_ACK_ARB    0x78  /* arb.lost, GC rcvd, ACK sent    */#define DR14_IIC_80_SR_DAT_ACK       0x80  /* DAT rcvd, ACK sent             */#define DR14_IIC_88_SR_DAT_NAK       0x88  /* DAT rcvd, NAK sent             */#define DR14_IIC_90_SR_GC_DAT_ACK    0x90  /* DAT rcvd, ACK sent, in GC      */#define DR14_IIC_98_SR_GC_DAT_NAK    0x98  /* DAT rcvd, NAK sent, in GC      *//* Slave rcv STOP condition     S1STA value */#define DR14_IIC_A0_SX_STP           0xA0  /* SToP or REPeated STArt rcvd    *//* Slave Transmitter mode       S1STA values */#define DR14_IIC_A8_ST_SLA_ACK       0xA8  /* own SLA+R rcvd, ACK sent       */#define DR14_IIC_B0_ST_SLA_ACK_ARB   0xB0  /* arb.lost, SLA+R rcvd, ACK sent */#define DR14_IIC_B8_ST_DAT_ACK       0xB8  /* DAT sent, ACK rcvd             */#define DR14_IIC_C0_ST_DAT_NAK       0xC0  /* DAT sent, NAK rcvd             */#define DR14_IIC_C8_ST_DATNAK_ACK    0xC8  /* DAT+NAK sent, ACK rcvd         *//* IIC controller is busy */#define DR14_IIC_F8_SIO_BUSY         0xF8  /* SIO hw busy, SI bit is 0       *//* Data ackowledge pin definition */#ifdef TWO_LINE_BOARD# if defined (PT_MODULE)#define DR14_DACKN_GPIO               13# else#define DR14_DACKN_GPIO               31# endif#elif defined(TBDemoboard)#define DR14_DACKN_GPIO               24#elif defined(Pin180onCEPBB)#define DR14_DACKN_GPIO                7#elif defined(PLATFORM_2)#ifdef UART#define DR14_DACKN_GPIO               0xFF /* no DACKN, GPIO 10 is RXD on 100pin VegaBB */#else#define DR14_DACKN_GPIO               10#endif#elif defined(Pin64onDemoBlue)#define DR14_DACKN_GPIO               21#elif defined(Pin80onDemoBlue)#if (DA_MAX_MODEM > 0)#define DR14_DACKN_GPIO               21#else#define DR14_DACKN_GPIO               13#endif /* DA_MAX_MODEM>0 */#else#if (DA_MAX_MODEM > 0)#define DR14_DACKN_GPIO               21#else#define DR14_DACKN_GPIO               13#endif /* DA_MAX_MODEM>0 */#endif/* S1CON bits * ************/#define DR14_IIC_CLK  (st_dr14_IIC.u8_Clk)#define DR14_IIC_ENA  0x40#define DR14_IIC_STA  0x20#define DR14_IIC_STP  0x10#define DR14_IIC_AA   0x04#define DUMP_CON      'C'#define DUMP_DATR     'R'#define DUMP_DATW     'W'#define DUMP_STA      'S'#define DUMP_MARK     'M'#define DUMP_GPIODAT1 'G'#define DR14_IIC_DISABLE    (DR14_IIC_CLK                                 )#define DR14_IIC_START      (DR14_IIC_CLK | DR14_IIC_ENA  | DR14_IIC_STA  )#define DR14_IIC_STOP       (DR14_IIC_CLK | DR14_IIC_ENA  | DR14_IIC_STP  )#define DR14_IIC_FREE_ACK   (DR14_IIC_CLK | DR14_IIC_ENA  | DR14_IIC_AA   )#define DR14_IIC_FREE_NOACK (DR14_IIC_CLK | DR14_IIC_ENA                  )void p_dr14_SetControl(u32 conVal);/* debugging aid * **************/#ifndef   IIC_DUMP_SIZE#  define IIC_DUMP_SIZE     0#endif#define DR14_IIC_DUMP_SLAVE    0x90#if IIC_DUMP_SIZE>0u16    u16_IICDumpX;u8      u8_IICDumpFlag;u8      u8_IICDump[IIC_DUMP_SIZE][2];# define DR14_IIC_DUMP(what,byt)                                  \              if(u8_IICDumpFlag)                                  \              {                                                   \                  u8_IICDump[u16_IICDumpX][0]=(u8)(what);         \                  u8_IICDump[u16_IICDumpX][1]=(u8)(byt);          \                  u16_IICDumpX= (u16_IICDumpX+1)%IIC_DUMP_SIZE;   \              }# define DR14_IIC_DUMP_CHECK(rr)                                  \      if ((rr)==DR14_IIC_DUMP_SLAVE) /* check for slave to be dumped */  \      {                                                           \          u8_IICDumpFlag= 1;                                      \      }# define DR14_IIC_DUMP_STOP  u8_IICDumpFlag= 1  /* never stops */# if 0#  define DR14_IIC_CHECK_FREE p_dr14_IICCheckFree()# else#  define DR14_IIC_CHECK_FREE # endif/* FUNCTIONAL DESCRIPTION * * Debug function to check if the IIC bus is free. * * PARAMETER * none * * INTERFACE DECLARATION: ****************************************************/void p_dr14_IICCheckFree(void){  u32 u32_Cnt;  for (u32_Cnt=0; (VOLATILE(sys2_GPIO.dat1,u16)&3)!=3; u32_Cnt++)  {      DR14_IIC_DUMP(DUMP_CON,DR14_CONTROL_REG);      DR14_IIC_DUMP(DUMP_STA,DR14_STATUS_REG);      while (u32_Cnt>1400) /* divided by 7 gives min.number of micro seconds */      {          /* break here to check hardware */          p_dr14_SetControl(DR14_IIC_STOP);      }  }} /* p_dr14_IICCheckFree */#else /* IIC_DUMP_SIZE==0  i.e. no debugging code */# define DR14_IIC_DUMP(what,byt)# define DR14_IIC_DUMP_CHECK(rr)# define DR14_IIC_DUMP_STOP# define DR14_IIC_CHECK_FREE#endif /* IIC_DUMP_SIZE *//*** IIC_ACK_REQUIRED controls default reaction on NOACK error conditions per**                  conditional compilation**   1 => treat NOACK as error after retries, i.e. devices must be ready,**        otherwise an exception is raised**   2 => terminate transmission on NOACK, i.e. device allowed tempoarily**        offline, but no retries (clients may use DR04_IIC_RESULT)**   3 => perform retries on NOACK, ignore job if retries fail*/#define DR14_IIC_ACK_REQUIRED 2#define DR14_IIC_MAX_ERRORS   5 /* in case of DR14_IIC_ACK_REQUIRED!=2 *//* * STATIC DATA * *********** */#define     DR14_MAX_JOBS            8

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
另类欧美日韩国产在线| 欧美日韩www| 欧美另类高清zo欧美| 日韩欧美不卡一区| 亚洲综合色区另类av| 激情五月播播久久久精品| 欧美探花视频资源| 中文字幕一区二区三| 国产精品亚洲午夜一区二区三区| 欧洲人成人精品| 中文字幕在线不卡国产视频| 欧美专区亚洲专区| 综合久久久久久| 成人免费毛片嘿嘿连载视频| www国产亚洲精品久久麻豆| 日本欧美加勒比视频| 欧美日韩午夜影院| 亚洲国产精品一区二区久久恐怖片 | 午夜av区久久| 91国产精品成人| 亚洲手机成人高清视频| 成人黄色电影在线| 国产精品久久久久久久第一福利| 韩国v欧美v日本v亚洲v| 精品国产青草久久久久福利| 另类小说色综合网站| 欧美一区二区三区电影| 青青草成人在线观看| 欧美一区二区精品久久911| 日本女优在线视频一区二区| 91麻豆精品国产| 免费成人在线播放| 亚洲精品国产精华液| jizzjizzjizz欧美| 亚洲人成影院在线观看| 在线一区二区三区| 日韩不卡一区二区| 2024国产精品视频| 成人午夜在线播放| 亚洲激情自拍偷拍| 欧美福利视频导航| 寂寞少妇一区二区三区| ww亚洲ww在线观看国产| 国产999精品久久久久久绿帽| 日本一区二区成人| 91传媒视频在线播放| 性久久久久久久久| 精品国精品国产尤物美女| 风间由美性色一区二区三区| 亚洲欧洲精品天堂一级| 日本韩国欧美三级| 日韩成人午夜电影| 中文字幕av资源一区| 欧美午夜一区二区三区免费大片| 亚洲午夜免费视频| 日韩片之四级片| 岛国一区二区在线观看| 亚洲国产欧美在线人成| 日韩精品中文字幕在线一区| 成人动漫一区二区| 五月婷婷激情综合| 国产日产欧美一区| 欧美日韩你懂的| 成人丝袜18视频在线观看| 亚洲国产精品麻豆| 久久久久免费观看| 欧美三级电影一区| 国产乱码精品一品二品| 亚洲午夜免费视频| 国产欧美久久久精品影院| 欧美性生活大片视频| 国产精品一区二区91| 性做久久久久久久免费看| 欧美国产日韩在线观看| 欧美一区午夜视频在线观看| 成人深夜视频在线观看| 免费观看在线综合色| 亚洲日本在线天堂| 久久综合九色欧美综合狠狠| 色乱码一区二区三区88| 国产精品一区二区男女羞羞无遮挡 | 久久久久久综合| 欧美日韩一区二区三区视频| 国产激情一区二区三区四区| 午夜电影久久久| 中文字幕在线观看一区二区| 欧美r级在线观看| 欧美性猛片xxxx免费看久爱| 国产福利视频一区二区三区| 日韩国产在线一| 亚洲资源中文字幕| 中文字幕一区二区三中文字幕| 日韩午夜激情av| 亚洲国产高清不卡| 精品日本一线二线三线不卡 | 高清不卡一区二区在线| 久久99精品久久只有精品| 亚洲国产一二三| 综合在线观看色| 中文字幕不卡在线| 国产午夜亚洲精品羞羞网站| 日韩精品一区二区三区四区视频| 欧美色综合久久| 色偷偷一区二区三区| 91在线免费播放| 成人免费毛片片v| 国产成人丝袜美腿| 国产一区三区三区| 国产在线精品一区二区夜色| 蜜桃视频一区二区| 人人精品人人爱| 日韩精品成人一区二区在线| 亚洲综合激情另类小说区| 一区二区三区在线不卡| 一区二区三区四区精品在线视频| 成人免费在线播放视频| 亚洲少妇30p| 亚洲你懂的在线视频| 一区二区三区精品在线| 亚洲国产欧美日韩另类综合 | 91精品国产91久久综合桃花| 91麻豆精品国产91久久久久| 日韩一二三区不卡| 26uuu国产一区二区三区| 精品88久久久久88久久久| 精品国免费一区二区三区| 久久无码av三级| 中文字幕av一区二区三区| 中文字幕亚洲一区二区va在线| 亚洲欧美另类久久久精品2019| 艳妇臀荡乳欲伦亚洲一区| 婷婷开心久久网| 国产一区91精品张津瑜| 成人黄色在线看| 在线视频国内自拍亚洲视频| 欧美精品777| 国产亚洲欧美色| 一区二区三区精品视频| 美国av一区二区| 国产91露脸合集magnet| 在线观看av一区二区| 欧美一级二级在线观看| 国产精品人成在线观看免费| 一区二区三区免费网站| 日本一不卡视频| 国产69精品久久久久777| 97成人超碰视| 日韩精品中午字幕| 亚洲视频一区二区在线| 美腿丝袜亚洲色图| 成人激情黄色小说| 欧美一区二区久久| |精品福利一区二区三区| 日本欧美一区二区在线观看| 岛国av在线一区| 欧美一级在线观看| 日韩伦理av电影| 国产制服丝袜一区| 欧美日韩性生活| 中文字幕精品综合| 毛片av一区二区| 欧美性videosxxxxx| 国产亚洲欧美日韩日本| 日韩国产高清在线| 91在线视频在线| 久久蜜桃av一区二区天堂 | 3atv在线一区二区三区| 亚洲一区二区三区国产| 大美女一区二区三区| 欧美丰满一区二区免费视频 | 精品99一区二区三区| 亚洲成人一区在线| 99国产精品久| 中文字幕免费不卡| 久久99久久99小草精品免视看| 欧美偷拍一区二区| 亚洲欧美偷拍卡通变态| 国产酒店精品激情| 日韩美女在线视频| 亚洲444eee在线观看| 91免费视频大全| 中文字幕亚洲在| 成人精品国产一区二区4080| 精品久久五月天| 美女一区二区三区| 777午夜精品视频在线播放| 亚洲男人电影天堂| 99久久夜色精品国产网站| 欧美国产在线观看| 丰满亚洲少妇av| 欧美激情一区二区三区四区| 国内偷窥港台综合视频在线播放| 91精品蜜臀在线一区尤物| 亚洲国产综合人成综合网站| 91国在线观看| 亚洲综合视频网| 在线电影院国产精品| 日韩精品一二三| 91精品国产一区二区人妖| 免费观看在线综合色|