All of lore.kernel.org
 help / color / mirror / Atom feed
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

  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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.