summaryrefslogtreecommitdiff
path: root/arch/arm/mach-tegra/kfuse.c
diff options
context:
space:
mode:
authorDavid Schalig <dschalig@nvidia.com>2011-12-13 17:43:59 +0900
committerVarun Wadekar <vwadekar@nvidia.com>2011-12-21 12:06:24 +0530
commitf86beb2d43293db309f77e95ee8db04489b48193 (patch)
treee94d03cf0a192c264759f39f11c0a548f801f5b5 /arch/arm/mach-tegra/kfuse.c
parent3a7ea27dfc3d658479c5380daa490258cf1146ae (diff)
tegra: kfuse: add error handling in kfuse read
Bug 914805 Change-Id: Ifb02c3193383b15f3f52964fcbad844fedd595c7 Signed-off-by: David Schalig <dschalig@nvidia.com> Reviewed-on: http://git-master/r/69704 Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: Sachin Nikam <snikam@nvidia.com> Reviewed-by: Mayuresh Kulkarni <mkulkarni@nvidia.com> Reviewed-by: Jon Mayo <jmayo@nvidia.com>
Diffstat (limited to 'arch/arm/mach-tegra/kfuse.c')
-rw-r--r--arch/arm/mach-tegra/kfuse.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/arch/arm/mach-tegra/kfuse.c b/arch/arm/mach-tegra/kfuse.c
index 1b8f033df48f..9e4b482e4691 100644
--- a/arch/arm/mach-tegra/kfuse.c
+++ b/arch/arm/mach-tegra/kfuse.c
@@ -69,6 +69,7 @@ static int wait_for_done(void)
*/
int tegra_kfuse_read(void *dest, size_t len)
{
+ int err;
u32 v;
unsigned cnt;
@@ -83,10 +84,18 @@ int tegra_kfuse_read(void *dest, size_t len)
}
}
- clk_enable(kfuse_clk);
+ err = clk_enable(kfuse_clk);
+ if (err)
+ return err;
tegra_kfuse_writel(KFUSE_KEYADDR_AUTOINC, KFUSE_KEYADDR);
- wait_for_done();
+
+ err = wait_for_done();
+ if (err) {
+ pr_err("kfuse: read timeout\n");
+ clk_disable(kfuse_clk);
+ return err;
+ }
if ((tegra_kfuse_readl(KFUSE_STATE) & KFUSE_STATE_CRCPASS) == 0) {
pr_err("kfuse: crc failed\n");