/////////////////////////////////////////////////////////////////////////////// //! See hw_icoll.h for details. /////////////////////////////////////////////////////////////////////////////// void hw_icoll_SetFiqMode(ICOLL_FIQ_enums_t eIrqVectorNumber, bool bEnable) { if(bEnable) HW_ICOLL_INTERRUPTn_SET(eIrqVectorNumber, BM_ICOLL_INTERRUPTn_ENFIQ); else HW_ICOLL_INTERRUPTn_CLR(eIrqVectorNumber, BM_ICOLL_INTERRUPTn_ENFIQ); }
void mxs_set_irq_fiq(unsigned int irq, unsigned int type) { if (type == 0) __raw_writel(BM_ICOLL_INTERRUPTn_ENFIQ, g_icoll_base + HW_ICOLL_INTERRUPTn_CLR(irq)); else __raw_writel(BM_ICOLL_INTERRUPTn_ENFIQ, g_icoll_base + HW_ICOLL_INTERRUPTn_SET(irq)); }
static void beep_timer_off(void) { __raw_writel(1 << 2,int_base +HW_ICOLL_INTERRUPTn_CLR(IRQ_TIMER3)); __raw_writel(BV_TIMROT_TIMCTRLn_SELECT__NEVER_TICK| BM_TIMROT_TIMCTRLn_IRQ_EN , base + HW_TIMROT_TIMCTRLn(3)); gpio_direction_output(MXS_PIN_TO_GPIO(mxs_leds[LED_BEEP]), 0); return; }
/////////////////////////////////////////////////////////////////////////////// //! See hw_icoll.h for details. /////////////////////////////////////////////////////////////////////////////// bool hw_icoll_EnableVector(ICOLL_IRQ_enums_t eIrqVectorNumber, bool bEnable) { bool b_previousEnableState; b_previousEnableState= (HW_ICOLL_INTERRUPTn(eIrqVectorNumber).B.ENABLE)?true:false; if (bEnable) HW_ICOLL_INTERRUPTn_SET(eIrqVectorNumber, BM_ICOLL_INTERRUPTn_ENABLE); else HW_ICOLL_INTERRUPTn_CLR(eIrqVectorNumber, BM_ICOLL_INTERRUPTn_ENABLE); return b_previousEnableState; }
static int beep_timer_on(void) { #if 0 //modify by cxf in 2014-04-03 writel(3 << 12,beep_base + HW_PINCTRL_MUXSEL4_SET); writel(3 << 24,beep_base + HW_PINCTRL_DRIVE8_SET); writel(1 << 23,beep_base + HW_PINCTRL_DRIVE8_CLR); writel(1 << 6,beep_base + HW_PINCTRL_DOE2_SET); #endif __raw_writel(BV_TIMROT_TIMCTRLn_SELECT__TICK_ALWAYS| BM_TIMROT_TIMCTRLn_IRQ_EN , base + HW_TIMROT_TIMCTRLn(3)); __raw_writel((0x0f | (3ul << 6)|(1ul << 14)),base + HW_TIMROT_TIMCTRL3_SET); __raw_writel(3ul << 4,base + HW_TIMROT_TIMCTRL3_CLR); __raw_writel(TIMER_CLOCK_FREQ / TICK_PER_SEC,base + HW_TIMROT_FIXED_COUNT3); __raw_writel(1 << 2,int_base +HW_ICOLL_INTERRUPTn_CLR(IRQ_TIMER3)); __raw_writel(1 << 2,int_base +HW_ICOLL_INTERRUPTn_SET(IRQ_TIMER3)); return 0; }
void __init mx28evk_pins_init(void) { int iRet = 0; mx28evk_init_pin_group(mx28evk_fixed_pins, ARRAY_SIZE(mx28evk_fixed_pins)); if (enable_ssp1) { pr_info("Initializing SSP1 pins\n"); mx28evk_init_pin_group(mx28evk_ssp1_pins, ARRAY_SIZE(mx28evk_ssp1_pins)); } else if (enable_gpmi) { pr_info("Initializing GPMI pins\n"); mx28evk_init_pin_group(mx28evk_gpmi_pins, ARRAY_SIZE(mx28evk_gpmi_pins)); } #if defined(CONFIG_SPI_MXS) || defined(CONFIG_SPI_MXS_MODULE) mx28evk_init_pin_group(mx28evk_spi_pins, ARRAY_SIZE(mx28evk_spi_pins)); #endif #if defined(CONFIG_FEC) || defined(CONFIG_FEC_MODULE)\ || defined(CONFIG_FEC_L2SWITCH) mx28evk_init_pin_group(mx28evk_eth_pins, ARRAY_SIZE(mx28evk_eth_pins)); #endif /* 初始化是蜂鸣器的定时器中断处理函数 */ iRet = request_irq(IRQ_TIMER3,beep_timer_handler,IRQF_DISABLED | IRQF_TIMER,"beeptimer", NULL); if(iRet != 0) { printk("timer irq for beep install fails,ret:%d\n",iRet); } __raw_writel(1 << 2,int_base +HW_ICOLL_INTERRUPTn_CLR(IRQ_TIMER3));//关闭中断 beeptimer.flag = BEEP_TIMER_OFF; }
static void stmp378x_mask_irq(unsigned int irq) { /* IRQ disable */ HW_ICOLL_INTERRUPTn_CLR(irq, BM_ICOLL_INTERRUPTn_ENABLE); }
static void icoll_mask_irq(unsigned int irq) { __raw_writel(BM_ICOLL_INTERRUPTn_ENABLE, g_icoll_base + HW_ICOLL_INTERRUPTn_CLR(irq)); }
static void icoll_mask_irq(struct irq_data *d) { __raw_writel(BM_ICOLL_INTERRUPTn_ENABLE, icoll_base + HW_ICOLL_INTERRUPTn_CLR(d->irq)); }