[PATCH] i.MX8M: crypto: disable JR0 in SPL, U-Boot
ZHIZHIKIN Andrey
andrey.zhizhikin at leica-geosystems.com
Wed Jun 8 17:00:32 CEST 2022
Hello Gaurav,
Cc: Michael Walle here.
I guess this is a re-incarnation of the previous discussions we had
regarding the JR reservation, see [1].
> -----Original Message-----
> From: Gaurav Jain <gaurav.jain at nxp.com>
> Sent: Wednesday, June 8, 2022 3:34 PM
> To: u-boot at lists.denx.de; Stefano Babic <sbabic at denx.de>; Fabio Estevam
> <festevam at gmail.com>; Tommaso Merciai <tommaso.merciai at amarulasolutions.com>;
> ZHIZHIKIN Andrey <andrey.zhizhikin at leica-geosystems.com>; Michael Trimarchi
> <michael at amarulasolutions.com>; Marek Vasut <marex at denx.de>; Simon Glass
> <sjg at chromium.org>; Patrick Delaunay <patrick.delaunay at foss.st.com>; Stefan Roese
> <sr at denx.de>; Horia Geanta <horia.geanta at nxp.com>; Pankaj Gupta
> <pankaj.gupta at nxp.com>; Varun Sethi <V.Sethi at nxp.com>; Ye Li <ye.li at nxp.com>
> Cc: NXP i . MX U-Boot Team <uboot-imx at nxp.com>; Gaurav Jain <gaurav.jain at nxp.com>
> Subject: [PATCH] i.MX8M: crypto: disable JR0 in SPL, U-Boot
>
> disabled use of JR0 in SPL and uboot, as JR0 is reserved
> for HAB in TF-A.
>
> Signed-off-by: Gaurav Jain <gaurav.jain at nxp.com>
> ---
> arch/arm/dts/imx8mm-evk-u-boot.dtsi | 1 +
> arch/arm/dts/imx8mn-ddr4-evk-u-boot.dtsi | 1 +
> arch/arm/dts/imx8mp-evk-u-boot.dtsi | 1 +
> arch/arm/dts/imx8mq-evk-u-boot.dtsi | 4 ++++
Shall those DTB changes be sync'd with Kernel?
Now that the JR0 reservation is done in both upstream and
downstream TF-A - Kernel would fail to initialize the JR0.
This is what Fabio just noted and posted as a comment. :-)
I suggest that this is submitted into Kernel, and then picked
up during the next DTB re-sync.
> arch/arm/include/asm/arch-imx8m/imx-regs.h | 1 +
> drivers/crypto/fsl/jr.c | 14 +++++++++++---
> scripts/config_whitelist.txt | 1 +
> 7 files changed, 20 insertions(+), 3 deletions(-)
>
> diff --git a/arch/arm/dts/imx8mm-evk-u-boot.dtsi b/arch/arm/dts/imx8mm-evk-u-
> boot.dtsi
> index e9fbf7b802..8cd37b5205 100644
> --- a/arch/arm/dts/imx8mm-evk-u-boot.dtsi
> +++ b/arch/arm/dts/imx8mm-evk-u-boot.dtsi
> @@ -74,6 +74,7 @@
>
> &sec_jr0 {
> u-boot,dm-spl;
> + status = "disabled";
> };
>
> &sec_jr1 {
> diff --git a/arch/arm/dts/imx8mn-ddr4-evk-u-boot.dtsi b/arch/arm/dts/imx8mn-ddr4-
> evk-u-boot.dtsi
> index 4d0ecb07d4..0c31f2737a 100644
> --- a/arch/arm/dts/imx8mn-ddr4-evk-u-boot.dtsi
> +++ b/arch/arm/dts/imx8mn-ddr4-evk-u-boot.dtsi
> @@ -114,6 +114,7 @@
>
> &sec_jr0 {
> u-boot,dm-spl;
> + status = "disabled";
> };
>
> &sec_jr1 {
> diff --git a/arch/arm/dts/imx8mp-evk-u-boot.dtsi b/arch/arm/dts/imx8mp-evk-u-
> boot.dtsi
> index f43eb6238d..28dce55fb9 100644
> --- a/arch/arm/dts/imx8mp-evk-u-boot.dtsi
> +++ b/arch/arm/dts/imx8mp-evk-u-boot.dtsi
> @@ -77,6 +77,7 @@
>
> &sec_jr0 {
> u-boot,dm-spl;
> + status = "disabled";
> };
>
> &sec_jr1 {
> diff --git a/arch/arm/dts/imx8mq-evk-u-boot.dtsi b/arch/arm/dts/imx8mq-evk-u-
> boot.dtsi
> index 67da69a2eb..37364eb6b4 100644
> --- a/arch/arm/dts/imx8mq-evk-u-boot.dtsi
> +++ b/arch/arm/dts/imx8mq-evk-u-boot.dtsi
> @@ -18,3 +18,7 @@
> &uart1 {
> u-boot,dm-spl;
> };
> +
> +&sec_jr0 {
> + status = "disabled";
> +};
> diff --git a/arch/arm/include/asm/arch-imx8m/imx-regs.h
> b/arch/arm/include/asm/arch-imx8m/imx-regs.h
> index 1da75528d4..e6e2974df3 100644
> --- a/arch/arm/include/asm/arch-imx8m/imx-regs.h
> +++ b/arch/arm/include/asm/arch-imx8m/imx-regs.h
> @@ -89,6 +89,7 @@
> #define CONFIG_SYS_FSL_SEC_ADDR (CAAM_IPS_BASE_ADDR + \
> CONFIG_SYS_FSL_SEC_OFFSET)
> #define CONFIG_SYS_FSL_JR0_OFFSET (0x1000)
> +#define CONFIG_SYS_FSL_JR1_OFFSET (0x2000)
> #define CONFIG_SYS_FSL_JR0_ADDR (CONFIG_SYS_FSL_SEC_ADDR + \
> CONFIG_SYS_FSL_JR0_OFFSET)
> #define CONFIG_SYS_FSL_MAX_NUM_OF_SEC 1
> diff --git a/drivers/crypto/fsl/jr.c b/drivers/crypto/fsl/jr.c
> index acd29924f7..66dd9cf365 100644
> --- a/drivers/crypto/fsl/jr.c
> +++ b/drivers/crypto/fsl/jr.c
> @@ -44,9 +44,17 @@ struct udevice *caam_dev;
> #define SEC_ADDR(idx) \
> (ulong)((CONFIG_SYS_FSL_SEC_ADDR + sec_offset[idx]))
>
> -#define SEC_JR0_ADDR(idx) \
> +#ifndef CONFIG_IMX8M
> +#define SEC_JR_ADDR(idx) \
> (ulong)(SEC_ADDR(idx) + \
> (CONFIG_SYS_FSL_JR0_OFFSET - CONFIG_SYS_FSL_SEC_OFFSET))
> +#define JR_ID 0
> +#else
> +#define SEC_JR_ADDR(idx) \
> + (ulong)(SEC_ADDR(idx) + \
> + (CONFIG_SYS_FSL_JR1_OFFSET - CONFIG_SYS_FSL_SEC_OFFSET))
> +#define JR_ID 1
> +#endif
I believe this whole macro can be simplified, isn't it?
> struct caam_regs caam_st;
> #endif
>
> @@ -685,8 +693,8 @@ int sec_init_idx(uint8_t sec_idx)
> caam = dev_get_priv(caam_dev);
> #else
> caam_st.sec = (void *)SEC_ADDR(sec_idx);
> - caam_st.regs = (struct jr_regs *)SEC_JR0_ADDR(sec_idx);
> - caam_st.jrid = 0;
> + caam_st.regs = (struct jr_regs *)SEC_JR_ADDR(sec_idx);
> + caam_st.jrid = JR_ID;
> caam = &caam_st;
> #endif
> #if CONFIG_IS_ENABLED(OF_CONTROL)
> diff --git a/scripts/config_whitelist.txt b/scripts/config_whitelist.txt
> index cecdda6781..b99aeacbc4 100644
> --- a/scripts/config_whitelist.txt
> +++ b/scripts/config_whitelist.txt
> @@ -1040,6 +1040,7 @@ CONFIG_SYS_FSL_IFC_LE
> CONFIG_SYS_FSL_ISBC_VER
> CONFIG_SYS_FSL_JR0_ADDR
> CONFIG_SYS_FSL_JR0_OFFSET
> +CONFIG_SYS_FSL_JR1_OFFSET
> CONFIG_SYS_FSL_LS1_CLK_ADDR
> CONFIG_SYS_FSL_LSCH3_SERDES_ADDR
> CONFIG_SYS_FSL_MAX_NUM_OF_SEC
> --
> 2.25.1
Link: [1]: https://lore.kernel.org/u-boot/VI1PR04MB53426E0295D8E2508BA01302E7089@VI1PR04MB5342.eurprd04.prod.outlook.com/
-- andrey
More information about the U-Boot
mailing list