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:41:37 +0100	[thread overview]
Message-ID: <1427024497.2626.11.camel@aldrin> (raw)
In-Reply-To: <550EA94C.3070608@redhat.com>

Le dimanche 22 mars 2015 ? 12:36 +0100, Hans de Goede a ?crit :
> Hi,
> 
> On 22-03-15 12:31, Paul Kocialkowski wrote:
> > 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.
> 
> Right in /proc/cpuinfo we should always show the same, and we can
> likely not extend the info to 128 bits there due to ABI compatibility concerns.
> 
> But we can e.g. show the entire 128 bit in /sys/firmware/devicetree/base/system-serial
> in which case it makes sense to have the full 128 bit in the u-boot environment
> and select word 0 and 3 in get_board_serial() at which point your patch needs
> to change which is why I want to have a discussion about how to deal with
> this in devicetree before merging the patch.

That makes good sense, let's wait and see what kernel dt people think
about this.

I'll still post a v3 just now because v2 was missing a closing bracket
and didn't build.

> Regards,
> 
> Hans
> 
> 
> >
> >> 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/dd7cc5c4/attachment.sig>

      reply	other threads:[~2015-03-22 11:41 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
2015-03-22 11:36         ` Hans de Goede
2015-03-22 11:41           ` Paul Kocialkowski [this message]

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=1427024497.2626.11.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