|
@@ -267,6 +267,17 @@ static void otg_timer(unsigned long _musb)
|
|
|
pm_runtime_put_autosuspend(dev);
|
|
|
}
|
|
|
|
|
|
+void dsps_musb_clear_ep_rxintr(struct musb *musb, int epnum)
|
|
|
+{
|
|
|
+ u32 epintr;
|
|
|
+ struct dsps_glue *glue = dev_get_drvdata(musb->controller->parent);
|
|
|
+ const struct dsps_musb_wrapper *wrp = glue->wrp;
|
|
|
+
|
|
|
+ /* musb->lock might already been held */
|
|
|
+ epintr = (1 << epnum) << wrp->rxep_shift;
|
|
|
+ musb_writel(musb->ctrl_base, wrp->epintr_status, epintr);
|
|
|
+}
|
|
|
+
|
|
|
static irqreturn_t dsps_interrupt(int irq, void *hci)
|
|
|
{
|
|
|
struct musb *musb = hci;
|
|
@@ -622,6 +633,7 @@ static struct musb_platform_ops dsps_ops = {
|
|
|
|
|
|
.set_mode = dsps_musb_set_mode,
|
|
|
.recover = dsps_musb_recover,
|
|
|
+ .clear_ep_rxintr = dsps_musb_clear_ep_rxintr,
|
|
|
};
|
|
|
|
|
|
static u64 musb_dmamask = DMA_BIT_MASK(32);
|