aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFelipe Balbi <balbi@ti.com>2015-02-26 15:27:12 -0500
committerFelipe Balbi <balbi@ti.com>2015-03-10 16:33:29 -0400
commit83b8f5b8c07c8cbad8c14c7b8767e7219a6c1813 (patch)
tree12f0a696bdd190895b6857e370c3307db98a5b4c
parentb28a6432405ca95b3da25630d79d2463c754a79c (diff)
usb: musb: core: drop recover_work
that's not needed anymore. Everything that we call is irq-safe, so we might as well not have a delayed work for babble recovery. Tested-by: Bin Liu <b-liu@ti.com> Signed-off-by: Felipe Balbi <balbi@ti.com>
-rw-r--r--drivers/usb/musb/musb_core.c17
-rw-r--r--drivers/usb/musb/musb_core.h1
2 files changed, 9 insertions, 9 deletions
diff --git a/drivers/usb/musb/musb_core.c b/drivers/usb/musb/musb_core.c
index bf9746287d7c..b410af6b0510 100644
--- a/drivers/usb/musb/musb_core.c
+++ b/drivers/usb/musb/musb_core.c
@@ -509,6 +509,7 @@ void musb_hnp_stop(struct musb *musb)
509 509
510static void musb_disable_interrupts(struct musb *musb); 510static void musb_disable_interrupts(struct musb *musb);
511static void musb_generic_disable(struct musb *musb); 511static void musb_generic_disable(struct musb *musb);
512static void musb_recover_from_babble(struct musb *musb);
512 513
513/* 514/*
514 * Interrupt Service Routine to record USB "global" interrupts. 515 * Interrupt Service Routine to record USB "global" interrupts.
@@ -885,8 +886,7 @@ b_host:
885 886
886 if (is_host_active(musb)) { 887 if (is_host_active(musb)) {
887 musb_disable_interrupts(musb); 888 musb_disable_interrupts(musb);
888 schedule_delayed_work(&musb->recover_work, 889 musb_recover_from_babble(musb);
889 usecs_to_jiffies(10));
890 } 890 }
891 } 891 }
892 } else { 892 } else {
@@ -1831,13 +1831,17 @@ static void musb_irq_work(struct work_struct *data)
1831 } 1831 }
1832} 1832}
1833 1833
1834/* Recover from babble interrupt conditions */ 1834static void musb_recover_from_babble(struct musb *musb)
1835static void musb_recover_work(struct work_struct *data)
1836{ 1835{
1837 struct musb *musb = container_of(data, struct musb, recover_work.work);
1838 int ret; 1836 int ret;
1839 u8 devctl; 1837 u8 devctl;
1840 1838
1839 /*
1840 * wait at least 320 cycles of 60MHz clock. That's 5.3us, we will give
1841 * it some slack and wait for 10us.
1842 */
1843 udelay(10);
1844
1841 ret = musb_platform_recover(musb); 1845 ret = musb_platform_recover(musb);
1842 if (ret) { 1846 if (ret) {
1843 musb_enable_interrupts(musb); 1847 musb_enable_interrupts(musb);
@@ -2098,7 +2102,6 @@ musb_init_controller(struct device *dev, int nIrq, void __iomem *ctrl)
2098 2102
2099 /* Init IRQ workqueue before request_irq */ 2103 /* Init IRQ workqueue before request_irq */
2100 INIT_WORK(&musb->irq_work, musb_irq_work); 2104 INIT_WORK(&musb->irq_work, musb_irq_work);
2101 INIT_DELAYED_WORK(&musb->recover_work, musb_recover_work);
2102 INIT_DELAYED_WORK(&musb->deassert_reset_work, musb_deassert_reset); 2105 INIT_DELAYED_WORK(&musb->deassert_reset_work, musb_deassert_reset);
2103 INIT_DELAYED_WORK(&musb->finish_resume_work, musb_host_finish_resume); 2106 INIT_DELAYED_WORK(&musb->finish_resume_work, musb_host_finish_resume);
2104 2107
@@ -2194,7 +2197,6 @@ fail4:
2194 2197
2195fail3: 2198fail3:
2196 cancel_work_sync(&musb->irq_work); 2199 cancel_work_sync(&musb->irq_work);
2197 cancel_delayed_work_sync(&musb->recover_work);
2198 cancel_delayed_work_sync(&musb->finish_resume_work); 2200 cancel_delayed_work_sync(&musb->finish_resume_work);
2199 cancel_delayed_work_sync(&musb->deassert_reset_work); 2201 cancel_delayed_work_sync(&musb->deassert_reset_work);
2200 if (musb->dma_controller) 2202 if (musb->dma_controller)
@@ -2260,7 +2262,6 @@ static int musb_remove(struct platform_device *pdev)
2260 dma_controller_destroy(musb->dma_controller); 2262 dma_controller_destroy(musb->dma_controller);
2261 2263
2262 cancel_work_sync(&musb->irq_work); 2264 cancel_work_sync(&musb->irq_work);
2263 cancel_delayed_work_sync(&musb->recover_work);
2264 cancel_delayed_work_sync(&musb->finish_resume_work); 2265 cancel_delayed_work_sync(&musb->finish_resume_work);
2265 cancel_delayed_work_sync(&musb->deassert_reset_work); 2266 cancel_delayed_work_sync(&musb->deassert_reset_work);
2266 musb_free(musb); 2267 musb_free(musb);
diff --git a/drivers/usb/musb/musb_core.h b/drivers/usb/musb/musb_core.h
index 1e03c7ec82e4..3877249a8b2d 100644
--- a/drivers/usb/musb/musb_core.h
+++ b/drivers/usb/musb/musb_core.h
@@ -301,7 +301,6 @@ struct musb {
301 301
302 irqreturn_t (*isr)(int, void *); 302 irqreturn_t (*isr)(int, void *);
303 struct work_struct irq_work; 303 struct work_struct irq_work;
304 struct delayed_work recover_work;
305 struct delayed_work deassert_reset_work; 304 struct delayed_work deassert_reset_work;
306 struct delayed_work finish_resume_work; 305 struct delayed_work finish_resume_work;
307 u16 hwvers; 306 u16 hwvers;