[U-Boot] [PATCH 3/5] Add fuse API and commands

Benoît Thébaudeau benoit.thebaudeau at advansee.com
Mon Nov 26 17:03:15 CET 2012


Hi Eric, all,

On Thursday, August 23, 2012 3:23:20 PM, Eric Nelson wrote:
> On 08/23/2012 03:31 AM, Stefano Babic wrote:
> > On 22/08/2012 12:43, Dirk Behme wrote:
> >> On 14.08.2012 14:52, Benoît Thébaudeau wrote:
> >>> This can be useful for fuse-like hardware, OTP SoC options, etc.
> >>
> >> For i.MX6, I have a port of the OTP support from Freescale's
> >> U-Boot to
> >> our mainline U-Boot in the queue [1].
> >>
> >> As I don't have the overview over the various i.MXxx SoCs and
> >> don't
> >> understand much of this patch below: Should this implement the
> >> same
> >> functionality like my patch [1] for i.MX6?
> >
> > I have not checked the details. but seeing the code it looks that
> > the
> > procedure to read / write are different. In this case, a further
> > driver
> > is ok.
> >
> > Anyway, you should take a look if your patches can be used on a mxs
> > (MX28) device, because they should be closer. And then I will not
> > like
> > to have a driver for each SOC.
> >
> > Generally, I think we should use the approach of the common command
> > and
> > a specific fuse implementation. Then this API should be used by
> > your
> > patches as well.
> >
> I agree.
> 
> The use of the fuse API will likely result in more code than the
> imxotp implementation, and more importantly, it will make the usage
> more confusing by introducing terms bank and row.
> 
> Reading and writing fuses is probably not an area that we want
> confusion.

I am looking again into this question now that I have the i.MX6 reference
manual.

I don't see any difference between IIM and OCOTP features:
 - There are still banks: They exist as seen from the controller, even if they
   don't exist physically in the efusebox. See 46.2.1 and OCOTP memory map
   ("Value of OTP Bankx Wordy" shadow registers).
 - Rows are named words.
 - The read operations are read accesses to the shadow registers.
 - The sense operations are direct fuse reads (shadow reload + read), as
   explained by the steps in 46.2.1.2.
 - The prog operations are the programming of the fuses, as explained by the
   steps in 46.2.1.3.
 - The override operations are simple write accesses to the shadow registers, as
   explained in 46.2.1.3.

As to the vocabulary used, the differences are:
 - "row" -> "word".
 - "sense" -> "direct read".

Hence, the fuse API applies very well in this case too.

Best regards,
Benoît


More information about the U-Boot mailing list