c5509_mmc.h
上传用户:dahaojd
上传日期:2008-01-29
资源大小:14357k
文件大小:4k
源码类别:

DSP编程

开发平台:

C/C++

  1. /*
  2.  *  Copyright 2003 by Texas Instruments Incorporated.
  3.  *  All rights reserved. Property of Texas Instruments Incorporated.
  4.  *  Restricted rights to use, duplicate or disclose this code are
  5.  *  granted through contract.
  6.  *  
  7.  */
  8. /* "@(#) DDK 1.10.00.23 07-02-03 (ddk-b12)" */
  9. /*
  10.  * 
  11.  *  ======== c5509_mmc.h ========
  12.  *
  13.  */
  14. #ifndef __C5509_MMC_H
  15. #define __C5509_MMC_H
  16. #include <csl_mmc.h>
  17. #include <que.h>
  18. #include <media.h>
  19. /* Version number definition */
  20. #define C5509_MMC_VERSION_1  0xAB01
  21. #ifdef __cplusplus
  22. extern "C" {
  23. #endif
  24. /*  Sector Length  */
  25. #define C5509_MMC_SECLEN      256
  26. #define C5509_MMC_MEDIATYPE   (MEDIA_TYPEBASE | 0x0001)
  27. /*  Device Driver Configuration Parameters */
  28. typedef struct _C5509_MMC_DrvrParams
  29. {
  30.     Int mmcCardId;   /* RCA - set by the application */
  31.     Int noChan;      /* maximum number of channels required */
  32.     Int byteOrder;   /* BYTESWAP / BYTENORMAL */
  33.     Int mmcDmaChR;   /* DMA channel number used for READ operations */
  34.     Int mmcDmaChWR;  /* DMA channel number used for WRITE operations */
  35.     Int *bufR;       /* Buffer for DMA read */
  36.     Int *bufWR;      /* Buffer for DMA write */
  37.     struct _C5509_MMC_ChanObj *pChan; /* Array of (noChan number of)
  38.                                        * Channel Objects
  39.                                        */
  40. } C5509_MMC_DrvrParams;
  41. /*  MMC Global Object  */
  42. typedef struct _C5509_MMC_DevObj
  43. {
  44.     Int         mmcDevNum;           /* MMC Device Number */
  45.     C5509_MMC_DrvrParams drvrParams; /* Driver configuration parameters */
  46.     MdUns       blockLen;            /* Size of the block on the media */
  47.     QUE_Obj     pendList;            /* Queue of pending jobs */
  48.     IOM_Packet  *currPacket;         /* Current job */
  49.     MMC_CardObj cslCards;            /* CSL MMC card object */
  50.     MMC_Handle  cslMMC;              /* CSL MMC handle */
  51.     MdUns       buf[C5509_MMC_SECLEN]; /* Sector buffer - for use by driver */
  52.     Int         chOpenCount;         /* Number of logical channels opened
  53.                                       * on this device
  54.                                       */
  55. } C5509_MMC_DevObj;
  56. /*  MMC Channel Object  */
  57. typedef struct _C5509_MMC_ChanObj
  58. {
  59.     Int     mode;         /* IOM_INPUT or IOM_OUTPUT or both */
  60.     Int     error;        /* Indicates the ERROR condition of a Channel */  
  61.     Bool    inUse;        /* Indicates whether the channel is free or not */
  62.     IOM_TiomCallback callback; /* CallBack function to be used */
  63.     Ptr     callbackArg;  /* CallBack arguments to be sent with the function */
  64.     C5509_MMC_DevObj *pHandle; /* Pointer to the Global Object */
  65. } C5509_MMC_ChanObj;
  66. /*  Media Read Write Structure  */
  67. typedef struct _C5509_MMC_RdWrObj
  68. {
  69.     MdUns *buf;         /* Application supplied buffer */
  70.     LgUns sectorNumber; /*
  71.                          * Sector number to be read/written
  72.                          * Corresponds to MEDIA_RdWrObj::address
  73.                          */ 
  74.     LgUns offset;       /* 
  75.                          * Specifies the offset from where data should
  76.                          * be read/written, offset is in WORDs.
  77.                          * Corresponds to MEDIA_RdWrObj::subAddress
  78.                          */
  79.     LgUns length;       /* Specifes the number of words to be read/written */ 
  80.     C5509_MMC_ChanObj *pChan; /* 
  81.                                *  Pointer to the channel for which request 
  82.                                *  has been issued. 
  83.                                */
  84.     Int count;           /* Variable used internally by the driver */ 
  85.     Int stateParameter;  /* Variable used internally by the driver */   
  86.     Int atomicStatus;    /* Variable used internally by the driver */  
  87. } C5509_MMC_RdWrObj;
  88. /*  Bind Params  */
  89. typedef struct _C5509_MMC_DevParams
  90. {
  91.     Int                  versionId;   /* Version number, set by the application */
  92.     MMC_InitObj          devParams;   /* Initialization params for the MMC */
  93.     C5509_MMC_DrvrParams drvrParams;  /* Config params for the MMC driver */
  94.     Uns                  ier0Mask;    /* interrupt mask for IER 0 */
  95.     Uns                  ier1Mask;    /* interrupt mask for IER 0 */
  96. } C5509_MMC_DevParams;
  97. /*  Init function  */
  98. Void C5509_MMC_init();
  99. #ifdef __cplusplus
  100. }
  101. #endif /* extern "C" */
  102. #endif