diff options
author | David Schalig <dschalig@nvidia.com> | 2011-12-13 17:43:59 +0900 |
---|---|---|
committer | Varun Wadekar <vwadekar@nvidia.com> | 2011-12-21 12:06:24 +0530 |
commit | f86beb2d43293db309f77e95ee8db04489b48193 (patch) | |
tree | e94d03cf0a192c264759f39f11c0a548f801f5b5 /arch/arm/mach-tegra/kfuse.c | |
parent | 3a7ea27dfc3d658479c5380daa490258cf1146ae (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.c | 13 |
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"); |