[PATCH v2 1/6] arm: imx8m: add OP-TEE node

Tim Harvey tharvey at gateworks.com
Fri Nov 8 19:05:06 CET 2024


On Fri, Nov 8, 2024 at 5:49 AM Adam Ford <aford173 at gmail.com> wrote:
>
> On Thu, Nov 7, 2024 at 2:42 AM Yannic Moog <y.moog at phytec.de> wrote:
> >
> > Add tee node in SoC u-boot device trees. Use a kconfig entry to specify
> > load and entry addresses for the op-tee image in the respective
> > defconfig.
> >
> > Signed-off-by: Yannic Moog <y.moog at phytec.de>
> > ---
> >  arch/arm/dts/imx8mm-u-boot.dtsi | 17 ++++++++++++++++-
> >  arch/arm/dts/imx8mn-u-boot.dtsi | 17 ++++++++++++++++-
> >  arch/arm/dts/imx8mp-u-boot.dtsi | 17 ++++++++++++++++-
> >  arch/arm/mach-imx/imx8m/Kconfig |  8 ++++++++
> >  4 files changed, 56 insertions(+), 3 deletions(-)
> >
> > diff --git a/arch/arm/dts/imx8mm-u-boot.dtsi b/arch/arm/dts/imx8mm-u-boot.dtsi
> > index d31bc822532..ecc2319279e 100644
> > --- a/arch/arm/dts/imx8mm-u-boot.dtsi
> > +++ b/arch/arm/dts/imx8mm-u-boot.dtsi
> > @@ -164,6 +164,21 @@
> >                                         };
> >  #endif
> >
> > +                                       tee: tee {
> > +                                               description = "OP-TEE";
> > +                                               type = "tee";
> > +                                               arch = "arm64";
> > +                                               compression = "none";
> > +                                               os = "tee";
> > +                                               load = <CONFIG_IMX8M_OPTEE_LOAD_ADDR>;
> > +                                               entry = <CONFIG_IMX8M_OPTEE_LOAD_ADDR>;
> > +
> > +                                               tee-os {
> > +                                                       filename = "tee.bin";
> > +                                                       optional;
> > +                                               };
> > +                                       };
> > +
> >                                         binman_fip: fip {
> >                                                 arch = "arm64";
> >                                                 compression = "none";
> > @@ -192,7 +207,7 @@
> >                                                 fdt = "fdt-SEQ";
> >                                                 firmware = "uboot";
> >  #ifndef CONFIG_ARMV8_PSCI
> > -                                               loadables = "atf";
> > +                                               loadables = "atf", "tee";
> >  #endif
> >                                         };
> >                                 };
> > diff --git a/arch/arm/dts/imx8mn-u-boot.dtsi b/arch/arm/dts/imx8mn-u-boot.dtsi
> > index 6875c6d44ff..f9108cb75c7 100644
> > --- a/arch/arm/dts/imx8mn-u-boot.dtsi
> > +++ b/arch/arm/dts/imx8mn-u-boot.dtsi
> > @@ -235,6 +235,21 @@
> >                                         };
> >  #endif
> >
> > +                                       tee: tee {
> > +                                               description = "OP-TEE";
> > +                                               type = "tee";
> > +                                               arch = "arm64";
> > +                                               compression = "none";
> > +                                               os = "tee";
> > +                                               load = <CONFIG_IMX8M_OPTEE_LOAD_ADDR>;
> > +                                               entry = <CONFIG_IMX8M_OPTEE_LOAD_ADDR>;
> > +
> > +                                               tee-os {
> > +                                                       filename = "tee.bin";
> > +                                                       optional;
> > +                                               };
> > +                                       };
> > +
> >                                         binman_fip: fip {
> >                                                 arch = "arm64";
> >                                                 compression = "none";
> > @@ -263,7 +278,7 @@
> >                                                 fdt = "fdt-SEQ";
> >                                                 firmware = "uboot";
> >  #ifndef CONFIG_ARMV8_PSCI
> > -                                               loadables = "atf";
> > +                                               loadables = "atf", "tee";
> >  #endif
> >                                         };
> >                                 };
> > diff --git a/arch/arm/dts/imx8mp-u-boot.dtsi b/arch/arm/dts/imx8mp-u-boot.dtsi
> > index 56749ccacd2..9ede98a11e4 100644
> > --- a/arch/arm/dts/imx8mp-u-boot.dtsi
> > +++ b/arch/arm/dts/imx8mp-u-boot.dtsi
> > @@ -185,6 +185,21 @@
> >                                         };
> >  #endif
> >
> > +                                       tee: tee {
> > +                                               description = "OP-TEE";
> > +                                               type = "tee";
> > +                                               arch = "arm64";
> > +                                               compression = "none";
> > +                                               os = "tee";
> > +                                               load = <CONFIG_IMX8M_OPTEE_LOAD_ADDR>;
> > +                                               entry = <CONFIG_IMX8M_OPTEE_LOAD_ADDR>;
> > +
> > +                                               tee-os {
> > +                                                       filename = "tee.bin";
> > +                                                       optional;
> > +                                               };
> > +                                       };
> > +
> >                                         @fdt-SEQ {
> >                                                 description = "NAME";
> >                                                 type = "flat_dt";
> > @@ -204,7 +219,7 @@
> >                                                 fdt = "fdt-SEQ";
> >                                                 firmware = "uboot";
> >  #ifndef CONFIG_ARMV8_PSCI
> > -                                               loadables = "atf";
> > +                                               loadables = "atf", "tee";
> >  #endif
> >                                         };
> >                                 };
> > diff --git a/arch/arm/mach-imx/imx8m/Kconfig b/arch/arm/mach-imx/imx8m/Kconfig
> > index b254a50b091..14f14db6a35 100644
> > --- a/arch/arm/mach-imx/imx8m/Kconfig
> > +++ b/arch/arm/mach-imx/imx8m/Kconfig
> > @@ -37,6 +37,14 @@ config SYS_HAS_ARMV8_SECURE_BASE
> >           If enabled, please also define the value for ARMV8_SECURE_BASE,
> >           for i.MX8M, it could be some address in OCRAM.
> >
> > +config IMX8M_OPTEE_LOAD_ADDR
> > +       hex "Load address of OPTEE image"
> > +       default 0x56000000
> > +       help
> > +         The load and entry address for the OPTEE image. This value defaults to
> > +         0x56000000 if not provided in the board defconfig file.
>
> I think this would need to vary based on the platform.  I think the
> addresses may be different depending on Mini, Nano and Plus and also
> dependent on the available SDRAM.

Indeed the address differs for platform (as the DRAM base address
does) and is also based on the DRAM size of the board. Here are my
notes for IMX8M:

The address is the link/load address for TEE that should match
BL32_BASE for the ATF (for imx8m) and CFG_TZDRAM_START for OPTEE. The
BL32_BASE is the same for imx8mm/n/p but it does depend on the size of
DRAM. The address should be the top 32MiB of DRAM but because U-Boot
is loading tee.bin from a FIT image into DRAM it needs to be a 32bit
address and thus needs to be adjusted down if you are on a board with
4GiB:
1GiB DRAM use 0x7e000000
2GiB DRAM use 0xbe000000
3GiB or larger use 0xfe000000

Best Regards,

Tim


More information about the U-Boot mailing list