All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2] ARM: mx6: Add function to set serial#
@ 2021-02-04 21:44 Sean Anderson
  2021-02-04 21:58 ` Tom Rini
  2021-03-01 11:55 ` sbabic at denx.de
  0 siblings, 2 replies; 8+ messages in thread
From: Sean Anderson @ 2021-02-04 21:44 UTC (permalink / raw)
  To: u-boot

The serial number OTP is similar to the imx7 version, except that the
register names are different. This also sets serial# directly, instead of
providing board_get_serial.

Signed-off-by: Sean Anderson <sean.anderson@seco.com>
---

Changes in v2:
- Populate serial# directly and call this from arch_misc_init

 arch/arm/mach-imx/mx6/soc.c | 37 +++++++++++++++++++++++++++++++++++++
 1 file changed, 37 insertions(+)

diff --git a/arch/arm/mach-imx/mx6/soc.c b/arch/arm/mach-imx/mx6/soc.c
index bf6dddfdc9..aacfc854a2 100644
--- a/arch/arm/mach-imx/mx6/soc.c
+++ b/arch/arm/mach-imx/mx6/soc.c
@@ -7,6 +7,7 @@
  */
 
 #include <common.h>
+#include <env.h>
 #include <init.h>
 #include <linux/delay.h>
 #include <linux/errno.h>
@@ -696,11 +697,47 @@ void imx_setup_hdmi(void)
 #endif
 
 #ifdef CONFIG_ARCH_MISC_INIT
+/*
+ * UNIQUE_ID describes a unique ID based on silicon wafer
+ * and die X/Y position
+ *
+ * UNIQUE_ID offset 0x410
+ * 31:0 fuse 0
+ * FSL-wide unique, encoded LOT ID STD II/SJC CHALLENGE/ Unique ID
+ *
+ * UNIQUE_ID offset 0x420
+ * 31:24 fuse 1
+ * The X-coordinate of the die location on the wafer/SJC CHALLENGE/ Unique ID
+ * 23:16 fuse 1
+ * The Y-coordinate of the die location on the wafer/SJC CHALLENGE/ Unique ID
+ * 15:11 fuse 1
+ * The wafer number of the wafer on which the device was fabricated/SJC
+ * CHALLENGE/ Unique ID
+ * 10:0 fuse 1
+ * FSL-wide unique, encoded LOT ID STD II/SJC CHALLENGE/ Unique ID
+ */
+static void setup_serial_number(void)
+{
+	char serial_string[17];
+	struct ocotp_regs *ocotp = (struct ocotp_regs *)OCOTP_BASE_ADDR;
+	struct fuse_bank *bank = &ocotp->bank[0];
+	struct fuse_bank0_regs *fuse =
+		(struct fuse_bank0_regs *)bank->fuse_regs;
+
+	if (env_get("serial#"))
+		return;
+
+	snprintf(serial_string, sizeof(serial_string), "%08x%08x",
+		 fuse->uid_low, fuse->uid_high);
+	env_set("serial#", serial_string);
+}
+
 int arch_misc_init(void)
 {
 #ifdef CONFIG_FSL_CAAM
 	sec_init();
 #endif
+	setup_serial_number();
 	return 0;
 }
 #endif
-- 
2.25.1

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH v2] ARM: mx6: Add function to set serial#
  2021-02-04 21:44 [PATCH v2] ARM: mx6: Add function to set serial# Sean Anderson
@ 2021-02-04 21:58 ` Tom Rini
  2021-02-04 22:03   ` Heinrich Schuchardt
  2021-03-01 11:55 ` sbabic at denx.de
  1 sibling, 1 reply; 8+ messages in thread
From: Tom Rini @ 2021-02-04 21:58 UTC (permalink / raw)
  To: u-boot

On Thu, Feb 04, 2021 at 04:44:22PM -0500, Sean Anderson wrote:

> The serial number OTP is similar to the imx7 version, except that the
> register names are different. This also sets serial# directly, instead of
> providing board_get_serial.
> 
> Signed-off-by: Sean Anderson <sean.anderson@seco.com>

Reviewed-by: Tom Rini <trini@konsulko.com>

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 659 bytes
Desc: not available
URL: <https://lists.denx.de/pipermail/u-boot/attachments/20210204/6fce3ea6/attachment.sig>

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH v2] ARM: mx6: Add function to set serial#
  2021-02-04 21:58 ` Tom Rini
@ 2021-02-04 22:03   ` Heinrich Schuchardt
  2021-02-04 22:12     ` Sean Anderson
  2021-02-04 22:23     ` Tom Rini
  0 siblings, 2 replies; 8+ messages in thread
From: Heinrich Schuchardt @ 2021-02-04 22:03 UTC (permalink / raw)
  To: u-boot

On 2/4/21 10:58 PM, Tom Rini wrote:
> On Thu, Feb 04, 2021 at 04:44:22PM -0500, Sean Anderson wrote:
>
>> The serial number OTP is similar to the imx7 version, except that the
>> register names are different. This also sets serial# directly, instead of
>> providing board_get_serial.
>>
>> Signed-off-by: Sean Anderson <sean.anderson@seco.com>
>
> Reviewed-by: Tom Rini <trini@konsulko.com>
>

The current patch is without effect.

We need to enable CONFIG_ARCH_MISC_INIT on i.MX6 by default, e.g.

diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 95557d6ed6..ba189c404d 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -901,6 +901,7 @@ config ARCH_MX6
         select SYS_FSL_HAS_SEC
         select SYS_FSL_SEC_COMPAT_4
         select SYS_FSL_SEC_LE
+       select ARCH_MISC_INIT
         imply MXC_GPIO
         imply SYS_THUMB_BUILD

Best regards

Heinrich

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH v2] ARM: mx6: Add function to set serial#
  2021-02-04 22:03   ` Heinrich Schuchardt
@ 2021-02-04 22:12     ` Sean Anderson
  2021-02-04 22:31       ` Heinrich Schuchardt
  2021-02-04 22:23     ` Tom Rini
  1 sibling, 1 reply; 8+ messages in thread
From: Sean Anderson @ 2021-02-04 22:12 UTC (permalink / raw)
  To: u-boot



On 2/4/21 5:03 PM, Heinrich Schuchardt wrote:
 > On 2/4/21 10:58 PM, Tom Rini wrote:
 >> On Thu, Feb 04, 2021 at 04:44:22PM -0500, Sean Anderson wrote:
 >>
 >>> The serial number OTP is similar to the imx7 version, except that the
 >>> register names are different. This also sets serial# directly,
 >>> instead of
 >>> providing board_get_serial.
 >>>
 >>> Signed-off-by: Sean Anderson <sean.anderson@seco.com>
 >>
 >> Reviewed-by: Tom Rini <trini@konsulko.com>
 >>
 >
 > The current patch is without effect.
 >
 > We need to enable CONFIG_ARCH_MISC_INIT on i.MX6 by default, e.g.
 >
 > diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
 > index 95557d6ed6..ba189c404d 100644
 > --- a/arch/arm/Kconfig
 > +++ b/arch/arm/Kconfig
 > @@ -901,6 +901,7 @@ config ARCH_MX6
 >          select SYS_FSL_HAS_SEC
 >          select SYS_FSL_SEC_COMPAT_4
 >          select SYS_FSL_SEC_LE
 > +       select ARCH_MISC_INIT
 >          imply MXC_GPIO
 >          imply SYS_THUMB_BUILD
 >
 > Best regards
 >
 > Heinrich

Do any boards on i.MX6 currently set serial# themselves? arch_misc_init
is called before board_late_init, which is (AFACT) typically where
boards set serial#. Any boards which conditionally set serial# (e.g.
from an eeprom) will not set things up properly. I looked over things
quickly, and I didn't see anything. So it may be fine to enable this.

Though by this logic, shouldn't you have implied ARCH_MISC_INIT back in
90865614b4 ("ARM: mx6: make CAAM usable on the i.MX6 boards")?

--Sean

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH v2] ARM: mx6: Add function to set serial#
  2021-02-04 22:03   ` Heinrich Schuchardt
  2021-02-04 22:12     ` Sean Anderson
@ 2021-02-04 22:23     ` Tom Rini
  1 sibling, 0 replies; 8+ messages in thread
From: Tom Rini @ 2021-02-04 22:23 UTC (permalink / raw)
  To: u-boot

On Thu, Feb 04, 2021 at 11:03:06PM +0100, Heinrich Schuchardt wrote:
> On 2/4/21 10:58 PM, Tom Rini wrote:
> > On Thu, Feb 04, 2021 at 04:44:22PM -0500, Sean Anderson wrote:
> > 
> > > The serial number OTP is similar to the imx7 version, except that the
> > > register names are different. This also sets serial# directly, instead of
> > > providing board_get_serial.
> > > 
> > > Signed-off-by: Sean Anderson <sean.anderson@seco.com>
> > 
> > Reviewed-by: Tom Rini <trini@konsulko.com>
> > 
> 
> The current patch is without effect.
> 
> We need to enable CONFIG_ARCH_MISC_INIT on i.MX6 by default, e.g.
> 
> diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
> index 95557d6ed6..ba189c404d 100644
> --- a/arch/arm/Kconfig
> +++ b/arch/arm/Kconfig
> @@ -901,6 +901,7 @@ config ARCH_MX6
>         select SYS_FSL_HAS_SEC
>         select SYS_FSL_SEC_COMPAT_4
>         select SYS_FSL_SEC_LE
> +       select ARCH_MISC_INIT
>         imply MXC_GPIO
>         imply SYS_THUMB_BUILD

No, we don't need to enable it by default.  If boards want it, they can
enable it.

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 659 bytes
Desc: not available
URL: <https://lists.denx.de/pipermail/u-boot/attachments/20210204/763e223b/attachment.sig>

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH v2] ARM: mx6: Add function to set serial#
  2021-02-04 22:12     ` Sean Anderson
@ 2021-02-04 22:31       ` Heinrich Schuchardt
  2021-02-04 22:55         ` Tom Rini
  0 siblings, 1 reply; 8+ messages in thread
From: Heinrich Schuchardt @ 2021-02-04 22:31 UTC (permalink / raw)
  To: u-boot

On 2/4/21 11:12 PM, Sean Anderson wrote:
>
>
> On 2/4/21 5:03 PM, Heinrich Schuchardt wrote:
>  > On 2/4/21 10:58 PM, Tom Rini wrote:
>  >> On Thu, Feb 04, 2021 at 04:44:22PM -0500, Sean Anderson wrote:
>  >>
>  >>> The serial number OTP is similar to the imx7 version, except that the
>  >>> register names are different. This also sets serial# directly,
>  >>> instead of
>  >>> providing board_get_serial.
>  >>>
>  >>> Signed-off-by: Sean Anderson <sean.anderson@seco.com>
>  >>
>  >> Reviewed-by: Tom Rini <trini@konsulko.com>
>  >>
>  >
>  > The current patch is without effect.
>  >
>  > We need to enable CONFIG_ARCH_MISC_INIT on i.MX6 by default, e.g.
>  >
>  > diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
>  > index 95557d6ed6..ba189c404d 100644
>  > --- a/arch/arm/Kconfig
>  > +++ b/arch/arm/Kconfig
>  > @@ -901,6 +901,7 @@ config ARCH_MX6
>  >????????? select SYS_FSL_HAS_SEC
>  >????????? select SYS_FSL_SEC_COMPAT_4
>  >????????? select SYS_FSL_SEC_LE
>  > +?????? select ARCH_MISC_INIT
>  >????????? imply MXC_GPIO
>  >????????? imply SYS_THUMB_BUILD
>  >
>  > Best regards
>  >
>  > Heinrich
>
> Do any boards on i.MX6 currently set serial# themselves? arch_misc_init
> is called before board_late_init, which is (AFACT) typically where
> boards set serial#. Any boards which conditionally set serial# (e.g.
> from an eeprom) will not set things up properly. I looked over things
> quickly, and I didn't see anything. So it may be fine to enable this.
>
> Though by this logic, shouldn't you have implied ARCH_MISC_INIT back in
> 90865614b4 ("ARM: mx6: make CAAM usable on the i.MX6 boards")?

+1 to activate the flag.
I was already wondering why the random number generator on my Wandboard
was not working.

The three i.MX6 boards with misc_init_r() don's set serial#:

board/congatec/cgtqmx6eval/cgtqmx6eval.c:755:int misc_init_r(void)
board/toradex/apalis_imx6/apalis_imx6.c:786:int misc_init_r(void)
board/toradex/colibri_imx6/colibri_imx6.c:679:int misc_init_r(void)

git grep -n 'serial#' | grep mx6

finds nothing.

Best regards

Heinrich

>
> --Sean

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH v2] ARM: mx6: Add function to set serial#
  2021-02-04 22:31       ` Heinrich Schuchardt
@ 2021-02-04 22:55         ` Tom Rini
  0 siblings, 0 replies; 8+ messages in thread
From: Tom Rini @ 2021-02-04 22:55 UTC (permalink / raw)
  To: u-boot

On Thu, Feb 04, 2021 at 11:31:22PM +0100, Heinrich Schuchardt wrote:
> On 2/4/21 11:12 PM, Sean Anderson wrote:
> > 
> > 
> > On 2/4/21 5:03 PM, Heinrich Schuchardt wrote:
> >  > On 2/4/21 10:58 PM, Tom Rini wrote:
> >  >> On Thu, Feb 04, 2021 at 04:44:22PM -0500, Sean Anderson wrote:
> >  >>
> >  >>> The serial number OTP is similar to the imx7 version, except that the
> >  >>> register names are different. This also sets serial# directly,
> >  >>> instead of
> >  >>> providing board_get_serial.
> >  >>>
> >  >>> Signed-off-by: Sean Anderson <sean.anderson@seco.com>
> >  >>
> >  >> Reviewed-by: Tom Rini <trini@konsulko.com>
> >  >>
> >  >
> >  > The current patch is without effect.
> >  >
> >  > We need to enable CONFIG_ARCH_MISC_INIT on i.MX6 by default, e.g.
> >  >
> >  > diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
> >  > index 95557d6ed6..ba189c404d 100644
> >  > --- a/arch/arm/Kconfig
> >  > +++ b/arch/arm/Kconfig
> >  > @@ -901,6 +901,7 @@ config ARCH_MX6
> >  >????????? select SYS_FSL_HAS_SEC
> >  >????????? select SYS_FSL_SEC_COMPAT_4
> >  >????????? select SYS_FSL_SEC_LE
> >  > +?????? select ARCH_MISC_INIT
> >  >????????? imply MXC_GPIO
> >  >????????? imply SYS_THUMB_BUILD
> >  >
> >  > Best regards
> >  >
> >  > Heinrich
> > 
> > Do any boards on i.MX6 currently set serial# themselves? arch_misc_init
> > is called before board_late_init, which is (AFACT) typically where
> > boards set serial#. Any boards which conditionally set serial# (e.g.
> > from an eeprom) will not set things up properly. I looked over things
> > quickly, and I didn't see anything. So it may be fine to enable this.
> > 
> > Though by this logic, shouldn't you have implied ARCH_MISC_INIT back in
> > 90865614b4 ("ARM: mx6: make CAAM usable on the i.MX6 boards")?
> 
> +1 to activate the flag.
> I was already wondering why the random number generator on my Wandboard
> was not working.
> 
> The three i.MX6 boards with misc_init_r() don's set serial#:
> 
> board/congatec/cgtqmx6eval/cgtqmx6eval.c:755:int misc_init_r(void)
> board/toradex/apalis_imx6/apalis_imx6.c:786:int misc_init_r(void)
> board/toradex/colibri_imx6/colibri_imx6.c:679:int misc_init_r(void)
> 
> git grep -n 'serial#' | grep mx6
> 
> finds nothing.

No.  We have things in Kconfig so that boards can enable what they want
without having to go and change the config.h file.  We only use
select/imply for things that it's between required (if you don't have
this, your platform does not function at all) and strongly encouraged
(it should be hard to opt out of distro defaults for example because
this is what makes almost any distribution turn-key to use on a given
platform).  Everything else should be something easily turned on/off in
the defconfig.  Is "serial#" and in turn the serial-number property in
the device tree handy?  Sure is.  Has i.MX6 been going fine without it
for it's long lifespan?  Yup.  Is there an argument that it should be
easier to opt-out of on all the other platforms?  Probably so, yes (I
think there's some cases where Linux userspace expects it for some
stuff, I want to say allwinner?  Maybe Pi?).

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 659 bytes
Desc: not available
URL: <https://lists.denx.de/pipermail/u-boot/attachments/20210204/6516b4da/attachment.sig>

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH v2] ARM: mx6: Add function to set serial#
  2021-02-04 21:44 [PATCH v2] ARM: mx6: Add function to set serial# Sean Anderson
  2021-02-04 21:58 ` Tom Rini
@ 2021-03-01 11:55 ` sbabic at denx.de
  1 sibling, 0 replies; 8+ messages in thread
From: sbabic at denx.de @ 2021-03-01 11:55 UTC (permalink / raw)
  To: u-boot

> The serial number OTP is similar to the imx7 version, except that the
> register names are different. This also sets serial# directly, instead of
> providing board_get_serial.
> Signed-off-by: Sean Anderson <sean.anderson@seco.com>
> Reviewed-by: Tom Rini <trini@konsulko.com>
Applied to u-boot-imx, master, thanks !

Best regards,
Stefano Babic

-- 
=====================================================================
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sbabic at denx.de
=====================================================================

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2021-03-01 11:55 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-02-04 21:44 [PATCH v2] ARM: mx6: Add function to set serial# Sean Anderson
2021-02-04 21:58 ` Tom Rini
2021-02-04 22:03   ` Heinrich Schuchardt
2021-02-04 22:12     ` Sean Anderson
2021-02-04 22:31       ` Heinrich Schuchardt
2021-02-04 22:55         ` Tom Rini
2021-02-04 22:23     ` Tom Rini
2021-03-01 11:55 ` sbabic at denx.de

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.