diff options
author | Andy Carman <acarman@nvidia.com> | 2012-03-07 10:55:18 +0530 |
---|---|---|
committer | Simone Willett <swillett@nvidia.com> | 2012-04-26 14:48:08 -0700 |
commit | c6ef8e08914428e5c6d12fd69c1a9589e5839c14 (patch) | |
tree | 223d7daca69e636f01f97e1a65239ae370aa9976 /drivers/usb/otg/tegra-otg.c | |
parent | 1917156866d35d710c376106972a821f1261bde0 (diff) |
usb: otg: tegra: change logic for enable clock
When there is PMU interrupt we need to enable controller
clock. For this currently, work is being schedule, removing
this as clock can be enabled directly without scheduling
any work.
bug 925958
bug 941899
Signed-off-by: Andy Carman <acarman@nvidia.com>
Signed-off-by: Krishna Yarlagadda <kyarlagadda@nvidia.com>
Reviewed-on: http://git-master/r/88777
(cherry picked from commit fc31c04b7124f30970e862dd1b21a97d18dca38e)
Change-Id: I8f6e7325771219488440226ddde97a32da228608
Reviewed-on: http://git-master/r/97882
Reviewed-by: Simone Willett <swillett@nvidia.com>
Tested-by: Simone Willett <swillett@nvidia.com>
Diffstat (limited to 'drivers/usb/otg/tegra-otg.c')
-rw-r--r-- | drivers/usb/otg/tegra-otg.c | 12 |
1 files changed, 1 insertions, 11 deletions
diff --git a/drivers/usb/otg/tegra-otg.c b/drivers/usb/otg/tegra-otg.c index ecb88acf8d24..68d402afb25e 100644 --- a/drivers/usb/otg/tegra-otg.c +++ b/drivers/usb/otg/tegra-otg.c @@ -62,7 +62,6 @@ struct tegra_otg_data { struct platform_device *pdev; struct work_struct work; unsigned int intr_reg_data; - bool detect_vbus; bool clk_enabled; callback_t charger_cb; void *charger_cb_data; @@ -257,12 +256,6 @@ static void irq_work(struct work_struct *work) unsigned long flags; unsigned long status; - if (tegra->detect_vbus) { - tegra->detect_vbus = false; - tegra_otg_enable_clk(); - return; - } - clk_enable(tegra->clk); spin_lock_irqsave(&tegra->lock, flags); @@ -307,7 +300,6 @@ static irqreturn_t tegra_otg_irq(int irq, void *data) otg_writel(tegra, val, USB_PHY_WAKEUP); if ((val & USB_ID_INT_STATUS) || (val & USB_VBUS_INT_STATUS)) { tegra->int_status = val; - tegra->detect_vbus = false; schedule_work(&tegra->work); } } @@ -319,8 +311,7 @@ static irqreturn_t tegra_otg_irq(int irq, void *data) void tegra_otg_check_vbus_detection(void) { - tegra_clone->detect_vbus = true; - schedule_work(&tegra_clone->work); + tegra_otg_enable_clk(); } EXPORT_SYMBOL(tegra_otg_check_vbus_detection); @@ -345,7 +336,6 @@ static int tegra_otg_set_peripheral(struct otg_transceiver *otg, if ((val & USB_ID_INT_STATUS) || (val & USB_VBUS_INT_STATUS)) { tegra->int_status = val; - tegra->detect_vbus = false; schedule_work (&tegra->work); } |