|
SmartSnippets DA1459x SDK
|
Go to the documentation of this file.
45 #if dg_configUSE_HW_PDC
49 #define PDC_IRQn PDC_M33_IRQn
51 #define HW_PDC_LUT_SIZE (12)
52 #define HW_PDC_INVALID_LUT_INDEX (0xFFFF)
53 #define HW_PDC_UNUSED_LUT_ENTRY_VALUE (0UL)
54 #define HW_PDC_FILTER_DONT_CARE (0xFF)
107 HW_PDC_ERROR_NONE = 0,
108 HW_PDC_ERROR_INVALID_LUT_ENTRY,
109 HW_PDC_ERROR_INVALID_PARAM
146 #define HW_PDC_LUT_ENTRY_FIELD_MASK(field) \
147 (PDC_PDC_CTRL0_REG_##field##_Msk)
155 #define HW_PDC_LUT_ENTRY_FIELD_POS(field) \
156 (PDC_PDC_CTRL0_REG_##field##_Pos)
165 #define HW_PDC_LUT_ENTRY_FIELD_VAL(field, val) \
166 (((val) << HW_PDC_LUT_ENTRY_FIELD_POS(field)) & HW_PDC_LUT_ENTRY_FIELD_MASK(field))
168 #define HW_PDC_LUT_ENTRY_VAL(trig_select, trig_id, wakeup_master, flags) \
170 HW_PDC_LUT_ENTRY_FIELD_VAL(TRIG_SELECT, trig_select) \
171 | HW_PDC_LUT_ENTRY_FIELD_VAL(TRIG_ID, trig_id) \
172 | HW_PDC_LUT_ENTRY_FIELD_VAL(PDC_MASTER, wakeup_master) \
179 #define HW_PDC_TRIGGER_FROM_PORT0(pin, wakeup_master, flags) \
180 HW_PDC_LUT_ENTRY_VAL(HW_PDC_TRIG_SELECT_P0_GPIO, pin, wakeup_master, flags)
182 #define HW_PDC_TRIGGER_FROM_PORT1(pin, wakeup_master, flags) \
183 HW_PDC_LUT_ENTRY_VAL(HW_PDC_TRIG_SELECT_P1_GPIO, pin, wakeup_master, flags)
185 #define HW_PDC_TRIGGER_FROM_PERIPH(peripheral, wakeup_master, flags) \
186 HW_PDC_LUT_ENTRY_VAL(HW_PDC_TRIG_SELECT_PERIPHERAL, peripheral, wakeup_master, flags)
188 #define HW_PDC_TRIGGER_FROM_MASTER(wakeup_master, flags) \
189 HW_PDC_LUT_ENTRY_VAL(HW_PDC_TRIG_SELECT_MASTER, HW_PDC_PERIPH_TRIG_ID_MASTERONLY, \
190 wakeup_master, flags)
203 return *(&PDC->PDC_CTRL0_REG + idx);
234 return PDC->PDC_PENDING_REG;
242 return PDC->PDC_PENDING_CM33_REG;
250 return PDC->PDC_PENDING_CMAC_REG;
263 PDC->PDC_ACKNOWLEDGE_REG= idx;
286 if (idx >= HW_PDC_LUT_SIZE) {
287 return HW_PDC_ERROR_INVALID_PARAM;
291 return HW_PDC_ERROR_INVALID_LUT_ENTRY;
294 PDC->PDC_SET_PENDING_REG = idx;
296 return HW_PDC_ERROR_NONE;
308 return !!(PDC->PDC_PENDING_REG & (1 << idx));
352 uint32_t wakeup_master, uint32_t flags, uint32_t start);
360 PDC->PDC_CONFIG_REG = blocked;
370 return PDC->PDC_CONFIG_REG;
HW_PDC_PERIPH_TRIG_ID trig_id
Definition: hw_pdc.h:117
PDC entry.
Definition: hw_pdc.h:115
__STATIC_INLINE uint32_t hw_pdc_get_pending_cm33(void)
Get all PDC LUT entries pending for CM33.
Definition: hw_pdc.h:240
HW_PDC_TRIG_SELECT
Selects which wakeup source bank is selected as a trigger in a PDC LUT entry.
Definition: hw_pdc.h:58
void hw_pdc_lut_reset(void)
Reset PDC Lookup table.
uint8_t num
Definition: hw_pdc.h:136
void hw_pdc_ack_all_pending_cm33(void)
Acknowledge all PDC LUT entries pending for CM33.
#define ASSERT_ERROR(a)
Assert as error macro.
Definition: sdk_defs.h:422
__STATIC_INLINE HW_PDC_ERROR hw_pdc_set_pending(uint32_t idx)
Set a PDC LUT entry as pending.
Definition: hw_pdc.h:284
uint32_t hw_pdc_remove_entry(uint32_t idx)
Remove a dynamically added PDC LUT entry.
#define PDC_PDC_CTRL0_REG_EN_COM_Msk
Definition: DA1459x-00.h:3984
Central include header file with platform definitions.
__STATIC_INLINE void hw_pdc_acknowledge(uint32_t idx)
Acknowledge a PDC LUT entry.
Definition: hw_pdc.h:259
#define PDC_PDC_CTRL0_REG_EN_TMR_Msk
Definition: DA1459x-00.h:3988
PDC entries that will be kept after deep sleep.
Definition: hw_pdc.h:135
__STATIC_FORCEINLINE void hw_pdc_set_blocked_triggers(HW_PDC_BLOCKED_TRIG blocked)
Set PDC configuration register.
Definition: hw_pdc.h:358
hw_pdc_entry_t * keep
Definition: hw_pdc.h:137
#define PDC_PDC_CTRL0_REG_EN_XTAL_Msk
Definition: DA1459x-00.h:3990
__STATIC_INLINE uint32_t hw_pdc_get_pending_cmac(void)
Get all PDC LUT entries pending for CMAC.
Definition: hw_pdc.h:248
__RETAINED_CODE uint32_t hw_pdc_add_entry(uint32_t lut_entry)
Add a PDC LUT entry dynamically.
void hw_pdc_write_entry(uint32_t idx, uint32_t value)
Write a value in specific PDC LUT index.
HW_PDC_TRIG_SELECT trig_select
Definition: hw_pdc.h:116
HW_PDC_LUT_ENTRY_EN flags
Definition: hw_pdc.h:119
HW_PDC_PERIPH_TRIG_ID
Peripheral PDC trigger IDs.
Definition: hw_pdc.h:68
#define REG_MSK(base, reg, field)
Access register field mask.
Definition: sdk_defs.h:583
__STATIC_INLINE uint32_t hw_pdc_read_entry(uint32_t idx)
Read value from specific PDC LUT index.
Definition: hw_pdc.h:199
uint32_t hw_pdc_find_entry(uint32_t trig_select, uint32_t trig_id, uint32_t wakeup_master, uint32_t flags, uint32_t start)
Get the first PDC LUT entry index matching specific criteria.
#define HW_PDC_LUT_ENTRY_FIELD_MASK(field)
Get the mask of a field of a PDC LUT entry.
Definition: hw_pdc.h:146
__STATIC_FORCEINLINE bool hw_pdc_is_pending(uint32_t idx)
Check if a PDC LUT entry is pending.
Definition: hw_pdc.h:304
__STATIC_FORCEINLINE HW_PDC_BLOCKED_TRIG hw_pdc_get_blocked_triggers()
get PDC configuration register
Definition: hw_pdc.h:368
HW_PDC_MASTER
PDC master IDs.
Definition: hw_pdc.h:87
HW_PDC_MASTER wakeup_master
Definition: hw_pdc.h:118
void hw_pdc_lut_keep(hw_pdc_lut_keep_t *keep)
Keep only the selected PDC Lookup table entries.
#define PDC_PDC_CTRL0_REG_EN_PER_Msk
Definition: DA1459x-00.h:3986
__STATIC_INLINE uint32_t hw_pdc_get_pending(void)
Get all PDC LUT entries pending for any master.
Definition: hw_pdc.h:232
HW_PDC_LUT_ENTRY_EN
PDC LUT entry enable bits.
Definition: hw_pdc.h:96
HW_PDC_ERROR
PDC LLD error codes.
Definition: hw_pdc.h:106
HW_PDC_BLOCKED_TRIG
blocked PDC triggers
Definition: hw_pdc.h:125