gh_sflash.h 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737
  1. /*!
  2. *******************************************************************************
  3. **
  4. ** \file gh_sflash.h
  5. **
  6. ** \brief Serial Flash Interface.
  7. **
  8. ** Copyright: 2012 - 2013 (C) GoKe Microelectronics ShangHai Branch
  9. **
  10. ** \attention THIS SAMPLE CODE IS PROVIDED AS IS. GOKE MICROELECTRONICS
  11. ** ACCEPTS NO RESPONSIBILITY OR LIABILITY FOR ANY ERRORS OR
  12. ** OMMISSIONS.
  13. **
  14. ** \note Do not modify this file as it is generated automatically.
  15. **
  16. ******************************************************************************/
  17. #ifndef _GH_SFLASH_H
  18. #define _GH_SFLASH_H
  19. #ifdef __LINUX__
  20. #include "reg4linux.h"
  21. #else
  22. #define FIO_ADDRESS(block,address) (address)
  23. #define FIO_MOFFSET(block,moffset) (moffset)
  24. #endif
  25. #ifndef __LINUX__
  26. #include "gtypes.h" /* global type definitions */
  27. #include "gh_lib_cfg.h" /* configuration */
  28. #endif
  29. #define GH_SFLASH_ENABLE_DEBUG_PRINT 0
  30. #ifdef __LINUX__
  31. #define GH_SFLASH_DEBUG_PRINT_FUNCTION printk
  32. #else
  33. #define GH_SFLASH_DEBUG_PRINT_FUNCTION printf
  34. #endif
  35. #ifndef __LINUX__
  36. #if GH_SFLASH_ENABLE_DEBUG_PRINT
  37. #include <stdio.h>
  38. #endif
  39. #endif
  40. /* check configuration */
  41. #ifndef GH_INLINE_LEVEL
  42. #error "GH_INLINE_LEVEL is not defined!"
  43. #endif
  44. #if GH_INLINE_LEVEL > 2
  45. #error "GH_INLINE_LEVEL must be set 0, 1 or 2!"
  46. #endif
  47. #ifndef GH_INLINE
  48. #error "GH_INLINE is not defined!"
  49. #endif
  50. /* disable inlining for debugging */
  51. #ifdef DEBUG
  52. #undef GH_INLINE_LEVEL
  53. #define GH_INLINE_LEVEL 0
  54. #endif
  55. /*----------------------------------------------------------------------------*/
  56. /* registers */
  57. /*----------------------------------------------------------------------------*/
  58. #define REG_SFLASH_DATA FIO_ADDRESS(SFLASH,0x90016000) /* read/write */
  59. #define REG_SFLASH_COMMAND FIO_ADDRESS(SFLASH,0x90016004) /* read/write */
  60. #define REG_SFLASH_CE FIO_ADDRESS(SFLASH,0x90016008) /* read/write */
  61. #define REG_SFLASH_SPEED FIO_ADDRESS(SFLASH,0x9001600C) /* read/write */
  62. /*----------------------------------------------------------------------------*/
  63. /* bit group structures */
  64. /*----------------------------------------------------------------------------*/
  65. typedef union { /* SFLASH_Command */
  66. U32 all;
  67. struct {
  68. U32 code : 8;
  69. U32 sendcmd : 1;
  70. U32 adrnum : 3;
  71. U32 dummynum : 3;
  72. U32 rwn : 2;
  73. U32 cmdmode : 2;
  74. U32 adrmode : 2;
  75. U32 datamode : 2;
  76. U32 datanum : 5;
  77. U32 holdtime : 2;
  78. U32 : 2;
  79. } bitc;
  80. } GH_SFLASH_COMMAND_S;
  81. typedef union { /* SFLASH_CE */
  82. U32 all;
  83. struct {
  84. U32 ce : 1;
  85. U32 wp : 1;
  86. U32 hold : 1;
  87. U32 cemode : 1;
  88. U32 wpmode : 1;
  89. U32 holdmode : 1;
  90. U32 chselect : 1;
  91. U32 : 25;
  92. } bitc;
  93. } GH_SFLASH_CE_S;
  94. typedef union { /* SFLASH_Speed */
  95. U32 all;
  96. struct {
  97. U32 sf_sclk_sel : 3;
  98. U32 : 29;
  99. } bitc;
  100. } GH_SFLASH_SPEED_S;
  101. /*----------------------------------------------------------------------------*/
  102. /* mirror variables */
  103. /*----------------------------------------------------------------------------*/
  104. #ifdef __cplusplus
  105. extern "C" {
  106. #endif
  107. /*----------------------------------------------------------------------------*/
  108. /* register SFLASH_Data (read/write) */
  109. /*----------------------------------------------------------------------------*/
  110. #if GH_INLINE_LEVEL == 0
  111. /*! \brief Writes the register 'SFLASH_Data'. */
  112. void GH_SFLASH_set_Data(U32 data);
  113. /*! \brief Reads the register 'SFLASH_Data'. */
  114. U32 GH_SFLASH_get_Data(void);
  115. #else /* GH_INLINE_LEVEL == 0 */
  116. GH_INLINE void GH_SFLASH_set_Data(U32 data)
  117. {
  118. *(volatile U32 *)REG_SFLASH_DATA = data;
  119. #if GH_SFLASH_ENABLE_DEBUG_PRINT
  120. GH_SFLASH_DEBUG_PRINT_FUNCTION( "WRREG(0x%08x,0x%08x); \\\\ [GH_SFLASH_set_Data] <-- 0x%08x\n",
  121. REG_SFLASH_DATA,data,data);
  122. #endif
  123. }
  124. GH_INLINE U32 GH_SFLASH_get_Data(void)
  125. {
  126. U32 value = (*(volatile U32 *)REG_SFLASH_DATA);
  127. #if GH_SFLASH_ENABLE_DEBUG_PRINT
  128. GH_SFLASH_DEBUG_PRINT_FUNCTION( "value = RDREG(0x%08x); \\\\ [GH_SFLASH_get_Data] --> 0x%08x\n",
  129. REG_SFLASH_DATA,value);
  130. #endif
  131. return value;
  132. }
  133. #endif /* GH_INLINE_LEVEL == 0 */
  134. /*----------------------------------------------------------------------------*/
  135. /* register SFLASH_Command (read/write) */
  136. /*----------------------------------------------------------------------------*/
  137. #if GH_INLINE_LEVEL == 0
  138. /*! \brief Writes the register 'SFLASH_Command'. */
  139. void GH_SFLASH_set_Command(U32 data);
  140. /*! \brief Reads the register 'SFLASH_Command'. */
  141. U32 GH_SFLASH_get_Command(void);
  142. /*! \brief Writes the bit group 'CODE' of register 'SFLASH_Command'. */
  143. void GH_SFLASH_set_Command_CODE(U8 data);
  144. /*! \brief Reads the bit group 'CODE' of register 'SFLASH_Command'. */
  145. U8 GH_SFLASH_get_Command_CODE(void);
  146. /*! \brief Writes the bit group 'SENDCMD' of register 'SFLASH_Command'. */
  147. void GH_SFLASH_set_Command_SENDCMD(U8 data);
  148. /*! \brief Reads the bit group 'SENDCMD' of register 'SFLASH_Command'. */
  149. U8 GH_SFLASH_get_Command_SENDCMD(void);
  150. /*! \brief Writes the bit group 'ADRNUM' of register 'SFLASH_Command'. */
  151. void GH_SFLASH_set_Command_ADRNUM(U8 data);
  152. /*! \brief Reads the bit group 'ADRNUM' of register 'SFLASH_Command'. */
  153. U8 GH_SFLASH_get_Command_ADRNUM(void);
  154. /*! \brief Writes the bit group 'DUMMYNUM' of register 'SFLASH_Command'. */
  155. void GH_SFLASH_set_Command_DUMMYNUM(U8 data);
  156. /*! \brief Reads the bit group 'DUMMYNUM' of register 'SFLASH_Command'. */
  157. U8 GH_SFLASH_get_Command_DUMMYNUM(void);
  158. /*! \brief Writes the bit group 'RWN' of register 'SFLASH_Command'. */
  159. void GH_SFLASH_set_Command_RWN(U8 data);
  160. /*! \brief Reads the bit group 'RWN' of register 'SFLASH_Command'. */
  161. U8 GH_SFLASH_get_Command_RWN(void);
  162. /*! \brief Writes the bit group 'CMDMODE' of register 'SFLASH_Command'. */
  163. void GH_SFLASH_set_Command_CMDMODE(U8 data);
  164. /*! \brief Reads the bit group 'CMDMODE' of register 'SFLASH_Command'. */
  165. U8 GH_SFLASH_get_Command_CMDMODE(void);
  166. /*! \brief Writes the bit group 'ADRMODE' of register 'SFLASH_Command'. */
  167. void GH_SFLASH_set_Command_ADRMODE(U8 data);
  168. /*! \brief Reads the bit group 'ADRMODE' of register 'SFLASH_Command'. */
  169. U8 GH_SFLASH_get_Command_ADRMODE(void);
  170. /*! \brief Writes the bit group 'DATAMODE' of register 'SFLASH_Command'. */
  171. void GH_SFLASH_set_Command_DATAMODE(U8 data);
  172. /*! \brief Reads the bit group 'DATAMODE' of register 'SFLASH_Command'. */
  173. U8 GH_SFLASH_get_Command_DATAMODE(void);
  174. /*! \brief Writes the bit group 'DATANUM' of register 'SFLASH_Command'. */
  175. void GH_SFLASH_set_Command_DATANUM(U8 data);
  176. /*! \brief Reads the bit group 'DATANUM' of register 'SFLASH_Command'. */
  177. U8 GH_SFLASH_get_Command_DATANUM(void);
  178. /*! \brief Writes the bit group 'HOLDTIME' of register 'SFLASH_Command'. */
  179. void GH_SFLASH_set_Command_HOLDTIME(U8 data);
  180. /*! \brief Reads the bit group 'HOLDTIME' of register 'SFLASH_Command'. */
  181. U8 GH_SFLASH_get_Command_HOLDTIME(void);
  182. #else /* GH_INLINE_LEVEL == 0 */
  183. GH_INLINE void GH_SFLASH_set_Command(U32 data)
  184. {
  185. *(volatile U32 *)REG_SFLASH_COMMAND = data;
  186. #if GH_SFLASH_ENABLE_DEBUG_PRINT
  187. GH_SFLASH_DEBUG_PRINT_FUNCTION( "WRREG(0x%08x,0x%08x); \\\\ [GH_SFLASH_set_Command] <-- 0x%08x\n",
  188. REG_SFLASH_COMMAND,data,data);
  189. #endif
  190. }
  191. GH_INLINE U32 GH_SFLASH_get_Command(void)
  192. {
  193. U32 value = (*(volatile U32 *)REG_SFLASH_COMMAND);
  194. #if GH_SFLASH_ENABLE_DEBUG_PRINT
  195. GH_SFLASH_DEBUG_PRINT_FUNCTION( "value = RDREG(0x%08x); \\\\ [GH_SFLASH_get_Command] --> 0x%08x\n",
  196. REG_SFLASH_COMMAND,value);
  197. #endif
  198. return value;
  199. }
  200. GH_INLINE void GH_SFLASH_set_Command_CODE(U8 data)
  201. {
  202. GH_SFLASH_COMMAND_S d;
  203. d.all = *(volatile U32 *)REG_SFLASH_COMMAND;
  204. d.bitc.code = data;
  205. *(volatile U32 *)REG_SFLASH_COMMAND = d.all;
  206. #if GH_SFLASH_ENABLE_DEBUG_PRINT
  207. GH_SFLASH_DEBUG_PRINT_FUNCTION( "WRREG(0x%08x,0x%08x); \\\\ [GH_SFLASH_set_Command_CODE] <-- 0x%08x\n",
  208. REG_SFLASH_COMMAND,d.all,d.all);
  209. #endif
  210. }
  211. GH_INLINE U8 GH_SFLASH_get_Command_CODE(void)
  212. {
  213. GH_SFLASH_COMMAND_S tmp_value;
  214. U32 value = (*(volatile U32 *)REG_SFLASH_COMMAND);
  215. tmp_value.all = value;
  216. #if GH_SFLASH_ENABLE_DEBUG_PRINT
  217. GH_SFLASH_DEBUG_PRINT_FUNCTION( "value = RDREG(0x%08x); \\\\ [GH_SFLASH_get_Command_CODE] --> 0x%08x\n",
  218. REG_SFLASH_COMMAND,value);
  219. #endif
  220. return tmp_value.bitc.code;
  221. }
  222. GH_INLINE void GH_SFLASH_set_Command_SENDCMD(U8 data)
  223. {
  224. GH_SFLASH_COMMAND_S d;
  225. d.all = *(volatile U32 *)REG_SFLASH_COMMAND;
  226. d.bitc.sendcmd = data;
  227. *(volatile U32 *)REG_SFLASH_COMMAND = d.all;
  228. #if GH_SFLASH_ENABLE_DEBUG_PRINT
  229. GH_SFLASH_DEBUG_PRINT_FUNCTION( "WRREG(0x%08x,0x%08x); \\\\ [GH_SFLASH_set_Command_SENDCMD] <-- 0x%08x\n",
  230. REG_SFLASH_COMMAND,d.all,d.all);
  231. #endif
  232. }
  233. GH_INLINE U8 GH_SFLASH_get_Command_SENDCMD(void)
  234. {
  235. GH_SFLASH_COMMAND_S tmp_value;
  236. U32 value = (*(volatile U32 *)REG_SFLASH_COMMAND);
  237. tmp_value.all = value;
  238. #if GH_SFLASH_ENABLE_DEBUG_PRINT
  239. GH_SFLASH_DEBUG_PRINT_FUNCTION( "value = RDREG(0x%08x); \\\\ [GH_SFLASH_get_Command_SENDCMD] --> 0x%08x\n",
  240. REG_SFLASH_COMMAND,value);
  241. #endif
  242. return tmp_value.bitc.sendcmd;
  243. }
  244. GH_INLINE void GH_SFLASH_set_Command_ADRNUM(U8 data)
  245. {
  246. GH_SFLASH_COMMAND_S d;
  247. d.all = *(volatile U32 *)REG_SFLASH_COMMAND;
  248. d.bitc.adrnum = data;
  249. *(volatile U32 *)REG_SFLASH_COMMAND = d.all;
  250. #if GH_SFLASH_ENABLE_DEBUG_PRINT
  251. GH_SFLASH_DEBUG_PRINT_FUNCTION( "WRREG(0x%08x,0x%08x); \\\\ [GH_SFLASH_set_Command_ADRNUM] <-- 0x%08x\n",
  252. REG_SFLASH_COMMAND,d.all,d.all);
  253. #endif
  254. }
  255. GH_INLINE U8 GH_SFLASH_get_Command_ADRNUM(void)
  256. {
  257. GH_SFLASH_COMMAND_S tmp_value;
  258. U32 value = (*(volatile U32 *)REG_SFLASH_COMMAND);
  259. tmp_value.all = value;
  260. #if GH_SFLASH_ENABLE_DEBUG_PRINT
  261. GH_SFLASH_DEBUG_PRINT_FUNCTION( "value = RDREG(0x%08x); \\\\ [GH_SFLASH_get_Command_ADRNUM] --> 0x%08x\n",
  262. REG_SFLASH_COMMAND,value);
  263. #endif
  264. return tmp_value.bitc.adrnum;
  265. }
  266. GH_INLINE void GH_SFLASH_set_Command_DUMMYNUM(U8 data)
  267. {
  268. GH_SFLASH_COMMAND_S d;
  269. d.all = *(volatile U32 *)REG_SFLASH_COMMAND;
  270. d.bitc.dummynum = data;
  271. *(volatile U32 *)REG_SFLASH_COMMAND = d.all;
  272. #if GH_SFLASH_ENABLE_DEBUG_PRINT
  273. GH_SFLASH_DEBUG_PRINT_FUNCTION( "WRREG(0x%08x,0x%08x); \\\\ [GH_SFLASH_set_Command_DUMMYNUM] <-- 0x%08x\n",
  274. REG_SFLASH_COMMAND,d.all,d.all);
  275. #endif
  276. }
  277. GH_INLINE U8 GH_SFLASH_get_Command_DUMMYNUM(void)
  278. {
  279. GH_SFLASH_COMMAND_S tmp_value;
  280. U32 value = (*(volatile U32 *)REG_SFLASH_COMMAND);
  281. tmp_value.all = value;
  282. #if GH_SFLASH_ENABLE_DEBUG_PRINT
  283. GH_SFLASH_DEBUG_PRINT_FUNCTION( "value = RDREG(0x%08x); \\\\ [GH_SFLASH_get_Command_DUMMYNUM] --> 0x%08x\n",
  284. REG_SFLASH_COMMAND,value);
  285. #endif
  286. return tmp_value.bitc.dummynum;
  287. }
  288. GH_INLINE void GH_SFLASH_set_Command_RWN(U8 data)
  289. {
  290. GH_SFLASH_COMMAND_S d;
  291. d.all = *(volatile U32 *)REG_SFLASH_COMMAND;
  292. d.bitc.rwn = data;
  293. *(volatile U32 *)REG_SFLASH_COMMAND = d.all;
  294. #if GH_SFLASH_ENABLE_DEBUG_PRINT
  295. GH_SFLASH_DEBUG_PRINT_FUNCTION( "WRREG(0x%08x,0x%08x); \\\\ [GH_SFLASH_set_Command_RWN] <-- 0x%08x\n",
  296. REG_SFLASH_COMMAND,d.all,d.all);
  297. #endif
  298. }
  299. GH_INLINE U8 GH_SFLASH_get_Command_RWN(void)
  300. {
  301. GH_SFLASH_COMMAND_S tmp_value;
  302. U32 value = (*(volatile U32 *)REG_SFLASH_COMMAND);
  303. tmp_value.all = value;
  304. #if GH_SFLASH_ENABLE_DEBUG_PRINT
  305. GH_SFLASH_DEBUG_PRINT_FUNCTION( "value = RDREG(0x%08x); \\\\ [GH_SFLASH_get_Command_RWN] --> 0x%08x\n",
  306. REG_SFLASH_COMMAND,value);
  307. #endif
  308. return tmp_value.bitc.rwn;
  309. }
  310. GH_INLINE void GH_SFLASH_set_Command_CMDMODE(U8 data)
  311. {
  312. GH_SFLASH_COMMAND_S d;
  313. d.all = *(volatile U32 *)REG_SFLASH_COMMAND;
  314. d.bitc.cmdmode = data;
  315. *(volatile U32 *)REG_SFLASH_COMMAND = d.all;
  316. #if GH_SFLASH_ENABLE_DEBUG_PRINT
  317. GH_SFLASH_DEBUG_PRINT_FUNCTION( "WRREG(0x%08x,0x%08x); \\\\ [GH_SFLASH_set_Command_CMDMODE] <-- 0x%08x\n",
  318. REG_SFLASH_COMMAND,d.all,d.all);
  319. #endif
  320. }
  321. GH_INLINE U8 GH_SFLASH_get_Command_CMDMODE(void)
  322. {
  323. GH_SFLASH_COMMAND_S tmp_value;
  324. U32 value = (*(volatile U32 *)REG_SFLASH_COMMAND);
  325. tmp_value.all = value;
  326. #if GH_SFLASH_ENABLE_DEBUG_PRINT
  327. GH_SFLASH_DEBUG_PRINT_FUNCTION( "value = RDREG(0x%08x); \\\\ [GH_SFLASH_get_Command_CMDMODE] --> 0x%08x\n",
  328. REG_SFLASH_COMMAND,value);
  329. #endif
  330. return tmp_value.bitc.cmdmode;
  331. }
  332. GH_INLINE void GH_SFLASH_set_Command_ADRMODE(U8 data)
  333. {
  334. GH_SFLASH_COMMAND_S d;
  335. d.all = *(volatile U32 *)REG_SFLASH_COMMAND;
  336. d.bitc.adrmode = data;
  337. *(volatile U32 *)REG_SFLASH_COMMAND = d.all;
  338. #if GH_SFLASH_ENABLE_DEBUG_PRINT
  339. GH_SFLASH_DEBUG_PRINT_FUNCTION( "WRREG(0x%08x,0x%08x); \\\\ [GH_SFLASH_set_Command_ADRMODE] <-- 0x%08x\n",
  340. REG_SFLASH_COMMAND,d.all,d.all);
  341. #endif
  342. }
  343. GH_INLINE U8 GH_SFLASH_get_Command_ADRMODE(void)
  344. {
  345. GH_SFLASH_COMMAND_S tmp_value;
  346. U32 value = (*(volatile U32 *)REG_SFLASH_COMMAND);
  347. tmp_value.all = value;
  348. #if GH_SFLASH_ENABLE_DEBUG_PRINT
  349. GH_SFLASH_DEBUG_PRINT_FUNCTION( "value = RDREG(0x%08x); \\\\ [GH_SFLASH_get_Command_ADRMODE] --> 0x%08x\n",
  350. REG_SFLASH_COMMAND,value);
  351. #endif
  352. return tmp_value.bitc.adrmode;
  353. }
  354. GH_INLINE void GH_SFLASH_set_Command_DATAMODE(U8 data)
  355. {
  356. GH_SFLASH_COMMAND_S d;
  357. d.all = *(volatile U32 *)REG_SFLASH_COMMAND;
  358. d.bitc.datamode = data;
  359. *(volatile U32 *)REG_SFLASH_COMMAND = d.all;
  360. #if GH_SFLASH_ENABLE_DEBUG_PRINT
  361. GH_SFLASH_DEBUG_PRINT_FUNCTION( "WRREG(0x%08x,0x%08x); \\\\ [GH_SFLASH_set_Command_DATAMODE] <-- 0x%08x\n",
  362. REG_SFLASH_COMMAND,d.all,d.all);
  363. #endif
  364. }
  365. GH_INLINE U8 GH_SFLASH_get_Command_DATAMODE(void)
  366. {
  367. GH_SFLASH_COMMAND_S tmp_value;
  368. U32 value = (*(volatile U32 *)REG_SFLASH_COMMAND);
  369. tmp_value.all = value;
  370. #if GH_SFLASH_ENABLE_DEBUG_PRINT
  371. GH_SFLASH_DEBUG_PRINT_FUNCTION( "value = RDREG(0x%08x); \\\\ [GH_SFLASH_get_Command_DATAMODE] --> 0x%08x\n",
  372. REG_SFLASH_COMMAND,value);
  373. #endif
  374. return tmp_value.bitc.datamode;
  375. }
  376. GH_INLINE void GH_SFLASH_set_Command_DATANUM(U8 data)
  377. {
  378. GH_SFLASH_COMMAND_S d;
  379. d.all = *(volatile U32 *)REG_SFLASH_COMMAND;
  380. d.bitc.datanum = data;
  381. *(volatile U32 *)REG_SFLASH_COMMAND = d.all;
  382. #if GH_SFLASH_ENABLE_DEBUG_PRINT
  383. GH_SFLASH_DEBUG_PRINT_FUNCTION( "WRREG(0x%08x,0x%08x); \\\\ [GH_SFLASH_set_Command_DATANUM] <-- 0x%08x\n",
  384. REG_SFLASH_COMMAND,d.all,d.all);
  385. #endif
  386. }
  387. GH_INLINE U8 GH_SFLASH_get_Command_DATANUM(void)
  388. {
  389. GH_SFLASH_COMMAND_S tmp_value;
  390. U32 value = (*(volatile U32 *)REG_SFLASH_COMMAND);
  391. tmp_value.all = value;
  392. #if GH_SFLASH_ENABLE_DEBUG_PRINT
  393. GH_SFLASH_DEBUG_PRINT_FUNCTION( "value = RDREG(0x%08x); \\\\ [GH_SFLASH_get_Command_DATANUM] --> 0x%08x\n",
  394. REG_SFLASH_COMMAND,value);
  395. #endif
  396. return tmp_value.bitc.datanum;
  397. }
  398. GH_INLINE void GH_SFLASH_set_Command_HOLDTIME(U8 data)
  399. {
  400. GH_SFLASH_COMMAND_S d;
  401. d.all = *(volatile U32 *)REG_SFLASH_COMMAND;
  402. d.bitc.holdtime = data;
  403. *(volatile U32 *)REG_SFLASH_COMMAND = d.all;
  404. #if GH_SFLASH_ENABLE_DEBUG_PRINT
  405. GH_SFLASH_DEBUG_PRINT_FUNCTION( "WRREG(0x%08x,0x%08x); \\\\ [GH_SFLASH_set_Command_HOLDTIME] <-- 0x%08x\n",
  406. REG_SFLASH_COMMAND,d.all,d.all);
  407. #endif
  408. }
  409. GH_INLINE U8 GH_SFLASH_get_Command_HOLDTIME(void)
  410. {
  411. GH_SFLASH_COMMAND_S tmp_value;
  412. U32 value = (*(volatile U32 *)REG_SFLASH_COMMAND);
  413. tmp_value.all = value;
  414. #if GH_SFLASH_ENABLE_DEBUG_PRINT
  415. GH_SFLASH_DEBUG_PRINT_FUNCTION( "value = RDREG(0x%08x); \\\\ [GH_SFLASH_get_Command_HOLDTIME] --> 0x%08x\n",
  416. REG_SFLASH_COMMAND,value);
  417. #endif
  418. return tmp_value.bitc.holdtime;
  419. }
  420. #endif /* GH_INLINE_LEVEL == 0 */
  421. /*----------------------------------------------------------------------------*/
  422. /* register SFLASH_CE (read/write) */
  423. /*----------------------------------------------------------------------------*/
  424. #if GH_INLINE_LEVEL == 0
  425. /*! \brief Writes the register 'SFLASH_CE'. */
  426. void GH_SFLASH_set_CE(U32 data);
  427. /*! \brief Reads the register 'SFLASH_CE'. */
  428. U32 GH_SFLASH_get_CE(void);
  429. /*! \brief Writes the bit group 'CE' of register 'SFLASH_CE'. */
  430. void GH_SFLASH_set_CE_CE(U8 data);
  431. /*! \brief Reads the bit group 'CE' of register 'SFLASH_CE'. */
  432. U8 GH_SFLASH_get_CE_CE(void);
  433. /*! \brief Writes the bit group 'WP' of register 'SFLASH_CE'. */
  434. void GH_SFLASH_set_CE_WP(U8 data);
  435. /*! \brief Reads the bit group 'WP' of register 'SFLASH_CE'. */
  436. U8 GH_SFLASH_get_CE_WP(void);
  437. /*! \brief Writes the bit group 'HOLD' of register 'SFLASH_CE'. */
  438. void GH_SFLASH_set_CE_HOLD(U8 data);
  439. /*! \brief Reads the bit group 'HOLD' of register 'SFLASH_CE'. */
  440. U8 GH_SFLASH_get_CE_HOLD(void);
  441. /*! \brief Writes the bit group 'CEMODE' of register 'SFLASH_CE'. */
  442. void GH_SFLASH_set_CE_CEMODE(U8 data);
  443. /*! \brief Reads the bit group 'CEMODE' of register 'SFLASH_CE'. */
  444. U8 GH_SFLASH_get_CE_CEMODE(void);
  445. /*! \brief Writes the bit group 'WPMODE' of register 'SFLASH_CE'. */
  446. void GH_SFLASH_set_CE_WPMODE(U8 data);
  447. /*! \brief Reads the bit group 'WPMODE' of register 'SFLASH_CE'. */
  448. U8 GH_SFLASH_get_CE_WPMODE(void);
  449. /*! \brief Writes the bit group 'HOLDMODE' of register 'SFLASH_CE'. */
  450. void GH_SFLASH_set_CE_HOLDMODE(U8 data);
  451. /*! \brief Reads the bit group 'HOLDMODE' of register 'SFLASH_CE'. */
  452. U8 GH_SFLASH_get_CE_HOLDMODE(void);
  453. /*! \brief Writes the bit group 'CHSELECT' of register 'SFLASH_CE'. */
  454. void GH_SFLASH_set_CE_CHSELECT(U8 data);
  455. /*! \brief Reads the bit group 'CHSELECT' of register 'SFLASH_CE'. */
  456. U8 GH_SFLASH_get_CE_CHSELECT(void);
  457. #else /* GH_INLINE_LEVEL == 0 */
  458. GH_INLINE void GH_SFLASH_set_CE(U32 data)
  459. {
  460. *(volatile U32 *)REG_SFLASH_CE = data;
  461. #if GH_SFLASH_ENABLE_DEBUG_PRINT
  462. GH_SFLASH_DEBUG_PRINT_FUNCTION( "WRREG(0x%08x,0x%08x); \\\\ [GH_SFLASH_set_CE] <-- 0x%08x\n",
  463. REG_SFLASH_CE,data,data);
  464. #endif
  465. }
  466. GH_INLINE U32 GH_SFLASH_get_CE(void)
  467. {
  468. U32 value = (*(volatile U32 *)REG_SFLASH_CE);
  469. #if GH_SFLASH_ENABLE_DEBUG_PRINT
  470. GH_SFLASH_DEBUG_PRINT_FUNCTION( "value = RDREG(0x%08x); \\\\ [GH_SFLASH_get_CE] --> 0x%08x\n",
  471. REG_SFLASH_CE,value);
  472. #endif
  473. return value;
  474. }
  475. GH_INLINE void GH_SFLASH_set_CE_CE(U8 data)
  476. {
  477. GH_SFLASH_CE_S d;
  478. d.all = *(volatile U32 *)REG_SFLASH_CE;
  479. d.bitc.ce = data;
  480. *(volatile U32 *)REG_SFLASH_CE = d.all;
  481. #if GH_SFLASH_ENABLE_DEBUG_PRINT
  482. GH_SFLASH_DEBUG_PRINT_FUNCTION( "WRREG(0x%08x,0x%08x); \\\\ [GH_SFLASH_set_CE_CE] <-- 0x%08x\n",
  483. REG_SFLASH_CE,d.all,d.all);
  484. #endif
  485. }
  486. GH_INLINE U8 GH_SFLASH_get_CE_CE(void)
  487. {
  488. GH_SFLASH_CE_S tmp_value;
  489. U32 value = (*(volatile U32 *)REG_SFLASH_CE);
  490. tmp_value.all = value;
  491. #if GH_SFLASH_ENABLE_DEBUG_PRINT
  492. GH_SFLASH_DEBUG_PRINT_FUNCTION( "value = RDREG(0x%08x); \\\\ [GH_SFLASH_get_CE_CE] --> 0x%08x\n",
  493. REG_SFLASH_CE,value);
  494. #endif
  495. return tmp_value.bitc.ce;
  496. }
  497. GH_INLINE void GH_SFLASH_set_CE_WP(U8 data)
  498. {
  499. GH_SFLASH_CE_S d;
  500. d.all = *(volatile U32 *)REG_SFLASH_CE;
  501. d.bitc.wp = data;
  502. *(volatile U32 *)REG_SFLASH_CE = d.all;
  503. #if GH_SFLASH_ENABLE_DEBUG_PRINT
  504. GH_SFLASH_DEBUG_PRINT_FUNCTION( "WRREG(0x%08x,0x%08x); \\\\ [GH_SFLASH_set_CE_WP] <-- 0x%08x\n",
  505. REG_SFLASH_CE,d.all,d.all);
  506. #endif
  507. }
  508. GH_INLINE U8 GH_SFLASH_get_CE_WP(void)
  509. {
  510. GH_SFLASH_CE_S tmp_value;
  511. U32 value = (*(volatile U32 *)REG_SFLASH_CE);
  512. tmp_value.all = value;
  513. #if GH_SFLASH_ENABLE_DEBUG_PRINT
  514. GH_SFLASH_DEBUG_PRINT_FUNCTION( "value = RDREG(0x%08x); \\\\ [GH_SFLASH_get_CE_WP] --> 0x%08x\n",
  515. REG_SFLASH_CE,value);
  516. #endif
  517. return tmp_value.bitc.wp;
  518. }
  519. GH_INLINE void GH_SFLASH_set_CE_HOLD(U8 data)
  520. {
  521. GH_SFLASH_CE_S d;
  522. d.all = *(volatile U32 *)REG_SFLASH_CE;
  523. d.bitc.hold = data;
  524. *(volatile U32 *)REG_SFLASH_CE = d.all;
  525. #if GH_SFLASH_ENABLE_DEBUG_PRINT
  526. GH_SFLASH_DEBUG_PRINT_FUNCTION( "WRREG(0x%08x,0x%08x); \\\\ [GH_SFLASH_set_CE_HOLD] <-- 0x%08x\n",
  527. REG_SFLASH_CE,d.all,d.all);
  528. #endif
  529. }
  530. GH_INLINE U8 GH_SFLASH_get_CE_HOLD(void)
  531. {
  532. GH_SFLASH_CE_S tmp_value;
  533. U32 value = (*(volatile U32 *)REG_SFLASH_CE);
  534. tmp_value.all = value;
  535. #if GH_SFLASH_ENABLE_DEBUG_PRINT
  536. GH_SFLASH_DEBUG_PRINT_FUNCTION( "value = RDREG(0x%08x); \\\\ [GH_SFLASH_get_CE_HOLD] --> 0x%08x\n",
  537. REG_SFLASH_CE,value);
  538. #endif
  539. return tmp_value.bitc.hold;
  540. }
  541. GH_INLINE void GH_SFLASH_set_CE_CEMODE(U8 data)
  542. {
  543. GH_SFLASH_CE_S d;
  544. d.all = *(volatile U32 *)REG_SFLASH_CE;
  545. d.bitc.cemode = data;
  546. *(volatile U32 *)REG_SFLASH_CE = d.all;
  547. #if GH_SFLASH_ENABLE_DEBUG_PRINT
  548. GH_SFLASH_DEBUG_PRINT_FUNCTION( "WRREG(0x%08x,0x%08x); \\\\ [GH_SFLASH_set_CE_CEMODE] <-- 0x%08x\n",
  549. REG_SFLASH_CE,d.all,d.all);
  550. #endif
  551. }
  552. GH_INLINE U8 GH_SFLASH_get_CE_CEMODE(void)
  553. {
  554. GH_SFLASH_CE_S tmp_value;
  555. U32 value = (*(volatile U32 *)REG_SFLASH_CE);
  556. tmp_value.all = value;
  557. #if GH_SFLASH_ENABLE_DEBUG_PRINT
  558. GH_SFLASH_DEBUG_PRINT_FUNCTION( "value = RDREG(0x%08x); \\\\ [GH_SFLASH_get_CE_CEMODE] --> 0x%08x\n",
  559. REG_SFLASH_CE,value);
  560. #endif
  561. return tmp_value.bitc.cemode;
  562. }
  563. GH_INLINE void GH_SFLASH_set_CE_WPMODE(U8 data)
  564. {
  565. GH_SFLASH_CE_S d;
  566. d.all = *(volatile U32 *)REG_SFLASH_CE;
  567. d.bitc.wpmode = data;
  568. *(volatile U32 *)REG_SFLASH_CE = d.all;
  569. #if GH_SFLASH_ENABLE_DEBUG_PRINT
  570. GH_SFLASH_DEBUG_PRINT_FUNCTION( "WRREG(0x%08x,0x%08x); \\\\ [GH_SFLASH_set_CE_WPMODE] <-- 0x%08x\n",
  571. REG_SFLASH_CE,d.all,d.all);
  572. #endif
  573. }
  574. GH_INLINE U8 GH_SFLASH_get_CE_WPMODE(void)
  575. {
  576. GH_SFLASH_CE_S tmp_value;
  577. U32 value = (*(volatile U32 *)REG_SFLASH_CE);
  578. tmp_value.all = value;
  579. #if GH_SFLASH_ENABLE_DEBUG_PRINT
  580. GH_SFLASH_DEBUG_PRINT_FUNCTION( "value = RDREG(0x%08x); \\\\ [GH_SFLASH_get_CE_WPMODE] --> 0x%08x\n",
  581. REG_SFLASH_CE,value);
  582. #endif
  583. return tmp_value.bitc.wpmode;
  584. }
  585. GH_INLINE void GH_SFLASH_set_CE_HOLDMODE(U8 data)
  586. {
  587. GH_SFLASH_CE_S d;
  588. d.all = *(volatile U32 *)REG_SFLASH_CE;
  589. d.bitc.holdmode = data;
  590. *(volatile U32 *)REG_SFLASH_CE = d.all;
  591. #if GH_SFLASH_ENABLE_DEBUG_PRINT
  592. GH_SFLASH_DEBUG_PRINT_FUNCTION( "WRREG(0x%08x,0x%08x); \\\\ [GH_SFLASH_set_CE_HOLDMODE] <-- 0x%08x\n",
  593. REG_SFLASH_CE,d.all,d.all);
  594. #endif
  595. }
  596. GH_INLINE U8 GH_SFLASH_get_CE_HOLDMODE(void)
  597. {
  598. GH_SFLASH_CE_S tmp_value;
  599. U32 value = (*(volatile U32 *)REG_SFLASH_CE);
  600. tmp_value.all = value;
  601. #if GH_SFLASH_ENABLE_DEBUG_PRINT
  602. GH_SFLASH_DEBUG_PRINT_FUNCTION( "value = RDREG(0x%08x); \\\\ [GH_SFLASH_get_CE_HOLDMODE] --> 0x%08x\n",
  603. REG_SFLASH_CE,value);
  604. #endif
  605. return tmp_value.bitc.holdmode;
  606. }
  607. GH_INLINE void GH_SFLASH_set_CE_CHSELECT(U8 data)
  608. {
  609. GH_SFLASH_CE_S d;
  610. d.all = *(volatile U32 *)REG_SFLASH_CE;
  611. d.bitc.chselect = data;
  612. *(volatile U32 *)REG_SFLASH_CE = d.all;
  613. #if GH_SFLASH_ENABLE_DEBUG_PRINT
  614. GH_SFLASH_DEBUG_PRINT_FUNCTION( "WRREG(0x%08x,0x%08x); \\\\ [GH_SFLASH_set_CE_CHSELECT] <-- 0x%08x\n",
  615. REG_SFLASH_CE,d.all,d.all);
  616. #endif
  617. }
  618. GH_INLINE U8 GH_SFLASH_get_CE_CHSELECT(void)
  619. {
  620. GH_SFLASH_CE_S tmp_value;
  621. U32 value = (*(volatile U32 *)REG_SFLASH_CE);
  622. tmp_value.all = value;
  623. #if GH_SFLASH_ENABLE_DEBUG_PRINT
  624. GH_SFLASH_DEBUG_PRINT_FUNCTION( "value = RDREG(0x%08x); \\\\ [GH_SFLASH_get_CE_CHSELECT] --> 0x%08x\n",
  625. REG_SFLASH_CE,value);
  626. #endif
  627. return tmp_value.bitc.chselect;
  628. }
  629. #endif /* GH_INLINE_LEVEL == 0 */
  630. /*----------------------------------------------------------------------------*/
  631. /* register SFLASH_Speed (read/write) */
  632. /*----------------------------------------------------------------------------*/
  633. #if GH_INLINE_LEVEL == 0
  634. /*! \brief Writes the register 'SFLASH_Speed'. */
  635. void GH_SFLASH_set_Speed(U32 data);
  636. /*! \brief Reads the register 'SFLASH_Speed'. */
  637. U32 GH_SFLASH_get_Speed(void);
  638. /*! \brief Writes the bit group 'SF_SCLK_SEL' of register 'SFLASH_Speed'. */
  639. void GH_SFLASH_set_Speed_SF_SCLK_SEL(U8 data);
  640. /*! \brief Reads the bit group 'SF_SCLK_SEL' of register 'SFLASH_Speed'. */
  641. U8 GH_SFLASH_get_Speed_SF_SCLK_SEL(void);
  642. #else /* GH_INLINE_LEVEL == 0 */
  643. GH_INLINE void GH_SFLASH_set_Speed(U32 data)
  644. {
  645. *(volatile U32 *)REG_SFLASH_SPEED = data;
  646. #if GH_SFLASH_ENABLE_DEBUG_PRINT
  647. GH_SFLASH_DEBUG_PRINT_FUNCTION( "WRREG(0x%08x,0x%08x); \\\\ [GH_SFLASH_set_Speed] <-- 0x%08x\n",
  648. REG_SFLASH_SPEED,data,data);
  649. #endif
  650. }
  651. GH_INLINE U32 GH_SFLASH_get_Speed(void)
  652. {
  653. U32 value = (*(volatile U32 *)REG_SFLASH_SPEED);
  654. #if GH_SFLASH_ENABLE_DEBUG_PRINT
  655. GH_SFLASH_DEBUG_PRINT_FUNCTION( "value = RDREG(0x%08x); \\\\ [GH_SFLASH_get_Speed] --> 0x%08x\n",
  656. REG_SFLASH_SPEED,value);
  657. #endif
  658. return value;
  659. }
  660. GH_INLINE void GH_SFLASH_set_Speed_SF_SCLK_SEL(U8 data)
  661. {
  662. GH_SFLASH_SPEED_S d;
  663. d.all = *(volatile U32 *)REG_SFLASH_SPEED;
  664. d.bitc.sf_sclk_sel = data;
  665. *(volatile U32 *)REG_SFLASH_SPEED = d.all;
  666. #if GH_SFLASH_ENABLE_DEBUG_PRINT
  667. GH_SFLASH_DEBUG_PRINT_FUNCTION( "WRREG(0x%08x,0x%08x); \\\\ [GH_SFLASH_set_Speed_SF_SCLK_SEL] <-- 0x%08x\n",
  668. REG_SFLASH_SPEED,d.all,d.all);
  669. #endif
  670. }
  671. GH_INLINE U8 GH_SFLASH_get_Speed_SF_SCLK_SEL(void)
  672. {
  673. GH_SFLASH_SPEED_S tmp_value;
  674. U32 value = (*(volatile U32 *)REG_SFLASH_SPEED);
  675. tmp_value.all = value;
  676. #if GH_SFLASH_ENABLE_DEBUG_PRINT
  677. GH_SFLASH_DEBUG_PRINT_FUNCTION( "value = RDREG(0x%08x); \\\\ [GH_SFLASH_get_Speed_SF_SCLK_SEL] --> 0x%08x\n",
  678. REG_SFLASH_SPEED,value);
  679. #endif
  680. return tmp_value.bitc.sf_sclk_sel;
  681. }
  682. #endif /* GH_INLINE_LEVEL == 0 */
  683. /*----------------------------------------------------------------------------*/
  684. /* init function */
  685. /*----------------------------------------------------------------------------*/
  686. /*! \brief Initialises the registers and mirror variables. */
  687. void GH_SFLASH_init(void);
  688. #ifdef __cplusplus
  689. }
  690. #endif
  691. #endif /* _GH_SFLASH_H */
  692. /*----------------------------------------------------------------------------*/
  693. /* end of file */
  694. /*----------------------------------------------------------------------------*/