aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/musb
diff options
context:
space:
mode:
authorSebastian Andrzej Siewior <bigeasy@linutronix.de>2013-07-26 05:11:38 -0400
committerFelipe Balbi <balbi@ti.com>2013-07-29 06:58:28 -0400
commit9be73bae70ac5b0149daa243eeae2bdacd970574 (patch)
tree9635a0bc8b77427841016280511e306ea9192b5f /drivers/usb/musb
parentfa7b4ca50f03b6e71665ccef66ca000311353fc8 (diff)
usb: musb: dsps: remove EOI access
The EOI register is not present in the AM335x memory space according to the TRM and thus removed. Should any platform using the EOI register get merged then it may be used again if the register address is not zero. Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Signed-off-by: Felipe Balbi <balbi@ti.com>
Diffstat (limited to 'drivers/usb/musb')
-rw-r--r--drivers/usb/musb/musb_dsps.c15
1 files changed, 2 insertions, 13 deletions
diff --git a/drivers/usb/musb/musb_dsps.c b/drivers/usb/musb/musb_dsps.c
index aba2dc58938d..23f511f7df6d 100644
--- a/drivers/usb/musb/musb_dsps.c
+++ b/drivers/usb/musb/musb_dsps.c
@@ -73,7 +73,6 @@ struct dsps_musb_wrapper {
73 u16 revision; 73 u16 revision;
74 u16 control; 74 u16 control;
75 u16 status; 75 u16 status;
76 u16 eoi;
77 u16 epintr_set; 76 u16 epintr_set;
78 u16 epintr_clear; 77 u16 epintr_clear;
79 u16 epintr_status; 78 u16 epintr_status;
@@ -203,7 +202,6 @@ static void dsps_musb_disable(struct musb *musb)
203 dsps_writel(reg_base, wrp->epintr_clear, 202 dsps_writel(reg_base, wrp->epintr_clear,
204 wrp->txep_bitmap | wrp->rxep_bitmap); 203 wrp->txep_bitmap | wrp->rxep_bitmap);
205 dsps_writeb(musb->mregs, MUSB_DEVCTL, 0); 204 dsps_writeb(musb->mregs, MUSB_DEVCTL, 0);
206 dsps_writel(reg_base, wrp->eoi, 0);
207} 205}
208 206
209static void otg_timer(unsigned long _musb) 207static void otg_timer(unsigned long _musb)
@@ -317,7 +315,7 @@ static irqreturn_t dsps_interrupt(int irq, void *hci)
317 /* Get usb core interrupts */ 315 /* Get usb core interrupts */
318 usbintr = dsps_readl(reg_base, wrp->coreintr_status); 316 usbintr = dsps_readl(reg_base, wrp->coreintr_status);
319 if (!usbintr && !epintr) 317 if (!usbintr && !epintr)
320 goto eoi; 318 goto out;
321 319
322 musb->int_usb = (usbintr & wrp->usb_bitmap) >> wrp->usb_shift; 320 musb->int_usb = (usbintr & wrp->usb_bitmap) >> wrp->usb_shift;
323 if (usbintr) 321 if (usbintr)
@@ -385,16 +383,11 @@ static irqreturn_t dsps_interrupt(int irq, void *hci)
385 if (musb->int_tx || musb->int_rx || musb->int_usb) 383 if (musb->int_tx || musb->int_rx || musb->int_usb)
386 ret |= musb_interrupt(musb); 384 ret |= musb_interrupt(musb);
387 385
388 eoi:
389 /* EOI needs to be written for the IRQ to be re-asserted. */
390 if (ret == IRQ_HANDLED || epintr || usbintr)
391 dsps_writel(reg_base, wrp->eoi, 1);
392
393 /* Poll for ID change */ 386 /* Poll for ID change */
394 if (musb->xceiv->state == OTG_STATE_B_IDLE) 387 if (musb->xceiv->state == OTG_STATE_B_IDLE)
395 mod_timer(&glue->timer[pdev->id], 388 mod_timer(&glue->timer[pdev->id],
396 jiffies + wrp->poll_seconds * HZ); 389 jiffies + wrp->poll_seconds * HZ);
397 390out:
398 spin_unlock_irqrestore(&musb->lock, flags); 391 spin_unlock_irqrestore(&musb->lock, flags);
399 392
400 return ret; 393 return ret;
@@ -443,9 +436,6 @@ static int dsps_musb_init(struct musb *musb)
443 val &= ~(1 << wrp->otg_disable); 436 val &= ~(1 << wrp->otg_disable);
444 dsps_writel(musb->ctrl_base, wrp->phy_utmi, val); 437 dsps_writel(musb->ctrl_base, wrp->phy_utmi, val);
445 438
446 /* clear level interrupt */
447 dsps_writel(reg_base, wrp->eoi, 0);
448
449 return 0; 439 return 0;
450err0: 440err0:
451 usb_put_phy(musb->xceiv); 441 usb_put_phy(musb->xceiv);
@@ -724,7 +714,6 @@ static const struct dsps_musb_wrapper am33xx_driver_data = {
724 .revision = 0x00, 714 .revision = 0x00,
725 .control = 0x14, 715 .control = 0x14,
726 .status = 0x18, 716 .status = 0x18,
727 .eoi = 0x24,
728 .epintr_set = 0x38, 717 .epintr_set = 0x38,
729 .epintr_clear = 0x40, 718 .epintr_clear = 0x40,
730 .epintr_status = 0x30, 719 .epintr_status = 0x30,