From: buildroot@cairnwater.com
To: Fiona Klute <fiona.klute@gmx.de>
Cc: Buildroot <buildroot@buildroot.org>
Subject: Re: [Buildroot] Adding Device Tree Overlays for MIPI-CSI2 Camera and libcamera to a buildroot Build
Date: Wed, 14 May 2025 18:36:21 +0100 [thread overview]
Message-ID: <06288a46ae8ca333eb295497dece6254@cairnwater.com> (raw)
In-Reply-To: <e147c44847cdb3c965cbf99e41751d26@cairnwater.com>
Hi Fiona,
Thank you very much!
> It's expected to match the structure of the per-arch dts directory in
> the kernel source, with vendor directories. The
> polyhex_debix_model_a_defconfig uses the freescale/imx8mp-debix-model-a
> DTS, so inside your BR2_LINUX_KERNEL_CUSTOM_DTS_DIR you'll probably
> need something like freescale/my-camera.dtso (whatever you want to call
> your DTSOs, the DTBOs will match the source names).
How do I work out where the BR2_LINUX_KERNEL_CUSTOM_DTS_DIR is?
I had a look in the defconfig here:
https://github.com/buildroot/buildroot/blob/master/configs/polyhex_debix_model_a_defconfig
It seems to specify other parameters related to BR2_LINUX_KERNEL but not
the BR2_LINUX_KERNEL_CUSTOM_DTS_DIR so I got a bit lost trying to work
out where the BR2_LINUX_KERNEL_CUSTOM_DTS_DIR is and whether it's a
directory that already exists or a new directory that I should create
myself?
Is BR2_LINUX_KERNEL_CUSTOM_DTS_DIR something that's not already in the
defconfig and that I'd have to add to the defconfig?
BR2_LINUX_KERNEL=y
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.12.14"
BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y
BR2_LINUX_KERNEL_DTS_SUPPORT=y
BR2_LINUX_KERNEL_INTREE_DTS_NAME="freescale/imx8mp-debix-model-a"
BR2_LINUX_KERNEL_DTB_KEEP_DIRNAME=y
BR2_LINUX_KERNEL_INSTALL_TARGET=y
BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y
> On some boards (like RPi) the firmware can also do it (only useful if
> U-Boot & kernel then use that FDT), last time I
> checked mainline Linux cannot, but some patched kernels can.
Yes - that's my understanding as well - my knowledge of this is very
limited but I think maybe RPi can do this and maybe NXP's i.MX Linux can
do this but I'm not sure whether mainline Linux can do it at the moment.
> There are a number of options with U-Boot, which one to pick
> depends on how you configure the boot (at a glance the defconfig seems
> to use extlinux.conf):
I'd probably want to stick as close as I can to what's there at the
moment.
> Either way you may have to enable overlay support in the U-Boot build
> config (if it isn't by default).
I looked in
https://github.com/buildroot/buildroot/blob/master/configs/polyhex_debix_model_a_defconfig
but couldn't work out how to enable overlay support. Is that usually an
existing line in the defconfig that should be amended or a new line that
should be added?
Thank you very much for all your help!
Will
On 2025-05-08 08:46, buildroot@cairnwater.com wrote:
> Hi Fiona,
>
> Thank you very much - that's an enormous help - I'd have got very
> confused trying to work that out.
>
> I'll study what you said and the links in detail and take more time to
> think about it.
>
> Thank you very much again!
>
> Will
>
> On 2025-05-07 21:06, Fiona Klute wrote:
>> Am 07.05.25 um 20:31 schrieb buildroot@cairnwater.com:
>>> Hi Fiona,
>>>
>>> Thank you very much! That's a big help to know to use
>>> BR2_LINUX_KERNEL_CUSTOM_DTS_DIR for that.
>>>
>>> What directory structure is needed for the overlays? Just the DTO
>>> files in a directory or something more complicated?
>>
>> It's expected to match the structure of the per-arch dts directory in
>> the kernel source, with vendor directories. The
>> polyhex_debix_model_a_defconfig uses the
>> freescale/imx8mp-debix-model-a DTS, so inside your
>> BR2_LINUX_KERNEL_CUSTOM_DTS_DIR you'll probably need something like
>> freescale/my-camera.dtso (whatever you want to call your DTSOs, the
>> DTBOs will match the source names).
>>
>>>> From there you'll need to adjust the boot process for your board to
>>>> actually apply the overlay. If you want to send a patch, the
>>>> BR2_LINUX_KERNEL_CUSTOM_DTS_DIR should be inside the board
>>>> directory.
>>>
>>> Thank you very much. I don't know how to do that. What's the best way
>>> to get the boot process to apply the overlay? I'd heard that it can
>>> be done by the kernel or by U-Boot but I'm doing this for the first
>>> time so I'm not sure what I'm doing.
>>
>> I'm not familiar with the board, but usually U-Boot will be the right
>> place. On some boards (like RPi) the firmware can also do it (only
>> useful if U-Boot & kernel then use that FDT), last time I checked
>> mainline Linux cannot, but some patched kernels can. There are a
>> number of options with U-Boot, which one to pick depends on how you
>> configure the boot (at a glance the defconfig seems to use
>> extlinux.conf):
>>
>> * If you use extlinux.conf, use the "devicetree-overlay" option.
>> * If you use a boot script, load the overlay and apply it before
>> starting the kernel.
>> * If you use a FIT image, add the overlay to it and the relevant boot
>> config defined in it.
>>
>> See also:
>> https://docs.u-boot.org/en/latest/develop/distro.html (for
>> extlinux.conf)
>> https://docs.u-boot.org/en/latest/usage/fdt_overlays.html (for the
>> latter 2 options)
>>
>> Either way you may have to enable overlay support in the U-Boot build
>> config (if it isn't by default).
>>
>> On the Buildroot side you need to make sure that the DTBOs and
>> adjusted config get included in the image where U-Boot expects them
>> (depending on the boot setup you use), if you need to make adjustments
>> there it'll probably be in a post-build or post-image script, or in
>> the genimage config.
>>
>> The defconfig seems to put everything into the root partition image,
>> so it might just work, as long as you use the right path in the U-Boot
>> config. Maybe just set BR2_LINUX_KERNEL_CUSTOM_DTS_DIR, build, and see
>> if you end up with a DTBO somewhere in your /boot dir. If yes,
>> adjusting the U-Boot config to use it should be enough. ;-)
>>
>> Best regards,
>> Fiona
> _______________________________________________
> buildroot mailing list
> buildroot@buildroot.org
> https://lists.buildroot.org/mailman/listinfo/buildroot
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
next prev parent reply other threads:[~2025-05-14 17:36 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-05-07 15:41 [Buildroot] Adding Device Tree Overlays for MIPI-CSI2 Camera and libcamera to a buildroot Build buildroot
2025-05-07 16:41 ` Fiona Klute via buildroot
2025-05-07 18:31 ` buildroot
2025-05-07 20:06 ` Fiona Klute via buildroot
2025-05-08 7:46 ` buildroot
2025-05-14 17:36 ` buildroot [this message]
2025-05-14 18:59 ` Edgar Bonet via buildroot
2025-05-15 16:11 ` buildroot
2025-05-21 17:17 ` Fiona Klute via buildroot
2025-05-21 17:26 ` Fiona Klute via buildroot
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=06288a46ae8ca333eb295497dece6254@cairnwater.com \
--to=buildroot@cairnwater.com \
--cc=buildroot@buildroot.org \
--cc=fiona.klute@gmx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox