void __init arch_init_irq(void) { int i; clear_c0_status(0xff04); /* clear ERL */ set_c0_status(0x0400); /* set IP2 */ /* Set up INTC irq */ for (i = 0; i < 32; i++) { disable_intc_irq(i); set_irq_chip_and_handler(i, &intc_irq_type, handle_level_irq); } /* Set up DMAC irq */ for (i = 0; i < NUM_DMA; i++) { disable_dma_irq(IRQ_DMA_0 + i); set_irq_chip_and_handler(IRQ_DMA_0 + i, &dma_irq_type, handle_level_irq); } /* Set up GPIO irq */ for (i = 0; i < NUM_GPIO; i++) { disable_gpio_irq(IRQ_GPIO_0 + i); set_irq_chip_and_handler(IRQ_GPIO_0 + i, &gpio_irq_type, handle_level_irq); } }
/* * you want to use this! */ int calcwindspeed(){ int curtick = 0; int speed = 0; disable_gpio_irq(2,13); curtick = cnttick; cnttick = 0; float div = Chip_TIMER_ReadCount(LPC_TIMER2)/ticksPerSecond; Chip_TIMER_Reset(LPC_TIMER2); enable_gpio_irq(2,13); DBG("div:%f count:%d\n",div,curtick); speed = curtick*(2.25/(div))*1.609344*100; //mph to km/h to 100m/h return speed; }
static void shutdown_gpio_irq(unsigned int irq) { disable_gpio_irq(irq); }