示例#1
0
static int __init mt_init_dma(void)
{
    int i;

    g_nr_apdma_allocated = 0;

    for (i = 0; i < NR_GDMA_CHANNEL; i++) {
        mt_reset_dma(i);
    }

//    mt6577_irq_set_sens(MT6577_GDMA1_IRQ_ID, MT65xx_LEVEL_SENSITIVE);
//    mt6577_irq_set_polarity(MT6577_GDMA1_IRQ_ID, MT65xx_POLARITY_LOW);

    if (request_irq(MT_GDMA1_IRQ_ID, gdma1_irq_handler, IRQF_TRIGGER_LOW, "GDMA1",  NULL)) {
        printk(KERN_ERR"GDMA1 IRQ LINE NOT AVAILABLE!!\n");
    }

//    enable_irq(MT6577_GDMA1_IRQ_ID);

//    mt6577_irq_set_sens(MT6577_GDMA2_IRQ_ID, MT65xx_LEVEL_SENSITIVE);
//    mt6577_irq_set_polarity(MT6577_GDMA2_IRQ_ID, MT65xx_POLARITY_LOW);

    if (request_irq(MT_GDMA2_IRQ_ID, gdma2_irq_handler, IRQF_TRIGGER_LOW, "GDMA2",  NULL)) {
        printk(KERN_ERR"GDMA2 IRQ LINE NOT AVAILABLE!!\n");
    }
    
    printk("[APDMA] Init APDMA OK\n");
    
    emi_mpu_notifier_register(MST_ID_MMPERI_4, gdma1_check_mpu_violation);    

//    enable_irq(MT6577_GDMA2_IRQ_ID);

    return 0;
}
int musbfsh_platform_init(struct musbfsh *musbfsh)
{
    INFO("musbfsh_platform_init++\n");
    if(!musbfsh){
        ERR("musbfsh_platform_init,error,musbfsh is NULL");
        return -1;
    }
    musbfsh->board_set_vbus = mt65xx_usb11_vbus;
    musbfsh->board_set_power = mt65xx_usb11_poweron;
    hwPowerOn(MT65XX_POWER_LDO_VUSB, VOL_3300, "USB11"); // don't need to power on PHY for every resume
    mt65xx_usb11_poweron(true);
    emi_mpu_notifier_register(MST_ID_MMPERI_2, musbfs_check_mpu_violation);  
    return 0;
}
示例#3
0
int __init musb_platform_init(struct musb *musb)
{
	int err;
#ifdef CONFIG_USB_MTK_HDRC_HCD
	if (is_host_enabled(musb)) {
		musb->board_set_vbus = mtk_set_vbus;
		//<2013/03/27-23263-stevenchen, Correct GPIO12 & GPIO38 configuration to low down standby current.
		#ifndef CONFIG_MT6589_FPGA
		#ifndef MTK_BQ24196_SUPPORT
		#ifndef MTK_BQ24157_SUPPORT
		mt_set_gpio_mode(GPIO_OTG_DRVVBUS_PIN,GPIO_OTG_DRVVBUS_PIN_M_GPIO);//should set GPIO2 as gpio mode.
		mt_set_gpio_dir(GPIO_OTG_DRVVBUS_PIN,GPIO_DIR_OUT);
		mt_get_gpio_pull_enable(GPIO_OTG_DRVVBUS_PIN);
		mt_set_gpio_pull_select(GPIO_OTG_DRVVBUS_PIN,GPIO_PULL_UP);
		#endif
		#endif
		#endif
		//>2013/03/27-23263-stevenchen
	}
#endif


	musb->nIrq = MT6589_USB0_IRQ_ID;
	musb->dma_irq= (int)SHARE_IRQ;
	musb->fifo_cfg = fifo_cfg;
	musb->fifo_cfg_size = ARRAY_SIZE(fifo_cfg);
	musb->fifo_cfg_host = fifo_cfg_host;
	musb->fifo_cfg_host_size = ARRAY_SIZE(fifo_cfg_host);
	mtk_musb->power = FALSE;
	mtk_musb->is_host = FALSE;
	mtk_musb->fifo_size = 8*1024;

	#ifndef CONFIG_MT6589_FPGA
	hwPowerOn(MT65XX_POWER_LDO_VUSB, VOL_3300, "VUSB_LDO");
	printk("%s, enable VBUS_LDO \n", __func__);
	#endif

	musb_platform_enable(musb);
        emi_mpu_notifier_register(MST_ID_MMPERI_1, musb_check_mpu_violation);

	musb->isr = mt_usb_interrupt;
	musb_writel(musb->mregs,MUSB_HSDMA_INTR,0xff | (0xff << DMA_INTR_UNMASK_SET_OFFSET));
	DBG(2,"musb platform init %x\n",musb_readl(musb->mregs,MUSB_HSDMA_INTR));
	musb_writel(musb->mregs,USB_L1INTM,TX_INT_STATUS | RX_INT_STATUS | USBCOM_INT_STATUS | DMA_INT_STATUS);
	err = device_create_file(musb->controller,&dev_attr_cmode);
	return 0;
}