arm64: qxp: support read chip unique id
authorFrank Li <Frank.Li@nxp.com>
Mon, 19 Mar 2018 08:10:44 +0000 (03:10 -0500)
committerHaibo Chen <haibo.chen@nxp.com>
Thu, 12 Apr 2018 10:45:49 +0000 (18:45 +0800)
call scfw api get chip unique id

cat /sys/devices/soc0/soc_uid
A264080B57AC1898

Signed-off-by: Frank Li <Frank.Li@nxp.com>
drivers/soc/imx/soc-imx8.c

index 941945e..65b6f67 100644 (file)
@@ -103,6 +103,7 @@ static u32 imx_init_revision_from_scu(void)
        sc_err_t sc_err = SC_ERR_NONE;
        sc_ipc_t ipc_handle;
        u32 id, rev;
+       u32 uid_l = 0, uid_h = 0;
 
        sc_err = sc_ipc_getMuID(&mu_id);
        if (sc_err != SC_ERR_NONE) {
@@ -132,6 +133,12 @@ static u32 imx_init_revision_from_scu(void)
        imx8_set_soc_id(id);
        imx8_set_soc_revision(rev);
 
+       sc_misc_unique_id(ipc_handle, &uid_l, &uid_h);
+
+       imx8_soc_uid = uid_h;
+       imx8_soc_uid <<= 32;
+       imx8_soc_uid |= uid_l;
+
        return rev;
 }
 
@@ -251,7 +258,7 @@ static ssize_t imx8_get_soc_uid(struct device *dev,
                        struct device_attribute *attr,
                        char *buf)
 {
-       return sprintf(buf, "%016llx\n", imx8_soc_uid);
+       return sprintf(buf, "%016llX\n", imx8_soc_uid);
 }
 
 static struct device_attribute imx8_uid =