RE: [PATCH 1/2] fsl-layerscape: add dtb overlay feature

2022-02-24 Thread Sahil Malhotra (OSS)
Hi Michael,

Gentle reminder on this patch set.

Regards,
Sahil Malhotra
> -Original Message-
> From: Sahil Malhotra (OSS)
> Sent: Friday, February 4, 2022 4:58 PM
> To: Michael Walle ; Sahil Malhotra (OSS)
> 
> Cc: ZHIZHIKIN Andrey ; Clément
> Faure ; Gaurav Jain ;
> Pankaj Gupta ; Priyanka Jain
> ; u-boot@lists.denx.de; Varun Sethi
> ; Ye Li 
> Subject: RE: [PATCH 1/2] fsl-layerscape: add dtb overlay feature
> 
> Hi Michael,
> 
> Sorry for delayed response.
> Please find my response inline.
> 
> > -Original Message-
> > From: Michael Walle 
> > Sent: Thursday, January 6, 2022 1:10 PM
> > To: Sahil Malhotra (OSS) 
> > Cc: ZHIZHIKIN Andrey ; Clément
> > Faure ; Gaurav Jain ;
> > Pankaj Gupta ; Priyanka Jain
> > ; u-boot@lists.denx.de; Varun Sethi
> > ; Ye Li 
> > Subject: Re: [PATCH 1/2] fsl-layerscape: add dtb overlay feature
> >
> > Hi Sahil,
> >
> > Am 2022-01-06 07:09, schrieb Sahil Malhotra (OSS):
> >
> > >> I don't know I follow. u-boot and linux should have the same device
> > >> tree; regardless if that device is used or not. So applying the
> > >> overlay just for linux isn't enough here.
> > > Ok, I don't think that as of now, in all platforms uboot and linux
> > > have same devie tree.
> >
> > That doesn't mean it is ok to diverge again. I put a lot of effort in
> > syncing uboot's LS1028A device tree with linux.
> Yes, that’s true we should not diverge again if they are already synced.
> 
> 
> > > But I will try to address your concern, but I don’t know how to
> > > apply overlay to dtb which is embedded in u-boot binary, Can you
> > > please point me to one reference which is doing this thing, I will
> > > take reference from there.
> >
> > Sorry I can't advise you with that. There is board_fix_fdt() maybe
> > that will help. But I'm not conviced this is the correct approach, see 
> > below.
> Ok, I looked at the board_fix_fdt() and in that we can put the code for
> modifying the uboot DTB.
> But the same overlay which we are going to apply on linux DTB should get
> applied On uboot DTB, and that can happen only when we have same DTBs
> both in Linux and u-boot.
> 
> I checked the uboot and Linux DTBs for LS platforms, except LS1028, all other
> platforms have a lot of difference in them.
> 
> So we will not be able to apply the same DTB overaly which we get from OP-
> TEE on both Linux and uboot.
> 
> For now this can only happen for LS1028 platform, if you want we can do this,
> But it will be incomplete in my opinion as it will not enable all the boards.
> We need to work on them again.
> 
> >
> > >> > We don't use DTB in OP-TEE, but when we use CAAM in OP-TEE,
> > >> > OP-TEE reserves One Job Ring for its use and that is communicated
> > >> > to Kernel using DTB overlay.
> > >> >
> > >> >> what if the overlay doesn't match the dtb?
> > >> > I didn't get this point, can you please elaborate a little.
> > >>
> > >> You are merging a dtb fragment with an unknown dtb, right? Who says
> > >> they match? you might have an old dtb where the supplied dtb
> > >> fragment doesn't make any sense.
> > >>
> > >> I might be missing something here. Eg. where is the linux dtb
> > >> supposed to come from? This patchset is really missing an example
> > >> and a description how things should work.
> > > If supplied DTB does not match with DTB overlay fragment. then
> > > overlay will not get applied.
> >
> > I don't think this is what happens here. fdt_overlay_apply() will mark
> > the fdt as damaged and there will be no fdt at all.
> Ok, got your point, If we have fragment in DTB overlay to modify let's say
> `status` of CAAM job ring, and CAAM job ring node does not exist in the DTB
> on which overlay is going to be applied, In that case the DTB will be marked 
> as
> damaged and it will stop booting of the board, right ?
> But how can we make sure that DTB overlay and DTB on which DTB overlay is
> applied are compatible ?
> Maybe some DTB version check or something like that, when OP-TEE creates
> a DTB overlay, It indicates in the overlay that this can be applied on only 
> DTBs
> with version more than `X`
> 
> 
> > > We don't have any control on where user picks the DTB, but we can only
> > > make sure DTB overlay feature must work with DTBs which are
> upstreamed
> > > If user makes its own customized DTB, we cannot make sure that things
> > > will work.
&g

RE: [PATCH 1/2] fsl-layerscape: add dtb overlay feature

2022-02-04 Thread Sahil Malhotra (OSS)
Hi Michael,

Sorry for delayed response.
Please find my response inline.

> -Original Message-
> From: Michael Walle 
> Sent: Thursday, January 6, 2022 1:10 PM
> To: Sahil Malhotra (OSS) 
> Cc: ZHIZHIKIN Andrey ; Clément
> Faure ; Gaurav Jain ;
> Pankaj Gupta ; Priyanka Jain
> ; u-boot@lists.denx.de; Varun Sethi
> ; Ye Li 
> Subject: Re: [PATCH 1/2] fsl-layerscape: add dtb overlay feature
> 
> Hi Sahil,
> 
> Am 2022-01-06 07:09, schrieb Sahil Malhotra (OSS):
> 
> >> I don't know I follow. u-boot and linux should have the same device
> >> tree; regardless if that device is used or not. So applying the
> >> overlay just for linux isn't enough here.
> > Ok, I don't think that as of now, in all platforms uboot and linux
> > have same devie tree.
> 
> That doesn't mean it is ok to diverge again. I put a lot of effort in syncing
> uboot's LS1028A device tree with linux.
Yes, that’s true we should not diverge again if they are already synced.


> > But I will try to address your concern, but I don’t know how to apply
> > overlay to dtb which is embedded in u-boot binary, Can you please
> > point me to one reference which is doing this thing, I will take
> > reference from there.
> 
> Sorry I can't advise you with that. There is board_fix_fdt() maybe that will
> help. But I'm not conviced this is the correct approach, see below.
Ok, I looked at the board_fix_fdt() and in that we can put the code for 
modifying
the uboot DTB.
But the same overlay which we are going to apply on linux DTB should get applied
On uboot DTB, and that can happen only when we have same DTBs both in Linux
and u-boot.

I checked the uboot and Linux DTBs for LS platforms, except LS1028, all other
platforms have a lot of difference in them.

So we will not be able to apply the same DTB overaly which we get from OP-TEE on
both Linux and uboot.

For now this can only happen for LS1028 platform, if you want we can do this,
But it will be incomplete in my opinion as it will not enable all the boards.
We need to work on them again.

> 
> >> > We don't use DTB in OP-TEE, but when we use CAAM in OP-TEE, OP-TEE
> >> > reserves One Job Ring for its use and that is communicated to
> >> > Kernel using DTB overlay.
> >> >
> >> >> what if the overlay doesn't match the dtb?
> >> > I didn't get this point, can you please elaborate a little.
> >>
> >> You are merging a dtb fragment with an unknown dtb, right? Who says
> >> they match? you might have an old dtb where the supplied dtb fragment
> >> doesn't make any sense.
> >>
> >> I might be missing something here. Eg. where is the linux dtb
> >> supposed to come from? This patchset is really missing an example and
> >> a description how things should work.
> > If supplied DTB does not match with DTB overlay fragment. then overlay
> > will not get applied.
> 
> I don't think this is what happens here. fdt_overlay_apply() will mark the fdt
> as damaged and there will be no fdt at all.
Ok, got your point, If we have fragment in DTB overlay to modify let's say 
`status` of
CAAM job ring, and CAAM job ring node does not exist in the DTB on which 
overlay is 
going to be applied, In that case the DTB will be marked as damaged and it will 
stop
booting of the board, right ?
But how can we make sure that DTB overlay and DTB on which DTB overlay is 
applied
are compatible ?
Maybe some DTB version check or something like that, when OP-TEE creates a DTB 
overlay,
It indicates in the overlay that this can be applied on only DTBs with version 
more than `X`


> > We don't have any control on where user picks the DTB, but we can only
> > make sure DTB overlay feature must work with DTBs which are upstreamed
> > If user makes its own customized DTB, we cannot make sure that things
> > will work.
> 
> Again. Is there any documentation on how this should all work together?
> Where does optee get its device tree from? Shouldn't it be the same device
> tree as u-boot and linux? Shouldn't optee modify the device tree in place
> before jumping back to u-boot?
Here on LS platforms: Boot Flow is like ATF-> OP-TEE-> ATF->Uboot-> Linux

Currently for LS platforms, OP-TEE don't use DTBs except for LX2160A.
And I am talking about the other platforms except LX2160 for now.
So all peripherals base addresses are currently hardcoded.

But OP-TEE uses some of the peripherals, and this information needs to 
be passed to following components uboot and linux so that they don't use
the same peripherals.

One of the case is CAAM Job Ring. OP-TEE always use CAAM Job Ring 3, and it
needs to communicate this thing to following components uboot so that they don’t
try to use the same peripherals 

RE: [EXT] Re: Re: [PATCH 1/2] fsl-layerscape: add dtb overlay feature

2022-01-31 Thread Sahil Malhotra (OSS)
Hi Francois.

Sorry for the delayed response.

> > Elaborating on a broader context: who is the user in U-Boot? In
> desktops/laptops context, I understand the user could be the
> desktop/laptop owner but based on my limited understanding of Chrome,
> users are quite constrained in what they can do (allowing the user to play
> with DT is a recipe for costly support). In the embedded case, is the user the
> one who makes a board based on the SoC ? the product maker that uses the
> board for a particular solution ? the integrator who places the board in a
> larger product ? the larger product maker ? the larger product owner ? the
> larger product maintenance guy?
> ultimately I think there is a need to empower a number of actors listed above
> who will take the responsibility based on consultation from the software
> value chain.
> All this to say I believe we lack vocabulary to identify actors in the 
> firmware
> software value chain: has anyone already tried to formalize this?
Yes, Great point you raised, user can be anyone as mentioned by you and yes we 
lack
the correct definitions of different actors that can exist in firmware software 
value chain.

As of now I am not aware of any effort going on this direction to formalize, 
but definitely
we can work together for formalizing this thing.

Regards,
Sahil Malhotra

> -Original Message-
> From: U-Boot  On Behalf Of François Ozog
> Sent: Thursday, January 6, 2022 1:18 PM
> To: Sahil Malhotra (OSS) 
> Cc: Michael Walle ; ZHIZHIKIN Andrey
> ; Clément Faure
> ; Gaurav Jain ; Pankaj
> Gupta ; Priyanka Jain ;
> u-boot@lists.denx.de; Varun Sethi ; Ye Li
> 
> Subject: [EXT] Re: Re: [PATCH 1/2] fsl-layerscape: add dtb overlay feature
> 
> Caution: EXT Email
> 
> Hi Sahil,
> 
> (and happy new year ;-)
> 
> On Thu, 6 Jan 2022 at 07:09, Sahil Malhotra (OSS) <
> sahil.malho...@oss.nxp.com> wrote:
> 
> > Hi Michael,
> >
> > > -Original Message-
> > > From: Michael Walle 
> > > Sent: Thursday, December 23, 2021 3:05 PM
> > > To: Sahil Malhotra (OSS) 
> > > Cc: ZHIZHIKIN Andrey ;
> > > Clément
> > Faure
> > > ; Gaurav Jain ; Pankaj
> > > Gupta ; Priyanka Jain
> ;
> > > u- b...@lists.denx.de; Varun Sethi ; Ye Li
> > > 
> > > Subject: Re: [EXT] Re: [PATCH 1/2] fsl-layerscape: add dtb overlay
> > feature
> > >
> > > Hi Sahil,
> > >
> > > Am 2021-12-23 09:46, schrieb Sahil Malhotra (OSS):
> > > >> -Original Message-
> > > >> From: U-Boot  On Behalf Of Michael
> > > >> Walle
> > > >> Sent: Monday, December 20, 2021 6:23 PM
> > > >> To: Sahil Malhotra (OSS) 
> > > >> Cc: ZHIZHIKIN Andrey ;
> > > >> Clément Faure ; Gaurav Jain
> > > >> ; Pankaj Gupta ;
> > > >> Priyanka Jain ; u-boot@lists.denx.de;
> > > >> Varun Sethi ; Ye Li 
> > > >> Subject: [EXT] Re: [PATCH 1/2] fsl-layerscape: add dtb overlay
> > > >> feature
> > > >>
> > > >> Caution: EXT Email
> > > >>
> > > >> Hi Sahil,
> > > >>
> > > >> Am 2021-12-10 07:33, schrieb Sahil Malhotra (OSS):
> > > >> >> DT nodes can be statically disabled if we know that they are
> > > >> >> held by HAB and are not released to NS World.
> > > >> >>
> > > >> >> OP-TEE does set the status itself via
> > > >> >> dt_enable_secure_status(), which should present the properly
> > > >> >> configured FDT when U-Boot takes
> > > >> over.
> > > >> > Yes, OP-TEE set the status by dt_enable_secure_status() in DTB
> > > >> > overlay which gets merged with DTB provided for Linux bootup
> > > >> > and then Linux boots with merged DTB.
> > > >> > But u-boot uses the DTB embedded in its image. How can we
> > > >> > modify that DTB or merge DTB overlay passed by OP-TEE with uboot
> DTB ?
> > > >>
> > > >> But then u-boot has the "wrong" dtb. What is the reason, there is
> > > >> an overlay instead of a whole dtb? what if the overlay doesn't
> > > >> match the dtb?
> > > > "wrong" dtb means that uboot will not be aware of CAAM job ring
> > > > which is taken by OP-TEE and uboot on LS platforms currently use
> > > > JR0, which is not being used by any other entity in LS bootflow.
> > >
> > > I don't know I follow. u-boot and linu

RE:Re: [PATCH 1/2] fsl-layerscape: add dtb overlay feature

2022-01-05 Thread Sahil Malhotra (OSS)
Hi Michael,

> -Original Message-
> From: Michael Walle 
> Sent: Thursday, December 23, 2021 3:05 PM
> To: Sahil Malhotra (OSS) 
> Cc: ZHIZHIKIN Andrey ; Clément Faure
> ; Gaurav Jain ; Pankaj Gupta
> ; Priyanka Jain ; u-
> b...@lists.denx.de; Varun Sethi ; Ye Li 
> Subject: Re: [EXT] Re: [PATCH 1/2] fsl-layerscape: add dtb overlay feature
> 
> Hi Sahil,
> 
> Am 2021-12-23 09:46, schrieb Sahil Malhotra (OSS):
> >> -Original Message-
> >> From: U-Boot  On Behalf Of Michael
> >> Walle
> >> Sent: Monday, December 20, 2021 6:23 PM
> >> To: Sahil Malhotra (OSS) 
> >> Cc: ZHIZHIKIN Andrey ; Clément
> >> Faure ; Gaurav Jain ;
> >> Pankaj Gupta ; Priyanka Jain
> >> ; u-boot@lists.denx.de; Varun Sethi
> >> ; Ye Li 
> >> Subject: [EXT] Re: [PATCH 1/2] fsl-layerscape: add dtb overlay
> >> feature
> >>
> >> Caution: EXT Email
> >>
> >> Hi Sahil,
> >>
> >> Am 2021-12-10 07:33, schrieb Sahil Malhotra (OSS):
> >> >> DT nodes can be statically disabled if we know that they are held
> >> >> by HAB and are not released to NS World.
> >> >>
> >> >> OP-TEE does set the status itself via dt_enable_secure_status(),
> >> >> which should present the properly configured FDT when U-Boot takes
> >> over.
> >> > Yes, OP-TEE set the status by dt_enable_secure_status() in DTB
> >> > overlay which gets merged with DTB provided for Linux bootup and
> >> > then Linux boots with merged DTB.
> >> > But u-boot uses the DTB embedded in its image. How can we modify
> >> > that DTB or merge DTB overlay passed by OP-TEE with uboot DTB ?
> >>
> >> But then u-boot has the "wrong" dtb. What is the reason, there is an
> >> overlay instead of a whole dtb? what if the overlay doesn't match the
> >> dtb?
> > "wrong" dtb means that uboot will not be aware of CAAM job ring which
> > is taken by OP-TEE and uboot on LS platforms currently use JR0, which
> > is not being used by any other entity in LS bootflow.
> 
> I don't know I follow. u-boot and linux should have the same device tree;
> regardless if that device is used or not. So applying the overlay just for 
> linux isn't
> enough here.
Ok, I don't think that as of now, in all platforms uboot and linux have same 
devie
tree. 
But I will try to address your concern, but I don’t know how to apply overlay to
dtb which is embedded in u-boot binary, Can you please point me to one reference
which is doing this thing, I will take reference from there.

> > We don't use DTB in OP-TEE, but when we use CAAM in OP-TEE, OP-TEE
> > reserves One Job Ring for its use and that is communicated to Kernel
> > using DTB overlay.
> >
> >> what if the overlay doesn't match the dtb?
> > I didn't get this point, can you please elaborate a little.
> 
> You are merging a dtb fragment with an unknown dtb, right? Who says they
> match? you might have an old dtb where the supplied dtb fragment doesn't
> make any sense.
> 
> I might be missing something here. Eg. where is the linux dtb supposed to come
> from? This patchset is really missing an example and a description how things
> should work.
If supplied DTB does not match with DTB overlay fragment. then overlay will not 
get applied.
We don't have any control on where user picks the DTB, but we can only make 
sure DTB
overlay feature must work with DTBs which are upstreamed
If user makes its own customized DTB, we cannot make sure that things will work.

Regards,
Sahil Malhotra


RE: [EXT] Re: [PATCH 1/2] fsl-layerscape: add dtb overlay feature

2021-12-23 Thread Sahil Malhotra (OSS)
Hi Michael,

> -Original Message-
> From: U-Boot  On Behalf Of Michael Walle
> Sent: Monday, December 20, 2021 6:23 PM
> To: Sahil Malhotra (OSS) 
> Cc: ZHIZHIKIN Andrey ; Clément
> Faure ; Gaurav Jain ;
> Pankaj Gupta ; Priyanka Jain
> ; u-boot@lists.denx.de; Varun Sethi
> ; Ye Li 
> Subject: [EXT] Re: [PATCH 1/2] fsl-layerscape: add dtb overlay feature
> 
> Caution: EXT Email
> 
> Hi Sahil,
> 
> Am 2021-12-10 07:33, schrieb Sahil Malhotra (OSS):
> >> DT nodes can be statically disabled if we know that they are held by
> >> HAB and are not released to NS World.
> >>
> >> OP-TEE does set the status itself via dt_enable_secure_status(),
> >> which should present the properly configured FDT when U-Boot takes
> over.
> > Yes, OP-TEE set the status by dt_enable_secure_status() in DTB overlay
> > which gets merged with DTB provided for Linux bootup and then Linux
> > boots with merged DTB.
> > But u-boot uses the DTB embedded in its image. How can we modify that
> > DTB or merge DTB overlay passed by OP-TEE with uboot DTB ?
> 
> But then u-boot has the "wrong" dtb. What is the reason, there is an overlay
> instead of a whole dtb? what if the overlay doesn't match the dtb?
"wrong" dtb means that uboot will not be aware of CAAM job ring which is taken 
by
OP-TEE and uboot on LS platforms currently use JR0, which is not being used by 
any other
entity in LS bootflow.

We don't use DTB in OP-TEE, but when we use CAAM in OP-TEE, OP-TEE reserves
One Job Ring for its use and that is communicated to Kernel using DTB overlay.

> what if the overlay doesn't match the dtb?
I didn't get this point, can you please elaborate a little.

Regards,
Sahil Malhotra


RE: [PATCH 1/2] fsl-layerscape: add dtb overlay feature

2021-12-16 Thread Sahil Malhotra (OSS)
Hi Michael/Andrey

Gentle reminder for comment on this patch series.

Regards,
Sahil Malhotra

> -Original Message-
> From: Sahil Malhotra (OSS) 
> Sent: Friday, December 10, 2021 12:03 PM
> To: ZHIZHIKIN Andrey ; Sahil
> Malhotra (OSS) ; Michael Walle
> 
> Cc: Clément Faure ; Gaurav Jain
> ; Pankaj Gupta ; Priyanka
> Jain ; u-boot@lists.denx.de; Varun Sethi
> ; Ye Li 
> Subject: RE: [PATCH 1/2] fsl-layerscape: add dtb overlay feature
> 
> Hi Andrey,
> 
> > -Original Message-
> > From: ZHIZHIKIN Andrey 
> > Sent: Wednesday, December 8, 2021 3:43 PM
> > To: Sahil Malhotra (OSS) ; Michael Walle
> > 
> > Cc: Clément Faure ; Gaurav Jain
> > ; Pankaj Gupta ;
> Priyanka
> > Jain ; u-boot@lists.denx.de; Varun Sethi
> > ; Ye Li 
> > Subject: RE: [PATCH 1/2] fsl-layerscape: add dtb overlay feature
> >
> > Hello Sahil,
> >
> > > -----Original Message-
> > > From: Sahil Malhotra (OSS) 
> > > Sent: Wednesday, December 8, 2021 7:12 AM
> > > To: Michael Walle ; Sahil Malhotra (OSS)
> > > 
> > > Cc: Clément Faure ; Gaurav Jain
> > > ; Pankaj Gupta ;
> > Priyanka
> > > Jain ; u- b...@lists.denx.de; Varun Sethi
> > > ; Ye Li ; ZHIZHIKIN Andrey
> > > 
> > > Subject: RE: [PATCH 1/2] fsl-layerscape: add dtb overlay feature
> > >
> > >
> > > Hi Michael,
> > >
> > > -Original Message-
> > > From: Michael Walle 
> > > Sent: Monday, November 29, 2021 11:17 PM
> > > To: Sahil Malhotra (OSS) 
> > > Cc: Clément Faure ; Gaurav Jain
> > > ; Pankaj Gupta ;
> > Priyanka
> > > Jain ; u- b...@lists.denx.de; Varun Sethi
> > > ; Ye Li ; ZHIZHIKIN Andrey
> > > 
> > > Subject: Re: [PATCH 1/2] fsl-layerscape: add dtb overlay feature
> > >
> > > Hi Sahil,
> > >
> > > Am 2021-11-29 12:55, schrieb Sahil Malhotra (OSS):
> > > > Am 2021-11-17 19:11, schrieb Sahil Malhotra (OSS):
> > > >>> Could you please add some description what this is doing and for
> > > >>> what this is intended? To have a "DTB overlay feature", it is
> > > >>> enough to just enable CONFIG_OF_LIBFDT_OVERLAY.
> > > >> I will add some description, and yes for DTB overlay feature, it
> > > >> is enough to enable CONFIG_OF_LIBFDT_OVERLAY but we need to do
> > > >> this step before booting the kernel that's why also have to
> > > >> enable CONFIG_OF_SYSTEM_SETUP.
> > > >
> > > >> Ok. What will the overlay do? Could you give an example?
> > > > This overlay will be disabling the crypto nodes which will be used
> > > > by optee in secure world, so that linux should not use it.
> > > >
> > > >
> > > >>> Apparently you're adding an overlay passed by optee. Doesn't
> > > >>> this have to be applied to u-boot's control dtb too?
> > > >> Yes, we will be applying the overlay passed by optee, yes it will
> > > >> be applied to dtb which will be passed to uboot for kernel booting.
> > > >
> > > >> If I read this patch correctly, you're modifying the DT before
> > > >> you jump to linux. But I was asking whether you also have to
> > > >> modify the DT which is used by u-boot. Eg. if you disable some
> > > >> kind of crypto nodes (because optee will use them in secure
> > > >> world), this also have to communicated to u-boot, not only linux, no?
> > > > Yes, I got your point now, and is very valid, but as of now for
> > > > u-boot we are just using the first available node for
> > > > communicating with CAAM leaving other job rings as it is.
> > > > So we need not to apply overlay to DTB used by uboot.
> > >
> > > > But we should do the correct thing, so that u-boot and linux
> > > > doesn't see a
> > > different version of the device tree.
> > >
> > > > Also what do you mean with "the first available node"?
> > > > There is already a new CAAM driver for u-boot pending, see
> > > > https://lore.kernel.org/u-boot/2025070014.17586-1-gaurav.jain@
> > > > nx
> > > > p.com/
> > >
> > > Very first CAAM Job Ring is always used by u-boot, OP-TEE does not
> > > use this job ring. Same job ring can be used by Linux once it boots up.
> >
> > Just for clarification: by saying "Very first CAAM Job Ring" do you

RE: [PATCH 1/2] fsl-layerscape: add dtb overlay feature

2021-12-09 Thread Sahil Malhotra (OSS)
Hi Andrey,

> -Original Message-
> From: ZHIZHIKIN Andrey 
> Sent: Wednesday, December 8, 2021 3:43 PM
> To: Sahil Malhotra (OSS) ; Michael Walle
> 
> Cc: Clément Faure ; Gaurav Jain
> ; Pankaj Gupta ; Priyanka
> Jain ; u-boot@lists.denx.de; Varun Sethi
> ; Ye Li 
> Subject: RE: [PATCH 1/2] fsl-layerscape: add dtb overlay feature
> 
> Hello Sahil,
> 
> > -Original Message-
> > From: Sahil Malhotra (OSS) 
> > Sent: Wednesday, December 8, 2021 7:12 AM
> > To: Michael Walle ; Sahil Malhotra (OSS)
> > 
> > Cc: Clément Faure ; Gaurav Jain
> > ; Pankaj Gupta ;
> Priyanka
> > Jain ; u- b...@lists.denx.de; Varun Sethi
> > ; Ye Li ; ZHIZHIKIN Andrey
> > 
> > Subject: RE: [PATCH 1/2] fsl-layerscape: add dtb overlay feature
> >
> >
> > Hi Michael,
> >
> > -Original Message-
> > From: Michael Walle 
> > Sent: Monday, November 29, 2021 11:17 PM
> > To: Sahil Malhotra (OSS) 
> > Cc: Clément Faure ; Gaurav Jain
> > ; Pankaj Gupta ;
> Priyanka
> > Jain ; u- b...@lists.denx.de; Varun Sethi
> > ; Ye Li ; ZHIZHIKIN Andrey
> > 
> > Subject: Re: [PATCH 1/2] fsl-layerscape: add dtb overlay feature
> >
> > Hi Sahil,
> >
> > Am 2021-11-29 12:55, schrieb Sahil Malhotra (OSS):
> > > Am 2021-11-17 19:11, schrieb Sahil Malhotra (OSS):
> > >>> Could you please add some description what this is doing and for
> > >>> what this is intended? To have a "DTB overlay feature", it is
> > >>> enough to just enable CONFIG_OF_LIBFDT_OVERLAY.
> > >> I will add some description, and yes for DTB overlay feature, it is
> > >> enough to enable CONFIG_OF_LIBFDT_OVERLAY but we need to do this
> > >> step before booting the kernel that's why also have to enable
> > >> CONFIG_OF_SYSTEM_SETUP.
> > >
> > >> Ok. What will the overlay do? Could you give an example?
> > > This overlay will be disabling the crypto nodes which will be used
> > > by optee in secure world, so that linux should not use it.
> > >
> > >
> > >>> Apparently you're adding an overlay passed by optee. Doesn't this
> > >>> have to be applied to u-boot's control dtb too?
> > >> Yes, we will be applying the overlay passed by optee, yes it will
> > >> be applied to dtb which will be passed to uboot for kernel booting.
> > >
> > >> If I read this patch correctly, you're modifying the DT before you
> > >> jump to linux. But I was asking whether you also have to modify the
> > >> DT which is used by u-boot. Eg. if you disable some kind of crypto
> > >> nodes (because optee will use them in secure world), this also have
> > >> to communicated to u-boot, not only linux, no?
> > > Yes, I got your point now, and is very valid, but as of now for
> > > u-boot we are just using the first available node for communicating
> > > with CAAM leaving other job rings as it is.
> > > So we need not to apply overlay to DTB used by uboot.
> >
> > > But we should do the correct thing, so that u-boot and linux doesn't
> > > see a
> > different version of the device tree.
> >
> > > Also what do you mean with "the first available node"?
> > > There is already a new CAAM driver for u-boot pending, see
> > > https://lore.kernel.org/u-boot/2025070014.17586-1-gaurav.jain@nx
> > > p.com/
> >
> > Very first CAAM Job Ring is always used by u-boot, OP-TEE does not use
> > this job ring. Same job ring can be used by Linux once it boots up.
> 
> Just for clarification: by saying "Very first CAAM Job Ring" do you actually
> mean JR0?
Yes, Very first CAAM Job Ring means JR0 for Layerscape.

> 
> If the BootROM logic with respect to JR reservation for LS family does not
> differ from i.MX8M family (which I assume does not), then why can't the
> logic be implemented in the same way proposed by Gaurav [1] here as well?
BootROM logic with respect to JR reservation is different for both Layerscape 
and i.MX8M family.
On Layerscape Platforms we don't have HAB, so we don’t need to reserve JR0.

> 
> DT nodes can be statically disabled if we know that they are held by HAB and
> are not released to NS World.
> 
> OP-TEE does set the status itself via dt_enable_secure_status(), which
> should present the properly configured FDT when U-Boot takes over.
Yes, OP-TEE set the status by dt_enable_secure_status() in DTB overlay which 
gets merged with DTB provided for Linux bootup and then Linux boots with merged 
DTB.
But u-boot u

RE: [PATCH 1/2] fsl-layerscape: add dtb overlay feature

2021-12-07 Thread Sahil Malhotra (OSS)
Hi Michael,

-Original Message-
From: Michael Walle  
Sent: Monday, November 29, 2021 11:17 PM
To: Sahil Malhotra (OSS) 
Cc: Clément Faure ; Gaurav Jain ; 
Pankaj Gupta ; Priyanka Jain ; 
u-boot@lists.denx.de; Varun Sethi ; Ye Li ; 
ZHIZHIKIN Andrey 
Subject: Re: [PATCH 1/2] fsl-layerscape: add dtb overlay feature

Hi Sahil,

Am 2021-11-29 12:55, schrieb Sahil Malhotra (OSS):
> Am 2021-11-17 19:11, schrieb Sahil Malhotra (OSS):
>>> Could you please add some description what this is doing and for 
>>> what this is intended? To have a "DTB overlay feature", it is enough 
>>> to just enable CONFIG_OF_LIBFDT_OVERLAY.
>> I will add some description, and yes for DTB overlay feature, it is 
>> enough to enable CONFIG_OF_LIBFDT_OVERLAY but we need to do this step 
>> before booting the kernel that's why also have to enable 
>> CONFIG_OF_SYSTEM_SETUP.
> 
>> Ok. What will the overlay do? Could you give an example?
> This overlay will be disabling the crypto nodes which will be used by 
> optee in secure world, so that linux should not use it.
> 
> 
>>> Apparently you're adding an overlay passed by optee. Doesn't this 
>>> have to be applied to u-boot's control dtb too?
>> Yes, we will be applying the overlay passed by optee, yes it will be 
>> applied to dtb which will be passed to uboot for kernel booting.
> 
>> If I read this patch correctly, you're modifying the DT before you 
>> jump to linux. But I was asking whether you also have to modify the 
>> DT which is used by u-boot. Eg. if you disable some kind of crypto 
>> nodes (because optee will use them in secure world), this also have 
>> to communicated to u-boot, not only linux, no?
> Yes, I got your point now, and is very valid, but as of now for u-boot 
> we are just using the first available node for communicating with CAAM 
> leaving other job rings as it is.
> So we need not to apply overlay to DTB used by uboot.

> But we should do the correct thing, so that u-boot and linux doesn't see a 
> different version of the device tree.

> Also what do you mean with "the first available node"?
> There is already a new CAAM driver for u-boot pending, see 
> https://lore.kernel.org/u-boot/2025070014.17586-1-gaurav.j...@nxp.com/

Very first CAAM Job Ring is always used by u-boot, OP-TEE does not use this job 
ring. Same job ring can be used by Linux once it boots up.

Regards,
Sahil Malhotra



RE: [PATCH 1/2] fsl-layerscape: add dtb overlay feature

2021-11-29 Thread Sahil Malhotra (OSS)
Hi Michael,


-Original Message-
From: Michael Walle  
Sent: Wednesday, November 17, 2021 11:51 PM
To: Sahil Malhotra (OSS) 
Cc: Clément Faure ; Gaurav Jain ; 
Pankaj Gupta ; Priyanka Jain ; 
u-boot@lists.denx.de; Varun Sethi ; Ye Li ; 
ZHIZHIKIN Andrey 
Subject: Re: [PATCH 1/2] fsl-layerscape: add dtb overlay feature

Hi Sahil,

Am 2021-11-17 19:11, schrieb Sahil Malhotra (OSS):
>> Could you please add some description what this is doing and for what 
>> this is intended? To have a "DTB overlay feature", it is enough to 
>> just enable CONFIG_OF_LIBFDT_OVERLAY.
> I will add some description, and yes for DTB overlay feature, it is 
> enough to enable CONFIG_OF_LIBFDT_OVERLAY but we need to do this step 
> before booting the kernel that's why also have to enable 
> CONFIG_OF_SYSTEM_SETUP.

> Ok. What will the overlay do? Could you give an example?
This overlay will be disabling the crypto nodes which will be used by optee in 
secure world, so that linux should not use it.


>> Apparently you're adding an overlay passed by optee. Doesn't this 
>> have to be applied to u-boot's control dtb too?
> Yes, we will be applying the overlay passed by optee, yes it will be 
> applied to dtb which will be passed to uboot for kernel booting.

> If I read this patch correctly, you're modifying the DT before you jump to 
> linux. But I was asking whether you also have to modify the DT which is used 
> by u-boot. Eg. if you disable some kind of crypto nodes (because optee will 
> use them in secure world), this also have to communicated to u-boot, not only 
> linux, no?
Yes, I got your point now, and is very valid, but as of now for u-boot we are 
just using the first available node for communicating with CAAM leaving other 
job rings as it is. 
So we need not to apply overlay to DTB used by uboot.

Regards,
Sahil Malhotra


RE: [PATCH 1/2] fsl-layerscape: add dtb overlay feature

2021-11-17 Thread Sahil Malhotra (OSS)
Hi Michael,

-Original Message-
From: Michael Walle  
Sent: Wednesday, November 17, 2021 1:23 PM
To: Sahil Malhotra (OSS) 
Cc: Clément Faure ; Gaurav Jain ; 
Pankaj Gupta ; Priyanka Jain ; 
Sahil Malhotra ; u-boot@lists.denx.de; Varun Sethi 
; Ye Li ; Michael Walle 
Subject: Re: [PATCH 1/2] fsl-layerscape: add dtb overlay feature

> From: Sahil Malhotra 
> 
> This patch enables the DTB overlay feature for LS platforms.

> Could you please add some description what this is doing and for what this is 
> intended? To have a "DTB overlay feature", it is enough to just enable 
> CONFIG_OF_LIBFDT_OVERLAY.
I will add some description, and yes for DTB overlay feature, it is enough to 
enable CONFIG_OF_LIBFDT_OVERLAY but we need to do this step before booting the 
kernel that's why also have to enable CONFIG_OF_SYSTEM_SETUP.

>Apparently you're adding an overlay passed by optee. Doesn't this have to be 
>applied to u-boot's control dtb too?
Yes, we will be applying the overlay passed by optee, yes it will be applied to 
dtb which will be passed to uboot for kernel booting.

-michael

Regards,
Sahil Malhotra


[PATCH 2/2] configs: enabled DTB overlay feature for LS SoCs

2021-11-16 Thread Sahil Malhotra
From: Sahil Malhotra 

SoCs enabled for DTB Overlay features are:
LS1046A-RDB
LS1043A-RDB
LS1012A-RDB
LS1028A-RDB
LS1088A-RDB
LS2088A-RDB

Signed-off-by: Sahil Malhotra 
---
 configs/ls1012ardb_tfa_defconfig | 2 ++
 configs/ls1028ardb_tfa_defconfig | 1 +
 configs/ls1043ardb_tfa_defconfig | 2 ++
 configs/ls1046ardb_tfa_defconfig | 2 ++
 configs/ls1088ardb_tfa_defconfig | 2 ++
 configs/ls2088ardb_tfa_defconfig | 2 ++
 6 files changed, 11 insertions(+)

diff --git a/configs/ls1012ardb_tfa_defconfig b/configs/ls1012ardb_tfa_defconfig
index c52359e51d..49ee762e38 100644
--- a/configs/ls1012ardb_tfa_defconfig
+++ b/configs/ls1012ardb_tfa_defconfig
@@ -69,3 +69,5 @@ CONFIG_USB=y
 CONFIG_DM_USB=y
 CONFIG_USB_XHCI_HCD=y
 CONFIG_USB_XHCI_DWC3=y
+CONFIG_OF_LIBFDT_OVERLAY=y
+CONFIG_OF_SYSTEM_SETUP=y
diff --git a/configs/ls1028ardb_tfa_defconfig b/configs/ls1028ardb_tfa_defconfig
index 8ce9da5b4f..b360427eb3 100644
--- a/configs/ls1028ardb_tfa_defconfig
+++ b/configs/ls1028ardb_tfa_defconfig
@@ -95,3 +95,4 @@ CONFIG_OF_LIBFDT_OVERLAY=y
 CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
 CONFIG_VIDEO=y
 CONFIG_VIDEO_LS_HDP_LOAD=y
+CONFIG_OF_SYSTEM_SETUP=y
diff --git a/configs/ls1043ardb_tfa_defconfig b/configs/ls1043ardb_tfa_defconfig
index de3db3e2c4..a64df243f9 100644
--- a/configs/ls1043ardb_tfa_defconfig
+++ b/configs/ls1043ardb_tfa_defconfig
@@ -67,3 +67,5 @@ CONFIG_DM_USB=y
 CONFIG_USB_XHCI_HCD=y
 CONFIG_USB_XHCI_DWC3=y
 CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
+CONFIG_OF_LIBFDT_OVERLAY=y
+CONFIG_OF_SYSTEM_SETUP=y
diff --git a/configs/ls1046ardb_tfa_defconfig b/configs/ls1046ardb_tfa_defconfig
index e9e2efb210..55b6016e74 100644
--- a/configs/ls1046ardb_tfa_defconfig
+++ b/configs/ls1046ardb_tfa_defconfig
@@ -71,3 +71,5 @@ CONFIG_DM_USB=y
 CONFIG_USB_XHCI_HCD=y
 CONFIG_USB_XHCI_DWC3=y
 CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
+CONFIG_OF_LIBFDT_OVERLAY=y
+CONFIG_OF_SYSTEM_SETUP=y
diff --git a/configs/ls1088ardb_tfa_defconfig b/configs/ls1088ardb_tfa_defconfig
index 2e99e337c8..2351749d7d 100644
--- a/configs/ls1088ardb_tfa_defconfig
+++ b/configs/ls1088ardb_tfa_defconfig
@@ -94,3 +94,5 @@ CONFIG_USB_ETHER_ASIX=y
 CONFIG_USB_ETHER_ASIX88179=y
 CONFIG_USB_ETHER_RTL8152=y
 CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
+CONFIG_OF_LIBFDT_OVERLAY=y
+CONFIG_OF_SYSTEM_SETUP=y
diff --git a/configs/ls2088ardb_tfa_defconfig b/configs/ls2088ardb_tfa_defconfig
index de57235284..d1b6e7f7ae 100644
--- a/configs/ls2088ardb_tfa_defconfig
+++ b/configs/ls2088ardb_tfa_defconfig
@@ -89,3 +89,5 @@ CONFIG_DM_USB=y
 CONFIG_USB_XHCI_HCD=y
 CONFIG_USB_XHCI_DWC3=y
 CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
+CONFIG_OF_LIBFDT_OVERLAY=y
+CONFIG_OF_SYSTEM_SETUP=y
-- 
2.17.1



[PATCH 1/2] fsl-layerscape: add dtb overlay feature

2021-11-16 Thread Sahil Malhotra
From: Sahil Malhotra 

This patch enables the DTB overlay feature for LS platforms.

Signed-off-by: Sahil Malhotra 
---
 arch/arm/cpu/armv8/fsl-layerscape/Makefile|  1 +
 arch/arm/cpu/armv8/fsl-layerscape/dt_optee.c  | 39 +++
 arch/arm/cpu/armv8/fsl-layerscape/dt_optee.h  | 10 +
 arch/arm/cpu/armv8/fsl-layerscape/fdt.c   | 12 ++
 .../cpu/armv8/fsl-layerscape/lowlevel_init.S  | 25 
 5 files changed, 87 insertions(+)
 create mode 100644 arch/arm/cpu/armv8/fsl-layerscape/dt_optee.c
 create mode 100644 arch/arm/cpu/armv8/fsl-layerscape/dt_optee.h
 create mode 100644 arch/arm/cpu/armv8/fsl-layerscape/lowlevel_init.S

diff --git a/arch/arm/cpu/armv8/fsl-layerscape/Makefile 
b/arch/arm/cpu/armv8/fsl-layerscape/Makefile
index 598c36ee66..97f1f291dd 100644
--- a/arch/arm/cpu/armv8/fsl-layerscape/Makefile
+++ b/arch/arm/cpu/armv8/fsl-layerscape/Makefile
@@ -7,6 +7,7 @@ obj-y += lowlevel.o
 obj-y += soc.o
 ifndef CONFIG_SPL_BUILD
 obj-$(CONFIG_MP) += mp.o spintable.o
+obj-$(CONFIG_OF_LIBFDT_OVERLAY) += lowlevel_init.o dt_optee.o
 obj-$(CONFIG_OF_LIBFDT) += fdt.o
 endif
 obj-$(CONFIG_SPL) += spl.o
diff --git a/arch/arm/cpu/armv8/fsl-layerscape/dt_optee.c 
b/arch/arm/cpu/armv8/fsl-layerscape/dt_optee.c
new file mode 100644
index 00..2418ad09c7
--- /dev/null
+++ b/arch/arm/cpu/armv8/fsl-layerscape/dt_optee.c
@@ -0,0 +1,39 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Copyright 2021 NXP
+ */
+#include 
+#include 
+#include 
+#include 
+#include "dt_optee.h"
+
+int ft_add_optee_overlay(void *fdt, struct bd_info *bd)
+{
+   int ret = 0;
+
+   /*
+* No BL32_BASE passed means no TEE running, so no
+* need to add optee node in dts
+*/
+   if (!rom_pointer[0]) {
+   debug("No BL32_BASE passed means no TEE running\n");
+   return ret;
+   }
+
+   if (rom_pointer[2]) {
+   debug("OP-TEE: applying overlay on 0x%lx\n", rom_pointer[2]);
+   ret = fdt_check_header((void *)rom_pointer[2]);
+   if (ret == 0) {
+   /* Copy the fdt overlay to next 1M and use copied 
overlay */
+   memcpy((void *)(rom_pointer[2] + SZ_1M), (void 
*)rom_pointer[2],
+  fdt_totalsize((void *)rom_pointer[2]));
+   ret = fdt_overlay_apply_verbose(fdt, (void 
*)(rom_pointer[2] + SZ_1M));
+   if (ret == 0) {
+   debug("Overlay applied with success");
+   fdt_pack(fdt);
+   }
+   }
+   }
+   return ret;
+}
diff --git a/arch/arm/cpu/armv8/fsl-layerscape/dt_optee.h 
b/arch/arm/cpu/armv8/fsl-layerscape/dt_optee.h
new file mode 100644
index 00..d1ff25d531
--- /dev/null
+++ b/arch/arm/cpu/armv8/fsl-layerscape/dt_optee.h
@@ -0,0 +1,10 @@
+/* SPDX-License-Identifier: GPL-2.0+ */
+/*
+ * Copyright 2021 NXP
+ */
+#ifndef __DT_OPTEE_H__
+#define __DT_OPTEE_H__
+
+extern unsigned long rom_pointer[];
+int ft_add_optee_overlay(void *fdt, struct bd_info *bd);
+#endif
diff --git a/arch/arm/cpu/armv8/fsl-layerscape/fdt.c 
b/arch/arm/cpu/armv8/fsl-layerscape/fdt.c
index f1624ff30a..0824c62264 100644
--- a/arch/arm/cpu/armv8/fsl-layerscape/fdt.c
+++ b/arch/arm/cpu/armv8/fsl-layerscape/fdt.c
@@ -31,6 +31,7 @@
 #endif
 #include 
 #include 
+#include "dt_optee.h"
 
 int fdt_fixup_phy_connection(void *blob, int offset, phy_interface_t phyc)
 {
@@ -698,3 +699,14 @@ void ft_cpu_setup(void *blob, struct bd_info *bd)
fdt_fixup_ecam(blob);
 #endif
 }
+
+#ifdef CONFIG_OF_SYSTEM_SETUP
+int ft_system_setup(void *blob, struct bd_info *bd)
+{
+#ifdef CONFIG_OF_LIBFDT_OVERLAY
+   return ft_add_optee_overlay(blob, bd);
+#else
+   return 0;
+#endif
+}
+#endif
diff --git a/arch/arm/cpu/armv8/fsl-layerscape/lowlevel_init.S 
b/arch/arm/cpu/armv8/fsl-layerscape/lowlevel_init.S
new file mode 100644
index 00..1d6a2d85fa
--- /dev/null
+++ b/arch/arm/cpu/armv8/fsl-layerscape/lowlevel_init.S
@@ -0,0 +1,25 @@
+/* SPDX-License-Identifier: GPL-2.0+ */
+/*
+ * Copyright 2021 NXP
+ */
+
+#include 
+
+.align 8
+.global rom_pointer
+rom_pointer:
+   .space 32
+
+/*
+ * Routine: save_boot_params (called after reset from start.S)
+ */
+
+.global save_boot_params
+save_boot_params:
+   /* The firmware provided FDT address can be found in r2/x0 */
+   adr x0, rom_pointer
+   stp x1, x2, [x0], #16
+   stp x3, x4, [x0], #16
+
+   ldr x1, =save_boot_params_ret
+   br  x1
-- 
2.17.1



RE: Your message to U-Boot awaits moderator approval

2021-11-16 Thread Sahil Malhotra (OSS)
Thanks Tom,

Regards,
Sahil Malhotra

-Original Message-
From: Tom Rini  
Sent: Tuesday, November 16, 2021 6:29 PM
To: Sahil Malhotra (OSS) 
Cc: u-boot-ow...@lists.denx.de; u-boot@lists.denx.de; Sahil Malhotra 

Subject: Re: Your message to U-Boot awaits moderator approval

On Tue, Nov 16, 2021 at 10:26:37AM +, Sahil Malhotra (OSS) wrote:

> Hi,
> 
> I am trying to send some patches on u-boot@lists.denx.de but every time I am 
> getting reply "Your message to U-Boot awaits moderator approval".
> Created account on http://patchwork.ozlabs.org/user/, Also subscribed to the 
> list u-boot@lists.denx.de.
> 
> Tried multiple times, but always getting this reply.
> Any help regarding this is really appreciated.

Yes, your messages and then subscription (I'm not sure whey, on the
latter) were waiting for approval, which is now done.

-- 
Tom


RE: [EXT] Your message to U-Boot awaits moderator approval

2021-11-16 Thread Sahil Malhotra
Hi,

I am trying to send some patches on u-boot@lists.denx.de but every time I am 
getting reply "Your message to U-Boot awaits moderator approval".
Created account on http://patchwork.ozlabs.org/user/, Also subscribed to the 
list u-boot@lists.denx.de.

Tried multiple times, but always getting this reply.
Any help regarding this is really appreciated.

Regards,
Sahil Malhotra

-Original Message-
From: U-Boot  On Behalf Of 
u-boot-ow...@lists.denx.de
Sent: Tuesday, November 16, 2021 2:05 PM
To: Sahil Malhotra 
Subject: [EXT] Your message to U-Boot awaits moderator approval

Caution: EXT Email

Your mail to 'U-Boot' with the subject

[PATCH 2/2] configs: enabled DTB overlay feature for LS SoCs

Is being held until the list moderator can review it for approval.

The reason it is being held:

Post to moderated list

Either the message will get posted to the list, or you will receive 
notification of the moderator's decision.  If you would like to cancel this 
posting, please visit the following URL:


https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.denx.de%2Fconfirm%2Fu-boot%2Fc921389ccb7759ac41403909f360475b5243a75ddata=04%7C01%7Csahil.malhotra%40nxp.com%7C64ce15466de943b4c9cf08d9a8dc06ea%7C686ea1d3bc2b4c6fa92cd99c5c301635%7C0%7C1%7C637726485232188800%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000sdata=qBbVbxrlgCIP4Y7yNQDxYixWJPzQnmJvyXACZakrQmE%3Dreserved=0



RE: Your message to U-Boot awaits moderator approval

2021-11-16 Thread Sahil Malhotra (OSS)
Hi,

I am trying to send some patches on u-boot@lists.denx.de but every time I am 
getting reply "Your message to U-Boot awaits moderator approval".
Created account on http://patchwork.ozlabs.org/user/, Also subscribed to the 
list u-boot@lists.denx.de.

Tried multiple times, but always getting this reply.
Any help regarding this is really appreciated.

Regards,
Sahil Malhotra

-Original Message-
From: U-Boot  On Behalf Of 
u-boot-ow...@lists.denx.de
Sent: Tuesday, November 16, 2021 3:47 PM
To: Sahil Malhotra (OSS) 
Subject: Your message to U-Boot awaits moderator approval

Your mail to 'U-Boot' with the subject

[PATCH 1/2] fsl-layerscape: add dtb overlay feature

Is being held until the list moderator can review it for approval.

The reason it is being held:

Post to moderated list

Either the message will get posted to the list, or you will receive 
notification of the moderator's decision.  If you would like to cancel this 
posting, please visit the following URL:


https://lists.denx.de/confirm/u-boot/1d3c54aafb0ee9f189c3cef4f19bfd29f25cf5ed



[PATCH 2/2] configs: enabled DTB overlay feature for LS SoCs

2021-11-16 Thread Sahil Malhotra
From: Sahil Malhotra 

SoCs enabled for DTB Overlay features are:
LS1046A-RDB
LS1043A-RDB
LS1012A-RDB
LS1028A-RDB
LS1088A-RDB
LS2088A-RDB

Signed-off-by: Sahil Malhotra 
---
 configs/ls1012ardb_tfa_defconfig | 2 ++
 configs/ls1028ardb_tfa_defconfig | 1 +
 configs/ls1043ardb_tfa_defconfig | 2 ++
 configs/ls1046ardb_tfa_defconfig | 2 ++
 configs/ls1088ardb_tfa_defconfig | 2 ++
 configs/ls2088ardb_tfa_defconfig | 2 ++
 6 files changed, 11 insertions(+)

diff --git a/configs/ls1012ardb_tfa_defconfig b/configs/ls1012ardb_tfa_defconfig
index c52359e51d..49ee762e38 100644
--- a/configs/ls1012ardb_tfa_defconfig
+++ b/configs/ls1012ardb_tfa_defconfig
@@ -69,3 +69,5 @@ CONFIG_USB=y
 CONFIG_DM_USB=y
 CONFIG_USB_XHCI_HCD=y
 CONFIG_USB_XHCI_DWC3=y
+CONFIG_OF_LIBFDT_OVERLAY=y
+CONFIG_OF_SYSTEM_SETUP=y
diff --git a/configs/ls1028ardb_tfa_defconfig b/configs/ls1028ardb_tfa_defconfig
index 8ce9da5b4f..b360427eb3 100644
--- a/configs/ls1028ardb_tfa_defconfig
+++ b/configs/ls1028ardb_tfa_defconfig
@@ -95,3 +95,4 @@ CONFIG_OF_LIBFDT_OVERLAY=y
 CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
 CONFIG_VIDEO=y
 CONFIG_VIDEO_LS_HDP_LOAD=y
+CONFIG_OF_SYSTEM_SETUP=y
diff --git a/configs/ls1043ardb_tfa_defconfig b/configs/ls1043ardb_tfa_defconfig
index de3db3e2c4..a64df243f9 100644
--- a/configs/ls1043ardb_tfa_defconfig
+++ b/configs/ls1043ardb_tfa_defconfig
@@ -67,3 +67,5 @@ CONFIG_DM_USB=y
 CONFIG_USB_XHCI_HCD=y
 CONFIG_USB_XHCI_DWC3=y
 CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
+CONFIG_OF_LIBFDT_OVERLAY=y
+CONFIG_OF_SYSTEM_SETUP=y
diff --git a/configs/ls1046ardb_tfa_defconfig b/configs/ls1046ardb_tfa_defconfig
index e9e2efb210..55b6016e74 100644
--- a/configs/ls1046ardb_tfa_defconfig
+++ b/configs/ls1046ardb_tfa_defconfig
@@ -71,3 +71,5 @@ CONFIG_DM_USB=y
 CONFIG_USB_XHCI_HCD=y
 CONFIG_USB_XHCI_DWC3=y
 CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
+CONFIG_OF_LIBFDT_OVERLAY=y
+CONFIG_OF_SYSTEM_SETUP=y
diff --git a/configs/ls1088ardb_tfa_defconfig b/configs/ls1088ardb_tfa_defconfig
index 2e99e337c8..2351749d7d 100644
--- a/configs/ls1088ardb_tfa_defconfig
+++ b/configs/ls1088ardb_tfa_defconfig
@@ -94,3 +94,5 @@ CONFIG_USB_ETHER_ASIX=y
 CONFIG_USB_ETHER_ASIX88179=y
 CONFIG_USB_ETHER_RTL8152=y
 CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
+CONFIG_OF_LIBFDT_OVERLAY=y
+CONFIG_OF_SYSTEM_SETUP=y
diff --git a/configs/ls2088ardb_tfa_defconfig b/configs/ls2088ardb_tfa_defconfig
index de57235284..d1b6e7f7ae 100644
--- a/configs/ls2088ardb_tfa_defconfig
+++ b/configs/ls2088ardb_tfa_defconfig
@@ -89,3 +89,5 @@ CONFIG_DM_USB=y
 CONFIG_USB_XHCI_HCD=y
 CONFIG_USB_XHCI_DWC3=y
 CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
+CONFIG_OF_LIBFDT_OVERLAY=y
+CONFIG_OF_SYSTEM_SETUP=y
-- 
2.17.1



[PATCH 1/2] fsl-layerscape: add dtb overlay feature

2021-11-16 Thread Sahil Malhotra
From: Sahil Malhotra 

This patch enables the DTB overlay feature for LS platforms.

Signed-off-by: Sahil Malhotra 
---
 arch/arm/cpu/armv8/fsl-layerscape/Makefile|  1 +
 arch/arm/cpu/armv8/fsl-layerscape/dt_optee.c  | 39 +++
 arch/arm/cpu/armv8/fsl-layerscape/dt_optee.h  | 10 +
 arch/arm/cpu/armv8/fsl-layerscape/fdt.c   | 12 ++
 .../cpu/armv8/fsl-layerscape/lowlevel_init.S  | 25 
 5 files changed, 87 insertions(+)
 create mode 100644 arch/arm/cpu/armv8/fsl-layerscape/dt_optee.c
 create mode 100644 arch/arm/cpu/armv8/fsl-layerscape/dt_optee.h
 create mode 100644 arch/arm/cpu/armv8/fsl-layerscape/lowlevel_init.S

diff --git a/arch/arm/cpu/armv8/fsl-layerscape/Makefile 
b/arch/arm/cpu/armv8/fsl-layerscape/Makefile
index 598c36ee66..97f1f291dd 100644
--- a/arch/arm/cpu/armv8/fsl-layerscape/Makefile
+++ b/arch/arm/cpu/armv8/fsl-layerscape/Makefile
@@ -7,6 +7,7 @@ obj-y += lowlevel.o
 obj-y += soc.o
 ifndef CONFIG_SPL_BUILD
 obj-$(CONFIG_MP) += mp.o spintable.o
+obj-$(CONFIG_OF_LIBFDT_OVERLAY) += lowlevel_init.o dt_optee.o
 obj-$(CONFIG_OF_LIBFDT) += fdt.o
 endif
 obj-$(CONFIG_SPL) += spl.o
diff --git a/arch/arm/cpu/armv8/fsl-layerscape/dt_optee.c 
b/arch/arm/cpu/armv8/fsl-layerscape/dt_optee.c
new file mode 100644
index 00..2418ad09c7
--- /dev/null
+++ b/arch/arm/cpu/armv8/fsl-layerscape/dt_optee.c
@@ -0,0 +1,39 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Copyright 2021 NXP
+ */
+#include 
+#include 
+#include 
+#include 
+#include "dt_optee.h"
+
+int ft_add_optee_overlay(void *fdt, struct bd_info *bd)
+{
+   int ret = 0;
+
+   /*
+* No BL32_BASE passed means no TEE running, so no
+* need to add optee node in dts
+*/
+   if (!rom_pointer[0]) {
+   debug("No BL32_BASE passed means no TEE running\n");
+   return ret;
+   }
+
+   if (rom_pointer[2]) {
+   debug("OP-TEE: applying overlay on 0x%lx\n", rom_pointer[2]);
+   ret = fdt_check_header((void *)rom_pointer[2]);
+   if (ret == 0) {
+   /* Copy the fdt overlay to next 1M and use copied 
overlay */
+   memcpy((void *)(rom_pointer[2] + SZ_1M), (void 
*)rom_pointer[2],
+  fdt_totalsize((void *)rom_pointer[2]));
+   ret = fdt_overlay_apply_verbose(fdt, (void 
*)(rom_pointer[2] + SZ_1M));
+   if (ret == 0) {
+   debug("Overlay applied with success");
+   fdt_pack(fdt);
+   }
+   }
+   }
+   return ret;
+}
diff --git a/arch/arm/cpu/armv8/fsl-layerscape/dt_optee.h 
b/arch/arm/cpu/armv8/fsl-layerscape/dt_optee.h
new file mode 100644
index 00..d1ff25d531
--- /dev/null
+++ b/arch/arm/cpu/armv8/fsl-layerscape/dt_optee.h
@@ -0,0 +1,10 @@
+/* SPDX-License-Identifier: GPL-2.0+ */
+/*
+ * Copyright 2021 NXP
+ */
+#ifndef __DT_OPTEE_H__
+#define __DT_OPTEE_H__
+
+extern unsigned long rom_pointer[];
+int ft_add_optee_overlay(void *fdt, struct bd_info *bd);
+#endif
diff --git a/arch/arm/cpu/armv8/fsl-layerscape/fdt.c 
b/arch/arm/cpu/armv8/fsl-layerscape/fdt.c
index f1624ff30a..0824c62264 100644
--- a/arch/arm/cpu/armv8/fsl-layerscape/fdt.c
+++ b/arch/arm/cpu/armv8/fsl-layerscape/fdt.c
@@ -31,6 +31,7 @@
 #endif
 #include 
 #include 
+#include "dt_optee.h"
 
 int fdt_fixup_phy_connection(void *blob, int offset, phy_interface_t phyc)
 {
@@ -698,3 +699,14 @@ void ft_cpu_setup(void *blob, struct bd_info *bd)
fdt_fixup_ecam(blob);
 #endif
 }
+
+#ifdef CONFIG_OF_SYSTEM_SETUP
+int ft_system_setup(void *blob, struct bd_info *bd)
+{
+#ifdef CONFIG_OF_LIBFDT_OVERLAY
+   return ft_add_optee_overlay(blob, bd);
+#else
+   return 0;
+#endif
+}
+#endif
diff --git a/arch/arm/cpu/armv8/fsl-layerscape/lowlevel_init.S 
b/arch/arm/cpu/armv8/fsl-layerscape/lowlevel_init.S
new file mode 100644
index 00..1d6a2d85fa
--- /dev/null
+++ b/arch/arm/cpu/armv8/fsl-layerscape/lowlevel_init.S
@@ -0,0 +1,25 @@
+/* SPDX-License-Identifier: GPL-2.0+ */
+/*
+ * Copyright 2021 NXP
+ */
+
+#include 
+
+.align 8
+.global rom_pointer
+rom_pointer:
+   .space 32
+
+/*
+ * Routine: save_boot_params (called after reset from start.S)
+ */
+
+.global save_boot_params
+save_boot_params:
+   /* The firmware provided FDT address can be found in r2/x0 */
+   adr x0, rom_pointer
+   stp x1, x2, [x0], #16
+   stp x3, x4, [x0], #16
+
+   ldr x1, =save_boot_params_ret
+   br  x1
-- 
2.17.1



[PATCH 1/2] fsl-layerscape: add dtb overlay feature

2021-11-16 Thread Sahil Malhotra
This patch enables the DTB overlay feature for LS platforms.

Signed-off-by: Sahil Malhotra 
---
 arch/arm/cpu/armv8/fsl-layerscape/Makefile|  1 +
 arch/arm/cpu/armv8/fsl-layerscape/dt_optee.c  | 39 +++
 arch/arm/cpu/armv8/fsl-layerscape/dt_optee.h  | 10 +
 arch/arm/cpu/armv8/fsl-layerscape/fdt.c   | 12 ++
 .../cpu/armv8/fsl-layerscape/lowlevel_init.S  | 25 
 5 files changed, 87 insertions(+)
 create mode 100644 arch/arm/cpu/armv8/fsl-layerscape/dt_optee.c
 create mode 100644 arch/arm/cpu/armv8/fsl-layerscape/dt_optee.h
 create mode 100644 arch/arm/cpu/armv8/fsl-layerscape/lowlevel_init.S

diff --git a/arch/arm/cpu/armv8/fsl-layerscape/Makefile 
b/arch/arm/cpu/armv8/fsl-layerscape/Makefile
index 598c36ee66..97f1f291dd 100644
--- a/arch/arm/cpu/armv8/fsl-layerscape/Makefile
+++ b/arch/arm/cpu/armv8/fsl-layerscape/Makefile
@@ -7,6 +7,7 @@ obj-y += lowlevel.o
 obj-y += soc.o
 ifndef CONFIG_SPL_BUILD
 obj-$(CONFIG_MP) += mp.o spintable.o
+obj-$(CONFIG_OF_LIBFDT_OVERLAY) += lowlevel_init.o dt_optee.o
 obj-$(CONFIG_OF_LIBFDT) += fdt.o
 endif
 obj-$(CONFIG_SPL) += spl.o
diff --git a/arch/arm/cpu/armv8/fsl-layerscape/dt_optee.c 
b/arch/arm/cpu/armv8/fsl-layerscape/dt_optee.c
new file mode 100644
index 00..2418ad09c7
--- /dev/null
+++ b/arch/arm/cpu/armv8/fsl-layerscape/dt_optee.c
@@ -0,0 +1,39 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Copyright 2021 NXP
+ */
+#include 
+#include 
+#include 
+#include 
+#include "dt_optee.h"
+
+int ft_add_optee_overlay(void *fdt, struct bd_info *bd)
+{
+   int ret = 0;
+
+   /*
+* No BL32_BASE passed means no TEE running, so no
+* need to add optee node in dts
+*/
+   if (!rom_pointer[0]) {
+   debug("No BL32_BASE passed means no TEE running\n");
+   return ret;
+   }
+
+   if (rom_pointer[2]) {
+   debug("OP-TEE: applying overlay on 0x%lx\n", rom_pointer[2]);
+   ret = fdt_check_header((void *)rom_pointer[2]);
+   if (ret == 0) {
+   /* Copy the fdt overlay to next 1M and use copied 
overlay */
+   memcpy((void *)(rom_pointer[2] + SZ_1M), (void 
*)rom_pointer[2],
+  fdt_totalsize((void *)rom_pointer[2]));
+   ret = fdt_overlay_apply_verbose(fdt, (void 
*)(rom_pointer[2] + SZ_1M));
+   if (ret == 0) {
+   debug("Overlay applied with success");
+   fdt_pack(fdt);
+   }
+   }
+   }
+   return ret;
+}
diff --git a/arch/arm/cpu/armv8/fsl-layerscape/dt_optee.h 
b/arch/arm/cpu/armv8/fsl-layerscape/dt_optee.h
new file mode 100644
index 00..d1ff25d531
--- /dev/null
+++ b/arch/arm/cpu/armv8/fsl-layerscape/dt_optee.h
@@ -0,0 +1,10 @@
+/* SPDX-License-Identifier: GPL-2.0+ */
+/*
+ * Copyright 2021 NXP
+ */
+#ifndef __DT_OPTEE_H__
+#define __DT_OPTEE_H__
+
+extern unsigned long rom_pointer[];
+int ft_add_optee_overlay(void *fdt, struct bd_info *bd);
+#endif
diff --git a/arch/arm/cpu/armv8/fsl-layerscape/fdt.c 
b/arch/arm/cpu/armv8/fsl-layerscape/fdt.c
index f1624ff30a..0824c62264 100644
--- a/arch/arm/cpu/armv8/fsl-layerscape/fdt.c
+++ b/arch/arm/cpu/armv8/fsl-layerscape/fdt.c
@@ -31,6 +31,7 @@
 #endif
 #include 
 #include 
+#include "dt_optee.h"
 
 int fdt_fixup_phy_connection(void *blob, int offset, phy_interface_t phyc)
 {
@@ -698,3 +699,14 @@ void ft_cpu_setup(void *blob, struct bd_info *bd)
fdt_fixup_ecam(blob);
 #endif
 }
+
+#ifdef CONFIG_OF_SYSTEM_SETUP
+int ft_system_setup(void *blob, struct bd_info *bd)
+{
+#ifdef CONFIG_OF_LIBFDT_OVERLAY
+   return ft_add_optee_overlay(blob, bd);
+#else
+   return 0;
+#endif
+}
+#endif
diff --git a/arch/arm/cpu/armv8/fsl-layerscape/lowlevel_init.S 
b/arch/arm/cpu/armv8/fsl-layerscape/lowlevel_init.S
new file mode 100644
index 00..1d6a2d85fa
--- /dev/null
+++ b/arch/arm/cpu/armv8/fsl-layerscape/lowlevel_init.S
@@ -0,0 +1,25 @@
+/* SPDX-License-Identifier: GPL-2.0+ */
+/*
+ * Copyright 2021 NXP
+ */
+
+#include 
+
+.align 8
+.global rom_pointer
+rom_pointer:
+   .space 32
+
+/*
+ * Routine: save_boot_params (called after reset from start.S)
+ */
+
+.global save_boot_params
+save_boot_params:
+   /* The firmware provided FDT address can be found in r2/x0 */
+   adr x0, rom_pointer
+   stp x1, x2, [x0], #16
+   stp x3, x4, [x0], #16
+
+   ldr x1, =save_boot_params_ret
+   br  x1
-- 
2.17.1



[PATCH 2/2] configs: enabled DTB overlay feature for LS SoCs

2021-11-16 Thread Sahil Malhotra
SoCs enabled for DTB Overlay features are:
LS1046A-RDB
LS1043A-RDB
LS1012A-RDB
LS1028A-RDB
LS1088A-RDB
LS2088A-RDB

Signed-off-by: Sahil Malhotra 
---
 configs/ls1012ardb_tfa_defconfig | 2 ++
 configs/ls1028ardb_tfa_defconfig | 1 +
 configs/ls1043ardb_tfa_defconfig | 2 ++
 configs/ls1046ardb_tfa_defconfig | 2 ++
 configs/ls1088ardb_tfa_defconfig | 2 ++
 configs/ls2088ardb_tfa_defconfig | 2 ++
 6 files changed, 11 insertions(+)

diff --git a/configs/ls1012ardb_tfa_defconfig b/configs/ls1012ardb_tfa_defconfig
index c52359e51d..49ee762e38 100644
--- a/configs/ls1012ardb_tfa_defconfig
+++ b/configs/ls1012ardb_tfa_defconfig
@@ -69,3 +69,5 @@ CONFIG_USB=y
 CONFIG_DM_USB=y
 CONFIG_USB_XHCI_HCD=y
 CONFIG_USB_XHCI_DWC3=y
+CONFIG_OF_LIBFDT_OVERLAY=y
+CONFIG_OF_SYSTEM_SETUP=y
diff --git a/configs/ls1028ardb_tfa_defconfig b/configs/ls1028ardb_tfa_defconfig
index 8ce9da5b4f..b360427eb3 100644
--- a/configs/ls1028ardb_tfa_defconfig
+++ b/configs/ls1028ardb_tfa_defconfig
@@ -95,3 +95,4 @@ CONFIG_OF_LIBFDT_OVERLAY=y
 CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
 CONFIG_VIDEO=y
 CONFIG_VIDEO_LS_HDP_LOAD=y
+CONFIG_OF_SYSTEM_SETUP=y
diff --git a/configs/ls1043ardb_tfa_defconfig b/configs/ls1043ardb_tfa_defconfig
index de3db3e2c4..a64df243f9 100644
--- a/configs/ls1043ardb_tfa_defconfig
+++ b/configs/ls1043ardb_tfa_defconfig
@@ -67,3 +67,5 @@ CONFIG_DM_USB=y
 CONFIG_USB_XHCI_HCD=y
 CONFIG_USB_XHCI_DWC3=y
 CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
+CONFIG_OF_LIBFDT_OVERLAY=y
+CONFIG_OF_SYSTEM_SETUP=y
diff --git a/configs/ls1046ardb_tfa_defconfig b/configs/ls1046ardb_tfa_defconfig
index e9e2efb210..55b6016e74 100644
--- a/configs/ls1046ardb_tfa_defconfig
+++ b/configs/ls1046ardb_tfa_defconfig
@@ -71,3 +71,5 @@ CONFIG_DM_USB=y
 CONFIG_USB_XHCI_HCD=y
 CONFIG_USB_XHCI_DWC3=y
 CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
+CONFIG_OF_LIBFDT_OVERLAY=y
+CONFIG_OF_SYSTEM_SETUP=y
diff --git a/configs/ls1088ardb_tfa_defconfig b/configs/ls1088ardb_tfa_defconfig
index 2e99e337c8..2351749d7d 100644
--- a/configs/ls1088ardb_tfa_defconfig
+++ b/configs/ls1088ardb_tfa_defconfig
@@ -94,3 +94,5 @@ CONFIG_USB_ETHER_ASIX=y
 CONFIG_USB_ETHER_ASIX88179=y
 CONFIG_USB_ETHER_RTL8152=y
 CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
+CONFIG_OF_LIBFDT_OVERLAY=y
+CONFIG_OF_SYSTEM_SETUP=y
diff --git a/configs/ls2088ardb_tfa_defconfig b/configs/ls2088ardb_tfa_defconfig
index de57235284..d1b6e7f7ae 100644
--- a/configs/ls2088ardb_tfa_defconfig
+++ b/configs/ls2088ardb_tfa_defconfig
@@ -89,3 +89,5 @@ CONFIG_DM_USB=y
 CONFIG_USB_XHCI_HCD=y
 CONFIG_USB_XHCI_DWC3=y
 CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
+CONFIG_OF_LIBFDT_OVERLAY=y
+CONFIG_OF_SYSTEM_SETUP=y
-- 
2.17.1



[PATCH 2/2] configs: enabled DTB overlay feature for LS SoCs

2021-11-16 Thread Sahil Malhotra
From: Sahil Malhotra 

SoCs enabled for DTB Overlay features are:
LS1046A-RDB
LS1043A-RDB
LS1012A-RDB
LS1028A-RDB
LS1088A-RDB
LS2088A-RDB

Signed-off-by: Sahil Malhotra 
---
 configs/ls1012ardb_tfa_defconfig | 2 ++
 configs/ls1028ardb_tfa_defconfig | 1 +
 configs/ls1043ardb_tfa_defconfig | 2 ++
 configs/ls1046ardb_tfa_defconfig | 2 ++
 configs/ls1088ardb_tfa_defconfig | 2 ++
 configs/ls2088ardb_tfa_defconfig | 2 ++
 6 files changed, 11 insertions(+)

diff --git a/configs/ls1012ardb_tfa_defconfig b/configs/ls1012ardb_tfa_defconfig
index c52359e51d..49ee762e38 100644
--- a/configs/ls1012ardb_tfa_defconfig
+++ b/configs/ls1012ardb_tfa_defconfig
@@ -69,3 +69,5 @@ CONFIG_USB=y
 CONFIG_DM_USB=y
 CONFIG_USB_XHCI_HCD=y
 CONFIG_USB_XHCI_DWC3=y
+CONFIG_OF_LIBFDT_OVERLAY=y
+CONFIG_OF_SYSTEM_SETUP=y
diff --git a/configs/ls1028ardb_tfa_defconfig b/configs/ls1028ardb_tfa_defconfig
index 8ce9da5b4f..b360427eb3 100644
--- a/configs/ls1028ardb_tfa_defconfig
+++ b/configs/ls1028ardb_tfa_defconfig
@@ -95,3 +95,4 @@ CONFIG_OF_LIBFDT_OVERLAY=y
 CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
 CONFIG_VIDEO=y
 CONFIG_VIDEO_LS_HDP_LOAD=y
+CONFIG_OF_SYSTEM_SETUP=y
diff --git a/configs/ls1043ardb_tfa_defconfig b/configs/ls1043ardb_tfa_defconfig
index de3db3e2c4..a64df243f9 100644
--- a/configs/ls1043ardb_tfa_defconfig
+++ b/configs/ls1043ardb_tfa_defconfig
@@ -67,3 +67,5 @@ CONFIG_DM_USB=y
 CONFIG_USB_XHCI_HCD=y
 CONFIG_USB_XHCI_DWC3=y
 CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
+CONFIG_OF_LIBFDT_OVERLAY=y
+CONFIG_OF_SYSTEM_SETUP=y
diff --git a/configs/ls1046ardb_tfa_defconfig b/configs/ls1046ardb_tfa_defconfig
index e9e2efb210..55b6016e74 100644
--- a/configs/ls1046ardb_tfa_defconfig
+++ b/configs/ls1046ardb_tfa_defconfig
@@ -71,3 +71,5 @@ CONFIG_DM_USB=y
 CONFIG_USB_XHCI_HCD=y
 CONFIG_USB_XHCI_DWC3=y
 CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
+CONFIG_OF_LIBFDT_OVERLAY=y
+CONFIG_OF_SYSTEM_SETUP=y
diff --git a/configs/ls1088ardb_tfa_defconfig b/configs/ls1088ardb_tfa_defconfig
index 2e99e337c8..2351749d7d 100644
--- a/configs/ls1088ardb_tfa_defconfig
+++ b/configs/ls1088ardb_tfa_defconfig
@@ -94,3 +94,5 @@ CONFIG_USB_ETHER_ASIX=y
 CONFIG_USB_ETHER_ASIX88179=y
 CONFIG_USB_ETHER_RTL8152=y
 CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
+CONFIG_OF_LIBFDT_OVERLAY=y
+CONFIG_OF_SYSTEM_SETUP=y
diff --git a/configs/ls2088ardb_tfa_defconfig b/configs/ls2088ardb_tfa_defconfig
index de57235284..d1b6e7f7ae 100644
--- a/configs/ls2088ardb_tfa_defconfig
+++ b/configs/ls2088ardb_tfa_defconfig
@@ -89,3 +89,5 @@ CONFIG_DM_USB=y
 CONFIG_USB_XHCI_HCD=y
 CONFIG_USB_XHCI_DWC3=y
 CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
+CONFIG_OF_LIBFDT_OVERLAY=y
+CONFIG_OF_SYSTEM_SETUP=y
-- 
2.17.1



[PATCH 1/2] fsl-layerscape: add dtb overlay feature

2021-11-16 Thread Sahil Malhotra
From: Sahil Malhotra 

This patch enables the DTB overlay feature for LS platforms.

Signed-off-by: Sahil Malhotra 
---
 arch/arm/cpu/armv8/fsl-layerscape/Makefile|  1 +
 arch/arm/cpu/armv8/fsl-layerscape/dt_optee.c  | 39 +++
 arch/arm/cpu/armv8/fsl-layerscape/dt_optee.h  | 10 +
 arch/arm/cpu/armv8/fsl-layerscape/fdt.c   | 12 ++
 .../cpu/armv8/fsl-layerscape/lowlevel_init.S  | 25 
 5 files changed, 87 insertions(+)
 create mode 100644 arch/arm/cpu/armv8/fsl-layerscape/dt_optee.c
 create mode 100644 arch/arm/cpu/armv8/fsl-layerscape/dt_optee.h
 create mode 100644 arch/arm/cpu/armv8/fsl-layerscape/lowlevel_init.S

diff --git a/arch/arm/cpu/armv8/fsl-layerscape/Makefile 
b/arch/arm/cpu/armv8/fsl-layerscape/Makefile
index 598c36ee66..97f1f291dd 100644
--- a/arch/arm/cpu/armv8/fsl-layerscape/Makefile
+++ b/arch/arm/cpu/armv8/fsl-layerscape/Makefile
@@ -7,6 +7,7 @@ obj-y += lowlevel.o
 obj-y += soc.o
 ifndef CONFIG_SPL_BUILD
 obj-$(CONFIG_MP) += mp.o spintable.o
+obj-$(CONFIG_OF_LIBFDT_OVERLAY) += lowlevel_init.o dt_optee.o
 obj-$(CONFIG_OF_LIBFDT) += fdt.o
 endif
 obj-$(CONFIG_SPL) += spl.o
diff --git a/arch/arm/cpu/armv8/fsl-layerscape/dt_optee.c 
b/arch/arm/cpu/armv8/fsl-layerscape/dt_optee.c
new file mode 100644
index 00..2418ad09c7
--- /dev/null
+++ b/arch/arm/cpu/armv8/fsl-layerscape/dt_optee.c
@@ -0,0 +1,39 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Copyright 2021 NXP
+ */
+#include 
+#include 
+#include 
+#include 
+#include "dt_optee.h"
+
+int ft_add_optee_overlay(void *fdt, struct bd_info *bd)
+{
+   int ret = 0;
+
+   /*
+* No BL32_BASE passed means no TEE running, so no
+* need to add optee node in dts
+*/
+   if (!rom_pointer[0]) {
+   debug("No BL32_BASE passed means no TEE running\n");
+   return ret;
+   }
+
+   if (rom_pointer[2]) {
+   debug("OP-TEE: applying overlay on 0x%lx\n", rom_pointer[2]);
+   ret = fdt_check_header((void *)rom_pointer[2]);
+   if (ret == 0) {
+   /* Copy the fdt overlay to next 1M and use copied 
overlay */
+   memcpy((void *)(rom_pointer[2] + SZ_1M), (void 
*)rom_pointer[2],
+  fdt_totalsize((void *)rom_pointer[2]));
+   ret = fdt_overlay_apply_verbose(fdt, (void 
*)(rom_pointer[2] + SZ_1M));
+   if (ret == 0) {
+   debug("Overlay applied with success");
+   fdt_pack(fdt);
+   }
+   }
+   }
+   return ret;
+}
diff --git a/arch/arm/cpu/armv8/fsl-layerscape/dt_optee.h 
b/arch/arm/cpu/armv8/fsl-layerscape/dt_optee.h
new file mode 100644
index 00..d1ff25d531
--- /dev/null
+++ b/arch/arm/cpu/armv8/fsl-layerscape/dt_optee.h
@@ -0,0 +1,10 @@
+/* SPDX-License-Identifier: GPL-2.0+ */
+/*
+ * Copyright 2021 NXP
+ */
+#ifndef __DT_OPTEE_H__
+#define __DT_OPTEE_H__
+
+extern unsigned long rom_pointer[];
+int ft_add_optee_overlay(void *fdt, struct bd_info *bd);
+#endif
diff --git a/arch/arm/cpu/armv8/fsl-layerscape/fdt.c 
b/arch/arm/cpu/armv8/fsl-layerscape/fdt.c
index f1624ff30a..0824c62264 100644
--- a/arch/arm/cpu/armv8/fsl-layerscape/fdt.c
+++ b/arch/arm/cpu/armv8/fsl-layerscape/fdt.c
@@ -31,6 +31,7 @@
 #endif
 #include 
 #include 
+#include "dt_optee.h"
 
 int fdt_fixup_phy_connection(void *blob, int offset, phy_interface_t phyc)
 {
@@ -698,3 +699,14 @@ void ft_cpu_setup(void *blob, struct bd_info *bd)
fdt_fixup_ecam(blob);
 #endif
 }
+
+#ifdef CONFIG_OF_SYSTEM_SETUP
+int ft_system_setup(void *blob, struct bd_info *bd)
+{
+#ifdef CONFIG_OF_LIBFDT_OVERLAY
+   return ft_add_optee_overlay(blob, bd);
+#else
+   return 0;
+#endif
+}
+#endif
diff --git a/arch/arm/cpu/armv8/fsl-layerscape/lowlevel_init.S 
b/arch/arm/cpu/armv8/fsl-layerscape/lowlevel_init.S
new file mode 100644
index 00..1d6a2d85fa
--- /dev/null
+++ b/arch/arm/cpu/armv8/fsl-layerscape/lowlevel_init.S
@@ -0,0 +1,25 @@
+/* SPDX-License-Identifier: GPL-2.0+ */
+/*
+ * Copyright 2021 NXP
+ */
+
+#include 
+
+.align 8
+.global rom_pointer
+rom_pointer:
+   .space 32
+
+/*
+ * Routine: save_boot_params (called after reset from start.S)
+ */
+
+.global save_boot_params
+save_boot_params:
+   /* The firmware provided FDT address can be found in r2/x0 */
+   adr x0, rom_pointer
+   stp x1, x2, [x0], #16
+   stp x3, x4, [x0], #16
+
+   ldr x1, =save_boot_params_ret
+   br  x1
-- 
2.17.1



[PATCH 2/2] configs: enabled DTB overlay feature for LS SoCs

2021-11-16 Thread Sahil Malhotra
SoCs enabled for DTB Overlay features are:
LS1046A-RDB
LS1043A-RDB
LS1012A-RDB
LS1028A-RDB
LS1088A-RDB
LS2088A-RDB

Signed-off-by: Sahil Malhotra 
---
 configs/ls1012ardb_tfa_defconfig | 2 ++
 configs/ls1028ardb_tfa_defconfig | 1 +
 configs/ls1043ardb_tfa_defconfig | 2 ++
 configs/ls1046ardb_tfa_defconfig | 2 ++
 configs/ls1088ardb_tfa_defconfig | 2 ++
 configs/ls2088ardb_tfa_defconfig | 2 ++
 6 files changed, 11 insertions(+)

diff --git a/configs/ls1012ardb_tfa_defconfig b/configs/ls1012ardb_tfa_defconfig
index c52359e51d..49ee762e38 100644
--- a/configs/ls1012ardb_tfa_defconfig
+++ b/configs/ls1012ardb_tfa_defconfig
@@ -69,3 +69,5 @@ CONFIG_USB=y
 CONFIG_DM_USB=y
 CONFIG_USB_XHCI_HCD=y
 CONFIG_USB_XHCI_DWC3=y
+CONFIG_OF_LIBFDT_OVERLAY=y
+CONFIG_OF_SYSTEM_SETUP=y
diff --git a/configs/ls1028ardb_tfa_defconfig b/configs/ls1028ardb_tfa_defconfig
index 8ce9da5b4f..b360427eb3 100644
--- a/configs/ls1028ardb_tfa_defconfig
+++ b/configs/ls1028ardb_tfa_defconfig
@@ -95,3 +95,4 @@ CONFIG_OF_LIBFDT_OVERLAY=y
 CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
 CONFIG_VIDEO=y
 CONFIG_VIDEO_LS_HDP_LOAD=y
+CONFIG_OF_SYSTEM_SETUP=y
diff --git a/configs/ls1043ardb_tfa_defconfig b/configs/ls1043ardb_tfa_defconfig
index de3db3e2c4..a64df243f9 100644
--- a/configs/ls1043ardb_tfa_defconfig
+++ b/configs/ls1043ardb_tfa_defconfig
@@ -67,3 +67,5 @@ CONFIG_DM_USB=y
 CONFIG_USB_XHCI_HCD=y
 CONFIG_USB_XHCI_DWC3=y
 CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
+CONFIG_OF_LIBFDT_OVERLAY=y
+CONFIG_OF_SYSTEM_SETUP=y
diff --git a/configs/ls1046ardb_tfa_defconfig b/configs/ls1046ardb_tfa_defconfig
index e9e2efb210..55b6016e74 100644
--- a/configs/ls1046ardb_tfa_defconfig
+++ b/configs/ls1046ardb_tfa_defconfig
@@ -71,3 +71,5 @@ CONFIG_DM_USB=y
 CONFIG_USB_XHCI_HCD=y
 CONFIG_USB_XHCI_DWC3=y
 CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
+CONFIG_OF_LIBFDT_OVERLAY=y
+CONFIG_OF_SYSTEM_SETUP=y
diff --git a/configs/ls1088ardb_tfa_defconfig b/configs/ls1088ardb_tfa_defconfig
index 2e99e337c8..2351749d7d 100644
--- a/configs/ls1088ardb_tfa_defconfig
+++ b/configs/ls1088ardb_tfa_defconfig
@@ -94,3 +94,5 @@ CONFIG_USB_ETHER_ASIX=y
 CONFIG_USB_ETHER_ASIX88179=y
 CONFIG_USB_ETHER_RTL8152=y
 CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
+CONFIG_OF_LIBFDT_OVERLAY=y
+CONFIG_OF_SYSTEM_SETUP=y
diff --git a/configs/ls2088ardb_tfa_defconfig b/configs/ls2088ardb_tfa_defconfig
index de57235284..d1b6e7f7ae 100644
--- a/configs/ls2088ardb_tfa_defconfig
+++ b/configs/ls2088ardb_tfa_defconfig
@@ -89,3 +89,5 @@ CONFIG_DM_USB=y
 CONFIG_USB_XHCI_HCD=y
 CONFIG_USB_XHCI_DWC3=y
 CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
+CONFIG_OF_LIBFDT_OVERLAY=y
+CONFIG_OF_SYSTEM_SETUP=y
-- 
2.17.1



[PATCH 1/2] fsl-layerscape: add dtb overlay feature

2021-11-16 Thread Sahil Malhotra
This patch enables the DTB overlay feature for LS platforms.

Signed-off-by: Sahil Malhotra 
---
 arch/arm/cpu/armv8/fsl-layerscape/Makefile|  1 +
 arch/arm/cpu/armv8/fsl-layerscape/dt_optee.c  | 39 +++
 arch/arm/cpu/armv8/fsl-layerscape/dt_optee.h  | 10 +
 arch/arm/cpu/armv8/fsl-layerscape/fdt.c   | 12 ++
 .../cpu/armv8/fsl-layerscape/lowlevel_init.S  | 25 
 5 files changed, 87 insertions(+)
 create mode 100644 arch/arm/cpu/armv8/fsl-layerscape/dt_optee.c
 create mode 100644 arch/arm/cpu/armv8/fsl-layerscape/dt_optee.h
 create mode 100644 arch/arm/cpu/armv8/fsl-layerscape/lowlevel_init.S

diff --git a/arch/arm/cpu/armv8/fsl-layerscape/Makefile 
b/arch/arm/cpu/armv8/fsl-layerscape/Makefile
index 598c36ee66..97f1f291dd 100644
--- a/arch/arm/cpu/armv8/fsl-layerscape/Makefile
+++ b/arch/arm/cpu/armv8/fsl-layerscape/Makefile
@@ -7,6 +7,7 @@ obj-y += lowlevel.o
 obj-y += soc.o
 ifndef CONFIG_SPL_BUILD
 obj-$(CONFIG_MP) += mp.o spintable.o
+obj-$(CONFIG_OF_LIBFDT_OVERLAY) += lowlevel_init.o dt_optee.o
 obj-$(CONFIG_OF_LIBFDT) += fdt.o
 endif
 obj-$(CONFIG_SPL) += spl.o
diff --git a/arch/arm/cpu/armv8/fsl-layerscape/dt_optee.c 
b/arch/arm/cpu/armv8/fsl-layerscape/dt_optee.c
new file mode 100644
index 00..2418ad09c7
--- /dev/null
+++ b/arch/arm/cpu/armv8/fsl-layerscape/dt_optee.c
@@ -0,0 +1,39 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Copyright 2021 NXP
+ */
+#include 
+#include 
+#include 
+#include 
+#include "dt_optee.h"
+
+int ft_add_optee_overlay(void *fdt, struct bd_info *bd)
+{
+   int ret = 0;
+
+   /*
+* No BL32_BASE passed means no TEE running, so no
+* need to add optee node in dts
+*/
+   if (!rom_pointer[0]) {
+   debug("No BL32_BASE passed means no TEE running\n");
+   return ret;
+   }
+
+   if (rom_pointer[2]) {
+   debug("OP-TEE: applying overlay on 0x%lx\n", rom_pointer[2]);
+   ret = fdt_check_header((void *)rom_pointer[2]);
+   if (ret == 0) {
+   /* Copy the fdt overlay to next 1M and use copied 
overlay */
+   memcpy((void *)(rom_pointer[2] + SZ_1M), (void 
*)rom_pointer[2],
+  fdt_totalsize((void *)rom_pointer[2]));
+   ret = fdt_overlay_apply_verbose(fdt, (void 
*)(rom_pointer[2] + SZ_1M));
+   if (ret == 0) {
+   debug("Overlay applied with success");
+   fdt_pack(fdt);
+   }
+   }
+   }
+   return ret;
+}
diff --git a/arch/arm/cpu/armv8/fsl-layerscape/dt_optee.h 
b/arch/arm/cpu/armv8/fsl-layerscape/dt_optee.h
new file mode 100644
index 00..d1ff25d531
--- /dev/null
+++ b/arch/arm/cpu/armv8/fsl-layerscape/dt_optee.h
@@ -0,0 +1,10 @@
+/* SPDX-License-Identifier: GPL-2.0+ */
+/*
+ * Copyright 2021 NXP
+ */
+#ifndef __DT_OPTEE_H__
+#define __DT_OPTEE_H__
+
+extern unsigned long rom_pointer[];
+int ft_add_optee_overlay(void *fdt, struct bd_info *bd);
+#endif
diff --git a/arch/arm/cpu/armv8/fsl-layerscape/fdt.c 
b/arch/arm/cpu/armv8/fsl-layerscape/fdt.c
index f1624ff30a..0824c62264 100644
--- a/arch/arm/cpu/armv8/fsl-layerscape/fdt.c
+++ b/arch/arm/cpu/armv8/fsl-layerscape/fdt.c
@@ -31,6 +31,7 @@
 #endif
 #include 
 #include 
+#include "dt_optee.h"
 
 int fdt_fixup_phy_connection(void *blob, int offset, phy_interface_t phyc)
 {
@@ -698,3 +699,14 @@ void ft_cpu_setup(void *blob, struct bd_info *bd)
fdt_fixup_ecam(blob);
 #endif
 }
+
+#ifdef CONFIG_OF_SYSTEM_SETUP
+int ft_system_setup(void *blob, struct bd_info *bd)
+{
+#ifdef CONFIG_OF_LIBFDT_OVERLAY
+   return ft_add_optee_overlay(blob, bd);
+#else
+   return 0;
+#endif
+}
+#endif
diff --git a/arch/arm/cpu/armv8/fsl-layerscape/lowlevel_init.S 
b/arch/arm/cpu/armv8/fsl-layerscape/lowlevel_init.S
new file mode 100644
index 00..1d6a2d85fa
--- /dev/null
+++ b/arch/arm/cpu/armv8/fsl-layerscape/lowlevel_init.S
@@ -0,0 +1,25 @@
+/* SPDX-License-Identifier: GPL-2.0+ */
+/*
+ * Copyright 2021 NXP
+ */
+
+#include 
+
+.align 8
+.global rom_pointer
+rom_pointer:
+   .space 32
+
+/*
+ * Routine: save_boot_params (called after reset from start.S)
+ */
+
+.global save_boot_params
+save_boot_params:
+   /* The firmware provided FDT address can be found in r2/x0 */
+   adr x0, rom_pointer
+   stp x1, x2, [x0], #16
+   stp x3, x4, [x0], #16
+
+   ldr x1, =save_boot_params_ret
+   br  x1
-- 
2.17.1



[PATCH 2/2] configs: enabled DTB overlay feature for LS SoCs

2021-11-16 Thread Sahil Malhotra
From: Sahil Malhotra 

SoCs enabled for DTB Overlay features are:
LS1046A-RDB
LS1043A-RDB
LS1012A-RDB
LS1028A-RDB
LS1088A-RDB
LS2088A-RDB

Signed-off-by: Sahil Malhotra 
---
 configs/ls1012ardb_tfa_defconfig | 2 ++
 configs/ls1028ardb_tfa_defconfig | 1 +
 configs/ls1043ardb_tfa_defconfig | 2 ++
 configs/ls1046ardb_tfa_defconfig | 2 ++
 configs/ls1088ardb_tfa_defconfig | 2 ++
 configs/ls2088ardb_tfa_defconfig | 2 ++
 6 files changed, 11 insertions(+)

diff --git a/configs/ls1012ardb_tfa_defconfig b/configs/ls1012ardb_tfa_defconfig
index c52359e51d..49ee762e38 100644
--- a/configs/ls1012ardb_tfa_defconfig
+++ b/configs/ls1012ardb_tfa_defconfig
@@ -69,3 +69,5 @@ CONFIG_USB=y
 CONFIG_DM_USB=y
 CONFIG_USB_XHCI_HCD=y
 CONFIG_USB_XHCI_DWC3=y
+CONFIG_OF_LIBFDT_OVERLAY=y
+CONFIG_OF_SYSTEM_SETUP=y
diff --git a/configs/ls1028ardb_tfa_defconfig b/configs/ls1028ardb_tfa_defconfig
index 8ce9da5b4f..b360427eb3 100644
--- a/configs/ls1028ardb_tfa_defconfig
+++ b/configs/ls1028ardb_tfa_defconfig
@@ -95,3 +95,4 @@ CONFIG_OF_LIBFDT_OVERLAY=y
 CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
 CONFIG_VIDEO=y
 CONFIG_VIDEO_LS_HDP_LOAD=y
+CONFIG_OF_SYSTEM_SETUP=y
diff --git a/configs/ls1043ardb_tfa_defconfig b/configs/ls1043ardb_tfa_defconfig
index de3db3e2c4..a64df243f9 100644
--- a/configs/ls1043ardb_tfa_defconfig
+++ b/configs/ls1043ardb_tfa_defconfig
@@ -67,3 +67,5 @@ CONFIG_DM_USB=y
 CONFIG_USB_XHCI_HCD=y
 CONFIG_USB_XHCI_DWC3=y
 CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
+CONFIG_OF_LIBFDT_OVERLAY=y
+CONFIG_OF_SYSTEM_SETUP=y
diff --git a/configs/ls1046ardb_tfa_defconfig b/configs/ls1046ardb_tfa_defconfig
index e9e2efb210..55b6016e74 100644
--- a/configs/ls1046ardb_tfa_defconfig
+++ b/configs/ls1046ardb_tfa_defconfig
@@ -71,3 +71,5 @@ CONFIG_DM_USB=y
 CONFIG_USB_XHCI_HCD=y
 CONFIG_USB_XHCI_DWC3=y
 CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
+CONFIG_OF_LIBFDT_OVERLAY=y
+CONFIG_OF_SYSTEM_SETUP=y
diff --git a/configs/ls1088ardb_tfa_defconfig b/configs/ls1088ardb_tfa_defconfig
index 2e99e337c8..2351749d7d 100644
--- a/configs/ls1088ardb_tfa_defconfig
+++ b/configs/ls1088ardb_tfa_defconfig
@@ -94,3 +94,5 @@ CONFIG_USB_ETHER_ASIX=y
 CONFIG_USB_ETHER_ASIX88179=y
 CONFIG_USB_ETHER_RTL8152=y
 CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
+CONFIG_OF_LIBFDT_OVERLAY=y
+CONFIG_OF_SYSTEM_SETUP=y
diff --git a/configs/ls2088ardb_tfa_defconfig b/configs/ls2088ardb_tfa_defconfig
index de57235284..d1b6e7f7ae 100644
--- a/configs/ls2088ardb_tfa_defconfig
+++ b/configs/ls2088ardb_tfa_defconfig
@@ -89,3 +89,5 @@ CONFIG_DM_USB=y
 CONFIG_USB_XHCI_HCD=y
 CONFIG_USB_XHCI_DWC3=y
 CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
+CONFIG_OF_LIBFDT_OVERLAY=y
+CONFIG_OF_SYSTEM_SETUP=y
-- 
2.17.1



[PATCH 1/2] fsl-layerscape: add dtb overlay feature

2021-11-16 Thread Sahil Malhotra
From: Sahil Malhotra 

This patch enables the DTB overlay feature for LS platforms.

Signed-off-by: Sahil Malhotra 
---
 arch/arm/cpu/armv8/fsl-layerscape/Makefile|  1 +
 arch/arm/cpu/armv8/fsl-layerscape/dt_optee.c  | 39 +++
 arch/arm/cpu/armv8/fsl-layerscape/dt_optee.h  | 10 +
 arch/arm/cpu/armv8/fsl-layerscape/fdt.c   | 12 ++
 .../cpu/armv8/fsl-layerscape/lowlevel_init.S  | 25 
 5 files changed, 87 insertions(+)
 create mode 100644 arch/arm/cpu/armv8/fsl-layerscape/dt_optee.c
 create mode 100644 arch/arm/cpu/armv8/fsl-layerscape/dt_optee.h
 create mode 100644 arch/arm/cpu/armv8/fsl-layerscape/lowlevel_init.S

diff --git a/arch/arm/cpu/armv8/fsl-layerscape/Makefile 
b/arch/arm/cpu/armv8/fsl-layerscape/Makefile
index 598c36ee66..97f1f291dd 100644
--- a/arch/arm/cpu/armv8/fsl-layerscape/Makefile
+++ b/arch/arm/cpu/armv8/fsl-layerscape/Makefile
@@ -7,6 +7,7 @@ obj-y += lowlevel.o
 obj-y += soc.o
 ifndef CONFIG_SPL_BUILD
 obj-$(CONFIG_MP) += mp.o spintable.o
+obj-$(CONFIG_OF_LIBFDT_OVERLAY) += lowlevel_init.o dt_optee.o
 obj-$(CONFIG_OF_LIBFDT) += fdt.o
 endif
 obj-$(CONFIG_SPL) += spl.o
diff --git a/arch/arm/cpu/armv8/fsl-layerscape/dt_optee.c 
b/arch/arm/cpu/armv8/fsl-layerscape/dt_optee.c
new file mode 100644
index 00..2418ad09c7
--- /dev/null
+++ b/arch/arm/cpu/armv8/fsl-layerscape/dt_optee.c
@@ -0,0 +1,39 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Copyright 2021 NXP
+ */
+#include 
+#include 
+#include 
+#include 
+#include "dt_optee.h"
+
+int ft_add_optee_overlay(void *fdt, struct bd_info *bd)
+{
+   int ret = 0;
+
+   /*
+* No BL32_BASE passed means no TEE running, so no
+* need to add optee node in dts
+*/
+   if (!rom_pointer[0]) {
+   debug("No BL32_BASE passed means no TEE running\n");
+   return ret;
+   }
+
+   if (rom_pointer[2]) {
+   debug("OP-TEE: applying overlay on 0x%lx\n", rom_pointer[2]);
+   ret = fdt_check_header((void *)rom_pointer[2]);
+   if (ret == 0) {
+   /* Copy the fdt overlay to next 1M and use copied 
overlay */
+   memcpy((void *)(rom_pointer[2] + SZ_1M), (void 
*)rom_pointer[2],
+  fdt_totalsize((void *)rom_pointer[2]));
+   ret = fdt_overlay_apply_verbose(fdt, (void 
*)(rom_pointer[2] + SZ_1M));
+   if (ret == 0) {
+   debug("Overlay applied with success");
+   fdt_pack(fdt);
+   }
+   }
+   }
+   return ret;
+}
diff --git a/arch/arm/cpu/armv8/fsl-layerscape/dt_optee.h 
b/arch/arm/cpu/armv8/fsl-layerscape/dt_optee.h
new file mode 100644
index 00..d1ff25d531
--- /dev/null
+++ b/arch/arm/cpu/armv8/fsl-layerscape/dt_optee.h
@@ -0,0 +1,10 @@
+/* SPDX-License-Identifier: GPL-2.0+ */
+/*
+ * Copyright 2021 NXP
+ */
+#ifndef __DT_OPTEE_H__
+#define __DT_OPTEE_H__
+
+extern unsigned long rom_pointer[];
+int ft_add_optee_overlay(void *fdt, struct bd_info *bd);
+#endif
diff --git a/arch/arm/cpu/armv8/fsl-layerscape/fdt.c 
b/arch/arm/cpu/armv8/fsl-layerscape/fdt.c
index f1624ff30a..0824c62264 100644
--- a/arch/arm/cpu/armv8/fsl-layerscape/fdt.c
+++ b/arch/arm/cpu/armv8/fsl-layerscape/fdt.c
@@ -31,6 +31,7 @@
 #endif
 #include 
 #include 
+#include "dt_optee.h"
 
 int fdt_fixup_phy_connection(void *blob, int offset, phy_interface_t phyc)
 {
@@ -698,3 +699,14 @@ void ft_cpu_setup(void *blob, struct bd_info *bd)
fdt_fixup_ecam(blob);
 #endif
 }
+
+#ifdef CONFIG_OF_SYSTEM_SETUP
+int ft_system_setup(void *blob, struct bd_info *bd)
+{
+#ifdef CONFIG_OF_LIBFDT_OVERLAY
+   return ft_add_optee_overlay(blob, bd);
+#else
+   return 0;
+#endif
+}
+#endif
diff --git a/arch/arm/cpu/armv8/fsl-layerscape/lowlevel_init.S 
b/arch/arm/cpu/armv8/fsl-layerscape/lowlevel_init.S
new file mode 100644
index 00..1d6a2d85fa
--- /dev/null
+++ b/arch/arm/cpu/armv8/fsl-layerscape/lowlevel_init.S
@@ -0,0 +1,25 @@
+/* SPDX-License-Identifier: GPL-2.0+ */
+/*
+ * Copyright 2021 NXP
+ */
+
+#include 
+
+.align 8
+.global rom_pointer
+rom_pointer:
+   .space 32
+
+/*
+ * Routine: save_boot_params (called after reset from start.S)
+ */
+
+.global save_boot_params
+save_boot_params:
+   /* The firmware provided FDT address can be found in r2/x0 */
+   adr x0, rom_pointer
+   stp x1, x2, [x0], #16
+   stp x3, x4, [x0], #16
+
+   ldr x1, =save_boot_params_ret
+   br  x1
-- 
2.17.1



[PATCH 2/2] configs: enabled DTB overlay feature for LS SoCs

2021-11-16 Thread Sahil Malhotra
From: Sahil Malhotra 

SoCs enabled for DTB Overlay features are:
LS1046A-RDB
LS1043A-RDB
LS1012A-RDB
LS1028A-RDB
LS1088A-RDB
LS2088A-RDB

Signed-off-by: Sahil Malhotra 
---
 configs/ls1012ardb_tfa_defconfig | 2 ++
 configs/ls1028ardb_tfa_defconfig | 1 +
 configs/ls1043ardb_tfa_defconfig | 2 ++
 configs/ls1046ardb_tfa_defconfig | 2 ++
 configs/ls1088ardb_tfa_defconfig | 2 ++
 configs/ls2088ardb_tfa_defconfig | 2 ++
 6 files changed, 11 insertions(+)

diff --git a/configs/ls1012ardb_tfa_defconfig b/configs/ls1012ardb_tfa_defconfig
index c52359e51d..49ee762e38 100644
--- a/configs/ls1012ardb_tfa_defconfig
+++ b/configs/ls1012ardb_tfa_defconfig
@@ -69,3 +69,5 @@ CONFIG_USB=y
 CONFIG_DM_USB=y
 CONFIG_USB_XHCI_HCD=y
 CONFIG_USB_XHCI_DWC3=y
+CONFIG_OF_LIBFDT_OVERLAY=y
+CONFIG_OF_SYSTEM_SETUP=y
diff --git a/configs/ls1028ardb_tfa_defconfig b/configs/ls1028ardb_tfa_defconfig
index 8ce9da5b4f..b360427eb3 100644
--- a/configs/ls1028ardb_tfa_defconfig
+++ b/configs/ls1028ardb_tfa_defconfig
@@ -95,3 +95,4 @@ CONFIG_OF_LIBFDT_OVERLAY=y
 CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
 CONFIG_VIDEO=y
 CONFIG_VIDEO_LS_HDP_LOAD=y
+CONFIG_OF_SYSTEM_SETUP=y
diff --git a/configs/ls1043ardb_tfa_defconfig b/configs/ls1043ardb_tfa_defconfig
index de3db3e2c4..a64df243f9 100644
--- a/configs/ls1043ardb_tfa_defconfig
+++ b/configs/ls1043ardb_tfa_defconfig
@@ -67,3 +67,5 @@ CONFIG_DM_USB=y
 CONFIG_USB_XHCI_HCD=y
 CONFIG_USB_XHCI_DWC3=y
 CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
+CONFIG_OF_LIBFDT_OVERLAY=y
+CONFIG_OF_SYSTEM_SETUP=y
diff --git a/configs/ls1046ardb_tfa_defconfig b/configs/ls1046ardb_tfa_defconfig
index e9e2efb210..55b6016e74 100644
--- a/configs/ls1046ardb_tfa_defconfig
+++ b/configs/ls1046ardb_tfa_defconfig
@@ -71,3 +71,5 @@ CONFIG_DM_USB=y
 CONFIG_USB_XHCI_HCD=y
 CONFIG_USB_XHCI_DWC3=y
 CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
+CONFIG_OF_LIBFDT_OVERLAY=y
+CONFIG_OF_SYSTEM_SETUP=y
diff --git a/configs/ls1088ardb_tfa_defconfig b/configs/ls1088ardb_tfa_defconfig
index 2e99e337c8..2351749d7d 100644
--- a/configs/ls1088ardb_tfa_defconfig
+++ b/configs/ls1088ardb_tfa_defconfig
@@ -94,3 +94,5 @@ CONFIG_USB_ETHER_ASIX=y
 CONFIG_USB_ETHER_ASIX88179=y
 CONFIG_USB_ETHER_RTL8152=y
 CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
+CONFIG_OF_LIBFDT_OVERLAY=y
+CONFIG_OF_SYSTEM_SETUP=y
diff --git a/configs/ls2088ardb_tfa_defconfig b/configs/ls2088ardb_tfa_defconfig
index de57235284..d1b6e7f7ae 100644
--- a/configs/ls2088ardb_tfa_defconfig
+++ b/configs/ls2088ardb_tfa_defconfig
@@ -89,3 +89,5 @@ CONFIG_DM_USB=y
 CONFIG_USB_XHCI_HCD=y
 CONFIG_USB_XHCI_DWC3=y
 CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
+CONFIG_OF_LIBFDT_OVERLAY=y
+CONFIG_OF_SYSTEM_SETUP=y
-- 
2.17.1



[PATCH 1/2] fsl-layerscape: add dtb overlay feature

2021-11-16 Thread Sahil Malhotra
From: Sahil Malhotra 

This patch enables the DTB overlay feature for LS platforms.

Signed-off-by: Sahil Malhotra 
---
 arch/arm/cpu/armv8/fsl-layerscape/Makefile|  1 +
 arch/arm/cpu/armv8/fsl-layerscape/dt_optee.c  | 39 +++
 arch/arm/cpu/armv8/fsl-layerscape/dt_optee.h  | 10 +
 arch/arm/cpu/armv8/fsl-layerscape/fdt.c   | 12 ++
 .../cpu/armv8/fsl-layerscape/lowlevel_init.S  | 25 
 5 files changed, 87 insertions(+)
 create mode 100644 arch/arm/cpu/armv8/fsl-layerscape/dt_optee.c
 create mode 100644 arch/arm/cpu/armv8/fsl-layerscape/dt_optee.h
 create mode 100644 arch/arm/cpu/armv8/fsl-layerscape/lowlevel_init.S

diff --git a/arch/arm/cpu/armv8/fsl-layerscape/Makefile 
b/arch/arm/cpu/armv8/fsl-layerscape/Makefile
index 598c36ee66..97f1f291dd 100644
--- a/arch/arm/cpu/armv8/fsl-layerscape/Makefile
+++ b/arch/arm/cpu/armv8/fsl-layerscape/Makefile
@@ -7,6 +7,7 @@ obj-y += lowlevel.o
 obj-y += soc.o
 ifndef CONFIG_SPL_BUILD
 obj-$(CONFIG_MP) += mp.o spintable.o
+obj-$(CONFIG_OF_LIBFDT_OVERLAY) += lowlevel_init.o dt_optee.o
 obj-$(CONFIG_OF_LIBFDT) += fdt.o
 endif
 obj-$(CONFIG_SPL) += spl.o
diff --git a/arch/arm/cpu/armv8/fsl-layerscape/dt_optee.c 
b/arch/arm/cpu/armv8/fsl-layerscape/dt_optee.c
new file mode 100644
index 00..2418ad09c7
--- /dev/null
+++ b/arch/arm/cpu/armv8/fsl-layerscape/dt_optee.c
@@ -0,0 +1,39 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Copyright 2021 NXP
+ */
+#include 
+#include 
+#include 
+#include 
+#include "dt_optee.h"
+
+int ft_add_optee_overlay(void *fdt, struct bd_info *bd)
+{
+   int ret = 0;
+
+   /*
+* No BL32_BASE passed means no TEE running, so no
+* need to add optee node in dts
+*/
+   if (!rom_pointer[0]) {
+   debug("No BL32_BASE passed means no TEE running\n");
+   return ret;
+   }
+
+   if (rom_pointer[2]) {
+   debug("OP-TEE: applying overlay on 0x%lx\n", rom_pointer[2]);
+   ret = fdt_check_header((void *)rom_pointer[2]);
+   if (ret == 0) {
+   /* Copy the fdt overlay to next 1M and use copied 
overlay */
+   memcpy((void *)(rom_pointer[2] + SZ_1M), (void 
*)rom_pointer[2],
+  fdt_totalsize((void *)rom_pointer[2]));
+   ret = fdt_overlay_apply_verbose(fdt, (void 
*)(rom_pointer[2] + SZ_1M));
+   if (ret == 0) {
+   debug("Overlay applied with success");
+   fdt_pack(fdt);
+   }
+   }
+   }
+   return ret;
+}
diff --git a/arch/arm/cpu/armv8/fsl-layerscape/dt_optee.h 
b/arch/arm/cpu/armv8/fsl-layerscape/dt_optee.h
new file mode 100644
index 00..d1ff25d531
--- /dev/null
+++ b/arch/arm/cpu/armv8/fsl-layerscape/dt_optee.h
@@ -0,0 +1,10 @@
+/* SPDX-License-Identifier: GPL-2.0+ */
+/*
+ * Copyright 2021 NXP
+ */
+#ifndef __DT_OPTEE_H__
+#define __DT_OPTEE_H__
+
+extern unsigned long rom_pointer[];
+int ft_add_optee_overlay(void *fdt, struct bd_info *bd);
+#endif
diff --git a/arch/arm/cpu/armv8/fsl-layerscape/fdt.c 
b/arch/arm/cpu/armv8/fsl-layerscape/fdt.c
index f1624ff30a..0824c62264 100644
--- a/arch/arm/cpu/armv8/fsl-layerscape/fdt.c
+++ b/arch/arm/cpu/armv8/fsl-layerscape/fdt.c
@@ -31,6 +31,7 @@
 #endif
 #include 
 #include 
+#include "dt_optee.h"
 
 int fdt_fixup_phy_connection(void *blob, int offset, phy_interface_t phyc)
 {
@@ -698,3 +699,14 @@ void ft_cpu_setup(void *blob, struct bd_info *bd)
fdt_fixup_ecam(blob);
 #endif
 }
+
+#ifdef CONFIG_OF_SYSTEM_SETUP
+int ft_system_setup(void *blob, struct bd_info *bd)
+{
+#ifdef CONFIG_OF_LIBFDT_OVERLAY
+   return ft_add_optee_overlay(blob, bd);
+#else
+   return 0;
+#endif
+}
+#endif
diff --git a/arch/arm/cpu/armv8/fsl-layerscape/lowlevel_init.S 
b/arch/arm/cpu/armv8/fsl-layerscape/lowlevel_init.S
new file mode 100644
index 00..1d6a2d85fa
--- /dev/null
+++ b/arch/arm/cpu/armv8/fsl-layerscape/lowlevel_init.S
@@ -0,0 +1,25 @@
+/* SPDX-License-Identifier: GPL-2.0+ */
+/*
+ * Copyright 2021 NXP
+ */
+
+#include 
+
+.align 8
+.global rom_pointer
+rom_pointer:
+   .space 32
+
+/*
+ * Routine: save_boot_params (called after reset from start.S)
+ */
+
+.global save_boot_params
+save_boot_params:
+   /* The firmware provided FDT address can be found in r2/x0 */
+   adr x0, rom_pointer
+   stp x1, x2, [x0], #16
+   stp x3, x4, [x0], #16
+
+   ldr x1, =save_boot_params_ret
+   br  x1
-- 
2.17.1