/**
 * This function is the top level PCD interrupt handler.
 */
static irqreturn_t dwc_otg_pcd_irq(int irq, void *dev)
{
	dwc_otg_pcd_t *pcd = dev;
	int32_t retval = IRQ_NONE;

	retval = dwc_otg_pcd_handle_intr(pcd);
	return IRQ_RETVAL(retval);
}
/**
 * This function is the top level PCD interrupt handler.
 */
static irqreturn_t dwc_otg_pcd_irq(int irq, void *dev)
{
	dwc_otg_pcd_t *pcd = dev;
	int32_t retval;

	retval = dwc_otg_pcd_handle_intr(pcd);
	if (retval != 0) {
		S3C2410X_CLEAR_EINTPEND();
	}
	return IRQ_RETVAL(retval);
}
/*
 * This function must be registered as a interrupt handler after calling the
 * driver_init() function.
 */
void usb_ISR(void)
{
	/*
	 * FIXME: we shall be able to detect USB reset here with resetdet field
	 * or is it host only
	 */
	gintsts_data_t gintsts;
	__DWC_WARN("USB ISR! - enter\n");
	do {
		dwc_otg_handle_common_intr(dwc_otg_device);
		dwc_otg_pcd_handle_intr(dwc_otg_device->pcd);
		gintsts.d32 = dwc_otg_read_core_intr(dwc_otg_device->core_if);
		__DWC_WARN("USB ISR! - gintsts: %d\n", gintsts.d32);
	} while (gintsts.d32 != 0);
	__DWC_WARN("USB ISR! - exit\n");
}