Exemple #1
0
void imx233_timrot_setup(unsigned timer_nr, bool reload, unsigned count,
    unsigned src, unsigned prescale, bool polarity, imx233_timer_fn_t fn)
{
    int oldstatus = disable_interrupt_save(IRQ_FIQ_STATUS);
    /* only enable interrupt if function is set */
    bool irq = fn != NULL;
    timer_fns[timer_nr] = fn;

    /* make sure we start from stop state */
    HW_TIMROT_TIMCTRLn(timer_nr) = BF_OR2(TIMROT_TIMCTRLn,
        SELECT(BV_TIMROT_TIMCTRLn_SELECT__NEVER_TICK), UPDATE(1));
    /* write count and take effect immediately with UPDATE
     * manual says count-1 for reload timers */
    HW_TIMROT_TIMCOUNTn(timer_nr) = reload ? count - 1 : count;
    /* start timer */
    HW_TIMROT_TIMCTRLn(timer_nr) = BF_OR6(TIMROT_TIMCTRLn, SELECT(src),
        PRESCALE(prescale), POLARITY(polarity), RELOAD(reload), IRQ(irq),
        IRQ_EN(irq));
    imx233_icoll_enable_interrupt(INT_SRC_TIMER(timer_nr), irq);

    restore_interrupt(oldstatus);
}
Exemple #2
0
 { "ssp2_err", INT_SRC_SSP2_ERROR },
 { "vdd5v", INT_SRC_VDD5V },
 { "dac_dma", INT_SRC_DAC_DMA },
 { "dac_err", INT_SRC_DAC_ERROR },
 { "adc_dma", INT_SRC_ADC_DMA },
 { "adc_err", INT_SRC_ADC_ERROR },
 { "usbctrl", INT_SRC_USB_CTRL },
 { "ssp1_dma", INT_SRC_SSP1_DMA },
 { "ssp1_err", INT_SRC_SSP1_ERROR },
 { "gpio0", INT_SRC_GPIO0 },
 { "gpio1", INT_SRC_GPIO1 },
 { "gpio2", INT_SRC_GPIO2 },
 { "ssp2_dma", INT_SRC_SSP2_DMA },
 { "i2c_dma", INT_SRC_I2C_DMA },
 { "i2c_err", INT_SRC_I2C_ERROR },
 { "timer0", INT_SRC_TIMER(0) },
 { "timer1", INT_SRC_TIMER(1) },
 { "timer2", INT_SRC_TIMER(2) },
 { "timer3", INT_SRC_TIMER(3) },
 { "touch_det", INT_SRC_TOUCH_DETECT },
 { "lradc_ch0", INT_SRC_LRADC_CHx(0) },
 { "lradc_ch1", INT_SRC_LRADC_CHx(1) },
 { "lradc_ch2", INT_SRC_LRADC_CHx(2) },
 { "lradc_ch3", INT_SRC_LRADC_CHx(3) },
 { "lradc_ch4", INT_SRC_LRADC_CHx(4) },
 { "lradc_ch5", INT_SRC_LRADC_CHx(5) },
 { "lradc_ch6", INT_SRC_LRADC_CHx(6) },
 { "lradc_ch7", INT_SRC_LRADC_CHx(7) },
 { "lcdif_dma", INT_SRC_LCDIF_DMA },
 { "lcdif_err", INT_SRC_LCDIF_ERROR },
 { "rtc_1msec", INT_SRC_RTC_1MSEC },
Exemple #3
0
void imx233_timrot_set_priority(unsigned timer_nr, unsigned prio)
{
    imx233_icoll_set_priority(INT_SRC_TIMER(timer_nr), prio);
}