From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?utf-8?Q?Beno=C3=AEt_Th=C3=A9baudeau?= Date: Mon, 26 Nov 2012 17:03:15 +0100 (CET) Subject: [U-Boot] [PATCH 3/5] Add fuse API and commands In-Reply-To: <50362EC8.8080905@boundarydevices.com> Message-ID: <178628824.2148673.1353945795295.JavaMail.root@advansee.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de 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