Hi!
With regards to clearing Interrupt Status, adi_adrv9025_GPIntClearStatusRegister(...), adi_adrv9025_GpInt0Handler() or adi_adrv9025_GpInt1Handler() can be called.
However, I am confused as these use adrv9025_CoreGpInterruptsStickyBitMaskBfSet() to clear the interrupt status but the bit field value passed are different.
adi_adrv9025_GPIntClearStatusRegister() uses:
/* Set all bits to one to clear corresponding status register bit */
recoveryAction = adrv9025_CoreGpInterruptsStickyBitMaskBfSet(device,
ADRV9025_BF_CORE,
STATUS_CLEAR_ALL);
where,
static const uint64_t STATUS_CLEAR_ALL = 0xFFFFFFFFFFFFFFFF;
while adi_adrv9025_GpInt0Handler() or adi_adrv9025_GpInt1Handler() use:
/* Clear all events as we process the status register (this also clears the relevant bits of the status register)*/
recoveryAction = adrv9025_CoreGpInterruptsStickyBitMaskBfSet(device,
ADRV9025_BF_CORE,
GPINT_CLEAR_INTERRUPTS);
where,
static const uint64_t GPINT_CLEAR_INTERRUPTS = 0x0000000000000000;
doesn't adi_adrv9025_GpInt0Handler() or adi_adrv9025_GpInt1Handler() make all sticky bit mask inactive/unmasked
therefore making the interrupt status sticky and not clearing any clearable sources?