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

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   :  ms.h
  23. |
  24. |  Description :  Memory Stick Interface
  25. |
  26. |  Version    :  0.1  
  27. |  Rev Date         Author(s)      Status & Comments
  28. |---------------------------------------------------------------------------------
  29. |  0.1 2004/2/27        kenny         Creating
  30. |--------------------------------------------------------------------------------*/
  31. //Hardware return success,fail,timeout flag
  32. #define HW_CMD_SUCCESS  0x00
  33. #define HW_CMD_FAIL     0x01
  34. #define HW_CMD_TIMEOUT  0x02
  35. #define HW_INT_ERROR    0x04
  36. #define HW_DTER_ERROR 0x05
  37. //MS or MS-PRO Type define
  38. #define MS_MEDIA 0x00
  39. #define MS_PRO_MEDIA 0x08
  40. //define Clock speed
  41. #define MS_CLK_60M      0x00 // 121MHZ/2
  42. #define MS_CLK_30M      0x01 // 121MHZ/4
  43. #define MS_CLK_20M      0x02 // 121MHZ/6
  44. //define MS error clear //for reg 0x0070 bit 4,5,6
  45. #define RST_STATE_MACHINE  0x10
  46. #define CLR_CRC_BUF        0x20
  47. #define CLR_ERR_STATE      0x40
  48. /* MemoryStick(Pro) // TPC Code  Command Sets */
  49. #define READ_LONG_DATA 0x02
  50. #define READ_SHORT_DATA 0x03
  51. #define READ_REG 0x04
  52. #define GET_INT 0x07
  53. #define SET_RW_REG_ADRS 0x08
  54. #define EX_SET_CMD 0x09
  55. #define WRITE_REG 0x0B
  56. #define WRITE_SHORT_DATA 0x0C
  57. #define WRITE_LONG_DATA 0x0D
  58. #define SET_CMD 0x0E
  59. /* MSPRO FLASH COMMAND for SET_CMD */
  60. #define MSPRO_READ_DATA 0x20
  61. #define MSPRO_WRITE_DATA 0x21
  62. #define MSPRO_READ_INFO 0x22
  63. #define MSPRO_WRITE_INFO 0x23
  64. #define MSPRO_READ_ATRB 0x24
  65. #define MSPRO_STOP 0x25
  66. #define MSPRO_ERASE 0x26
  67. #define MSPRO_CHG_CLASS 0x27
  68. #define MSPRO_FORMAT 0x10
  69. #define MSPRO_SLEEP 0x11
  70. /* MS FLASH for SET_CMD COMMAND */
  71. #define MS_READ_DATA  0x20
  72. #define MS_WRITE_DATA  0x21
  73. #define MS_READ_INFO  0x22
  74. #define MS_WRITE_INFO  0x23
  75. #define MS_STOP  0x25
  76. #define MS_ERASE  0x26
  77. #define MS_CHG_CLASS  0x27
  78. #define MS_FORMAT  0x10
  79. #define MS_BLOCK_READ 0xAA
  80. #define MS_BLOCK_WRITE 0x55
  81. #define MS_BLOCK_END 0x33
  82. #define MS_BLOCK_ERASE 0x99
  83. #define MS_FLASH_STOP 0xCC
  84. #define MS_SLEEP 0x5A
  85. #define MS_CLEAR_BUF 0xC3
  86. #define MS_RESET 0x3C
  87. /* MemoryStick(Pro) Register List */
  88. /* read only */
  89. #define REG_INT 0x01 /* interrupt factors */
  90. #define REG_STATUS 0x02 /* status of the system */
  91. #define REG_STATUS2 0x03 /* cmd execution status */
  92. #define REG_TYPE 0x04 /* media type */
  93. #define REG_CATEGORY 0x06 /* media categoary */
  94. #define REG_CLASS 0x07 /* media class */
  95. /*Card Type*/
  96. #define  MS_CARD_NOT_EXIST  0x05
  97. #define  MS_TYPE            0x00/*standard MS card*/
  98. #define  MS_PRO_TYPE_FAIL   0x07
  99. #define  MS_PRO_TYPE        0x08
  100. #if 0
  101. #define MSRWAdrLR 0x7f5a // The starting offset of MS Data Registers to be used 
  102. // for data transfer
  103. #define MSRWAdrHR 0x7f5b // must be zero
  104. #define MSC01R 0x7f5c // MS Config Register 01 bit0~1 SCLK Time Range
  105. #define MSC02R 0x7f5d // MS Config Register 02 (MSDTxBCR+TPC)
  106. #define MSITOLR 0x7f5e // MS Interrupt Time Out Register
  107. #define MSITOHR 0x7f5f
  108. #define MS1R 0x7f60 // MS control and status register
  109. #define MSTBRLR 0x7f61 // BUSY timeout low counter
  110. #define MSTBRHR 0x7f62 // BUSY timeout high counter
  111. #define MSDTxBCR 0x7f63 // TX byte count
  112. #define MSDT00R 0x7f64        // MS Data Register 0
  113. #define MSDT01R 0x7f65        // MS Data Register 1
  114. #define MSDT02R 0x7f66        // MS Data Register 2
  115. #define MSDT03R 0x7f67        // MS Data Register 3
  116. #define MSDT04R 0x7f68        // MS Data Register 4
  117. #define MSDT05R 0x7f69        // MS Data Register 5
  118. #define MSDT06R 0x7f6a        // MS Data Register 6
  119. #define MSDT07R 0x7f6b        // MS Data Register 7
  120. #define MSDT08R 0x7f6c        // MS Data Register 8
  121. #define MSDT09R 0x7f6d        // MS Data Register 9
  122. #define MSDT0AR 0x7f6e        // MS Data Register A
  123. #define MSDT0BR 0x7f6f        // MS Data Register B
  124. #define MSDT0CR 0x7f70        // MS Data Register C
  125. #define MSDT0DR 0x7f71        // MS Data Register D
  126. #define MSDT0ER 0x7f72        // MS Data Register E
  127. #define MSDT0FR 0x7f73        // MS Data Register F
  128.                      
  129. #define MSDT10R 0x7f74        // MS Data Register 0
  130. #define MSDT11R 0x7f75        // MS Data Register 1
  131. #define MSDT12R 0x7f76        // MS Data Register 2
  132. #define MSDT13R 0x7f77        // MS Data Register 3
  133. #define MSDT14R 0x7f78        // MS Data Register 4
  134. #define MSDT15R 0x7f79        // MS Data Register 5
  135. #define MSDT16R 0x7f7a        // MS Data Register 6
  136. #define MSDT17R 0x7f7b        // MS Data Register 7
  137. #define MSDT18R 0x7f7c        // MS Data Register 8
  138. #define MSDT19R 0x7f7d        // MS Data Register 9
  139. #define MSDT1AR 0x7f7e        // MS Data Register A
  140. #define MSDT1BR 0x7f7f        // MS Data Register B
  141. #define MSDT1CR 0x7f80        // MS Data Register C
  142. #define MSDT1DR 0x7f81        // MS Data Register D
  143. #define MSDT1ER 0x7f82        // MS Data Register E
  144. #define MSDT1FR 0x7f83        // MS Data Register F
  145. #define PIO_EN 0x80 // for OR operation
  146. #define DMA_EN 0x40 // for OR operation
  147. #define REG_EN 0x3f // for AND operation
  148. #define CLK2 0x00 // clk/2, 24M
  149. #define CLK3 0x01 // clk/3, 16M
  150. #define CLK4 0x02 // clk/4, 12M
  151. #define CLK8 0x03 // clk/8,  6M
  152. #endif
  153. //define MSC register mapping
  154. //Status Registers
  155. #define INT_R 0x01
  156. #define STS_R0 0x02
  157. #define STS_R1 0x03
  158. //Parameter Registers
  159. #define SYS_P 0x10
  160. #define BLK_ADR_2    0x11
  161. #define BLK_ADR_1    0x12
  162. #define BLK_ADR_0 0x13
  163. #define CMD_P 0x14
  164. extern UINT32 msWaitPollingIdle(UINT32 );
  165. extern UINT32 msWaitPollingCedInt(UINT32 );
  166. extern UINT32 msProWaitPollingInt(UINT32 );
  167. extern void hwMsInit(UINT32 );
  168. extern UINT32 hwMsCmdSet(UINT32 );
  169. extern UINT32 hwMsCrcRead();
  170. extern UINT32 hwMsCrcStatus();
  171. extern void hwMsErrClr(UINT32 );
  172. extern void hwMsReset(void);
  173. extern UINT32 hwMsIntGet(UINT32 *);
  174. extern UINT32 hwMsRegRead(UINT8 , UINT8 *);
  175. extern UINT32 hwMsRegWrite(UINT8 *,UINT32 );
  176. extern UINT32 hwMsSetRwAddr(UINT8 ,UINT8 , UINT8 , UINT8 );
  177. extern UINT32 hwMsStatusRead(UINT32 *);
  178. extern UINT32 hwMsDmaWrite(UINT32 ,UINT32 , UINT32 ,UINT32 ,UINT32 ,UINT8  *,UINT32 ,UINT8  *);
  179. extern UINT32 hwMsDmaRead(UINT32 ,UINT32 ,UINT32 ,UINT32 ,UINT32 ,UINT8  *,UINT32 ,UINT8  *,UINT32 );
  180. extern UINT32 hwMsBlockErase(UINT32 ,UINT32 );
  181. extern UINT32 hwMsReadAtrb(UINT32 , UINT32 ,UINT8  *);