Re: (EXT) Re: (EXT) Re: [PATCH] arm64: dts: imx8mm-venice-gw73xx-0x: add dt overlays for serial modes

From: Alexander Stein
Date: Wed Jan 12 2022 - 01:59:37 EST


Am Dienstag, 11. Januar 2022, 18:53:29 CET schrieb Tim Harvey:
> On Mon, Jan 10, 2022 at 11:20 PM Alexander Stein
>
> <alexander.stein@xxxxxxxxxxxxxxx> wrote:
> > Am Dienstag, 11. Januar 2022, 01:00:21 CET schrieb Tim Harvey:
> > > [SNIP]
> > >
> > > > diff --git a/arch/arm64/boot/dts/freescale/Makefile
> > > > b/arch/arm64/boot/dts/freescale/Makefile index
> > > > a14a6173b765..5ec8d59347b6
> > > > 100644
> > > > --- a/arch/arm64/boot/dts/freescale/Makefile
> > > > +++ b/arch/arm64/boot/dts/freescale/Makefile
> > > > @@ -44,6 +44,9 @@ dtb-$(CONFIG_ARCH_MXC) +=
> > > > imx8mm-var-som-symphony.dtb
> > > >
> > > > dtb-$(CONFIG_ARCH_MXC) += imx8mm-venice-gw71xx-0x.dtb
> > > > dtb-$(CONFIG_ARCH_MXC) += imx8mm-venice-gw72xx-0x.dtb
> > > > dtb-$(CONFIG_ARCH_MXC) += imx8mm-venice-gw73xx-0x.dtb
> > > >
> > > > +dtb-$(CONFIG_ARCH_MXC) += imx8mm-venice-gw73xx-0x-rs232-rts.dtbo
> > > > +dtb-$(CONFIG_ARCH_MXC) += imx8mm-venice-gw73xx-0x-rs422.dtbo
> > > > +dtb-$(CONFIG_ARCH_MXC) += imx8mm-venice-gw73xx-0x-rs485.dtbo
> > > >
> > > > dtb-$(CONFIG_ARCH_MXC) += imx8mm-venice-gw7901.dtb
> > > > dtb-$(CONFIG_ARCH_MXC) += imx8mm-venice-gw7902.dtb
> > > > dtb-$(CONFIG_ARCH_MXC) += imx8mn-beacon-kit.dtb
> > >
> > > [SNIP]
> > > I'm mostly interested to see if my approach to dt fragments here and
> > > the naming of the files makes sense to others.
> > >
> > > This patch causes the kernel to build dtbo files for:
> > > arch/arm64/boot/dts/freescale/imx8mm-venice-gw73xx-0x-rs232-rts.dtbo
> > > arch/arm64/boot/dts/freescale/imx8mm-venice-gw73xx-0x-rs422.dtbo
> > > arch/arm64/boot/dts/freescale/imx8mm-venice-gw73xx-0x-rs485.dtbo
> > >
> > > The intention is that these files are used by boot firmware (U-Boot)
> > > to adjust the dtb before passing it to the kernel.
> >
> > Hi Tim,
> >
> > do these dtbo actually work? I'm wondering because I was trying to
> > useoverlays myself and noticed that the had to be compiled with -@ for
> > u-boot to be able
> > to apply them. Apparently there are 2 possibilities:
> Alexander,
>
> Yes, they work, but I do manually set DTC_FLAGS=-@ when building
> kernel dtbs to make them work.

I see, I expected something like this. That's why I responded to you.

> > * Set "DTC_FLAGS_[dtb] := -@" yourself
> > See https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/
> > commit/?id=e426d63e752bdbe7d5ba2d872319dde9ab844a07
> >
> > * Use dedicated overlay target
> > See https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/
> > commit/?id=15d16d6dadf6947ac7f9a686c615995c5a426ce2
> >
> > You use neither of them. IIRC just naming the target file .dtbo will not
> > apply symbols (-Q) during dtc call. Can you verify using 'V=1'
> > Also I'm wondering which way is the best to go.
>
> I wasn't aware there was a way to do this via Makefiles. It seems that
> perhaps Rob's approach with 'kbuild: Add generic rule to apply
> fdtoverlay' is a way to avoid having to add them all manually in the
> first approach? I must admit I'm not sure how to use that.

I tried using this myself for my custom board. I feel it is a bit cumbersome
to get it right.
See https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/
arch/arm64/boot/dts/xilinx/Makefile for an example.

Essentially you define your .dtb as before and add another target (e.g. sm-
k26-revA-sck-kv-g-revA-dtbs) where you add your .dtbo _after_ the original
.dtb. This target needs to be added to 'dtb-y' as before.

I suspect this way is needed to check the .dtbo against the base .dtb if it
actually matches.

HTH
Alexander