|
@@ -119,7 +119,7 @@ struct dsps_musb_wrapper {
|
|
unsigned iddig:5;
|
|
unsigned iddig:5;
|
|
unsigned iddig_mux:5;
|
|
unsigned iddig_mux:5;
|
|
/* miscellaneous stuff */
|
|
/* miscellaneous stuff */
|
|
- u8 poll_seconds;
|
|
|
|
|
|
+ unsigned poll_timeout;
|
|
};
|
|
};
|
|
|
|
|
|
/*
|
|
/*
|
|
@@ -285,7 +285,8 @@ static void otg_timer(unsigned long _musb)
|
|
}
|
|
}
|
|
if (!(devctl & MUSB_DEVCTL_SESSION) && !skip_session)
|
|
if (!(devctl & MUSB_DEVCTL_SESSION) && !skip_session)
|
|
dsps_writeb(mregs, MUSB_DEVCTL, MUSB_DEVCTL_SESSION);
|
|
dsps_writeb(mregs, MUSB_DEVCTL, MUSB_DEVCTL_SESSION);
|
|
- mod_timer(&glue->timer, jiffies + wrp->poll_seconds * HZ);
|
|
|
|
|
|
+ mod_timer(&glue->timer, jiffies +
|
|
|
|
+ msecs_to_jiffies(wrp->poll_timeout));
|
|
break;
|
|
break;
|
|
case OTG_STATE_A_WAIT_VFALL:
|
|
case OTG_STATE_A_WAIT_VFALL:
|
|
musb->xceiv->otg->state = OTG_STATE_A_WAIT_VRISE;
|
|
musb->xceiv->otg->state = OTG_STATE_A_WAIT_VRISE;
|
|
@@ -352,8 +353,8 @@ static irqreturn_t dsps_interrupt(int irq, void *hci)
|
|
*/
|
|
*/
|
|
musb->int_usb &= ~MUSB_INTR_VBUSERROR;
|
|
musb->int_usb &= ~MUSB_INTR_VBUSERROR;
|
|
musb->xceiv->otg->state = OTG_STATE_A_WAIT_VFALL;
|
|
musb->xceiv->otg->state = OTG_STATE_A_WAIT_VFALL;
|
|
- mod_timer(&glue->timer,
|
|
|
|
- jiffies + wrp->poll_seconds * HZ);
|
|
|
|
|
|
+ mod_timer(&glue->timer, jiffies +
|
|
|
|
+ msecs_to_jiffies(wrp->poll_timeout));
|
|
WARNING("VBUS error workaround (delay coming)\n");
|
|
WARNING("VBUS error workaround (delay coming)\n");
|
|
} else if (drvvbus) {
|
|
} else if (drvvbus) {
|
|
MUSB_HST_MODE(musb);
|
|
MUSB_HST_MODE(musb);
|
|
@@ -382,7 +383,8 @@ static irqreturn_t dsps_interrupt(int irq, void *hci)
|
|
/* Poll for ID change in OTG port mode */
|
|
/* Poll for ID change in OTG port mode */
|
|
if (musb->xceiv->otg->state == OTG_STATE_B_IDLE &&
|
|
if (musb->xceiv->otg->state == OTG_STATE_B_IDLE &&
|
|
musb->port_mode == MUSB_PORT_MODE_DUAL_ROLE)
|
|
musb->port_mode == MUSB_PORT_MODE_DUAL_ROLE)
|
|
- mod_timer(&glue->timer, jiffies + wrp->poll_seconds * HZ);
|
|
|
|
|
|
+ mod_timer(&glue->timer, jiffies +
|
|
|
|
+ msecs_to_jiffies(wrp->poll_timeout));
|
|
out:
|
|
out:
|
|
spin_unlock_irqrestore(&musb->lock, flags);
|
|
spin_unlock_irqrestore(&musb->lock, flags);
|
|
|
|
|
|
@@ -832,7 +834,7 @@ static const struct dsps_musb_wrapper am33xx_driver_data = {
|
|
.rxep_shift = 16,
|
|
.rxep_shift = 16,
|
|
.rxep_mask = 0xfffe,
|
|
.rxep_mask = 0xfffe,
|
|
.rxep_bitmap = (0xfffe << 16),
|
|
.rxep_bitmap = (0xfffe << 16),
|
|
- .poll_seconds = 2,
|
|
|
|
|
|
+ .poll_timeout = 2000, /* ms */
|
|
};
|
|
};
|
|
|
|
|
|
static const struct of_device_id musb_dsps_of_match[] = {
|
|
static const struct of_device_id musb_dsps_of_match[] = {
|
|
@@ -888,7 +890,8 @@ static int dsps_resume(struct device *dev)
|
|
dsps_writel(mbase, wrp->rx_mode, glue->context.rx_mode);
|
|
dsps_writel(mbase, wrp->rx_mode, glue->context.rx_mode);
|
|
if (musb->xceiv->otg->state == OTG_STATE_B_IDLE &&
|
|
if (musb->xceiv->otg->state == OTG_STATE_B_IDLE &&
|
|
musb->port_mode == MUSB_PORT_MODE_DUAL_ROLE)
|
|
musb->port_mode == MUSB_PORT_MODE_DUAL_ROLE)
|
|
- mod_timer(&glue->timer, jiffies + wrp->poll_seconds * HZ);
|
|
|
|
|
|
+ mod_timer(&glue->timer, jiffies +
|
|
|
|
+ msecs_to_jiffies(wrp->poll_timeout));
|
|
|
|
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|