[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