From FSL code,drivers/usb/otg/fsl_otg.c
/* OTG Initialization*/
int usb_otg_start(struct platform_device *pdev)
{
..
/* disable all interrupt and clear all OTGSC status */
temp = readl(&p_otg->dr_mem_map->otgsc);
temp &= ~OTGSC_INTERRUPT_ENABLE_BITS_MASK;
temp |= OTGSC_INTERRUPT_STATUS_BITS_MASK;
if (pdata->need_discharge_vbus)
temp |= OTGSC_CTRL_VBUS_DISCHARGE;
writel(temp, &p_otg->dr_mem_map->otgsc);
...
DBG("initial ID pin=%d\n", p_otg->fsm.id);
/*From here we know only OTG ID interrupt enabled.
* I don't know what you mean on printing many times???
*/
/* enable OTG ID pin interrupt */
temp = readl(&p_otg->dr_mem_map->otgsc);
if (!pdata->id_gpio)
temp |= OTGSC_INTR_USB_ID_EN;
temp &= ~OTGSC_INTR_1MS_TIMER_EN;
if (pdata->need_discharge_vbus)
temp &= ~OTGSC_CTRL_VBUS_DISCHARGE;
writel(temp, &p_otg->dr_mem_map->otgsc);
return 0;
}
Normally,OTGID interrupt will print ID value (each OTGID change will print once)
printk(KERN_DEBUG "ID int (ID is %d)\n", fotg->fsm.id);
If you found this will be printed many times,Please check your OTGID pin connection(Probably hardware rework required ). As I pointed out in last commit,
the OTGID pin level is sensitive for OTG working in device or host mode.