Post Go back to editing

ADRV9025 Clearing GP Interrupt Status

Category: Software
Software Version: 6.3.0.5

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?

Parents Reply Children