version 1.1.6.1, 2008/06/02 13:21:55 |
version 1.1.6.2, 2008/09/28 10:39:50 |
Line 45 __KERNEL_RCSID(0, "$NetBSD$"); |
|
Line 45 __KERNEL_RCSID(0, "$NetBSD$"); |
|
#include <arm/cpufunc.h> |
#include <arm/cpufunc.h> |
#include <arm/atomic.h> |
#include <arm/atomic.h> |
|
|
#include <arm/omap/omap2430reg.h> |
#include <arm/omap/omap2_reg.h> |
#include <arm/omap/omap2430obiovar.h> |
#include <arm/omap/omap2_obiovar.h> |
|
|
|
|
#define INTC_READ(sc, g, o) \ |
#define INTC_READ(sc, g, o) \ |
Line 99 omap2icu_unblock_irqs(struct pic_softc * |
|
Line 99 omap2icu_unblock_irqs(struct pic_softc * |
|
sc->sc_enabled_irqs[group] |= irq_mask; |
sc->sc_enabled_irqs[group] |= irq_mask; |
INTC_WRITE(sc, group, INTC_MIR_CLEAR, irq_mask); |
INTC_WRITE(sc, group, INTC_MIR_CLEAR, irq_mask); |
|
|
aprint_normal_dev(sc->sc_dev, "unblock: group %zd: mask=%#x\n", |
|
group >> 5, irq_mask); |
|
|
|
/* Force INTC to recompute IRQ availability */ |
/* Force INTC to recompute IRQ availability */ |
INTC_WRITE(sc, 0, INTC_CONTROL, INTC_CONTROL_NEWIRQAGR); |
INTC_WRITE(sc, 0, INTC_CONTROL, INTC_CONTROL_NEWIRQAGR); |
} |
} |
Line 112 omap2icu_block_irqs(struct pic_softc *pi |
|
Line 109 omap2icu_block_irqs(struct pic_softc *pi |
|
struct omap2icu_softc * const sc = PICTOSOFTC(pic); |
struct omap2icu_softc * const sc = PICTOSOFTC(pic); |
const size_t group = irqbase / 32; |
const size_t group = irqbase / 32; |
|
|
aprint_normal_dev(sc->sc_dev, "block: group %zd: mask=%#x\n", |
|
group >> 5, irq_mask); |
|
|
|
INTC_WRITE(sc, group, INTC_MIR_SET, irq_mask); |
INTC_WRITE(sc, group, INTC_MIR_SET, irq_mask); |
sc->sc_enabled_irqs[group] &= ~irq_mask; |
sc->sc_enabled_irqs[group] &= ~irq_mask; |
} |
} |
Line 132 find_pending_irqs(struct omap2icu_softc |
|
Line 126 find_pending_irqs(struct omap2icu_softc |
|
if (pending == 0) |
if (pending == 0) |
return 0; |
return 0; |
|
|
aprint_normal_dev(sc->sc_dev, "group %zd: pending=%#x\n", |
|
group, pending); |
|
return pic_mark_pending_sources(&sc->sc_pic, group * 32, pending); |
return pic_mark_pending_sources(&sc->sc_pic, group * 32, pending); |
} |
} |
|
|
Line 177 omap2icu_match(device_t parent, cfdata_t |
|
Line 169 omap2icu_match(device_t parent, cfdata_t |
|
{ |
{ |
struct obio_attach_args * const oa = aux; |
struct obio_attach_args * const oa = aux; |
|
|
return (oa->obio_addr == INTC_BASE); |
#if defined(OMAP_2430) || defined(OMAP_2420) |
|
return oa->obio_addr == INTC_BASE; |
|
#elif defined(OMAP3530) |
|
return oa->obio_addr == INTC_BASE_3530; |
|
#else |
|
#error unsupported OMAP variant |
|
#endif |
} |
} |
|
|
void |
void |