[U-Boot] [PATCH 2/3] mxs_ocotp: check for errors from the OTP controller after writing

Hector Palacios hector.palacios at digi.com
Fri Nov 21 19:04:39 CET 2014


Hi Fabio,

On 11/21/2014 06:10 PM, Fabio Estevam wrote:
> Hi Hector,
> 
> On Fri, Nov 21, 2014 at 2:54 PM, Hector Palacios
> <hector.palacios at digi.com> wrote:
>> 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 at digi.com>
>> ---
>>  drivers/misc/mxs_ocotp.c | 7 +++++++
>>  1 file changed, 7 insertions(+)
>>
>> diff --git a/drivers/misc/mxs_ocotp.c b/drivers/misc/mxs_ocotp.c
>> index 09002814f2f0..1659ee6a5eec 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:
> 
> What about doing this instead?
> 
>        /* Check for errors */
>        ret = readl(&ocotp_regs->hw_ocotp_ctrl) & OCOTP_CTRL_ERROR);
>        if (ret) {
>                printfs("Failed writing the fuses: %d\n", ret);
>                goto fail;
>        }
> 

Although the code looks nicer you are not returning a meaningful error code, just a
mask value (and yes, I know the error code does not get anywhere, but still).
--
Hector Palacios

PS. Sorry about the resending of the message but the mailing list server kept
rejecting it.


More information about the U-Boot mailing list