mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-24 21:54:01 +00:00
misc: mxc_ocotp: check fuse word before programming on i.MX7ULP
On i.MX7ULP, the fuse words (except bank 0 and 1) only supports to write once, because they use ECC mode. Multiple writes may damage the ECC value and cause a wrong fuse value decoded when reading. This patch adds a checking before the fuse word programming, only can write when the word value is 0. Signed-off-by: Ye Li <ye.li@nxp.com> Signed-off-by: Peng Fan <peng.fan@nxp.com>
This commit is contained in:
parent
fb8cac9366
commit
8df42bee0e
1 changed files with 17 additions and 0 deletions
|
@ -342,6 +342,23 @@ int fuse_sense(u32 bank, u32 word, u32 *val)
|
|||
static int prepare_write(struct ocotp_regs **regs, u32 bank, u32 word,
|
||||
const char *caller)
|
||||
{
|
||||
#ifdef CONFIG_MX7ULP
|
||||
u32 val;
|
||||
int ret;
|
||||
|
||||
/* Only bank 0 and 1 are redundancy mode, others are ECC mode */
|
||||
if (bank != 0 && bank != 1) {
|
||||
ret = fuse_sense(bank, word, &val);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
if (val != 0) {
|
||||
printf("mxc_ocotp: The word has been programmed, no more write\n");
|
||||
return -EPERM;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
return prepare_access(regs, bank, word, true, caller);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue