1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111 |
- #ifndef NRF_POWER_H__
- #define NRF_POWER_H__
- #include <nrfx.h>
- #ifdef __cplusplus
- extern "C" {
- #endif
- #if defined(POWER_INTENSET_SLEEPENTER_Msk) || defined(__NRFX_DOXYGEN__)
- #define NRF_POWER_HAS_SLEEPEVT 1
- #else
- #define NRF_POWER_HAS_SLEEPEVT 0
- #endif
- #if defined(POWER_USBREGSTATUS_VBUSDETECT_Msk) || defined(__NRFX_DOXYGEN__)
- #define NRF_POWER_HAS_USBREG 1
- #else
- #define NRF_POWER_HAS_USBREG 0
- #endif
- #if defined(POWER_POFCON_THRESHOLDVDDH_Msk) || defined(__NRFX_DOXYGEN__)
- #define NRF_POWER_HAS_VDDH 1
- #else
- #define NRF_POWER_HAS_VDDH 0
- #endif
- #if defined(POWER_DCDCEN0_DCDCEN_Msk) || defined(__NRFX_DOXYGEN__)
- #define NRF_POWER_HAS_DCDCEN_VDDH 1
- #else
- #define NRF_POWER_HAS_DCDCEN_VDDH 0
- #endif
- #if defined(POWER_DCDCEN_DCDCEN_Msk) || defined(__NRFX_DOXYGEN__)
- #define NRF_POWER_HAS_DCDCEN 1
- #else
- #define NRF_POWER_HAS_DCDCEN 0
- #endif
- #if defined(POWER_POFCON_THRESHOLD_Msk) || defined(__NRFX_DOXYGEN__)
- #define NRF_POWER_HAS_POFCON 1
- #else
- #define NRF_POWER_HAS_POFCON 0
- #endif
- typedef enum
- {
- NRF_POWER_TASK_CONSTLAT = offsetof(NRF_POWER_Type, TASKS_CONSTLAT),
- NRF_POWER_TASK_LOWPWR = offsetof(NRF_POWER_Type, TASKS_LOWPWR ),
- } nrf_power_task_t;
- typedef enum
- {
- #if NRF_POWER_HAS_POFCON
- NRF_POWER_EVENT_POFWARN = offsetof(NRF_POWER_Type, EVENTS_POFWARN ),
- #endif
- #if NRF_POWER_HAS_SLEEPEVT
- NRF_POWER_EVENT_SLEEPENTER = offsetof(NRF_POWER_Type, EVENTS_SLEEPENTER ),
- NRF_POWER_EVENT_SLEEPEXIT = offsetof(NRF_POWER_Type, EVENTS_SLEEPEXIT ),
- #endif
- #if NRF_POWER_HAS_USBREG
- NRF_POWER_EVENT_USBDETECTED = offsetof(NRF_POWER_Type, EVENTS_USBDETECTED),
- NRF_POWER_EVENT_USBREMOVED = offsetof(NRF_POWER_Type, EVENTS_USBREMOVED ),
- NRF_POWER_EVENT_USBPWRRDY = offsetof(NRF_POWER_Type, EVENTS_USBPWRRDY ),
- #endif
- } nrf_power_event_t;
- typedef enum
- {
- #if NRF_POWER_HAS_POFCON
- NRF_POWER_INT_POFWARN_MASK = POWER_INTENSET_POFWARN_Msk ,
- #endif
- #if NRF_POWER_HAS_SLEEPEVT
- NRF_POWER_INT_SLEEPENTER_MASK = POWER_INTENSET_SLEEPENTER_Msk ,
- NRF_POWER_INT_SLEEPEXIT_MASK = POWER_INTENSET_SLEEPEXIT_Msk ,
- #endif
- #if NRF_POWER_HAS_USBREG
- NRF_POWER_INT_USBDETECTED_MASK = POWER_INTENSET_USBDETECTED_Msk,
- NRF_POWER_INT_USBREMOVED_MASK = POWER_INTENSET_USBREMOVED_Msk ,
- NRF_POWER_INT_USBPWRRDY_MASK = POWER_INTENSET_USBPWRRDY_Msk ,
- #endif
- } nrf_power_int_mask_t;
- typedef enum
- {
- NRF_POWER_RESETREAS_RESETPIN_MASK = POWER_RESETREAS_RESETPIN_Msk,
- NRF_POWER_RESETREAS_DOG_MASK = POWER_RESETREAS_DOG_Msk ,
- NRF_POWER_RESETREAS_SREQ_MASK = POWER_RESETREAS_SREQ_Msk ,
- NRF_POWER_RESETREAS_LOCKUP_MASK = POWER_RESETREAS_LOCKUP_Msk ,
- NRF_POWER_RESETREAS_OFF_MASK = POWER_RESETREAS_OFF_Msk ,
- #if defined(POWER_RESETREAS_LPCOMP_Msk) || defined(__NRFX_DOXYGEN__)
- NRF_POWER_RESETREAS_LPCOMP_MASK = POWER_RESETREAS_LPCOMP_Msk ,
- #endif
- NRF_POWER_RESETREAS_DIF_MASK = POWER_RESETREAS_DIF_Msk ,
- #if defined(POWER_RESETREAS_NFC_Msk) || defined(__NRFX_DOXYGEN__)
- NRF_POWER_RESETREAS_NFC_MASK = POWER_RESETREAS_NFC_Msk ,
- #endif
- #if defined(POWER_RESETREAS_VBUS_Msk) || defined(__NRFX_DOXYGEN__)
- NRF_POWER_RESETREAS_VBUS_MASK = POWER_RESETREAS_VBUS_Msk ,
- #endif
- } nrf_power_resetreas_mask_t;
- #if NRF_POWER_HAS_USBREG
- typedef enum
- {
- NRF_POWER_USBREGSTATUS_VBUSDETECT_MASK = POWER_USBREGSTATUS_VBUSDETECT_Msk,
- NRF_POWER_USBREGSTATUS_OUTPUTRDY_MASK = POWER_USBREGSTATUS_OUTPUTRDY_Msk
- } nrf_power_usbregstatus_mask_t;
- #endif
- #if defined(POWER_RAMSTATUS_RAMBLOCK0_Msk) || defined(__NRFX_DOXYGEN__)
- typedef enum
- {
- NRF_POWER_RAMBLOCK0 = POWER_RAMSTATUS_RAMBLOCK0_Pos,
- NRF_POWER_RAMBLOCK1 = POWER_RAMSTATUS_RAMBLOCK1_Pos,
- #if defined(POWER_RAMSTATUS_RAMBLOCK2_Pos) || defined(__NRFX_DOXYGEN__)
- NRF_POWER_RAMBLOCK2 = POWER_RAMSTATUS_RAMBLOCK2_Pos,
- #endif
- #if defined(POWER_RAMSTATUS_RAMBLOCK3_Pos) || defined(__NRFX_DOXYGEN__)
- NRF_POWER_RAMBLOCK3 = POWER_RAMSTATUS_RAMBLOCK3_Pos
- #endif
- } nrf_power_ramblock_t;
- typedef enum
- {
- NRF_POWER_RAMBLOCK0_MASK = POWER_RAMSTATUS_RAMBLOCK0_Msk,
- NRF_POWER_RAMBLOCK1_MASK = POWER_RAMSTATUS_RAMBLOCK1_Msk,
- #if defined(POWER_RAMSTATUS_RAMBLOCK2_Msk) || defined(__NRFX_DOXYGEN__)
- NRF_POWER_RAMBLOCK2_MASK = POWER_RAMSTATUS_RAMBLOCK2_Msk,
- #endif
- #if defined(POWER_RAMSTATUS_RAMBLOCK3_Msk) || defined(__NRFX_DOXYGEN__)
- NRF_POWER_RAMBLOCK3_MASK = POWER_RAMSTATUS_RAMBLOCK3_Msk
- #endif
- } nrf_power_ramblock_mask_t;
- #endif
- typedef enum
- {
- NRF_POWER_ONRAM0,
- NRF_POWER_OFFRAM0,
- NRF_POWER_ONRAM1,
- NRF_POWER_OFFRAM1,
- NRF_POWER_ONRAM2,
- NRF_POWER_OFFRAM2,
- NRF_POWER_ONRAM3,
- NRF_POWER_OFFRAM3,
- }nrf_power_onoffram_t;
- typedef enum
- {
- NRF_POWER_ONRAM0_MASK = 1U << NRF_POWER_ONRAM0,
- NRF_POWER_OFFRAM0_MASK = 1U << NRF_POWER_OFFRAM0,
- NRF_POWER_ONRAM1_MASK = 1U << NRF_POWER_ONRAM1,
- NRF_POWER_OFFRAM1_MASK = 1U << NRF_POWER_OFFRAM1,
- NRF_POWER_ONRAM2_MASK = 1U << NRF_POWER_ONRAM2,
- NRF_POWER_OFFRAM2_MASK = 1U << NRF_POWER_OFFRAM2,
- NRF_POWER_ONRAM3_MASK = 1U << NRF_POWER_ONRAM3,
- NRF_POWER_OFFRAM3_MASK = 1U << NRF_POWER_OFFRAM3,
- }nrf_power_onoffram_mask_t;
- #if NRF_POWER_HAS_POFCON
- typedef enum
- {
- NRF_POWER_POFTHR_V21 = POWER_POFCON_THRESHOLD_V21,
- NRF_POWER_POFTHR_V23 = POWER_POFCON_THRESHOLD_V23,
- NRF_POWER_POFTHR_V25 = POWER_POFCON_THRESHOLD_V25,
- NRF_POWER_POFTHR_V27 = POWER_POFCON_THRESHOLD_V27,
- #if defined(POWER_POFCON_THRESHOLD_V17) || defined(__NRFX_DOXYGEN__)
- NRF_POWER_POFTHR_V17 = POWER_POFCON_THRESHOLD_V17,
- NRF_POWER_POFTHR_V18 = POWER_POFCON_THRESHOLD_V18,
- NRF_POWER_POFTHR_V19 = POWER_POFCON_THRESHOLD_V19,
- NRF_POWER_POFTHR_V20 = POWER_POFCON_THRESHOLD_V20,
- NRF_POWER_POFTHR_V22 = POWER_POFCON_THRESHOLD_V22,
- NRF_POWER_POFTHR_V24 = POWER_POFCON_THRESHOLD_V24,
- NRF_POWER_POFTHR_V26 = POWER_POFCON_THRESHOLD_V26,
- NRF_POWER_POFTHR_V28 = POWER_POFCON_THRESHOLD_V28,
- #endif
- } nrf_power_pof_thr_t;
- #endif
- #if NRF_POWER_HAS_VDDH
- typedef enum
- {
- NRF_POWER_POFTHRVDDH_V27 = POWER_POFCON_THRESHOLDVDDH_V27,
- NRF_POWER_POFTHRVDDH_V28 = POWER_POFCON_THRESHOLDVDDH_V28,
- NRF_POWER_POFTHRVDDH_V29 = POWER_POFCON_THRESHOLDVDDH_V29,
- NRF_POWER_POFTHRVDDH_V30 = POWER_POFCON_THRESHOLDVDDH_V30,
- NRF_POWER_POFTHRVDDH_V31 = POWER_POFCON_THRESHOLDVDDH_V31,
- NRF_POWER_POFTHRVDDH_V32 = POWER_POFCON_THRESHOLDVDDH_V32,
- NRF_POWER_POFTHRVDDH_V33 = POWER_POFCON_THRESHOLDVDDH_V33,
- NRF_POWER_POFTHRVDDH_V34 = POWER_POFCON_THRESHOLDVDDH_V34,
- NRF_POWER_POFTHRVDDH_V35 = POWER_POFCON_THRESHOLDVDDH_V35,
- NRF_POWER_POFTHRVDDH_V36 = POWER_POFCON_THRESHOLDVDDH_V36,
- NRF_POWER_POFTHRVDDH_V37 = POWER_POFCON_THRESHOLDVDDH_V37,
- NRF_POWER_POFTHRVDDH_V38 = POWER_POFCON_THRESHOLDVDDH_V38,
- NRF_POWER_POFTHRVDDH_V39 = POWER_POFCON_THRESHOLDVDDH_V39,
- NRF_POWER_POFTHRVDDH_V40 = POWER_POFCON_THRESHOLDVDDH_V40,
- NRF_POWER_POFTHRVDDH_V41 = POWER_POFCON_THRESHOLDVDDH_V41,
- NRF_POWER_POFTHRVDDH_V42 = POWER_POFCON_THRESHOLDVDDH_V42,
- } nrf_power_pof_thrvddh_t;
- typedef enum
- {
- NRF_POWER_MAINREGSTATUS_NORMAL = POWER_MAINREGSTATUS_MAINREGSTATUS_Normal,
- NRF_POWER_MAINREGSTATUS_HIGH = POWER_MAINREGSTATUS_MAINREGSTATUS_High
- } nrf_power_mainregstatus_t;
- #endif
- #if defined(POWER_RAM_POWER_S0POWER_Msk) || defined(__NRFX_DOXYGEN__)
- typedef enum
- {
-
- NRF_POWER_RAMPOWER_S0POWER = POWER_RAM_POWER_S0POWER_Pos,
- NRF_POWER_RAMPOWER_S1POWER,
- NRF_POWER_RAMPOWER_S2POWER,
- NRF_POWER_RAMPOWER_S3POWER,
- NRF_POWER_RAMPOWER_S4POWER,
- NRF_POWER_RAMPOWER_S5POWER,
- NRF_POWER_RAMPOWER_S6POWER,
- NRF_POWER_RAMPOWER_S7POWER,
- NRF_POWER_RAMPOWER_S8POWER,
- NRF_POWER_RAMPOWER_S9POWER,
- NRF_POWER_RAMPOWER_S10POWER,
- NRF_POWER_RAMPOWER_S11POWER,
- NRF_POWER_RAMPOWER_S12POWER,
- NRF_POWER_RAMPOWER_S13POWER,
- NRF_POWER_RAMPOWER_S14POWER,
- NRF_POWER_RAMPOWER_S15POWER,
-
- NRF_POWER_RAMPOWER_S0RETENTION = POWER_RAM_POWER_S0RETENTION_Pos,
- NRF_POWER_RAMPOWER_S1RETENTION,
- NRF_POWER_RAMPOWER_S2RETENTION,
- NRF_POWER_RAMPOWER_S3RETENTION,
- NRF_POWER_RAMPOWER_S4RETENTION,
- NRF_POWER_RAMPOWER_S5RETENTION,
- NRF_POWER_RAMPOWER_S6RETENTION,
- NRF_POWER_RAMPOWER_S7RETENTION,
- NRF_POWER_RAMPOWER_S8RETENTION,
- NRF_POWER_RAMPOWER_S9RETENTION,
- NRF_POWER_RAMPOWER_S10RETENTION,
- NRF_POWER_RAMPOWER_S11RETENTION,
- NRF_POWER_RAMPOWER_S12RETENTION,
- NRF_POWER_RAMPOWER_S13RETENTION,
- NRF_POWER_RAMPOWER_S14RETENTION,
- NRF_POWER_RAMPOWER_S15RETENTION,
- } nrf_power_rampower_t;
- typedef enum
- {
- NRF_POWER_RAMPOWER_S0POWER_MASK = 1UL << NRF_POWER_RAMPOWER_S0POWER ,
- NRF_POWER_RAMPOWER_S1POWER_MASK = 1UL << NRF_POWER_RAMPOWER_S1POWER ,
- NRF_POWER_RAMPOWER_S2POWER_MASK = 1UL << NRF_POWER_RAMPOWER_S2POWER ,
- NRF_POWER_RAMPOWER_S3POWER_MASK = 1UL << NRF_POWER_RAMPOWER_S3POWER ,
- NRF_POWER_RAMPOWER_S4POWER_MASK = 1UL << NRF_POWER_RAMPOWER_S4POWER ,
- NRF_POWER_RAMPOWER_S5POWER_MASK = 1UL << NRF_POWER_RAMPOWER_S5POWER ,
- NRF_POWER_RAMPOWER_S7POWER_MASK = 1UL << NRF_POWER_RAMPOWER_S7POWER ,
- NRF_POWER_RAMPOWER_S8POWER_MASK = 1UL << NRF_POWER_RAMPOWER_S8POWER ,
- NRF_POWER_RAMPOWER_S9POWER_MASK = 1UL << NRF_POWER_RAMPOWER_S9POWER ,
- NRF_POWER_RAMPOWER_S10POWER_MASK = 1UL << NRF_POWER_RAMPOWER_S10POWER,
- NRF_POWER_RAMPOWER_S11POWER_MASK = 1UL << NRF_POWER_RAMPOWER_S11POWER,
- NRF_POWER_RAMPOWER_S12POWER_MASK = 1UL << NRF_POWER_RAMPOWER_S12POWER,
- NRF_POWER_RAMPOWER_S13POWER_MASK = 1UL << NRF_POWER_RAMPOWER_S13POWER,
- NRF_POWER_RAMPOWER_S14POWER_MASK = 1UL << NRF_POWER_RAMPOWER_S14POWER,
- NRF_POWER_RAMPOWER_S15POWER_MASK = 1UL << NRF_POWER_RAMPOWER_S15POWER,
- NRF_POWER_RAMPOWER_S0RETENTION_MASK = 1UL << NRF_POWER_RAMPOWER_S0RETENTION ,
- NRF_POWER_RAMPOWER_S1RETENTION_MASK = 1UL << NRF_POWER_RAMPOWER_S1RETENTION ,
- NRF_POWER_RAMPOWER_S2RETENTION_MASK = 1UL << NRF_POWER_RAMPOWER_S2RETENTION ,
- NRF_POWER_RAMPOWER_S3RETENTION_MASK = 1UL << NRF_POWER_RAMPOWER_S3RETENTION ,
- NRF_POWER_RAMPOWER_S4RETENTION_MASK = 1UL << NRF_POWER_RAMPOWER_S4RETENTION ,
- NRF_POWER_RAMPOWER_S5RETENTION_MASK = 1UL << NRF_POWER_RAMPOWER_S5RETENTION ,
- NRF_POWER_RAMPOWER_S7RETENTION_MASK = 1UL << NRF_POWER_RAMPOWER_S7RETENTION ,
- NRF_POWER_RAMPOWER_S8RETENTION_MASK = 1UL << NRF_POWER_RAMPOWER_S8RETENTION ,
- NRF_POWER_RAMPOWER_S9RETENTION_MASK = 1UL << NRF_POWER_RAMPOWER_S9RETENTION ,
- NRF_POWER_RAMPOWER_S10RETENTION_MASK = 1UL << NRF_POWER_RAMPOWER_S10RETENTION,
- NRF_POWER_RAMPOWER_S11RETENTION_MASK = 1UL << NRF_POWER_RAMPOWER_S11RETENTION,
- NRF_POWER_RAMPOWER_S12RETENTION_MASK = 1UL << NRF_POWER_RAMPOWER_S12RETENTION,
- NRF_POWER_RAMPOWER_S13RETENTION_MASK = 1UL << NRF_POWER_RAMPOWER_S13RETENTION,
- NRF_POWER_RAMPOWER_S14RETENTION_MASK = 1UL << NRF_POWER_RAMPOWER_S14RETENTION,
- NRF_POWER_RAMPOWER_S15RETENTION_MASK = (int)(1UL << NRF_POWER_RAMPOWER_S15RETENTION),
- } nrf_power_rampower_mask_t;
- #endif
- __STATIC_INLINE void nrf_power_task_trigger(nrf_power_task_t task);
- __STATIC_INLINE uint32_t nrf_power_task_address_get(nrf_power_task_t task);
- __STATIC_INLINE void nrf_power_event_clear(nrf_power_event_t event);
- __STATIC_INLINE bool nrf_power_event_check(nrf_power_event_t event);
- __STATIC_INLINE bool nrf_power_event_get_and_clear(nrf_power_event_t event);
- __STATIC_INLINE uint32_t nrf_power_event_address_get(nrf_power_event_t event);
- __STATIC_INLINE void nrf_power_int_enable(uint32_t int_mask);
- __STATIC_INLINE bool nrf_power_int_enable_check(uint32_t int_mask);
- __STATIC_INLINE uint32_t nrf_power_int_enable_get(void);
- __STATIC_INLINE void nrf_power_int_disable(uint32_t int_mask);
- #if defined(DPPI_PRESENT) || defined(__NRFX_DOXYGEN__)
- __STATIC_INLINE void nrf_power_subscribe_set(nrf_power_task_t task,
- uint8_t channel);
- __STATIC_INLINE void nrf_power_subscribe_clear(nrf_power_task_t task);
- __STATIC_INLINE void nrf_power_publish_set(nrf_power_event_t event,
- uint8_t channel);
- __STATIC_INLINE void nrf_power_publish_clear(nrf_power_event_t event);
- #endif
- __STATIC_INLINE uint32_t nrf_power_resetreas_get(void);
- __STATIC_INLINE void nrf_power_resetreas_clear(uint32_t mask);
- #if defined(POWER_POWERSTATUS_LTEMODEM_Msk) || defined(__NRFX_DOXYGEN__)
- __STATIC_INLINE bool nrf_power_powerstatus_get(void);
- #endif
- #if defined(POWER_RAMSTATUS_RAMBLOCK0_Msk) || defined(__NRFX_DOXYGEN__)
- __STATIC_INLINE uint32_t nrf_power_ramstatus_get(void);
- #endif
- #if defined(POWER_SYSTEMOFF_SYSTEMOFF_Enter)
- __STATIC_INLINE void nrf_power_system_off(void);
- #endif
- #if NRF_POWER_HAS_POFCON
- __STATIC_INLINE void nrf_power_pofcon_set(bool enabled, nrf_power_pof_thr_t thr);
- __STATIC_INLINE nrf_power_pof_thr_t nrf_power_pofcon_get(bool * p_enabled);
- #endif
- #if NRF_POWER_HAS_VDDH
- __STATIC_INLINE void nrf_power_pofcon_vddh_set(nrf_power_pof_thrvddh_t thr);
- __STATIC_INLINE nrf_power_pof_thrvddh_t nrf_power_pofcon_vddh_get(void);
- #endif
- __STATIC_INLINE void nrf_power_gpregret_set(uint8_t val);
- __STATIC_INLINE uint8_t nrf_power_gpregret_get(void);
- #if defined(POWER_GPREGRET2_GPREGRET_Msk) || defined(__NRFX_DOXYGEN__)
- __STATIC_INLINE void nrf_power_gpregret2_set(uint8_t val);
- __STATIC_INLINE uint8_t nrf_power_gpregret2_get(void);
- #endif
- __STATIC_INLINE uint8_t nrf_power_gpregret_ext_get(uint8_t reg_num);
- __STATIC_INLINE void nrf_power_gpregret_ext_set(uint8_t reg_num,
- uint8_t val);
- #if NRF_POWER_HAS_DCDCEN
- __STATIC_INLINE void nrf_power_dcdcen_set(bool enable);
- __STATIC_INLINE bool nrf_power_dcdcen_get(void);
- #endif
- #if defined(POWER_RAM_POWER_S0POWER_Msk) || defined(__NRFX_DOXYGEN__)
- __STATIC_INLINE void nrf_power_rampower_mask_on(uint8_t block, uint32_t section_mask);
- __STATIC_INLINE void nrf_power_rampower_mask_off(uint8_t block, uint32_t section_mask);
- __STATIC_INLINE uint32_t nrf_power_rampower_mask_get(uint8_t block);
- #endif
- #if NRF_POWER_HAS_DCDCEN_VDDH
- __STATIC_INLINE void nrf_power_dcdcen_vddh_set(bool enable);
- __STATIC_INLINE bool nrf_power_dcdcen_vddh_get(void);
- #endif
- #if NRF_POWER_HAS_VDDH
- __STATIC_INLINE nrf_power_mainregstatus_t nrf_power_mainregstatus_get(void);
- #endif
- #if NRF_POWER_HAS_USBREG
- __STATIC_INLINE uint32_t nrf_power_usbregstatus_get(void);
- __STATIC_INLINE bool nrf_power_usbregstatus_vbusdet_get(void);
- __STATIC_INLINE bool nrf_power_usbregstatus_outrdy_get(void);
- #endif
- #ifndef SUPPRESS_INLINE_IMPLEMENTATION
- __STATIC_INLINE void nrf_power_task_trigger(nrf_power_task_t task)
- {
- *((volatile uint32_t *)((uint8_t *)NRF_POWER + (uint32_t)task)) = 0x1UL;
- }
- __STATIC_INLINE uint32_t nrf_power_task_address_get(nrf_power_task_t task)
- {
- return ((uint32_t)NRF_POWER + (uint32_t)task);
- }
- __STATIC_INLINE void nrf_power_event_clear(nrf_power_event_t event)
- {
- *((volatile uint32_t *)((uint8_t *)NRF_POWER + (uint32_t)event)) = 0x0UL;
- #if __CORTEX_M == 0x04
- volatile uint32_t dummy = *((volatile uint32_t *)((uint8_t *)NRF_POWER + (uint32_t)event));
- (void)dummy;
- #endif
- }
- __STATIC_INLINE bool nrf_power_event_check(nrf_power_event_t event)
- {
- return (bool)*(volatile uint32_t *)((uint8_t *)NRF_POWER + (uint32_t)event);
- }
- __STATIC_INLINE bool nrf_power_event_get_and_clear(nrf_power_event_t event)
- {
- bool ret = nrf_power_event_check(event);
- if (ret)
- {
- nrf_power_event_clear(event);
- }
- return ret;
- }
- __STATIC_INLINE uint32_t nrf_power_event_address_get(nrf_power_event_t event)
- {
- return ((uint32_t)NRF_POWER + (uint32_t)event);
- }
- __STATIC_INLINE void nrf_power_int_enable(uint32_t int_mask)
- {
- NRF_POWER->INTENSET = int_mask;
- }
- __STATIC_INLINE bool nrf_power_int_enable_check(uint32_t int_mask)
- {
- return (bool)(NRF_POWER->INTENSET & int_mask);
- }
- __STATIC_INLINE uint32_t nrf_power_int_enable_get(void)
- {
- return NRF_POWER->INTENSET;
- }
- __STATIC_INLINE void nrf_power_int_disable(uint32_t int_mask)
- {
- NRF_POWER->INTENCLR = int_mask;
- }
- #if defined(DPPI_PRESENT)
- __STATIC_INLINE void nrf_power_subscribe_set(nrf_power_task_t task,
- uint8_t channel)
- {
- *((volatile uint32_t *) ((uint8_t *) NRF_POWER + (uint32_t) task + 0x80uL)) =
- ((uint32_t)channel | POWER_SUBSCRIBE_CONSTLAT_EN_Msk);
- }
- __STATIC_INLINE void nrf_power_subscribe_clear(nrf_power_task_t task)
- {
- *((volatile uint32_t *) ((uint8_t *) NRF_POWER + (uint32_t) task + 0x80uL)) = 0;
- }
- __STATIC_INLINE void nrf_power_publish_set(nrf_power_event_t event,
- uint8_t channel)
- {
- *((volatile uint32_t *) ((uint8_t *) NRF_POWER + (uint32_t) event + 0x80uL)) =
- ((uint32_t)channel | POWER_PUBLISH_SLEEPENTER_EN_Msk);
- }
- __STATIC_INLINE void nrf_power_publish_clear(nrf_power_event_t event)
- {
- *((volatile uint32_t *) ((uint8_t *) NRF_POWER + (uint32_t) event + 0x80uL)) = 0;
- }
- #endif
- __STATIC_INLINE uint32_t nrf_power_resetreas_get(void)
- {
- return NRF_POWER->RESETREAS;
- }
- __STATIC_INLINE void nrf_power_resetreas_clear(uint32_t mask)
- {
- NRF_POWER->RESETREAS = mask;
- }
- #if defined(POWER_POWERSTATUS_LTEMODEM_Msk)
- __STATIC_INLINE bool nrf_power_powerstatus_get(void)
- {
- return (NRF_POWER->POWERSTATUS & POWER_POWERSTATUS_LTEMODEM_Msk) ==
- (POWER_POWERSTATUS_LTEMODEM_ON << POWER_POWERSTATUS_LTEMODEM_Pos);
- }
- #endif
- #if defined(POWER_RAMSTATUS_RAMBLOCK0_Msk)
- __STATIC_INLINE uint32_t nrf_power_ramstatus_get(void)
- {
- return NRF_POWER->RAMSTATUS;
- }
- #endif
- #if defined(POWER_SYSTEMOFF_SYSTEMOFF_Enter)
- __STATIC_INLINE void nrf_power_system_off(void)
- {
- NRF_POWER->SYSTEMOFF = POWER_SYSTEMOFF_SYSTEMOFF_Enter;
- __DSB();
-
- while (true)
- {
- __WFE();
- }
- }
- #endif
- #if NRF_POWER_HAS_POFCON
- __STATIC_INLINE void nrf_power_pofcon_set(bool enabled, nrf_power_pof_thr_t thr)
- {
- NRFX_ASSERT(thr == (thr & (POWER_POFCON_THRESHOLD_Msk >> POWER_POFCON_THRESHOLD_Pos)));
- #if NRF_POWER_HAS_VDDH
- uint32_t pofcon = NRF_POWER->POFCON;
- pofcon &= ~(POWER_POFCON_THRESHOLD_Msk | POWER_POFCON_POF_Msk);
- pofcon |=
- #else
- NRF_POWER->POFCON =
- #endif
- (((uint32_t)thr) << POWER_POFCON_THRESHOLD_Pos) |
- (enabled ?
- (POWER_POFCON_POF_Enabled << POWER_POFCON_POF_Pos)
- :
- (POWER_POFCON_POF_Disabled << POWER_POFCON_POF_Pos));
- #if NRF_POWER_HAS_VDDH
- NRF_POWER->POFCON = pofcon;
- #endif
- }
- __STATIC_INLINE nrf_power_pof_thr_t nrf_power_pofcon_get(bool * p_enabled)
- {
- uint32_t pofcon = NRF_POWER->POFCON;
- if (NULL != p_enabled)
- {
- (*p_enabled) = ((pofcon & POWER_POFCON_POF_Msk) >> POWER_POFCON_POF_Pos)
- == POWER_POFCON_POF_Enabled;
- }
- return (nrf_power_pof_thr_t)((pofcon & POWER_POFCON_THRESHOLD_Msk) >>
- POWER_POFCON_THRESHOLD_Pos);
- }
- #endif
- #if NRF_POWER_HAS_VDDH
- __STATIC_INLINE void nrf_power_pofcon_vddh_set(nrf_power_pof_thrvddh_t thr)
- {
- NRFX_ASSERT(thr == (thr & (POWER_POFCON_THRESHOLDVDDH_Msk >> POWER_POFCON_THRESHOLDVDDH_Pos)));
- uint32_t pofcon = NRF_POWER->POFCON;
- pofcon &= ~POWER_POFCON_THRESHOLDVDDH_Msk;
- pofcon |= (((uint32_t)thr) << POWER_POFCON_THRESHOLDVDDH_Pos);
- NRF_POWER->POFCON = pofcon;
- }
- __STATIC_INLINE nrf_power_pof_thrvddh_t nrf_power_pofcon_vddh_get(void)
- {
- return (nrf_power_pof_thrvddh_t)((NRF_POWER->POFCON &
- POWER_POFCON_THRESHOLDVDDH_Msk) >> POWER_POFCON_THRESHOLDVDDH_Pos);
- }
- #endif
- __STATIC_INLINE void nrf_power_gpregret_set(uint8_t val)
- {
- volatile uint32_t * p_gpregret;
- if (sizeof(NRF_POWER->GPREGRET) > sizeof(uint32_t))
- {
- p_gpregret = &((volatile uint32_t *)NRF_POWER->GPREGRET)[0];
- }
- else
- {
- p_gpregret = &((volatile uint32_t *)&NRF_POWER->GPREGRET)[0];
- }
- *p_gpregret = val;
- }
- __STATIC_INLINE uint8_t nrf_power_gpregret_get(void)
- {
- volatile uint32_t * p_gpregret;
- if (sizeof(NRF_POWER->GPREGRET) > sizeof(uint32_t))
- {
- p_gpregret = &((volatile uint32_t *)NRF_POWER->GPREGRET)[0];
- }
- else
- {
- p_gpregret = &((volatile uint32_t *)&NRF_POWER->GPREGRET)[0];
- }
- return *p_gpregret;
- }
- __STATIC_INLINE void nrf_power_gpregret_ext_set(uint8_t reg_num, uint8_t val)
- {
- #ifdef NRF91_SERIES
- NRF_POWER->GPREGRET[reg_num] = val;
- #else
- NRFX_ASSERT(reg_num < 1);
- NRF_POWER->GPREGRET = val;
- #endif
- }
- __STATIC_INLINE uint8_t nrf_power_gpregret_ext_get(uint8_t reg_num)
- {
- #ifdef NRF91_SERIES
- return NRF_POWER->GPREGRET[reg_num];
- #else
- NRFX_ASSERT(reg_num < 1);
- return NRF_POWER->GPREGRET;
- #endif
- }
- #if defined(POWER_GPREGRET2_GPREGRET_Msk)
- __STATIC_INLINE void nrf_power_gpregret2_set(uint8_t val)
- {
- NRF_POWER->GPREGRET2 = val;
- }
- __STATIC_INLINE uint8_t nrf_power_gpregret2_get(void)
- {
- return NRF_POWER->GPREGRET2;
- }
- #endif
- #if NRF_POWER_HAS_DCDCEN
- __STATIC_INLINE void nrf_power_dcdcen_set(bool enable)
- {
- NRF_POWER->DCDCEN = (enable ?
- POWER_DCDCEN_DCDCEN_Enabled : POWER_DCDCEN_DCDCEN_Disabled) <<
- POWER_DCDCEN_DCDCEN_Pos;
- }
- __STATIC_INLINE bool nrf_power_dcdcen_get(void)
- {
- return (NRF_POWER->DCDCEN & POWER_DCDCEN_DCDCEN_Msk)
- ==
- (POWER_DCDCEN_DCDCEN_Enabled << POWER_DCDCEN_DCDCEN_Pos);
- }
- #endif
- #if defined(POWER_RAM_POWER_S0POWER_Msk)
- __STATIC_INLINE void nrf_power_rampower_mask_on(uint8_t block, uint32_t section_mask)
- {
- NRFX_ASSERT(block < NRFX_ARRAY_SIZE(NRF_POWER->RAM));
- NRF_POWER->RAM[block].POWERSET = section_mask;
- }
- __STATIC_INLINE void nrf_power_rampower_mask_off(uint8_t block, uint32_t section_mask)
- {
- NRFX_ASSERT(block < NRFX_ARRAY_SIZE(NRF_POWER->RAM));
- NRF_POWER->RAM[block].POWERCLR = section_mask;
- }
- __STATIC_INLINE uint32_t nrf_power_rampower_mask_get(uint8_t block)
- {
- NRFX_ASSERT(block < NRFX_ARRAY_SIZE(NRF_POWER->RAM));
- return NRF_POWER->RAM[block].POWER;
- }
- #endif
- #if NRF_POWER_HAS_DCDCEN_VDDH
- __STATIC_INLINE void nrf_power_dcdcen_vddh_set(bool enable)
- {
- NRF_POWER->DCDCEN0 = (enable ?
- POWER_DCDCEN0_DCDCEN_Enabled : POWER_DCDCEN0_DCDCEN_Disabled) <<
- POWER_DCDCEN0_DCDCEN_Pos;
- }
- __STATIC_INLINE bool nrf_power_dcdcen_vddh_get(void)
- {
- return (NRF_POWER->DCDCEN0 & POWER_DCDCEN0_DCDCEN_Msk)
- ==
- (POWER_DCDCEN0_DCDCEN_Enabled << POWER_DCDCEN0_DCDCEN_Pos);
- }
- #endif
- #if NRF_POWER_HAS_VDDH
- __STATIC_INLINE nrf_power_mainregstatus_t nrf_power_mainregstatus_get(void)
- {
- return (nrf_power_mainregstatus_t)(((NRF_POWER->MAINREGSTATUS) &
- POWER_MAINREGSTATUS_MAINREGSTATUS_Msk) >>
- POWER_MAINREGSTATUS_MAINREGSTATUS_Pos);
- }
- #endif
- #if NRF_POWER_HAS_USBREG
- __STATIC_INLINE uint32_t nrf_power_usbregstatus_get(void)
- {
- return NRF_POWER->USBREGSTATUS;
- }
- __STATIC_INLINE bool nrf_power_usbregstatus_vbusdet_get(void)
- {
- return (nrf_power_usbregstatus_get() &
- NRF_POWER_USBREGSTATUS_VBUSDETECT_MASK) != 0;
- }
- __STATIC_INLINE bool nrf_power_usbregstatus_outrdy_get(void)
- {
- return (nrf_power_usbregstatus_get() &
- NRF_POWER_USBREGSTATUS_OUTPUTRDY_MASK) != 0;
- }
- #endif
- #endif
- #ifdef __cplusplus
- }
- #endif
- #endif
|