Changeset 4d2dba7 in mainline for kernel/genarch/src/drivers/grlib_irqmp/grlib_irqmp.c
- Timestamp:
- 2013-10-15T17:05:26Z (11 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- f988a13
- Parents:
- a73ebf0
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/genarch/src/drivers/grlib_irqmp/grlib_irqmp.c
ra73ebf0 r4d2dba7 38 38 #include <arch/asm.h> 39 39 40 void grlib_irqmp_init(grlib_irqmp_t *irqc, grlib_irqmp_regs_t *regs) 40 #include <mm/km.h> 41 42 void grlib_irqmp_init(grlib_irqmp_t *irqc, bootinfo_t *bootinfo) 41 43 { 42 irqc->regs = regs; 44 irqc->regs = (void *) km_map(bootinfo->intc_base, PAGE_SIZE, 45 PAGE_NOT_CACHEABLE); 46 47 /* Mask all interrupts */ 48 pio_write_32((void *)&irqc->regs + GRLIB_IRQMP_MASK_OFFSET, 0); 43 49 } 44 50 45 unsignedgrlib_irqmp_inum_get(grlib_irqmp_t *irqc)51 int grlib_irqmp_inum_get(grlib_irqmp_t *irqc) 46 52 { 47 return 0; 53 int i; 54 uint32_t pending = pio_read_32(&irqc->regs->pending); 55 56 for (i = 1; i < 16; i++) { 57 if (pending & (1 << i)) 58 return i; 59 } 60 61 return -1; 48 62 } 49 63 50 void grlib_irqmp_clear(grlib_irqmp_t *irqc, unsignedinum)64 void grlib_irqmp_clear(grlib_irqmp_t *irqc, int inum) 51 65 { 66 pio_write_32(&irqc->regs->clear, (1 << inum)); 52 67 } 53 68 54 void grlib_irqmp_ src_enable(grlib_irqmp_t *irqc, unsignedsrc)69 void grlib_irqmp_mask(grlib_irqmp_t *irqc, int src) 55 70 { 71 uint32_t mask = pio_read_32((void *)&irqc->regs + GRLIB_IRQMP_MASK_OFFSET); 72 73 mask &= ~(1 << src); 74 75 pio_write_32((void *)&irqc->regs + GRLIB_IRQMP_MASK_OFFSET, mask); 56 76 } 57 77 58 void grlib_irqmp_ src_disable(grlib_irqmp_t *irqc, unsignedsrc)78 void grlib_irqmp_unmask(grlib_irqmp_t *irqc, int src) 59 79 { 80 uint32_t mask = pio_read_32((void *)&irqc->regs + GRLIB_IRQMP_MASK_OFFSET); 81 82 mask |= (1 << src); 83 84 pio_write_32((void *)&irqc->regs + GRLIB_IRQMP_MASK_OFFSET, mask); 60 85 } 61 86
Note:
See TracChangeset
for help on using the changeset viewer.