summaryrefslogtreecommitdiff
path: root/drivers/misc/mxs_ocotp.c
diff options
context:
space:
mode:
authorHector Palacios <hector.palacios@digi.com>2014-11-21 17:54:43 +0100
committerStefano Babic <sbabic@denx.de>2014-12-01 10:19:41 +0100
commitad5dd7ae4b0474b8e359c691cddb310940276695 (patch)
treef0ce6a8acbfd9e89162e91a43f7ac72705429689 /drivers/misc/mxs_ocotp.c
parentd8d160e4205aa2885cfe659102c9555ef0859fae (diff)
downloadu-boot-imx-ad5dd7ae4b0474b8e359c691cddb310940276695.zip
u-boot-imx-ad5dd7ae4b0474b8e359c691cddb310940276695.tar.gz
u-boot-imx-ad5dd7ae4b0474b8e359c691cddb310940276695.tar.bz2
mxs_ocotp: check for errors from the OTP controller after writing
The write operation may fail when trying to write to a locked area. In this case the ERROR bit is set in the CTRL register. Check for that condition and return an error. Signed-off-by: Hector Palacios <hector.palacios@digi.com> Reviewed-by: Fabio Estevam <fabio.estevam@freescale.com>
Diffstat (limited to 'drivers/misc/mxs_ocotp.c')
-rw-r--r--drivers/misc/mxs_ocotp.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/misc/mxs_ocotp.c b/drivers/misc/mxs_ocotp.c
index 0900281..1659ee6 100644
--- a/drivers/misc/mxs_ocotp.c
+++ b/drivers/misc/mxs_ocotp.c
@@ -221,6 +221,13 @@ static int mxs_ocotp_write_fuse(uint32_t addr, uint32_t mask)
goto fail;
}
+ /* Check for errors */
+ if (readl(&ocotp_regs->hw_ocotp_ctrl) & OCOTP_CTRL_ERROR) {
+ puts("Failed writing fuses!\n");
+ ret = -EPERM;
+ goto fail;
+ }
+
fail:
mxs_ocotp_scale_vddio(0, &vddio_val);
if (mxs_ocotp_scale_hclk(0, &hclk_val))