plat: imx8mq: Implement IMX_SIP_GET_SOC_INFO
authorLeonard Crestez <leonard.crestez@nxp.com>
Fri, 10 May 2019 10:07:41 +0000 (13:07 +0300)
committerLeonard Crestez <leonard.crestez@nxp.com>
Mon, 20 May 2019 08:24:54 +0000 (11:24 +0300)
commit72196cbb669bf3fe9b28091889e8fc7fbf2a2556
treee6f3105e9618281f3e5be1ebda19c0a987a0bc1e
parentd8b11091b6f9032c16fdc54218ceda10d21e3355
plat: imx8mq: Implement IMX_SIP_GET_SOC_INFO

The manual documents that 0x3036006c should contains the soc revision
for imx8mq but this always reports A0. Work around this by parsing the
ROM header and checking if OCOTP register 0x40 is stuck at 0xff0055aa.

Determining this inside TF-A makes life easier for OS, see for example
this linux discussion: https://lkml.org/lkml/2019/5/3/465

The soc revision can also be useful inside TF-A itself, for example for
the non-upstream DDR DVFS "busfreq" feature is affected by 8mq erratas.

The clock for OCOTP block can be disabled by OS so only initialize soc
revision once at boot time.

Change-Id: I9ca3f27840229ce8a28b53870e44da29f63c73aa
Signed-off-by: Leonard Crestez <leonard.crestez@nxp.com>
plat/imx/common/imx_sip_svc.c
plat/imx/common/include/imx_sip_svc.h
plat/imx/imx8m/imx8mq/imx8mq_bl31_setup.c
plat/imx/imx8m/imx8mq/include/platform_def.h