Changeset 273c976 in mainline


Ignore:
Timestamp:
2013-07-15T20:36:54Z (11 years ago)
Author:
Jan Vesely <jano.vesely@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
f3386d7
Parents:
59a72f8
Message:

arm32, bbxm: Follow the manual in ISR steps order.

Fixes ghost interrupt issue (firing two interrupts instead of one).
Maurizio pointed out the correct fix on irc.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/arch/arm32/src/mach/beagleboardxm/beagleboardxm.c

    r59a72f8 r273c976  
    8585static void bb_timer_irq_handler(irq_t *irq)
    8686{
    87         // FIXME Ignore the weird ghost interrupt
    88         if (!amdm37x_gpt_irq_ack(&beagleboard.timer))
    89                 return;
     87        amdm37x_gpt_irq_ack(&beagleboard.timer);
    9088
    9189        /*
     
    150148{
    151149        const unsigned inum = amdm37x_irc_inum_get(beagleboard.irc_addr);
    152         amdm37x_irc_irq_ack(beagleboard.irc_addr);
    153150
    154151        irq_t *irq = irq_dispatch_and_lock(inum);
     
    162159                    CPU->id, inum);
    163160        }
     161        /** amdm37x manual ch. 12.5.2 (p. 2428) places irc ack at the end
     162         * of ISR. DO this to avoid strange behavior. */
     163        amdm37x_irc_irq_ack(beagleboard.irc_addr);
    164164}
    165165
Note: See TracChangeset for help on using the changeset viewer.