summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRakesh Bodla <rbodla@nvidia.com>2012-07-16 16:26:40 +0530
committerMatthew Pedro <mapedro@nvidia.com>2012-08-02 13:30:05 -0700
commitc2f5d504ef382f879b90464572c208ee074b1df4 (patch)
treee2d9027f77a8137d7374b497cfe2f8bec1ac5844
parent316eb7f2e9e04ed1e3759b7dd3a8633384e92e33 (diff)
ARM: tegra: usb_phy: prevent illegal access to registers
Adding the conditions to prevent illegal register access. Bug 993380 Bug 1006579 Bug 1018601 Change-Id: Ifdeae6c8a16a87cf565ef7c954b363e9de885a20 Signed-off-by: Rakesh Bodla <rbodla@nvidia.com> Reviewed-on: http://git-master/r/113138 (cherry picked from commit a3c026a229bbce614d7f40319bada1d7bf42942d) Reviewed-on: http://git-master/r/117966 Reviewed-by: Automatic_Commit_Validation_User Tested-by: Preetham Chandru <pchandru@nvidia.com> GVS: Gerrit_Virtual_Submit Reviewed-by: Kiran Adduri <kadduri@nvidia.com> Reviewed-by: Matthew Pedro <mapedro@nvidia.com>
-rw-r--r--arch/arm/mach-tegra/tegra3_usb_phy.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/arch/arm/mach-tegra/tegra3_usb_phy.c b/arch/arm/mach-tegra/tegra3_usb_phy.c
index 6a8dc3d252e6..3a831c59a750 100644
--- a/arch/arm/mach-tegra/tegra3_usb_phy.c
+++ b/arch/arm/mach-tegra/tegra3_usb_phy.c
@@ -1223,11 +1223,13 @@ static int utmi_phy_irq(struct tegra_usb_phy *phy)
void __iomem *base = phy->regs;
unsigned long val = 0;
- DBG("%s(%d) inst:[%d]\n", __func__, __LINE__, phy->inst);
- DBG("USB_USBSTS[0x%x] USB_PORTSC[0x%x]\n",
- readl(base + USB_USBSTS), readl(base + USB_PORTSC));
- DBG("USB_USBMODE[0x%x] USB_USBCMD[0x%x]\n",
- readl(base + USB_USBMODE), readl(base + USB_USBCMD));
+ if (phy->phy_clk_on) {
+ DBG("%s(%d) inst:[%d]\n", __func__, __LINE__, phy->inst);
+ DBG("USB_USBSTS[0x%x] USB_PORTSC[0x%x]\n",
+ readl(base + USB_USBSTS), readl(base + USB_PORTSC));
+ DBG("USB_USBMODE[0x%x] USB_USBCMD[0x%x]\n",
+ readl(base + USB_USBMODE), readl(base + USB_USBCMD));
+ }
usb_phy_fence_read(phy);
/* check if there is any remote wake event */
@@ -1247,6 +1249,8 @@ static int utmi_phy_irq(struct tegra_usb_phy *phy)
val = readl(base + USB_PORTSC);
val &= ~(USB_PORTSC_WKCN | USB_PORTSC_RWC_BITS);
writel(val , (base + USB_PORTSC));
+ } else if (!phy->phy_clk_on) {
+ return IRQ_NONE;
}
}