sd.h
上传用户:poi891205
上传日期:2013-07-15
资源大小:9745k
文件大小:4k
源码类别:

DVD

开发平台:

C/C++

  1. /**************************************************************************
  2.  *                                                                        *
  3.  *         Copyright (c) 2002 by Sunplus Technology Co., Ltd.             *
  4.  *                                                                        *
  5.  *  This software is copyrighted by and is the property of Sunplus        *
  6.  *  Technology Co., Ltd. All rights are reserved by Sunplus Technology    *
  7.  *  Co., Ltd. This software may only be used in accordance with the       *
  8.  *  corresponding license agreement. Any unauthorized use, duplication,   *
  9.  *  distribution, or disclosure of this software is expressly forbidden.  *
  10.  *                                                                        *
  11.  *  This Copyright notice MUST not be removed or modified without prior   *
  12.  *  written consent of Sunplus Technology Co., Ltd.                       *
  13.  *                                                                        *
  14.  *  Sunplus Technology Co., Ltd. reserves the right to modify this        *
  15.  *  software without notice.                                              *
  16.  *                                                                        *
  17.  *  Sunplus Technology Co., Ltd.                                          *
  18.  *  19, Innovation First Road, Science-Based Industrial Park,             *
  19.  *  Hsin-Chu, Taiwan, R.O.C.                                              *
  20.  **************************************************************************/
  21. /*--------------------------------------------------------------------------
  22. |  File Name   :  sd.c
  23. |
  24. |  Description :  SD and MMC Interface
  25. |
  26. |  Version    :  0.1  
  27. |  Rev Date         Author(s)      Status & Comments
  28. |---------------------------------------------------------------------------------
  29. |  0.1 2004/2/9        wthsin         Creating
  30. |--------------------------------------------------------------------------------*/
  31. #ifndef _HWSD_H_
  32. #define _HWSD_H_
  33. #define SD_SUCCESS 0
  34. #define SD_FAIL  1
  35. #define SD_MODE      0
  36. #define MMC_MODE     1
  37. #define SD_1BIT_MODE 0
  38. #define SD_4BIT_MODE 1
  39. //define clk=108MHz
  40. #define SD_18MHz     2
  41. #define SD_16MHz     3
  42. #define SD_11MHz     4 
  43. #define SD_6MHz      8 
  44. #define SD_375KHz    143
  45. #define RSP_TYPE_R1  0
  46. #define RSP_TYPE_R2  1
  47. #define RSP_TYPE_R3  2
  48. #define RSP_TYPE_R6  3
  49. #define SD_STATE_IDLE    0
  50. #define SD_STATE_READY   1
  51. #define SD_STATE_IDENT   2
  52. #define SD_STATE_STBY    3
  53. #define SD_STATE_TRAN    4
  54. #define SD_STATE_DATA    5
  55. #define SD_STATE_RCV     6
  56. #define SD_STATE_PRG     7
  57. #define SD_STATE_DIS     8
  58. #define SD_STATE_TIMEOUT 9
  59. #define  SD_RSP_TIMEOUT     0x02
  60. #define hwSdCardCrcState()   ( ( (regs0->sdStatus1 & 0xf0) >>4) == 0x02) 
  61. #define hwSdDat0Check()      ( (regs0->sdStatus0&0x20)>>5 )
  62. #define hwSdRxCRC()          (regs0->sdCtrl=0x10)
  63. #define hwSdTimeOut()        ( (regs0->sdStatus0 & 0xC0) >> 6 )
  64.  
  65. /**************************************************************************
  66.  *                          D A T A    T Y P E S                          *
  67.  **************************************************************************/
  68. typedef struct   
  69. {
  70. UINT32    rca32bit;
  71. UINT8     sdOCR[4]; 
  72. UINT8     sdRCA[2]; 
  73. UINT8     sdCID[16];
  74. UINT8     sdCSD[16];
  75. UINT32    nrSects;
  76. UINT32    notSd;
  77. } sdDev_t;
  78. /**************************************************************************
  79.  *               F U N C T I O N    D E C L A R A T I O N S               *
  80.  **************************************************************************/
  81.  
  82. extern void   hwSdInit(UINT32);
  83. extern void   hwSdConfig(UINT32  ,UINT32  ,UINT32  );
  84. extern void   hwSdBlockSizeSet(UINT32);
  85. extern UINT32 hwSdRxResponse(UINT8 *, UINT32);
  86. extern void   hwSdTxDummy();
  87. extern UINT32 hwSdCmdSend(UINT32, UINT32, UINT32, UINT8 *);
  88. extern UINT32 sdIdentify(UINT32, UINT32);
  89. extern UINT32 sdStateCheck();
  90. extern UINT32 sdBusModeSet(UINT32, UINT32, UINT32);
  91. extern UINT32 hwSdIdleWait(void);
  92. extern UINT32 sdStateGet();
  93. extern UINT32 sdTranStateWait();
  94. extern UINT32 sdReadyBitWait(); 
  95. extern UINT32 sdDetect(void);
  96. extern UINT32 sdRead( UINT32, UINT32, UINT8 *);
  97. //extern UINT32 sdWrite(UINT32, UINT32, UINT8 *);
  98. #endif   //_HWSD_H_