diff mbox series

kontron-sl-mx8mm: Add CAAM support

Message ID 20220608150348.1463500-1-festevam@denx.de
State Superseded
Delegated to: Stefano Babic
Headers show
Series kontron-sl-mx8mm: Add CAAM support | expand

Commit Message

Fabio Estevam June 8, 2022, 3:03 p.m. UTC
Add CAAM support, which is required when enabling HAB secure boot.

Select CONFIG_SPL_DRIVERS_MISC so that CONFIG_IMX_HAB could
build successfully, if selected.

Signed-off-by: Fabio Estevam <festevam@denx.de>
---
 arch/arm/dts/imx8mm-kontron-n801x-u-boot.dtsi | 17 +++++++++++++++++
 arch/arm/mach-imx/imx8m/Kconfig               |  3 +++
 board/kontron/sl-mx8mm/spl.c                  |  9 +++++++++
 configs/kontron-sl-mx8mm_defconfig            |  1 +
 4 files changed, 30 insertions(+)

Comments

ZHIZHIKIN Andrey June 8, 2022, 9:43 p.m. UTC | #1
Hello Fabio,

> -----Original Message-----
> From: U-Boot <u-boot-bounces@lists.denx.de> On Behalf Of Fabio Estevam
> Sent: Wednesday, June 8, 2022 5:04 PM
> To: sbabic@denx.de
> Cc: frieder.schrempf@kontron.de; u-boot@lists.denx.de; Fabio Estevam
> <festevam@denx.de>
> Subject: [PATCH] kontron-sl-mx8mm: Add CAAM support
> 
> Add CAAM support, which is required when enabling HAB secure boot.
> 
> Select CONFIG_SPL_DRIVERS_MISC so that CONFIG_IMX_HAB could
> build successfully, if selected.
> 
> Signed-off-by: Fabio Estevam <festevam@denx.de>
> ---
>  arch/arm/dts/imx8mm-kontron-n801x-u-boot.dtsi | 17 +++++++++++++++++
>  arch/arm/mach-imx/imx8m/Kconfig               |  3 +++
>  board/kontron/sl-mx8mm/spl.c                  |  9 +++++++++
>  configs/kontron-sl-mx8mm_defconfig            |  1 +
>  4 files changed, 30 insertions(+)
> 
> diff --git a/arch/arm/dts/imx8mm-kontron-n801x-u-boot.dtsi b/arch/arm/dts/imx8mm-
> kontron-n801x-u-boot.dtsi
> index 22d18e6f1cf8..11d915310f74 100644
> --- a/arch/arm/dts/imx8mm-kontron-n801x-u-boot.dtsi
> +++ b/arch/arm/dts/imx8mm-kontron-n801x-u-boot.dtsi
> @@ -25,6 +25,23 @@
>  	};
>  };
> 
> +&crypto {
> +	u-boot,dm-spl;
> +};
> +
> +&sec_jr0 {
> +	u-boot,dm-spl;
> +	status = "disabled";

If this board is supported by upstream Kernel, then perhaps this
reservation shall be included there before, and then sync'd back
into U-Boot?

This is similar to what EVKs from NXP are undergoing now, with your
help of up-steaming Kernel DTB changes in front of U-Boot DTB ones.

> +};
> +
> +&sec_jr1 {
> +	u-boot,dm-spl;
> +};
> +
> +&sec_jr2 {
> +	u-boot,dm-spl;
> +};
> +
>  &fec1 {
>  	phy-mode = "rgmii-rxid";
>  };
> diff --git a/arch/arm/mach-imx/imx8m/Kconfig b/arch/arm/mach-imx/imx8m/Kconfig
> index 61397bf88d13..5c59422ecb79 100644
> --- a/arch/arm/mach-imx/imx8m/Kconfig
> +++ b/arch/arm/mach-imx/imx8m/Kconfig
> @@ -106,6 +106,9 @@ config TARGET_KONTRON_MX8MM
>  	select IMX8MM
>  	select SUPPORT_SPL
>  	select IMX8M_LPDDR4
> +	select FSL_CAAM
> +	select ARCH_MISC_INIT
> +	select SPL_CRYPTO if SPL
> 
>  config TARGET_IMX8MN_BSH_SMM_S2
>  	bool "imx8mn-bsh-smm-s2"
> diff --git a/board/kontron/sl-mx8mm/spl.c b/board/kontron/sl-mx8mm/spl.c
> index 4ef03c8c172f..5a513722c5d5 100644
> --- a/board/kontron/sl-mx8mm/spl.c
> +++ b/board/kontron/sl-mx8mm/spl.c
> @@ -13,6 +13,9 @@
>  #include <asm/mach-imx/boot_mode.h>
>  #include <asm/mach-imx/iomux-v3.h>
>  #include <dm/uclass.h>
> +#include <dm/device.h>
> +#include <dm/uclass-internal.h>
> +#include <dm/device-internal.h>
>  #include <hang.h>
>  #include <i2c.h>
>  #include <init.h>
> @@ -213,6 +216,12 @@ void spl_board_init(void)
>  	struct udevice *dev;
>  	int ret;
> 
> +	if (IS_ENABLED(CONFIG_FSL_CAAM)) {
> +		ret = uclass_get_device_by_driver(UCLASS_MISC,
> DM_DRIVER_GET(caam_jr), &dev);
> +		if (ret)
> +			printf("Failed to initialize %s: %d\n", dev->name, ret);
> +	}
> +
>  	puts("Normal Boot\n");
> 
>  	ret = uclass_get_device_by_name(UCLASS_CLK,
> diff --git a/configs/kontron-sl-mx8mm_defconfig b/configs/kontron-sl-
> mx8mm_defconfig
> index 2e9d52522b21..eae9ac0dbebf 100644
> --- a/configs/kontron-sl-mx8mm_defconfig
> +++ b/configs/kontron-sl-mx8mm_defconfig
> @@ -16,6 +16,7 @@ CONFIG_SPL_TEXT_BASE=0x7E1000
>  CONFIG_TARGET_KONTRON_MX8MM=y
>  CONFIG_SPL_MMC=y
>  CONFIG_SPL_SERIAL=y
> +CONFIG_SPL_DRIVERS_MISC=y
>  CONFIG_BOOTCOUNT_BOOTLIMIT=3
>  CONFIG_SPL=y
>  CONFIG_SYS_LOAD_ADDR=0x42000000
> --
> 2.25.1

Regards,
Andrey
Fabio Estevam June 9, 2022, 8:04 p.m. UTC | #2
Hi Andrey,

On Wed, Jun 8, 2022 at 6:43 PM ZHIZHIKIN Andrey
<andrey.zhizhikin@leica-geosystems.com> wrote:

> > +&sec_jr0 {
> > +     u-boot,dm-spl;
> > +     status = "disabled";
>
> If this board is supported by upstream Kernel, then perhaps this
> reservation shall be included there before, and then sync'd back
> into U-Boot?

Yes, this board is supported by the upstream kernel.

I can remove the status = "disabled" line from this patch and send a v2.

BTW, if you have a chance please send your Tested-by or Reviewed-by
patch to my imx8m kernel patch
that disables sec_jr0.

Thanks


> This is similar to what EVKs from NXP are undergoing now, with your
> help of up-steaming Kernel DTB changes in front of U-Boot DTB ones.
>
> > +};
> > +
> > +&sec_jr1 {
> > +     u-boot,dm-spl;
> > +};
> > +
> > +&sec_jr2 {
> > +     u-boot,dm-spl;
> > +};
> > +
> >  &fec1 {
> >       phy-mode = "rgmii-rxid";
> >  };
> > diff --git a/arch/arm/mach-imx/imx8m/Kconfig b/arch/arm/mach-imx/imx8m/Kconfig
> > index 61397bf88d13..5c59422ecb79 100644
> > --- a/arch/arm/mach-imx/imx8m/Kconfig
> > +++ b/arch/arm/mach-imx/imx8m/Kconfig
> > @@ -106,6 +106,9 @@ config TARGET_KONTRON_MX8MM
> >       select IMX8MM
> >       select SUPPORT_SPL
> >       select IMX8M_LPDDR4
> > +     select FSL_CAAM
> > +     select ARCH_MISC_INIT
> > +     select SPL_CRYPTO if SPL
> >
> >  config TARGET_IMX8MN_BSH_SMM_S2
> >       bool "imx8mn-bsh-smm-s2"
> > diff --git a/board/kontron/sl-mx8mm/spl.c b/board/kontron/sl-mx8mm/spl.c
> > index 4ef03c8c172f..5a513722c5d5 100644
> > --- a/board/kontron/sl-mx8mm/spl.c
> > +++ b/board/kontron/sl-mx8mm/spl.c
> > @@ -13,6 +13,9 @@
> >  #include <asm/mach-imx/boot_mode.h>
> >  #include <asm/mach-imx/iomux-v3.h>
> >  #include <dm/uclass.h>
> > +#include <dm/device.h>
> > +#include <dm/uclass-internal.h>
> > +#include <dm/device-internal.h>
> >  #include <hang.h>
> >  #include <i2c.h>
> >  #include <init.h>
> > @@ -213,6 +216,12 @@ void spl_board_init(void)
> >       struct udevice *dev;
> >       int ret;
> >
> > +     if (IS_ENABLED(CONFIG_FSL_CAAM)) {
> > +             ret = uclass_get_device_by_driver(UCLASS_MISC,
> > DM_DRIVER_GET(caam_jr), &dev);
> > +             if (ret)
> > +                     printf("Failed to initialize %s: %d\n", dev->name, ret);
> > +     }
> > +
> >       puts("Normal Boot\n");
> >
> >       ret = uclass_get_device_by_name(UCLASS_CLK,
> > diff --git a/configs/kontron-sl-mx8mm_defconfig b/configs/kontron-sl-
> > mx8mm_defconfig
> > index 2e9d52522b21..eae9ac0dbebf 100644
> > --- a/configs/kontron-sl-mx8mm_defconfig
> > +++ b/configs/kontron-sl-mx8mm_defconfig
> > @@ -16,6 +16,7 @@ CONFIG_SPL_TEXT_BASE=0x7E1000
> >  CONFIG_TARGET_KONTRON_MX8MM=y
> >  CONFIG_SPL_MMC=y
> >  CONFIG_SPL_SERIAL=y
> > +CONFIG_SPL_DRIVERS_MISC=y
> >  CONFIG_BOOTCOUNT_BOOTLIMIT=3
> >  CONFIG_SPL=y
> >  CONFIG_SYS_LOAD_ADDR=0x42000000
> > --
> > 2.25.1
>
> Regards,
> Andrey
>
diff mbox series

Patch

diff --git a/arch/arm/dts/imx8mm-kontron-n801x-u-boot.dtsi b/arch/arm/dts/imx8mm-kontron-n801x-u-boot.dtsi
index 22d18e6f1cf8..11d915310f74 100644
--- a/arch/arm/dts/imx8mm-kontron-n801x-u-boot.dtsi
+++ b/arch/arm/dts/imx8mm-kontron-n801x-u-boot.dtsi
@@ -25,6 +25,23 @@ 
 	};
 };
 
+&crypto {
+	u-boot,dm-spl;
+};
+
+&sec_jr0 {
+	u-boot,dm-spl;
+	status = "disabled";
+};
+
+&sec_jr1 {
+	u-boot,dm-spl;
+};
+
+&sec_jr2 {
+	u-boot,dm-spl;
+};
+
 &fec1 {
 	phy-mode = "rgmii-rxid";
 };
diff --git a/arch/arm/mach-imx/imx8m/Kconfig b/arch/arm/mach-imx/imx8m/Kconfig
index 61397bf88d13..5c59422ecb79 100644
--- a/arch/arm/mach-imx/imx8m/Kconfig
+++ b/arch/arm/mach-imx/imx8m/Kconfig
@@ -106,6 +106,9 @@  config TARGET_KONTRON_MX8MM
 	select IMX8MM
 	select SUPPORT_SPL
 	select IMX8M_LPDDR4
+	select FSL_CAAM
+	select ARCH_MISC_INIT
+	select SPL_CRYPTO if SPL
 
 config TARGET_IMX8MN_BSH_SMM_S2
 	bool "imx8mn-bsh-smm-s2"
diff --git a/board/kontron/sl-mx8mm/spl.c b/board/kontron/sl-mx8mm/spl.c
index 4ef03c8c172f..5a513722c5d5 100644
--- a/board/kontron/sl-mx8mm/spl.c
+++ b/board/kontron/sl-mx8mm/spl.c
@@ -13,6 +13,9 @@ 
 #include <asm/mach-imx/boot_mode.h>
 #include <asm/mach-imx/iomux-v3.h>
 #include <dm/uclass.h>
+#include <dm/device.h>
+#include <dm/uclass-internal.h>
+#include <dm/device-internal.h>
 #include <hang.h>
 #include <i2c.h>
 #include <init.h>
@@ -213,6 +216,12 @@  void spl_board_init(void)
 	struct udevice *dev;
 	int ret;
 
+	if (IS_ENABLED(CONFIG_FSL_CAAM)) {
+		ret = uclass_get_device_by_driver(UCLASS_MISC, DM_DRIVER_GET(caam_jr), &dev);
+		if (ret)
+			printf("Failed to initialize %s: %d\n", dev->name, ret);
+	}
+
 	puts("Normal Boot\n");
 
 	ret = uclass_get_device_by_name(UCLASS_CLK,
diff --git a/configs/kontron-sl-mx8mm_defconfig b/configs/kontron-sl-mx8mm_defconfig
index 2e9d52522b21..eae9ac0dbebf 100644
--- a/configs/kontron-sl-mx8mm_defconfig
+++ b/configs/kontron-sl-mx8mm_defconfig
@@ -16,6 +16,7 @@  CONFIG_SPL_TEXT_BASE=0x7E1000
 CONFIG_TARGET_KONTRON_MX8MM=y
 CONFIG_SPL_MMC=y
 CONFIG_SPL_SERIAL=y
+CONFIG_SPL_DRIVERS_MISC=y
 CONFIG_BOOTCOUNT_BOOTLIMIT=3
 CONFIG_SPL=y
 CONFIG_SYS_LOAD_ADDR=0x42000000