hri_acc_e70b.h 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774
  1. /**
  2. * \file
  3. *
  4. * \brief SAM ACC
  5. *
  6. * Copyright (c) 2017-2018 Microchip Technology Inc. and its subsidiaries.
  7. *
  8. * \asf_license_start
  9. *
  10. * \page License
  11. *
  12. * Subject to your compliance with these terms, you may use Microchip
  13. * software and any derivatives exclusively with Microchip products.
  14. * It is your responsibility to comply with third party license terms applicable
  15. * to your use of third party software (including open source software) that
  16. * may accompany Microchip software.
  17. *
  18. * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES,
  19. * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE,
  20. * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY,
  21. * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE
  22. * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL
  23. * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE
  24. * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE
  25. * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT
  26. * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY
  27. * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY,
  28. * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE.
  29. *
  30. * \asf_license_stop
  31. */
  32. #ifdef _SAME70_ACC_COMPONENT_
  33. #ifndef _HRI_ACC_E70B_H_INCLUDED_
  34. #define _HRI_ACC_E70B_H_INCLUDED_
  35. #ifdef __cplusplus
  36. extern "C" {
  37. #endif
  38. #include <stdbool.h>
  39. #include <hal_atomic.h>
  40. #if defined(ENABLE_ACC_CRITICAL_SECTIONS)
  41. #define ACC_CRITICAL_SECTION_ENTER() CRITICAL_SECTION_ENTER()
  42. #define ACC_CRITICAL_SECTION_LEAVE() CRITICAL_SECTION_LEAVE()
  43. #else
  44. #define ACC_CRITICAL_SECTION_ENTER()
  45. #define ACC_CRITICAL_SECTION_LEAVE()
  46. #endif
  47. typedef uint32_t hri_acc_acr_reg_t;
  48. typedef uint32_t hri_acc_cr_reg_t;
  49. typedef uint32_t hri_acc_imr_reg_t;
  50. typedef uint32_t hri_acc_isr_reg_t;
  51. typedef uint32_t hri_acc_mr_reg_t;
  52. typedef uint32_t hri_acc_wpmr_reg_t;
  53. typedef uint32_t hri_acc_wpsr_reg_t;
  54. static inline bool hri_acc_get_ISR_CE_bit(const void *const hw)
  55. {
  56. return (((Acc *)hw)->ACC_ISR & ACC_ISR_CE) >> ACC_ISR_CE_Pos;
  57. }
  58. static inline bool hri_acc_get_ISR_SCO_bit(const void *const hw)
  59. {
  60. return (((Acc *)hw)->ACC_ISR & ACC_ISR_SCO) >> ACC_ISR_SCO_Pos;
  61. }
  62. static inline bool hri_acc_get_ISR_MASK_bit(const void *const hw)
  63. {
  64. return (((Acc *)hw)->ACC_ISR & ACC_ISR_MASK) >> ACC_ISR_MASK_Pos;
  65. }
  66. static inline hri_acc_isr_reg_t hri_acc_get_ISR_reg(const void *const hw, hri_acc_isr_reg_t mask)
  67. {
  68. uint32_t tmp;
  69. tmp = ((Acc *)hw)->ACC_ISR;
  70. tmp &= mask;
  71. return tmp;
  72. }
  73. static inline hri_acc_isr_reg_t hri_acc_read_ISR_reg(const void *const hw)
  74. {
  75. return ((Acc *)hw)->ACC_ISR;
  76. }
  77. static inline void hri_acc_set_IMR_CE_bit(const void *const hw)
  78. {
  79. ((Acc *)hw)->ACC_IER = ACC_IMR_CE;
  80. }
  81. static inline bool hri_acc_get_IMR_CE_bit(const void *const hw)
  82. {
  83. return (((Acc *)hw)->ACC_IMR & ACC_IMR_CE) >> ACC_IMR_CE_Pos;
  84. }
  85. static inline void hri_acc_write_IMR_CE_bit(const void *const hw, bool value)
  86. {
  87. if (value == 0x0) {
  88. ((Acc *)hw)->ACC_IDR = ACC_IMR_CE;
  89. } else {
  90. ((Acc *)hw)->ACC_IER = ACC_IMR_CE;
  91. }
  92. }
  93. static inline void hri_acc_clear_IMR_CE_bit(const void *const hw)
  94. {
  95. ((Acc *)hw)->ACC_IDR = ACC_IMR_CE;
  96. }
  97. static inline void hri_acc_set_IMR_reg(const void *const hw, hri_acc_imr_reg_t mask)
  98. {
  99. ((Acc *)hw)->ACC_IER = mask;
  100. }
  101. static inline hri_acc_imr_reg_t hri_acc_get_IMR_reg(const void *const hw, hri_acc_imr_reg_t mask)
  102. {
  103. uint32_t tmp;
  104. tmp = ((Acc *)hw)->ACC_IMR;
  105. tmp &= mask;
  106. return tmp;
  107. }
  108. static inline hri_acc_imr_reg_t hri_acc_read_IMR_reg(const void *const hw)
  109. {
  110. return ((Acc *)hw)->ACC_IMR;
  111. }
  112. static inline void hri_acc_write_IMR_reg(const void *const hw, hri_acc_imr_reg_t data)
  113. {
  114. ((Acc *)hw)->ACC_IER = data;
  115. ((Acc *)hw)->ACC_IDR = ~data;
  116. }
  117. static inline void hri_acc_clear_IMR_reg(const void *const hw, hri_acc_imr_reg_t mask)
  118. {
  119. ((Acc *)hw)->ACC_IDR = mask;
  120. }
  121. static inline bool hri_acc_get_WPSR_WPVS_bit(const void *const hw)
  122. {
  123. return (((Acc *)hw)->ACC_WPSR & ACC_WPSR_WPVS) > 0;
  124. }
  125. static inline hri_acc_wpsr_reg_t hri_acc_get_WPSR_reg(const void *const hw, hri_acc_wpsr_reg_t mask)
  126. {
  127. uint32_t tmp;
  128. tmp = ((Acc *)hw)->ACC_WPSR;
  129. tmp &= mask;
  130. return tmp;
  131. }
  132. static inline hri_acc_wpsr_reg_t hri_acc_read_WPSR_reg(const void *const hw)
  133. {
  134. return ((Acc *)hw)->ACC_WPSR;
  135. }
  136. static inline void hri_acc_set_MR_ACEN_bit(const void *const hw)
  137. {
  138. ACC_CRITICAL_SECTION_ENTER();
  139. ((Acc *)hw)->ACC_MR |= ACC_MR_ACEN;
  140. ACC_CRITICAL_SECTION_LEAVE();
  141. }
  142. static inline bool hri_acc_get_MR_ACEN_bit(const void *const hw)
  143. {
  144. uint32_t tmp;
  145. tmp = ((Acc *)hw)->ACC_MR;
  146. tmp = (tmp & ACC_MR_ACEN) >> ACC_MR_ACEN_Pos;
  147. return (bool)tmp;
  148. }
  149. static inline void hri_acc_write_MR_ACEN_bit(const void *const hw, bool value)
  150. {
  151. uint32_t tmp;
  152. ACC_CRITICAL_SECTION_ENTER();
  153. tmp = ((Acc *)hw)->ACC_MR;
  154. tmp &= ~ACC_MR_ACEN;
  155. tmp |= value << ACC_MR_ACEN_Pos;
  156. ((Acc *)hw)->ACC_MR = tmp;
  157. ACC_CRITICAL_SECTION_LEAVE();
  158. }
  159. static inline void hri_acc_clear_MR_ACEN_bit(const void *const hw)
  160. {
  161. ACC_CRITICAL_SECTION_ENTER();
  162. ((Acc *)hw)->ACC_MR &= ~ACC_MR_ACEN;
  163. ACC_CRITICAL_SECTION_LEAVE();
  164. }
  165. static inline void hri_acc_toggle_MR_ACEN_bit(const void *const hw)
  166. {
  167. ACC_CRITICAL_SECTION_ENTER();
  168. ((Acc *)hw)->ACC_MR ^= ACC_MR_ACEN;
  169. ACC_CRITICAL_SECTION_LEAVE();
  170. }
  171. static inline void hri_acc_set_MR_INV_bit(const void *const hw)
  172. {
  173. ACC_CRITICAL_SECTION_ENTER();
  174. ((Acc *)hw)->ACC_MR |= ACC_MR_INV;
  175. ACC_CRITICAL_SECTION_LEAVE();
  176. }
  177. static inline bool hri_acc_get_MR_INV_bit(const void *const hw)
  178. {
  179. uint32_t tmp;
  180. tmp = ((Acc *)hw)->ACC_MR;
  181. tmp = (tmp & ACC_MR_INV) >> ACC_MR_INV_Pos;
  182. return (bool)tmp;
  183. }
  184. static inline void hri_acc_write_MR_INV_bit(const void *const hw, bool value)
  185. {
  186. uint32_t tmp;
  187. ACC_CRITICAL_SECTION_ENTER();
  188. tmp = ((Acc *)hw)->ACC_MR;
  189. tmp &= ~ACC_MR_INV;
  190. tmp |= value << ACC_MR_INV_Pos;
  191. ((Acc *)hw)->ACC_MR = tmp;
  192. ACC_CRITICAL_SECTION_LEAVE();
  193. }
  194. static inline void hri_acc_clear_MR_INV_bit(const void *const hw)
  195. {
  196. ACC_CRITICAL_SECTION_ENTER();
  197. ((Acc *)hw)->ACC_MR &= ~ACC_MR_INV;
  198. ACC_CRITICAL_SECTION_LEAVE();
  199. }
  200. static inline void hri_acc_toggle_MR_INV_bit(const void *const hw)
  201. {
  202. ACC_CRITICAL_SECTION_ENTER();
  203. ((Acc *)hw)->ACC_MR ^= ACC_MR_INV;
  204. ACC_CRITICAL_SECTION_LEAVE();
  205. }
  206. static inline void hri_acc_set_MR_SELFS_bit(const void *const hw)
  207. {
  208. ACC_CRITICAL_SECTION_ENTER();
  209. ((Acc *)hw)->ACC_MR |= ACC_MR_SELFS;
  210. ACC_CRITICAL_SECTION_LEAVE();
  211. }
  212. static inline bool hri_acc_get_MR_SELFS_bit(const void *const hw)
  213. {
  214. uint32_t tmp;
  215. tmp = ((Acc *)hw)->ACC_MR;
  216. tmp = (tmp & ACC_MR_SELFS) >> ACC_MR_SELFS_Pos;
  217. return (bool)tmp;
  218. }
  219. static inline void hri_acc_write_MR_SELFS_bit(const void *const hw, bool value)
  220. {
  221. uint32_t tmp;
  222. ACC_CRITICAL_SECTION_ENTER();
  223. tmp = ((Acc *)hw)->ACC_MR;
  224. tmp &= ~ACC_MR_SELFS;
  225. tmp |= value << ACC_MR_SELFS_Pos;
  226. ((Acc *)hw)->ACC_MR = tmp;
  227. ACC_CRITICAL_SECTION_LEAVE();
  228. }
  229. static inline void hri_acc_clear_MR_SELFS_bit(const void *const hw)
  230. {
  231. ACC_CRITICAL_SECTION_ENTER();
  232. ((Acc *)hw)->ACC_MR &= ~ACC_MR_SELFS;
  233. ACC_CRITICAL_SECTION_LEAVE();
  234. }
  235. static inline void hri_acc_toggle_MR_SELFS_bit(const void *const hw)
  236. {
  237. ACC_CRITICAL_SECTION_ENTER();
  238. ((Acc *)hw)->ACC_MR ^= ACC_MR_SELFS;
  239. ACC_CRITICAL_SECTION_LEAVE();
  240. }
  241. static inline void hri_acc_set_MR_FE_bit(const void *const hw)
  242. {
  243. ACC_CRITICAL_SECTION_ENTER();
  244. ((Acc *)hw)->ACC_MR |= ACC_MR_FE;
  245. ACC_CRITICAL_SECTION_LEAVE();
  246. }
  247. static inline bool hri_acc_get_MR_FE_bit(const void *const hw)
  248. {
  249. uint32_t tmp;
  250. tmp = ((Acc *)hw)->ACC_MR;
  251. tmp = (tmp & ACC_MR_FE) >> ACC_MR_FE_Pos;
  252. return (bool)tmp;
  253. }
  254. static inline void hri_acc_write_MR_FE_bit(const void *const hw, bool value)
  255. {
  256. uint32_t tmp;
  257. ACC_CRITICAL_SECTION_ENTER();
  258. tmp = ((Acc *)hw)->ACC_MR;
  259. tmp &= ~ACC_MR_FE;
  260. tmp |= value << ACC_MR_FE_Pos;
  261. ((Acc *)hw)->ACC_MR = tmp;
  262. ACC_CRITICAL_SECTION_LEAVE();
  263. }
  264. static inline void hri_acc_clear_MR_FE_bit(const void *const hw)
  265. {
  266. ACC_CRITICAL_SECTION_ENTER();
  267. ((Acc *)hw)->ACC_MR &= ~ACC_MR_FE;
  268. ACC_CRITICAL_SECTION_LEAVE();
  269. }
  270. static inline void hri_acc_toggle_MR_FE_bit(const void *const hw)
  271. {
  272. ACC_CRITICAL_SECTION_ENTER();
  273. ((Acc *)hw)->ACC_MR ^= ACC_MR_FE;
  274. ACC_CRITICAL_SECTION_LEAVE();
  275. }
  276. static inline void hri_acc_set_MR_SELMINUS_bf(const void *const hw, hri_acc_mr_reg_t mask)
  277. {
  278. ACC_CRITICAL_SECTION_ENTER();
  279. ((Acc *)hw)->ACC_MR |= ACC_MR_SELMINUS(mask);
  280. ACC_CRITICAL_SECTION_LEAVE();
  281. }
  282. static inline hri_acc_mr_reg_t hri_acc_get_MR_SELMINUS_bf(const void *const hw, hri_acc_mr_reg_t mask)
  283. {
  284. uint32_t tmp;
  285. tmp = ((Acc *)hw)->ACC_MR;
  286. tmp = (tmp & ACC_MR_SELMINUS(mask)) >> ACC_MR_SELMINUS_Pos;
  287. return tmp;
  288. }
  289. static inline void hri_acc_write_MR_SELMINUS_bf(const void *const hw, hri_acc_mr_reg_t data)
  290. {
  291. uint32_t tmp;
  292. ACC_CRITICAL_SECTION_ENTER();
  293. tmp = ((Acc *)hw)->ACC_MR;
  294. tmp &= ~ACC_MR_SELMINUS_Msk;
  295. tmp |= ACC_MR_SELMINUS(data);
  296. ((Acc *)hw)->ACC_MR = tmp;
  297. ACC_CRITICAL_SECTION_LEAVE();
  298. }
  299. static inline void hri_acc_clear_MR_SELMINUS_bf(const void *const hw, hri_acc_mr_reg_t mask)
  300. {
  301. ACC_CRITICAL_SECTION_ENTER();
  302. ((Acc *)hw)->ACC_MR &= ~ACC_MR_SELMINUS(mask);
  303. ACC_CRITICAL_SECTION_LEAVE();
  304. }
  305. static inline void hri_acc_toggle_MR_SELMINUS_bf(const void *const hw, hri_acc_mr_reg_t mask)
  306. {
  307. ACC_CRITICAL_SECTION_ENTER();
  308. ((Acc *)hw)->ACC_MR ^= ACC_MR_SELMINUS(mask);
  309. ACC_CRITICAL_SECTION_LEAVE();
  310. }
  311. static inline hri_acc_mr_reg_t hri_acc_read_MR_SELMINUS_bf(const void *const hw)
  312. {
  313. uint32_t tmp;
  314. tmp = ((Acc *)hw)->ACC_MR;
  315. tmp = (tmp & ACC_MR_SELMINUS_Msk) >> ACC_MR_SELMINUS_Pos;
  316. return tmp;
  317. }
  318. static inline void hri_acc_set_MR_SELPLUS_bf(const void *const hw, hri_acc_mr_reg_t mask)
  319. {
  320. ACC_CRITICAL_SECTION_ENTER();
  321. ((Acc *)hw)->ACC_MR |= ACC_MR_SELPLUS(mask);
  322. ACC_CRITICAL_SECTION_LEAVE();
  323. }
  324. static inline hri_acc_mr_reg_t hri_acc_get_MR_SELPLUS_bf(const void *const hw, hri_acc_mr_reg_t mask)
  325. {
  326. uint32_t tmp;
  327. tmp = ((Acc *)hw)->ACC_MR;
  328. tmp = (tmp & ACC_MR_SELPLUS(mask)) >> ACC_MR_SELPLUS_Pos;
  329. return tmp;
  330. }
  331. static inline void hri_acc_write_MR_SELPLUS_bf(const void *const hw, hri_acc_mr_reg_t data)
  332. {
  333. uint32_t tmp;
  334. ACC_CRITICAL_SECTION_ENTER();
  335. tmp = ((Acc *)hw)->ACC_MR;
  336. tmp &= ~ACC_MR_SELPLUS_Msk;
  337. tmp |= ACC_MR_SELPLUS(data);
  338. ((Acc *)hw)->ACC_MR = tmp;
  339. ACC_CRITICAL_SECTION_LEAVE();
  340. }
  341. static inline void hri_acc_clear_MR_SELPLUS_bf(const void *const hw, hri_acc_mr_reg_t mask)
  342. {
  343. ACC_CRITICAL_SECTION_ENTER();
  344. ((Acc *)hw)->ACC_MR &= ~ACC_MR_SELPLUS(mask);
  345. ACC_CRITICAL_SECTION_LEAVE();
  346. }
  347. static inline void hri_acc_toggle_MR_SELPLUS_bf(const void *const hw, hri_acc_mr_reg_t mask)
  348. {
  349. ACC_CRITICAL_SECTION_ENTER();
  350. ((Acc *)hw)->ACC_MR ^= ACC_MR_SELPLUS(mask);
  351. ACC_CRITICAL_SECTION_LEAVE();
  352. }
  353. static inline hri_acc_mr_reg_t hri_acc_read_MR_SELPLUS_bf(const void *const hw)
  354. {
  355. uint32_t tmp;
  356. tmp = ((Acc *)hw)->ACC_MR;
  357. tmp = (tmp & ACC_MR_SELPLUS_Msk) >> ACC_MR_SELPLUS_Pos;
  358. return tmp;
  359. }
  360. static inline void hri_acc_set_MR_EDGETYP_bf(const void *const hw, hri_acc_mr_reg_t mask)
  361. {
  362. ACC_CRITICAL_SECTION_ENTER();
  363. ((Acc *)hw)->ACC_MR |= ACC_MR_EDGETYP(mask);
  364. ACC_CRITICAL_SECTION_LEAVE();
  365. }
  366. static inline hri_acc_mr_reg_t hri_acc_get_MR_EDGETYP_bf(const void *const hw, hri_acc_mr_reg_t mask)
  367. {
  368. uint32_t tmp;
  369. tmp = ((Acc *)hw)->ACC_MR;
  370. tmp = (tmp & ACC_MR_EDGETYP(mask)) >> ACC_MR_EDGETYP_Pos;
  371. return tmp;
  372. }
  373. static inline void hri_acc_write_MR_EDGETYP_bf(const void *const hw, hri_acc_mr_reg_t data)
  374. {
  375. uint32_t tmp;
  376. ACC_CRITICAL_SECTION_ENTER();
  377. tmp = ((Acc *)hw)->ACC_MR;
  378. tmp &= ~ACC_MR_EDGETYP_Msk;
  379. tmp |= ACC_MR_EDGETYP(data);
  380. ((Acc *)hw)->ACC_MR = tmp;
  381. ACC_CRITICAL_SECTION_LEAVE();
  382. }
  383. static inline void hri_acc_clear_MR_EDGETYP_bf(const void *const hw, hri_acc_mr_reg_t mask)
  384. {
  385. ACC_CRITICAL_SECTION_ENTER();
  386. ((Acc *)hw)->ACC_MR &= ~ACC_MR_EDGETYP(mask);
  387. ACC_CRITICAL_SECTION_LEAVE();
  388. }
  389. static inline void hri_acc_toggle_MR_EDGETYP_bf(const void *const hw, hri_acc_mr_reg_t mask)
  390. {
  391. ACC_CRITICAL_SECTION_ENTER();
  392. ((Acc *)hw)->ACC_MR ^= ACC_MR_EDGETYP(mask);
  393. ACC_CRITICAL_SECTION_LEAVE();
  394. }
  395. static inline hri_acc_mr_reg_t hri_acc_read_MR_EDGETYP_bf(const void *const hw)
  396. {
  397. uint32_t tmp;
  398. tmp = ((Acc *)hw)->ACC_MR;
  399. tmp = (tmp & ACC_MR_EDGETYP_Msk) >> ACC_MR_EDGETYP_Pos;
  400. return tmp;
  401. }
  402. static inline void hri_acc_set_MR_reg(const void *const hw, hri_acc_mr_reg_t mask)
  403. {
  404. ACC_CRITICAL_SECTION_ENTER();
  405. ((Acc *)hw)->ACC_MR |= mask;
  406. ACC_CRITICAL_SECTION_LEAVE();
  407. }
  408. static inline hri_acc_mr_reg_t hri_acc_get_MR_reg(const void *const hw, hri_acc_mr_reg_t mask)
  409. {
  410. uint32_t tmp;
  411. tmp = ((Acc *)hw)->ACC_MR;
  412. tmp &= mask;
  413. return tmp;
  414. }
  415. static inline void hri_acc_write_MR_reg(const void *const hw, hri_acc_mr_reg_t data)
  416. {
  417. ACC_CRITICAL_SECTION_ENTER();
  418. ((Acc *)hw)->ACC_MR = data;
  419. ACC_CRITICAL_SECTION_LEAVE();
  420. }
  421. static inline void hri_acc_clear_MR_reg(const void *const hw, hri_acc_mr_reg_t mask)
  422. {
  423. ACC_CRITICAL_SECTION_ENTER();
  424. ((Acc *)hw)->ACC_MR &= ~mask;
  425. ACC_CRITICAL_SECTION_LEAVE();
  426. }
  427. static inline void hri_acc_toggle_MR_reg(const void *const hw, hri_acc_mr_reg_t mask)
  428. {
  429. ACC_CRITICAL_SECTION_ENTER();
  430. ((Acc *)hw)->ACC_MR ^= mask;
  431. ACC_CRITICAL_SECTION_LEAVE();
  432. }
  433. static inline hri_acc_mr_reg_t hri_acc_read_MR_reg(const void *const hw)
  434. {
  435. return ((Acc *)hw)->ACC_MR;
  436. }
  437. static inline void hri_acc_set_ACR_ISEL_bit(const void *const hw)
  438. {
  439. ACC_CRITICAL_SECTION_ENTER();
  440. ((Acc *)hw)->ACC_ACR |= ACC_ACR_ISEL;
  441. ACC_CRITICAL_SECTION_LEAVE();
  442. }
  443. static inline bool hri_acc_get_ACR_ISEL_bit(const void *const hw)
  444. {
  445. uint32_t tmp;
  446. tmp = ((Acc *)hw)->ACC_ACR;
  447. tmp = (tmp & ACC_ACR_ISEL) >> ACC_ACR_ISEL_Pos;
  448. return (bool)tmp;
  449. }
  450. static inline void hri_acc_write_ACR_ISEL_bit(const void *const hw, bool value)
  451. {
  452. uint32_t tmp;
  453. ACC_CRITICAL_SECTION_ENTER();
  454. tmp = ((Acc *)hw)->ACC_ACR;
  455. tmp &= ~ACC_ACR_ISEL;
  456. tmp |= value << ACC_ACR_ISEL_Pos;
  457. ((Acc *)hw)->ACC_ACR = tmp;
  458. ACC_CRITICAL_SECTION_LEAVE();
  459. }
  460. static inline void hri_acc_clear_ACR_ISEL_bit(const void *const hw)
  461. {
  462. ACC_CRITICAL_SECTION_ENTER();
  463. ((Acc *)hw)->ACC_ACR &= ~ACC_ACR_ISEL;
  464. ACC_CRITICAL_SECTION_LEAVE();
  465. }
  466. static inline void hri_acc_toggle_ACR_ISEL_bit(const void *const hw)
  467. {
  468. ACC_CRITICAL_SECTION_ENTER();
  469. ((Acc *)hw)->ACC_ACR ^= ACC_ACR_ISEL;
  470. ACC_CRITICAL_SECTION_LEAVE();
  471. }
  472. static inline void hri_acc_set_ACR_HYST_bf(const void *const hw, hri_acc_acr_reg_t mask)
  473. {
  474. ACC_CRITICAL_SECTION_ENTER();
  475. ((Acc *)hw)->ACC_ACR |= ACC_ACR_HYST(mask);
  476. ACC_CRITICAL_SECTION_LEAVE();
  477. }
  478. static inline hri_acc_acr_reg_t hri_acc_get_ACR_HYST_bf(const void *const hw, hri_acc_acr_reg_t mask)
  479. {
  480. uint32_t tmp;
  481. tmp = ((Acc *)hw)->ACC_ACR;
  482. tmp = (tmp & ACC_ACR_HYST(mask)) >> ACC_ACR_HYST_Pos;
  483. return tmp;
  484. }
  485. static inline void hri_acc_write_ACR_HYST_bf(const void *const hw, hri_acc_acr_reg_t data)
  486. {
  487. uint32_t tmp;
  488. ACC_CRITICAL_SECTION_ENTER();
  489. tmp = ((Acc *)hw)->ACC_ACR;
  490. tmp &= ~ACC_ACR_HYST_Msk;
  491. tmp |= ACC_ACR_HYST(data);
  492. ((Acc *)hw)->ACC_ACR = tmp;
  493. ACC_CRITICAL_SECTION_LEAVE();
  494. }
  495. static inline void hri_acc_clear_ACR_HYST_bf(const void *const hw, hri_acc_acr_reg_t mask)
  496. {
  497. ACC_CRITICAL_SECTION_ENTER();
  498. ((Acc *)hw)->ACC_ACR &= ~ACC_ACR_HYST(mask);
  499. ACC_CRITICAL_SECTION_LEAVE();
  500. }
  501. static inline void hri_acc_toggle_ACR_HYST_bf(const void *const hw, hri_acc_acr_reg_t mask)
  502. {
  503. ACC_CRITICAL_SECTION_ENTER();
  504. ((Acc *)hw)->ACC_ACR ^= ACC_ACR_HYST(mask);
  505. ACC_CRITICAL_SECTION_LEAVE();
  506. }
  507. static inline hri_acc_acr_reg_t hri_acc_read_ACR_HYST_bf(const void *const hw)
  508. {
  509. uint32_t tmp;
  510. tmp = ((Acc *)hw)->ACC_ACR;
  511. tmp = (tmp & ACC_ACR_HYST_Msk) >> ACC_ACR_HYST_Pos;
  512. return tmp;
  513. }
  514. static inline void hri_acc_set_ACR_reg(const void *const hw, hri_acc_acr_reg_t mask)
  515. {
  516. ACC_CRITICAL_SECTION_ENTER();
  517. ((Acc *)hw)->ACC_ACR |= mask;
  518. ACC_CRITICAL_SECTION_LEAVE();
  519. }
  520. static inline hri_acc_acr_reg_t hri_acc_get_ACR_reg(const void *const hw, hri_acc_acr_reg_t mask)
  521. {
  522. uint32_t tmp;
  523. tmp = ((Acc *)hw)->ACC_ACR;
  524. tmp &= mask;
  525. return tmp;
  526. }
  527. static inline void hri_acc_write_ACR_reg(const void *const hw, hri_acc_acr_reg_t data)
  528. {
  529. ACC_CRITICAL_SECTION_ENTER();
  530. ((Acc *)hw)->ACC_ACR = data;
  531. ACC_CRITICAL_SECTION_LEAVE();
  532. }
  533. static inline void hri_acc_clear_ACR_reg(const void *const hw, hri_acc_acr_reg_t mask)
  534. {
  535. ACC_CRITICAL_SECTION_ENTER();
  536. ((Acc *)hw)->ACC_ACR &= ~mask;
  537. ACC_CRITICAL_SECTION_LEAVE();
  538. }
  539. static inline void hri_acc_toggle_ACR_reg(const void *const hw, hri_acc_acr_reg_t mask)
  540. {
  541. ACC_CRITICAL_SECTION_ENTER();
  542. ((Acc *)hw)->ACC_ACR ^= mask;
  543. ACC_CRITICAL_SECTION_LEAVE();
  544. }
  545. static inline hri_acc_acr_reg_t hri_acc_read_ACR_reg(const void *const hw)
  546. {
  547. return ((Acc *)hw)->ACC_ACR;
  548. }
  549. static inline void hri_acc_set_WPMR_WPEN_bit(const void *const hw)
  550. {
  551. ACC_CRITICAL_SECTION_ENTER();
  552. ((Acc *)hw)->ACC_WPMR |= ACC_WPMR_WPEN;
  553. ACC_CRITICAL_SECTION_LEAVE();
  554. }
  555. static inline bool hri_acc_get_WPMR_WPEN_bit(const void *const hw)
  556. {
  557. uint32_t tmp;
  558. tmp = ((Acc *)hw)->ACC_WPMR;
  559. tmp = (tmp & ACC_WPMR_WPEN) >> ACC_WPMR_WPEN_Pos;
  560. return (bool)tmp;
  561. }
  562. static inline void hri_acc_write_WPMR_WPEN_bit(const void *const hw, bool value)
  563. {
  564. uint32_t tmp;
  565. ACC_CRITICAL_SECTION_ENTER();
  566. tmp = ((Acc *)hw)->ACC_WPMR;
  567. tmp &= ~ACC_WPMR_WPEN;
  568. tmp |= value << ACC_WPMR_WPEN_Pos;
  569. ((Acc *)hw)->ACC_WPMR = tmp;
  570. ACC_CRITICAL_SECTION_LEAVE();
  571. }
  572. static inline void hri_acc_clear_WPMR_WPEN_bit(const void *const hw)
  573. {
  574. ACC_CRITICAL_SECTION_ENTER();
  575. ((Acc *)hw)->ACC_WPMR &= ~ACC_WPMR_WPEN;
  576. ACC_CRITICAL_SECTION_LEAVE();
  577. }
  578. static inline void hri_acc_toggle_WPMR_WPEN_bit(const void *const hw)
  579. {
  580. ACC_CRITICAL_SECTION_ENTER();
  581. ((Acc *)hw)->ACC_WPMR ^= ACC_WPMR_WPEN;
  582. ACC_CRITICAL_SECTION_LEAVE();
  583. }
  584. static inline void hri_acc_set_WPMR_WPKEY_bf(const void *const hw, hri_acc_wpmr_reg_t mask)
  585. {
  586. ACC_CRITICAL_SECTION_ENTER();
  587. ((Acc *)hw)->ACC_WPMR |= ACC_WPMR_WPKEY(mask);
  588. ACC_CRITICAL_SECTION_LEAVE();
  589. }
  590. static inline hri_acc_wpmr_reg_t hri_acc_get_WPMR_WPKEY_bf(const void *const hw, hri_acc_wpmr_reg_t mask)
  591. {
  592. uint32_t tmp;
  593. tmp = ((Acc *)hw)->ACC_WPMR;
  594. tmp = (tmp & ACC_WPMR_WPKEY(mask)) >> ACC_WPMR_WPKEY_Pos;
  595. return tmp;
  596. }
  597. static inline void hri_acc_write_WPMR_WPKEY_bf(const void *const hw, hri_acc_wpmr_reg_t data)
  598. {
  599. uint32_t tmp;
  600. ACC_CRITICAL_SECTION_ENTER();
  601. tmp = ((Acc *)hw)->ACC_WPMR;
  602. tmp &= ~ACC_WPMR_WPKEY_Msk;
  603. tmp |= ACC_WPMR_WPKEY(data);
  604. ((Acc *)hw)->ACC_WPMR = tmp;
  605. ACC_CRITICAL_SECTION_LEAVE();
  606. }
  607. static inline void hri_acc_clear_WPMR_WPKEY_bf(const void *const hw, hri_acc_wpmr_reg_t mask)
  608. {
  609. ACC_CRITICAL_SECTION_ENTER();
  610. ((Acc *)hw)->ACC_WPMR &= ~ACC_WPMR_WPKEY(mask);
  611. ACC_CRITICAL_SECTION_LEAVE();
  612. }
  613. static inline void hri_acc_toggle_WPMR_WPKEY_bf(const void *const hw, hri_acc_wpmr_reg_t mask)
  614. {
  615. ACC_CRITICAL_SECTION_ENTER();
  616. ((Acc *)hw)->ACC_WPMR ^= ACC_WPMR_WPKEY(mask);
  617. ACC_CRITICAL_SECTION_LEAVE();
  618. }
  619. static inline hri_acc_wpmr_reg_t hri_acc_read_WPMR_WPKEY_bf(const void *const hw)
  620. {
  621. uint32_t tmp;
  622. tmp = ((Acc *)hw)->ACC_WPMR;
  623. tmp = (tmp & ACC_WPMR_WPKEY_Msk) >> ACC_WPMR_WPKEY_Pos;
  624. return tmp;
  625. }
  626. static inline void hri_acc_set_WPMR_reg(const void *const hw, hri_acc_wpmr_reg_t mask)
  627. {
  628. ACC_CRITICAL_SECTION_ENTER();
  629. ((Acc *)hw)->ACC_WPMR |= mask;
  630. ACC_CRITICAL_SECTION_LEAVE();
  631. }
  632. static inline hri_acc_wpmr_reg_t hri_acc_get_WPMR_reg(const void *const hw, hri_acc_wpmr_reg_t mask)
  633. {
  634. uint32_t tmp;
  635. tmp = ((Acc *)hw)->ACC_WPMR;
  636. tmp &= mask;
  637. return tmp;
  638. }
  639. static inline void hri_acc_write_WPMR_reg(const void *const hw, hri_acc_wpmr_reg_t data)
  640. {
  641. ACC_CRITICAL_SECTION_ENTER();
  642. ((Acc *)hw)->ACC_WPMR = data;
  643. ACC_CRITICAL_SECTION_LEAVE();
  644. }
  645. static inline void hri_acc_clear_WPMR_reg(const void *const hw, hri_acc_wpmr_reg_t mask)
  646. {
  647. ACC_CRITICAL_SECTION_ENTER();
  648. ((Acc *)hw)->ACC_WPMR &= ~mask;
  649. ACC_CRITICAL_SECTION_LEAVE();
  650. }
  651. static inline void hri_acc_toggle_WPMR_reg(const void *const hw, hri_acc_wpmr_reg_t mask)
  652. {
  653. ACC_CRITICAL_SECTION_ENTER();
  654. ((Acc *)hw)->ACC_WPMR ^= mask;
  655. ACC_CRITICAL_SECTION_LEAVE();
  656. }
  657. static inline hri_acc_wpmr_reg_t hri_acc_read_WPMR_reg(const void *const hw)
  658. {
  659. return ((Acc *)hw)->ACC_WPMR;
  660. }
  661. static inline void hri_acc_write_CR_reg(const void *const hw, hri_acc_cr_reg_t data)
  662. {
  663. ACC_CRITICAL_SECTION_ENTER();
  664. ((Acc *)hw)->ACC_CR = data;
  665. ACC_CRITICAL_SECTION_LEAVE();
  666. }
  667. #ifdef __cplusplus
  668. }
  669. #endif
  670. #endif /* _HRI_ACC_E70B_H_INCLUDED */
  671. #endif /* _SAME70_ACC_COMPONENT_ */