imx: kontron-sl-mx6ul: Add support for reading HW UIDs
The factory provides a CPU UID in the OTPs and the SoM module and the carrier board might provide additional UIDs in the GP registers of the OTPs. Load these values in the following order and create a serial number string: * Board UID (GP2) * SoM UID (GP1) * CPU UID (UNIQUE_ID) The string is stored in the "serial#" env variable and exported to Linux. Further this prints the used UID to the console which looks like this ID: 0042152331 (Board) or: ID: 0030124840 (SoM) or: ID: 4696668CD9516886 (CPU) Signed-off-by: Frieder Schrempf <frieder.schrempf@kontron.de>
This commit is contained in:
committed by
Fabio Estevam
parent
f00b09abbf
commit
5b4d3c8171
@@ -9,4 +9,6 @@ config SYS_VENDOR
|
||||
config SYS_CONFIG_NAME
|
||||
default "kontron-sl-mx6ul"
|
||||
|
||||
source "board/kontron/common/Kconfig"
|
||||
|
||||
endif
|
||||
|
||||
@@ -14,8 +14,37 @@
|
||||
|
||||
#include "sl-mx6ul-common.h"
|
||||
|
||||
#include "../common/hw-uid.h"
|
||||
|
||||
DECLARE_GLOBAL_DATA_PTR;
|
||||
|
||||
#if IS_ENABLED(CONFIG_KONTRON_HW_UID)
|
||||
|
||||
struct uid_otp_loc uid_otp_locations[] = {
|
||||
{
|
||||
.addr = (u32 *)(OCOTP_BASE_ADDR + 0x670),
|
||||
.len = 1,
|
||||
.format = UID_OTP_FORMAT_DEC,
|
||||
.desc = "BOARD"
|
||||
},
|
||||
{
|
||||
.addr = (u32 *)(OCOTP_BASE_ADDR + 0x660),
|
||||
.len = 1,
|
||||
.format = UID_OTP_FORMAT_DEC,
|
||||
.desc = "SOM"
|
||||
},
|
||||
#if IS_ENABLED(CONFIG_KONTRON_HW_UID_USE_SOC_FALLBACK)
|
||||
{
|
||||
.addr = (u32 *)(OCOTP_BASE_ADDR + 0x410),
|
||||
.len = 2,
|
||||
.format = UID_OTP_FORMAT_HEX,
|
||||
.desc = "SOC"
|
||||
}
|
||||
#endif
|
||||
};
|
||||
|
||||
#endif /* CONFIG_KONTRON_HW_UID */
|
||||
|
||||
int dram_init(void)
|
||||
{
|
||||
gd->ram_size = imx_ddr_size();
|
||||
@@ -91,6 +120,9 @@ int board_init(void)
|
||||
|
||||
int board_late_init(void)
|
||||
{
|
||||
if (IS_ENABLED(CONFIG_KONTRON_HW_UID))
|
||||
get_serial_number(uid_otp_locations, ARRAY_SIZE(uid_otp_locations));
|
||||
|
||||
if (is_boot_from_usb()) {
|
||||
env_set("bootdelay", "0");
|
||||
env_set("bootcmd", "fastboot 0");
|
||||
|
||||
@@ -13,6 +13,7 @@ CONFIG_ENV_SECT_SIZE=0x4000
|
||||
CONFIG_MX6UL=y
|
||||
CONFIG_TARGET_KONTRON_MX6UL=y
|
||||
CONFIG_DM_GPIO=y
|
||||
CONFIG_KONTRON_HW_UID=y
|
||||
CONFIG_DEFAULT_DEVICE_TREE="nxp/imx/imx6ul-kontron-bl"
|
||||
CONFIG_SPL_MMC=y
|
||||
CONFIG_SPL_SERIAL=y
|
||||
|
||||
Reference in New Issue
Block a user