|
@@ -187,6 +187,8 @@ static int mxs_ocotp_write_fuse(uint32_t addr, uint32_t mask)
|
|
uint32_t hclk_val, vddio_val;
|
|
uint32_t hclk_val, vddio_val;
|
|
int ret;
|
|
int ret;
|
|
|
|
|
|
|
|
+ mxs_ocotp_clear_error();
|
|
|
|
+
|
|
/* Make sure the banks are closed for reading. */
|
|
/* Make sure the banks are closed for reading. */
|
|
ret = mxs_ocotp_read_bank_open(0);
|
|
ret = mxs_ocotp_read_bank_open(0);
|
|
if (ret) {
|
|
if (ret) {
|
|
@@ -221,13 +223,17 @@ static int mxs_ocotp_write_fuse(uint32_t addr, uint32_t mask)
|
|
goto fail;
|
|
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:
|
|
fail:
|
|
mxs_ocotp_scale_vddio(0, &vddio_val);
|
|
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");
|
|
puts("Failed scaling up the HCLK!\n");
|
|
- return ret;
|
|
|
|
- }
|
|
|
|
|
|
|
|
return ret;
|
|
return ret;
|
|
}
|
|
}
|