Re: (EXT) Re: [PATCH V2 4/5] arm64: dts: imx8mm-beacon: Enable OV5640 Camera
From: Tim Harvey
Date: Mon Nov 29 2021 - 17:40:31 EST
On Tue, Nov 23, 2021 at 1:47 AM Laurent Pinchart
<laurent.pinchart@xxxxxxxxxxxxxxxx> wrote:
>
> Hi Alexander,
>
> On Tue, Nov 23, 2021 at 08:38:47AM +0100, Alexander Stein wrote:
> > Am Dienstag, dem 23.11.2021 um 02:15 +0200 schrieb Laurent Pinchart:
> > > On Sun, Nov 21, 2021 at 09:07:26PM -0600, Adam Ford wrote:
> > > > On Sun, Nov 21, 2021 at 5:18 PM Laurent Pinchart wrote:
> > > > > On Sat, Nov 06, 2021 at 10:54:26AM -0500, Adam Ford wrote:
> > > > > > The baseboard has support for a TDNext 5640 Camera which
> > > > > > uses an OV5640 connected to a 2-lane CSI2 interface.
> > > > > >
> > > > > > With the CSI and mipi_csi2 drivers pointing to an OV5640 camera, the media
> > > > > > pipeline can be configured with the following:
> > > > > >
> > > > > > media-ctl --links "'ov5640 1-003c':0->'imx7-mipi-csis.0':0[1]"
> > > > > >
> > > > > > The camera and various nodes in the pipeline can be configured for UYVY:
> > > > > > media-ctl -v -V "'ov5640 1-003c':0 [fmt:UYVY8_1X16/640x480 field:none]"
> > > > > > media-ctl -v -V "'csi':0 [fmt:UYVY8_1X16/640x480 field:none]"
> > > > > >
> > > > > > Signed-off-by: Adam Ford <aford173@xxxxxxxxx>
> > > > >
> > > > > As the ov5640 is on an add-on module, would a DT overlay be better ?
> > > >
> > > > At least for the Beacon / LogicPD boards, I would prefer to avoid the
> > > > overlays. We have an i.M6Q and an OMAP3 board with cameras enabled in
> > > > our development kit device trees. If the cameras are not connected,
> > > > they just display a message that the cameras are not communicating and
> > > > move on. I'm OK with that.
> > >
> > > You know the board better than I do, so I won't push against this, but I
> > > still think it may not lead to the best user experience, especially if a
> > > user wanted to connect a different sensor to the development board.
> >
> > I see the advantages of overlays compared to "stacked" .dts files. But
> > is there any general supported interface how to actually apply an overlay?
> > Documentation/devicetree/overlay-notes.rst
> > states of_overlay_fdt_apply() but there is only exactly one user in-
> > kernel (rcar-du). Is it expected that the bootloader like u-boot shall
> > apply the .dtbo files?
>
> I believe the boot loader is expected to apply overlays nowadays, yes.
> That's my personal workflow.
>
That is my understanding as well. I believe the support to apply dt
overlays within Linux (which the rpi kernel still uses) never got
merged due to race conditions so the focus was moved to bootloader.
I also have begun submitting some dt overlay files [1] [2] which I
will likely repost later this week removing the RFC.
My understanding is that these should be '.dtbo' files in the Linux
Makefile which are handled. My boards use the U-Boot bootloader and to
handle the dt overlays there you need to:
- set CONFIG_OF_LIBFDT_OVERLAY=y which gives you the 'fdt apply' command
- use 'fdt addr <addr> && fdt resize && fdt apply <loadaddr>' prior to
booting with booti
- Note that there is some support at the FIT level as well for
overlays if you need them applied to U-Boot's live dt (I don't for my
needs)
In my U-Boot environment I use scripts for loading the fdt and
applying the overlays. For example for booting kernel/dtb from network
I use:
boot_net setenv fsload tftpboot; run loadfdt && run apply_overlays &&
$fsload $kernel_addr_r venice/Image && booti $kernel_addr_r -
$fdt_addr_r
loadfdt if $fsload $fdt_addr_r $dir/$fdt_file1; then echo loaded
$fdt_file1; elif $fsload $fdt_addr_r $dir/$fdt_file2; then echo loaded
$fdt_file2; elif $fsload $fdt_addr_r $dir/$fdt_file3; then echo loaded
$fdt_file3; elif $fsload $fdt_addr_r $dir/$fdt_file4; then echo loaded
$fdt_file4; elif $fsload $fdt_addr_r $dir/$fdt_file5; then echo loaded
$fdt_file5; fi
apply_overlays fdt addr $fdt_addr_r && fdt resize && for i in
"$fdt_overlays"; do $fsload $loadaddr $dir/$i && fdt apply $loadaddr
&& echo applied $i...; done
Best regards,
Tim
[1] https://www.spinics.net/lists/arm-kernel/msg933447.html
[2] https://www.spinics.net/lists/arm-kernel/msg933638.html