public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Paul Kocialkowski <contact@paulk.fr>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v2] sunxi: Serial number support, obtained from SID bits and passed through ATAG
Date: Sun, 22 Mar 2015 12:31:36 +0100	[thread overview]
Message-ID: <1427023896.2626.8.camel@aldrin> (raw)
In-Reply-To: <550EA726.6010507@redhat.com>

Le dimanche 22 mars 2015 ? 12:27 +0100, Hans de Goede a ?crit :
> Hi,
> 
> On 22-03-15 11:42, Paul Kocialkowski wrote:
> > Signed-off-by: Paul Kocialkowski <contact@paulk.fr>
> 
> Thanks this version looks good, but I would like to have some more
> certainty wrt how to deal with serial numbers in devicetree, where we
> may e.g. store the full 128 bits of the sid, so I've send a mail
> to the devicetree list about this with you in the Cc.

In case it is possible to store the full 128 bits through device tree, I
would still prefer to see only the 64 bits we selected being used, so
that each device would show the same serial number in cpuinfo when using
the legacy 3.4 kernel and a recent upstream kernel.

> Regards,
> 
> Hans
> 
> > ---
> >   board/sunxi/board.c            | 51 +++++++++++++++++++++++++++++++++---------
> >   include/configs/sunxi-common.h |  1 +
> >   2 files changed, 41 insertions(+), 11 deletions(-)
> >
> > diff --git a/board/sunxi/board.c b/board/sunxi/board.c
> > index e1891d1..d117558 100644
> > --- a/board/sunxi/board.c
> > +++ b/board/sunxi/board.c
> > @@ -241,24 +241,53 @@ static struct musb_hdrc_platform_data musb_plat = {
> >   };
> >   #endif
> >
> > +#ifdef CONFIG_SERIAL_TAG
> > +void get_board_serial(struct tag_serialnr *serialnr)
> > +{
> > +	char *serial_string = getenv("serial#");
> > +	unsigned long long serial;
> > +
> > +	if (serial_string) {
> > +		serial = simple_strtoull(serial_string, NULL, 16);
> > +
> > +		serialnr->high = (unsigned int) (serial >> 32);
> > +		serialnr->low = (unsigned int) (serial & 0xffffffff);
> > +	} else {
> > +		serialnr->high = 0;
> > +		serialnr->low = 0;
> > +	}
> > +}
> > +#endif
> > +
> >   #ifdef CONFIG_MISC_INIT_R
> >   int misc_init_r(void)
> >   {
> > +	char serial_string[17] = { 0 };
> >   	unsigned int sid[4];
> > +	uint8_t mac_addr[6];
> > +	int ret;
> > +
> > +	ret = sunxi_get_sid(sid);
> > +	if (ret == 0 && sid[0] != 0 && sid[3] != 0) {
> > +		if (!getenv("ethaddr")) {
> > +			/* Non OUI / registered MAC address */
> > +			mac_addr[0] = 0x02;
> > +			mac_addr[1] = (sid[0] >>  0) & 0xff;
> > +			mac_addr[2] = (sid[3] >> 24) & 0xff;
> > +			mac_addr[3] = (sid[3] >> 16) & 0xff;
> > +			mac_addr[4] = (sid[3] >>  8) & 0xff;
> > +			mac_addr[5] = (sid[3] >>  0) & 0xff;
> > +
> > +			eth_setenv_enetaddr("ethaddr", mac_addr);
> > +		}
> >
> > -	if (!getenv("ethaddr") && sunxi_get_sid(sid) == 0 &&
> > -			sid[0] != 0 && sid[3] != 0) {
> > -		uint8_t mac_addr[6];
> > +		if (!getenv("serial#")) {
> > +			snprintf(serial_string, sizeof(serial_string),
> > +				"%08x%08x", sid[0], sid[3]);
> >
> > -		mac_addr[0] = 0x02; /* Non OUI / registered MAC address */
> > -		mac_addr[1] = (sid[0] >>  0) & 0xff;
> > -		mac_addr[2] = (sid[3] >> 24) & 0xff;
> > -		mac_addr[3] = (sid[3] >> 16) & 0xff;
> > -		mac_addr[4] = (sid[3] >>  8) & 0xff;
> > -		mac_addr[5] = (sid[3] >>  0) & 0xff;
> > +			setenv("serial#", serial_string);
> >
> > -		eth_setenv_enetaddr("ethaddr", mac_addr);
> > -	}
> > +		}
> >
> >   #if defined(CONFIG_MUSB_HOST) || defined(CONFIG_MUSB_GADGET)
> >   	musb_register(&musb_plat, NULL, (void *)SUNXI_USB0_BASE);
> > diff --git a/include/configs/sunxi-common.h b/include/configs/sunxi-common.h
> > index 1f7a1cb..b9bb971 100644
> > --- a/include/configs/sunxi-common.h
> > +++ b/include/configs/sunxi-common.h
> > @@ -98,6 +98,7 @@
> >   #define CONFIG_SETUP_MEMORY_TAGS
> >   #define CONFIG_CMDLINE_TAG
> >   #define CONFIG_INITRD_TAG
> > +#define CONFIG_SERIAL_TAG
> >
> >   /* mmc config */
> >   #if !defined(CONFIG_UART0_PORT_F)
> >

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: This is a digitally signed message part
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20150322/d234af55/attachment.sig>

  reply	other threads:[~2015-03-22 11:31 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-03-18 19:46 [U-Boot] [PATCH] sunxi: Serial number support, obtained from SID bits and passed through ATAG Paul Kocialkowski
2015-03-20 19:43 ` Hans de Goede
2015-03-22 10:42   ` [U-Boot] [PATCH v2] " Paul Kocialkowski
2015-03-22 11:27     ` Hans de Goede
2015-03-22 11:31       ` Paul Kocialkowski [this message]
2015-03-22 11:36         ` Hans de Goede
2015-03-22 11:41           ` Paul Kocialkowski

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1427023896.2626.8.camel@aldrin \
    --to=contact@paulk.fr \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox