Changeset e47ed05 in mainline for kernel/genarch/src/drivers/grlib/irqmp.c
- Timestamp:
- 2013-12-27T18:18:13Z (11 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- f6f22cdb
- Parents:
- 96b9724
- File:
-
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
kernel/genarch/src/drivers/grlib/irqmp.c
r96b9724 re47ed05 35 35 */ 36 36 37 #include <genarch/drivers/grlib _irqmp/grlib_irqmp.h>37 #include <genarch/drivers/grlib/irqmp.h> 38 38 #include <arch/asm.h> 39 39 #include <mm/km.h> … … 43 43 irqc->regs = (void *) km_map(bootinfo->intc_base, PAGE_SIZE, 44 44 PAGE_NOT_CACHEABLE); 45 46 printf("irqmp regs: %p\n", irqc->regs); 47 45 48 46 /* Mask all interrupts */ 49 pio_write_32((void *) irqc->regs + GRLIB_IRQMP_MASK_OFFSET, 0x8);47 pio_write_32((void *) irqc->regs + GRLIB_IRQMP_MASK_OFFSET, 0x8); 50 48 } 51 49 52 50 int grlib_irqmp_inum_get(grlib_irqmp_t *irqc) 53 51 { 54 int i;55 52 uint32_t pending = pio_read_32(&irqc->regs->pending); 56 57 for ( i = 1; i < 16; i++) {53 54 for (unsigned int i = 1; i < 16; i++) { 58 55 if (pending & (1 << i)) 59 56 return i; 60 57 } 61 58 62 59 return -1; 63 60 } 64 61 65 void grlib_irqmp_clear(grlib_irqmp_t *irqc, int inum)62 void grlib_irqmp_clear(grlib_irqmp_t *irqc, unsigned int inum) 66 63 { 67 64 inum++; … … 69 66 } 70 67 71 void grlib_irqmp_mask(grlib_irqmp_t *irqc, int src)68 void grlib_irqmp_mask(grlib_irqmp_t *irqc, unsigned int src) 72 69 { 73 uint32_t mask = pio_read_32((void *)irqc->regs + GRLIB_IRQMP_MASK_OFFSET); 74 70 uint32_t mask = pio_read_32((void *) irqc->regs + 71 GRLIB_IRQMP_MASK_OFFSET); 72 75 73 src++; 76 74 mask &= ~(1 << src); 77 78 pio_write_32((void *) irqc->regs + GRLIB_IRQMP_MASK_OFFSET, mask);75 76 pio_write_32((void *) irqc->regs + GRLIB_IRQMP_MASK_OFFSET, mask); 79 77 } 80 78 81 void grlib_irqmp_unmask(grlib_irqmp_t *irqc, int src)79 void grlib_irqmp_unmask(grlib_irqmp_t *irqc, unsigned int src) 82 80 { 83 uint32_t mask = pio_read_32((void *)irqc->regs + GRLIB_IRQMP_MASK_OFFSET); 84 81 uint32_t mask = pio_read_32((void *) irqc->regs + 82 GRLIB_IRQMP_MASK_OFFSET); 83 85 84 src++; 86 85 mask |= (1 << src); 87 88 pio_write_32((void *) irqc->regs + GRLIB_IRQMP_MASK_OFFSET, mask);86 87 pio_write_32((void *) irqc->regs + GRLIB_IRQMP_MASK_OFFSET, mask); 89 88 } 90 89
Note:
See TracChangeset
for help on using the changeset viewer.