diff options
author | Felipe Balbi <balbi@ti.com> | 2015-02-26 15:27:12 -0500 |
---|---|---|
committer | Felipe Balbi <balbi@ti.com> | 2015-03-10 16:33:29 -0400 |
commit | 83b8f5b8c07c8cbad8c14c7b8767e7219a6c1813 (patch) | |
tree | 12f0a696bdd190895b6857e370c3307db98a5b4c | |
parent | b28a6432405ca95b3da25630d79d2463c754a79c (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.c | 17 | ||||
-rw-r--r-- | drivers/usb/musb/musb_core.h | 1 |
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 | ||
510 | static void musb_disable_interrupts(struct musb *musb); | 510 | static void musb_disable_interrupts(struct musb *musb); |
511 | static void musb_generic_disable(struct musb *musb); | 511 | static void musb_generic_disable(struct musb *musb); |
512 | static 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 */ | 1834 | static void musb_recover_from_babble(struct musb *musb) |
1835 | static 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 | ||
2195 | fail3: | 2198 | fail3: |
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; |