diff mbox series

[U-Boot,U-BOOT] riscv: sifive: fu540: set serial environment variable from otp

Message ID 1565592087-1290-2-git-send-email-sagar.kadam@sifive.com
State Changes Requested
Delegated to: Andes
Headers show
Series [U-Boot,U-BOOT] riscv: sifive: fu540: set serial environment variable from otp | expand

Commit Message

Sagar Shrikant Kadam Aug. 12, 2019, 6:41 a.m. UTC
This patch sets the serial# environment variable by reading the
board serial number from the OTP memory region.

Signed-off-by: Sagar Shrikant Kadam <sagar.kadam@sifive.com>
---
 board/sifive/fu540/fu540.c | 18 ++++++++++++++----
 1 file changed, 14 insertions(+), 4 deletions(-)

Comments

Anup Patel Aug. 12, 2019, 7:30 a.m. UTC | #1
On Mon, Aug 12, 2019 at 12:12 PM Sagar Shrikant Kadam
<sagar.kadam@sifive.com> wrote:
>
> This patch sets the serial# environment variable by reading the
> board serial number from the OTP memory region.
>
> Signed-off-by: Sagar Shrikant Kadam <sagar.kadam@sifive.com>
> ---
>  board/sifive/fu540/fu540.c | 18 ++++++++++++++----
>  1 file changed, 14 insertions(+), 4 deletions(-)
>
> diff --git a/board/sifive/fu540/fu540.c b/board/sifive/fu540/fu540.c
> index 11daf1a..06bf442 100644
> --- a/board/sifive/fu540/fu540.c
> +++ b/board/sifive/fu540/fu540.c
> @@ -122,10 +122,20 @@ static void fu540_setup_macaddr(u32 serialnum)
>
>  int misc_init_r(void)
>  {
> -       /* Set ethaddr environment variable if not set */
> -       if (!env_get("ethaddr"))
> -               fu540_setup_macaddr(fu540_read_serialnum());
> -
> +       u32 serial_num;
> +       char buf[11] = {0};
> +
> +       /* Set ethaddr environment variable from board serial number */
> +       if (!env_get("serial#")) {
> +               serial_num = fu540_read_serialnum();
> +               if (!serial_num) {
> +                       WARN(1, "Board serial number should not be 0 !!");
> +                       return 0;
> +               }
> +               snprintf(buf, sizeof(buf), "%08x", serial_num);
> +               env_set("serial#", buf);
> +               fu540_setup_macaddr(serial_num);
> +       }
>         return 0;
>  }
>
> --
> 2.7.4
>
> _______________________________________________
> U-Boot mailing list
> U-Boot@lists.denx.de
> https://lists.denx.de/listinfo/u-boot

Looks good to me.

Reviewed-by: Anup Patel <anup@brainfault.org>

Regards,
Anup
Bin Meng Aug. 12, 2019, 9:03 a.m. UTC | #2
On Mon, Aug 12, 2019 at 2:42 PM Sagar Shrikant Kadam
<sagar.kadam@sifive.com> wrote:
>
> This patch sets the serial# environment variable by reading the
> board serial number from the OTP memory region.
>
> Signed-off-by: Sagar Shrikant Kadam <sagar.kadam@sifive.com>
> ---
>  board/sifive/fu540/fu540.c | 18 ++++++++++++++----
>  1 file changed, 14 insertions(+), 4 deletions(-)
>
> diff --git a/board/sifive/fu540/fu540.c b/board/sifive/fu540/fu540.c
> index 11daf1a..06bf442 100644
> --- a/board/sifive/fu540/fu540.c
> +++ b/board/sifive/fu540/fu540.c
> @@ -122,10 +122,20 @@ static void fu540_setup_macaddr(u32 serialnum)
>
>  int misc_init_r(void)
>  {
> -       /* Set ethaddr environment variable if not set */
> -       if (!env_get("ethaddr"))
> -               fu540_setup_macaddr(fu540_read_serialnum());
> -
> +       u32 serial_num;
> +       char buf[11] = {0};

buf[9] should be enough.

> +
> +       /* Set ethaddr environment variable from board serial number */
> +       if (!env_get("serial#")) {
> +               serial_num = fu540_read_serialnum();
> +               if (!serial_num) {
> +                       WARN(1, "Board serial number should not be 0 !!");

nits: please use true instead of 1, and adding a '\n' at the end.

> +                       return 0;
> +               }
> +               snprintf(buf, sizeof(buf), "%08x", serial_num);
> +               env_set("serial#", buf);
> +               fu540_setup_macaddr(serial_num);
> +       }
>         return 0;
>  }

Regards,
Bin
Sagar Shrikant Kadam Aug. 12, 2019, 2:22 p.m. UTC | #3
Hi Anup,

On Mon, Aug 12, 2019 at 1:00 PM Anup Patel <anup@brainfault.org> wrote:
>
> On Mon, Aug 12, 2019 at 12:12 PM Sagar Shrikant Kadam
> <sagar.kadam@sifive.com> wrote:
> >
> > This patch sets the serial# environment variable by reading the
> > board serial number from the OTP memory region.
> >
> > Signed-off-by: Sagar Shrikant Kadam <sagar.kadam@sifive.com>
> > ---
> >  board/sifive/fu540/fu540.c | 18 ++++++++++++++----
> >  1 file changed, 14 insertions(+), 4 deletions(-)
> >
> > diff --git a/board/sifive/fu540/fu540.c b/board/sifive/fu540/fu540.c
> > index 11daf1a..06bf442 100644
> > --- a/board/sifive/fu540/fu540.c
> > +++ b/board/sifive/fu540/fu540.c
> > @@ -122,10 +122,20 @@ static void fu540_setup_macaddr(u32 serialnum)
> >
> >  int misc_init_r(void)
> >  {
> > -       /* Set ethaddr environment variable if not set */
> > -       if (!env_get("ethaddr"))
> > -               fu540_setup_macaddr(fu540_read_serialnum());
> > -
> > +       u32 serial_num;
> > +       char buf[11] = {0};
> > +
> > +       /* Set ethaddr environment variable from board serial number */
> > +       if (!env_get("serial#")) {
> > +               serial_num = fu540_read_serialnum();
> > +               if (!serial_num) {
> > +                       WARN(1, "Board serial number should not be 0 !!");
> > +                       return 0;
> > +               }
> > +               snprintf(buf, sizeof(buf), "%08x", serial_num);
> > +               env_set("serial#", buf);
> > +               fu540_setup_macaddr(serial_num);
> > +       }
> >         return 0;
> >  }
> >
> > --
> > 2.7.4
> >
> > _______________________________________________
> > U-Boot mailing list
> > U-Boot@lists.denx.de
> > https://lists.denx.de/listinfo/u-boot
>
> Looks good to me.
>
> Reviewed-by: Anup Patel <anup@brainfault.org>
>

Thanks for the review.

BR,
Sagar

> Regards,
> Anup
Sagar Shrikant Kadam Aug. 12, 2019, 2:54 p.m. UTC | #4
Hi Bin,

On Mon, Aug 12, 2019 at 2:34 PM Bin Meng <bmeng.cn@gmail.com> wrote:
>
> On Mon, Aug 12, 2019 at 2:42 PM Sagar Shrikant Kadam
> <sagar.kadam@sifive.com> wrote:
> >
> > This patch sets the serial# environment variable by reading the
> > board serial number from the OTP memory region.
> >
> > Signed-off-by: Sagar Shrikant Kadam <sagar.kadam@sifive.com>
> > ---
> >  board/sifive/fu540/fu540.c | 18 ++++++++++++++----
> >  1 file changed, 14 insertions(+), 4 deletions(-)
> >
> > diff --git a/board/sifive/fu540/fu540.c b/board/sifive/fu540/fu540.c
> > index 11daf1a..06bf442 100644
> > --- a/board/sifive/fu540/fu540.c
> > +++ b/board/sifive/fu540/fu540.c
> > @@ -122,10 +122,20 @@ static void fu540_setup_macaddr(u32 serialnum)
> >
> >  int misc_init_r(void)
> >  {
> > -       /* Set ethaddr environment variable if not set */
> > -       if (!env_get("ethaddr"))
> > -               fu540_setup_macaddr(fu540_read_serialnum());
> > -
> > +       u32 serial_num;
> > +       char buf[11] = {0};
>
> buf[9] should be enough.
>
> > +
> > +       /* Set ethaddr environment variable from board serial number */
> > +       if (!env_get("serial#")) {
> > +               serial_num = fu540_read_serialnum();
> > +               if (!serial_num) {
> > +                       WARN(1, "Board serial number should not be 0 !!");
>
> nits: please use true instead of 1, and adding a '\n' at the end.
>

Thanks for your suggestions, I will incorporate these in the next
version of this patch.

BR,
Sagar Kadam
> > +                       return 0;
> > +               }
> > +               snprintf(buf, sizeof(buf), "%08x", serial_num);
> > +               env_set("serial#", buf);
> > +               fu540_setup_macaddr(serial_num);
> > +       }
> >         return 0;
> >  }
>
> Regards,
> Bin
diff mbox series

Patch

diff --git a/board/sifive/fu540/fu540.c b/board/sifive/fu540/fu540.c
index 11daf1a..06bf442 100644
--- a/board/sifive/fu540/fu540.c
+++ b/board/sifive/fu540/fu540.c
@@ -122,10 +122,20 @@  static void fu540_setup_macaddr(u32 serialnum)
 
 int misc_init_r(void)
 {
-	/* Set ethaddr environment variable if not set */
-	if (!env_get("ethaddr"))
-		fu540_setup_macaddr(fu540_read_serialnum());
-
+	u32 serial_num;
+	char buf[11] = {0};
+
+	/* Set ethaddr environment variable from board serial number */
+	if (!env_get("serial#")) {
+		serial_num = fu540_read_serialnum();
+		if (!serial_num) {
+			WARN(1, "Board serial number should not be 0 !!");
+			return 0;
+		}
+		snprintf(buf, sizeof(buf), "%08x", serial_num);
+		env_set("serial#", buf);
+		fu540_setup_macaddr(serial_num);
+	}
 	return 0;
 }