[U-Boot] [PATCH v3 3/3] warp7: Set u-boot serial# based on OTP value

Stefano Babic sbabic at denx.de
Sun Apr 15 10:15:28 UTC 2018



On 26/03/2018 16:27, Bryan O'Donoghue wrote:
> u-boot has a standard "serial#" environment variable that is suitable
> for storing the iSerial number we will supply via the USB device
> descriptor. serial# is automatically picked up by the disk subsystem in
> u-boot - thus providing a handy unique identifier in /dev/disk/by-id as
> detailed below.
> 
> Storing the hardware serial identifier in serial# means we can change the
> serial# if we want before USB enumeration - thus making iSerial automatic
> via OTP but overridable if necessary.
> 
> This patch reads the defined OTP fuse and sets environment variable
> "serial#" to the value read.
> 
> With this patch in place the USB mass storage device will appear in
> /dev/disk/by-id with a unique name based on the OTP value. For example
> 
> /dev/disk/by-id/usb-Linux_UMS_disk_0_WaRP7-0xf42400d3000001d4-0:0
> 
> Signed-off-by: Bryan O'Donoghue <bryan.odonoghue at linaro.org>
> Cc: Fabio Estevam <fabio.estevam at nxp.com>
> Cc: Rui Miguel Silva <rui.silva at linaro.org>
> Cc: Ryan Harkin <ryan.harkin at linaro.org>
> Reviewed-by: Fabio Estevam <fabio.estevam at nxp.com>
> ---
>  board/warp7/warp7.c     | 14 ++++++++++++++
>  include/configs/warp7.h |  3 +++
>  2 files changed, 17 insertions(+)
> 
> diff --git a/board/warp7/warp7.c b/board/warp7/warp7.c
> index d422d63..327f656 100644
> --- a/board/warp7/warp7.c
> +++ b/board/warp7/warp7.c
> @@ -23,6 +23,8 @@
>  #include <power/pmic.h>
>  #include <power/pfuze3000_pmic.h>
>  #include "../freescale/common/pfuze.h"
> +#include <asm/setup.h>
> +#include <asm/bootm.h>
>  
>  DECLARE_GLOBAL_DATA_PTR;
>  
> @@ -186,6 +188,10 @@ int board_usb_phy_mode(int port)
>  int board_late_init(void)
>  {
>  	struct wdog_regs *wdog = (struct wdog_regs *)WDOG1_BASE_ADDR;
> +#ifdef CONFIG_SERIAL_TAG
> +	struct tag_serialnr serialnr;
> +	char serial_string[0x20];
> +#endif
>  
>  	imx_iomux_v3_setup_multiple_pads(wdog_pads, ARRAY_SIZE(wdog_pads));
>  
> @@ -197,5 +203,13 @@ int board_late_init(void)
>  	 */
>  	clrsetbits_le16(&wdog->wcr, 0, 0x10);
>  
> +#ifdef CONFIG_SERIAL_TAG
> +	/* Set serial# standard environment variable based on OTP settings */
> +	get_board_serial(&serialnr);
> +	snprintf(serial_string, sizeof(serial_string), "WaRP7-0x%08x%08x",
> +		 serialnr.low, serialnr.high);
> +	env_set("serial#", serial_string);
> +#endif
> +
>  	return 0;
>  }
> diff --git a/include/configs/warp7.h b/include/configs/warp7.h
> index fe96988..0c3b605 100644
> --- a/include/configs/warp7.h
> +++ b/include/configs/warp7.h
> @@ -24,6 +24,9 @@
>  #define CONFIG_SYS_FSL_ESDHC_HAS_DDR_MODE
>  #define CONFIG_SYS_MMC_IMG_LOAD_PART	1
>  
> +/* Switch on SERIAL_TAG */
> +#define CONFIG_SERIAL_TAG
> +
>  #define CONFIG_DFU_ENV_SETTINGS \
>  	"dfu_alt_info=boot raw 0x2 0x400 mmcpart 1\0" \
>  
> 


Applied to u-boot-imx, 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
=====================================================================


More information about the U-Boot mailing list