UID information in OCOTP is located in the same place on at least i.MX6, i.MX7 and i.MX8MQ. Create an SoC-agnostic helper to do all the work and convert i.MX6 to use it. Signed-off-by: Andrey Smirnov <andrew.smirnov@xxxxxxxxx> Cc: Chris Healy <cphealy@xxxxxxxxx> Cc: Lucas Stach <l.stach@xxxxxxxxxxxxxx> --- arch/arm/mach-imx/imx6.c | 8 +------- arch/arm/mach-imx/include/mach/ocotp.h | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/arch/arm/mach-imx/imx6.c b/arch/arm/mach-imx/imx6.c index 0fdd9f082f..41e0066add 100644 --- a/arch/arm/mach-imx/imx6.c +++ b/arch/arm/mach-imx/imx6.c @@ -192,13 +192,7 @@ int imx6_cpu_revision(void) u64 imx6_uid(void) { - void __iomem *ocotpbase = IOMEM(MX6_OCOTP_BASE_ADDR); - u64 uid; - - uid = ((u64)readl(ocotpbase + MX6_OCOTP_CFG0) << 32); - uid |= (u64)readl(ocotpbase + MX6_OCOTP_CFG1); - - return uid; + return imx_ocotp_read_uid(IOMEM(MX6_OCOTP_BASE_ADDR)); } int imx6_init(void) diff --git a/arch/arm/mach-imx/include/mach/ocotp.h b/arch/arm/mach-imx/include/mach/ocotp.h index e758238cb9..7ba5da156b 100644 --- a/arch/arm/mach-imx/include/mach/ocotp.h +++ b/arch/arm/mach-imx/include/mach/ocotp.h @@ -26,10 +26,24 @@ #define OCOTP_BIT(n) FIELD_PREP(OCOTP_BIT_MASK, n) #define OCOTP_WIDTH(n) FIELD_PREP(OCOTP_WIDTH_MASK, (n) - 1) +#define OCOTP_OFFSET_CFG0 0x410 +#define OCOTP_OFFSET_CFG1 0x420 + int imx_ocotp_read_field(uint32_t field, unsigned *value); int imx_ocotp_write_field(uint32_t field, unsigned value); int imx_ocotp_permanent_write(int enable); bool imx_ocotp_sense_enable(bool enable); +static inline u64 imx_ocotp_read_uid(void __iomem *ocotp) +{ + u64 uid; + + uid = readl(ocotp + OCOTP_OFFSET_CFG0); + uid <<= 32; + uid |= readl(ocotp + OCOTP_OFFSET_CFG1); + + return uid; +} + #endif /* __MACH_IMX_OCOTP_H */ -- 2.21.0 _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox