hv_drv_FlashDB.c 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215
  1. /**
  2. * @file hv_drv_FlashDB.c
  3. * @brief flash driver file for get param .
  4. *
  5. * @author HiView SoC Software Team
  6. * @version 1.0.0
  7. * @date 2023-06-19
  8. * @copyright Copyright(c),2023-6, Hiview Software. All rights reserved.
  9. * </table>
  10. */
  11. #include "hv_comm_DataType.h"
  12. #include "hv_drv_FlashDB.h"
  13. static void Hv_Drv_FlashDB_GetN25Q(FlashAttribute* pstFlashAttr)
  14. {
  15. pstFlashAttr->FlashReadIdStandardCmd = N25Q_ReadIDCmd;
  16. pstFlashAttr->FlashReadIdMultiIoCmd = N25Q_MultiReadIDCmd;
  17. pstFlashAttr->FlashSectionEraseCmd = N25Q_SectorErase;
  18. pstFlashAttr->FlashMultiSectionEraseCmd = N25Q_MultiSectorErase;
  19. pstFlashAttr->FlashChipEraseCmd = N25Q_ChipErase;
  20. pstFlashAttr->FlashProgStandardCmd = N25Q_PageProg;
  21. pstFlashAttr->FlashProgDualCmd = N25Q_PageProgDual;
  22. pstFlashAttr->FlashProgQuadCmd = N25Q_PageProgQuad;
  23. pstFlashAttr->FlashProgQpiCmd = N25Q_PageProgQpi;
  24. pstFlashAttr->FlashReadStandardCmd = N25Q_PageRead;
  25. pstFlashAttr->FlashReadDualCmd = N25Q_PageReadDual;
  26. pstFlashAttr->FlashReadQuadCmd = N25Q_PageReadQuad;
  27. pstFlashAttr->FlashReadQpiCmd = N25Q_PageReadQpi;
  28. pstFlashAttr->FlashReadStatusCmd = N25Q_Flash_ReadStatus;
  29. pstFlashAttr->FlashWriteEnCmd = N25Q_Flash_WriteEn;
  30. pstFlashAttr->FlashInstruWidth = N25Q_Flash_InstruWidth;
  31. pstFlashAttr->FlashCycleDual = N25Q_Flash_WaitCycleDual;
  32. pstFlashAttr->FlashCycleQpi = N25Q_Flash_WaitCycleQpi;
  33. pstFlashAttr->FlashCycleFastDual = N25Q_Flash_WaitCycleFastDual;
  34. pstFlashAttr->FlashCycleFastQuad = N25Q_Flash_WaitCycleFastQuad;
  35. pstFlashAttr->FlashEraseCompltWait = N25Q_Flash_ReadBusyCompltWait;
  36. return;
  37. }
  38. static void Hv_Drv_FlashDB_GetMT25(FlashAttribute* pstFlashAttr)
  39. {
  40. pstFlashAttr->FlashReadIdStandardCmd = MT25_ReadIDCmd;
  41. pstFlashAttr->FlashReadIdMultiIoCmd = MT25_MultiReadIDCmd;
  42. pstFlashAttr->FlashSectionEraseCmd = MT25_SectorErase;
  43. pstFlashAttr->FlashMultiSectionEraseCmd = MT25_MultiSectorErase;
  44. pstFlashAttr->FlashChipEraseCmd = MT25_ChipErase;
  45. pstFlashAttr->FlashProgStandardCmd = MT25_PageProg;
  46. pstFlashAttr->FlashProgDualCmd = MT25_PageProgDual;
  47. pstFlashAttr->FlashProgQuadCmd = MT25_PageProgQuad;
  48. pstFlashAttr->FlashProgQpiCmd = MT25_PageProgQpi;
  49. pstFlashAttr->FlashReadStandardCmd = MT25_PageRead;
  50. pstFlashAttr->FlashReadDualCmd = MT25_PageReadDual;
  51. pstFlashAttr->FlashReadQuadCmd = MT25_PageReadQuad;
  52. pstFlashAttr->FlashReadQpiCmd = MT25_PageReadQpi;
  53. pstFlashAttr->FlashReadStatusCmd = MT25_Flash_ReadStatus;
  54. pstFlashAttr->FlashWriteEnCmd = MT25_Flash_WriteEn;
  55. pstFlashAttr->FlashInstruWidth = MT25_Flash_InstruWidth;
  56. pstFlashAttr->FlashCycleDual = MT25_Flash_WaitCycleDual;
  57. pstFlashAttr->FlashCycleQpi = MT25_Flash_WaitCycleQpi;
  58. pstFlashAttr->FlashCycleFastDual = MT25_Flash_WaitCycleFastDual;
  59. pstFlashAttr->FlashCycleFastQuad = MT25_Flash_WaitCycleFastQuad;
  60. pstFlashAttr->FlashEraseCompltWait = MT25_Flash_ReadBusyCompltWait;
  61. return;
  62. }
  63. static void Hv_Drv_FlashDB_GetP25Q(FlashAttribute* pstFlashAttr)
  64. {
  65. pstFlashAttr->FlashReadIdStandardCmd = P25Q_ReadIDCmd;
  66. pstFlashAttr->FlashReadIdMultiIoCmd = P25Q_ReadIDDual;
  67. pstFlashAttr->FlashSectionEraseCmd = P25Q_SectorErase;
  68. pstFlashAttr->FlashChipEraseCmd = P25Q_ChipErase;
  69. pstFlashAttr->FlashProgStandardCmd = P25Q_PageProg;
  70. pstFlashAttr->FlashProgDualCmd = P25Q_PageProgDual;
  71. pstFlashAttr->FlashProgQuadCmd = P25Q_PageProgQuad;
  72. pstFlashAttr->FlashProgQpiCmd = P25Q_PageProgQpi;
  73. pstFlashAttr->FlashReadStandardCmd = P25Q_PageRead;
  74. pstFlashAttr->FlashReadDualCmd = P25Q_PageReadDual;
  75. pstFlashAttr->FlashReadQuadCmd = P25Q_PageReadQuad;
  76. pstFlashAttr->FlashReadQpiCmd = P25Q_PageReadQpi;
  77. pstFlashAttr->FlashReadStatusCmd = P25Q_Flash_ReadStatus;
  78. pstFlashAttr->FlashWriteEnCmd = P25Q_Flash_WriteEn;
  79. pstFlashAttr->FlashInstruWidth = P25Q_Flash_InstruWidth;
  80. pstFlashAttr->FlashCycleDual = P25Q_Flash_WaitCycleDual;
  81. pstFlashAttr->FlashCycleQpi = P25Q_Flash_WaitCycleQpi;
  82. pstFlashAttr->FlashCycleFastDual = P25Q_Flash_WaitCycleFastDual;
  83. pstFlashAttr->FlashCycleFastQuad = P25Q_Flash_WaitCycleFastQuad;
  84. pstFlashAttr->FlashQuadEnable = P25Q_Flash_QuadEnable;
  85. pstFlashAttr->FlashQuadDisable = P25Q_Flash_QuadDisable;
  86. pstFlashAttr->FlashEraseCompltWait = P25Q_Flash_ReadBusyCompltWait;
  87. return;
  88. }
  89. static void Hv_Drv_FlashDB_GetW25Q(FlashAttribute* pstFlashAttr)
  90. {
  91. pstFlashAttr->FlashReadIdStandardCmd = W25Q_ReadIDCmd;
  92. pstFlashAttr->FlashReadIdMultiIoCmd = W25Q_ReadIDDual;
  93. pstFlashAttr->FlashSectionEraseCmd = W25Q_SectorErase;
  94. pstFlashAttr->FlashMultiSectionEraseCmd = W25Q_MultiSectorErase;
  95. pstFlashAttr->FlashChipEraseCmd = W25Q_ChipErase;
  96. pstFlashAttr->FlashProgStandardCmd = W25Q_PageProg;
  97. pstFlashAttr->FlashProgDualCmd = W25Q_PageProgDual;
  98. pstFlashAttr->FlashProgQuadCmd = W25Q_PageProgQuad;
  99. pstFlashAttr->FlashProgQpiCmd = W25Q_PageProgQpi;
  100. pstFlashAttr->FlashReadStandardCmd = W25Q_PageRead;
  101. pstFlashAttr->FlashReadDualCmd = W25Q_PageReadDual;
  102. pstFlashAttr->FlashReadQuadCmd = W25Q_PageReadQuad;
  103. pstFlashAttr->FlashReadQpiCmd = W25Q_PageReadQpi;
  104. pstFlashAttr->FlashReadStatusCmd = W25Q_Flash_ReadStatus;
  105. pstFlashAttr->FlashWriteEnCmd = W25Q_Flash_WriteEn;
  106. pstFlashAttr->FlashInstruWidth = W25Q_Flash_InstruWidth;
  107. pstFlashAttr->FlashCycleDual = W25Q_Flash_WaitCycleDual;
  108. pstFlashAttr->FlashCycleQpi = W25Q_Flash_WaitCycleQpi;
  109. pstFlashAttr->FlashCycleFastDual = W25Q_Flash_WaitCycleFastDual;
  110. pstFlashAttr->FlashCycleFastQuad = W25Q_Flash_WaitCycleFastQuad;
  111. pstFlashAttr->FlashEraseCompltWait = W25Q_Flash_ReadBusyCompltWait;
  112. return;
  113. }
  114. static void Hv_Drv_FlashDB_GetGD25(FlashAttribute* pstFlashAttr)
  115. {
  116. pstFlashAttr->FlashReadIdStandardCmd = GD25_ReadIDCmd;
  117. pstFlashAttr->FlashSectionEraseCmd = GD25_SectorErase;
  118. pstFlashAttr->FlashMultiSectionEraseCmd = GD25_MultiSectorErase;
  119. pstFlashAttr->FlashChipEraseCmd = GD25_ChipErase;
  120. pstFlashAttr->FlashProgStandardCmd = GD25_PageProg;
  121. pstFlashAttr->FlashProgDualCmd = GD25_PageProgDual;
  122. pstFlashAttr->FlashProgQuadCmd = GD25_PageProgQuad;
  123. pstFlashAttr->FlashProgQpiCmd = GD25_PageProgQpi;
  124. pstFlashAttr->FlashReadStandardCmd = GD25_PageRead;
  125. pstFlashAttr->FlashReadDualCmd = GD25_PageReadDual;
  126. pstFlashAttr->FlashReadQuadCmd = GD25_PageReadQuad;
  127. pstFlashAttr->FlashReadQpiCmd = GD25_PageReadQpi;
  128. pstFlashAttr->FlashReadStatusCmd = GD25_Flash_ReadStatus;
  129. pstFlashAttr->FlashWriteEnCmd = GD25_Flash_WriteEn;
  130. pstFlashAttr->FlashInstruWidth = GD25_Flash_InstruWidth;
  131. pstFlashAttr->FlashCycleDual = GD25_Flash_WaitCycleDual;
  132. pstFlashAttr->FlashCycleQpi = GD25_Flash_WaitCycleQpi;
  133. pstFlashAttr->FlashCycleFastDual = GD25_Flash_WaitCycleFastDual;
  134. pstFlashAttr->FlashCycleFastQuad = GD25_Flash_WaitCycleFastQuad;
  135. pstFlashAttr->FlashQuadEnable = GD25_Flash_QuadEnable;
  136. pstFlashAttr->FlashQuadDisable = GD25_Flash_QuadDisable;
  137. pstFlashAttr->FlashEraseCompltWait = GD25_Flash_ReadBusyCompltWait;
  138. return;
  139. }
  140. static void Hv_Drv_FlashDB_GetMX25(FlashAttribute* pstFlashAttr)
  141. {
  142. pstFlashAttr->FlashReadIdStandardCmd = MX25_ReadIDCmd;
  143. pstFlashAttr->FlashSectionEraseCmd = MX25_SectorErase;
  144. pstFlashAttr->FlashSectionEraseCmd_4ByteAddr = MX25_SectorErase_4ByteAddr;
  145. pstFlashAttr->FlashMultiSectionEraseCmd = MX25_MultiSectorErase;
  146. pstFlashAttr->FlashMultiSectionEraseCmd_4ByteAddr = MX25_MultiSectorErase_4ByteAddr;
  147. pstFlashAttr->FlashChipEraseCmd = MX25_ChipErase;
  148. pstFlashAttr->FlashProgStandardCmd = MX25_PageProg;
  149. pstFlashAttr->FlashProgStandardCmd_4ByteAddr = MX25_PageProg_4ByteAddr;
  150. pstFlashAttr->FlashProgDualCmd = MX25_PageProgDual;
  151. pstFlashAttr->FlashProgQuadCmd = MX25_PageProgQuad;
  152. pstFlashAttr->FlashProgQpiCmd = MX25_PageProgQpi;
  153. pstFlashAttr->FlashProgQpiCmd_4ByteAddr = MX25_PageProgQpi_4ByteAddr;
  154. pstFlashAttr->FlashProg4xIoCmd = MX25_PageProg4xIo;
  155. pstFlashAttr->FlashProg4xIoCmd_4ByteAddr = MX25_PageProg4xIo_4ByteAddr;
  156. pstFlashAttr->FlashReadStandardCmd = MX25_PageRead;
  157. pstFlashAttr->FlashReadStandardCmd_4ByteAddr = MX25_PageRead_4ByteAddr;
  158. pstFlashAttr->FlashReadDualCmd = MX25_PageReadDual;
  159. pstFlashAttr->FlashReadDualCmd_4ByteAddr = MX25_PageReadDual_4ByteAddr;
  160. pstFlashAttr->FlashReadQuadCmd = MX25_PageReadQuad;
  161. pstFlashAttr->FlashReadQpiCmd = MX25_PageReadQpi;
  162. pstFlashAttr->FlashReadQpiCmd_4ByteAddr = MX25_PageReadQpi_4ByteAddr;
  163. pstFlashAttr->FlashRead4xIoCmd = MX25_PageRead4xIo;
  164. pstFlashAttr->FlashRead4xIoCmd_4ByteAddr = MX25_PageRead4xIo_4ByteAddr;
  165. pstFlashAttr->FlashReadStatusCmd = MX25_Flash_ReadStatus;
  166. pstFlashAttr->FlashWriteEnCmd = MX25_Flash_WriteEn;
  167. pstFlashAttr->FlashInstruWidth = MX25_Flash_InstruWidth;
  168. pstFlashAttr->FlashCycleDual = MX25_Flash_WaitCycleDual;
  169. pstFlashAttr->FlashCycleQpi = MX25_Flash_WaitCycleQpi;
  170. pstFlashAttr->FlashCycle4xIo = MX25_Flash_WaitCycle4xIo;
  171. pstFlashAttr->FlashCycleFastDual = MX25_Flash_WaitCycleFastDual;
  172. pstFlashAttr->FlashCycleFastQuad = MX25_Flash_WaitCycleFastQuad;
  173. pstFlashAttr->FlashQuadEnable = MX25_Flash_QuadEnable;
  174. pstFlashAttr->FlashQuadDisable = MX25_Flash_QuadDisable;
  175. pstFlashAttr->FlashEraseCompltWait = MX25_Flash_ReadBusyCompltWait;
  176. return;
  177. }
  178. Status Hv_Drv_FlashDB_GetAttribute(FlashAttribute* pstFlashAttr, FlashModel enFlashModel)
  179. {
  180. if (enFlashModel == FLASH_N25Q)
  181. {
  182. Hv_Drv_FlashDB_GetN25Q(pstFlashAttr);
  183. }
  184. else if (enFlashModel == FLASH_MT25)
  185. {
  186. Hv_Drv_FlashDB_GetMT25(pstFlashAttr);
  187. }
  188. else if (enFlashModel == FLASH_P25Q)
  189. {
  190. Hv_Drv_FlashDB_GetP25Q(pstFlashAttr);
  191. }
  192. else if (enFlashModel == FLASH_W25Q)
  193. {
  194. Hv_Drv_FlashDB_GetW25Q(pstFlashAttr);
  195. }
  196. else if (enFlashModel == FLASH_GD25)
  197. {
  198. Hv_Drv_FlashDB_GetGD25(pstFlashAttr);
  199. }
  200. else if (enFlashModel == FLASH_MX25)
  201. {
  202. Hv_Drv_FlashDB_GetMX25(pstFlashAttr);
  203. }
  204. return HV_SUCCESS;
  205. }