]> git.sur5r.net Git - u-boot/blobdiff - drivers/misc/mxs_ocotp.c
net: smsc95xx: Prepare for conversion to driver model
[u-boot] / drivers / misc / mxs_ocotp.c
index 545d3ebf520ee2bd1934460ef7c6626ad95a0de0..6f0a1d3e6da836c84ef59abc7644ca9adfda3830 100644 (file)
@@ -187,6 +187,8 @@ static int mxs_ocotp_write_fuse(uint32_t addr, uint32_t mask)
        uint32_t hclk_val, vddio_val;
        int ret;
 
+       mxs_ocotp_clear_error();
+
        /* Make sure the banks are closed for reading. */
        ret = mxs_ocotp_read_bank_open(0);
        if (ret) {
@@ -221,13 +223,17 @@ 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);
-       ret = mxs_ocotp_scale_hclk(0, &hclk_val);
-       if (ret) {
+       if (mxs_ocotp_scale_hclk(0, &hclk_val))
                puts("Failed scaling up the HCLK!\n");
-               return ret;
-       }
 
        return ret;
 }