cbrake
December 6, 2021, 8:25pm
1
Hi, I’m trying to get the cape overlay functionality working on a beaglebone black running the latest Yocto bits and u-boot/kernel from meta-ti. From what I can tell, the process is:
u-boot detects a cape
kernel loads overlay from rootfs
I don’t see any evidence of cape detection in the u-boot. Where are the best u-boot sources for the BBB? Are there kernel bits as well, and how do I tell if I have them?
cbrake:
u-boot detects a cape
kernel loads overlay from rootfs
On point 2. U-Boot loads overlay from rootfs:…
Regards,
1 Like
cbrake
January 20, 2022, 6:48pm
3
Is the DT merged by u-boot, or does that happen in the kernel?
Have these mechanisms every been accepted upstream, or what is the current status?
Trying to determine if we should port the DT parts to the board DTS file, or try to get the overlay mechanism working in the latest TI kernels. For this project, we do not need dynamic cape detection as its a fixed config.
Everything should be done in u-boot:
committed 05:09PM - 13 May 21 UTC
This patch adds a new "extension" command, which aims at detecting
extension boa… rds connected to the hardware platform, and apply the
Device Tree overlays that describe the hardware present on those
extension boards.
In order to enable this mechanism, board-specific code must implement
the extension_board_scan() function that fills in a linked list of
"struct extension", each describing one extension board. In addition,
the board-specific code must select the SUPPORT_EXTENSION_SCAN Kconfig
boolean.
Based on this:
- "extension scan" makes the generic code call the board-specific
extension_board_scan() function to retrieve the list of detected
extension boards.
- "extension list" allows to list the detected extension boards.
- "extension apply <number>|all" allows to apply the Device Tree
overlay(s) corresponding to one, or all, extension boards
The latter requires two environment variables to exist and set one variable
to run:
- extension_overlay_addr: the RAM address where to load the Device
Tree overlays
- extension_overlay_cmd: the U-Boot command to load one overlay.
Indeed, the location and mechanism to load DT overlays is very setup
specific.
- extension_overlay_name: set by the command: the name of the DT which
will be load during the execution.
When calling the command described in the extension_overlay_cmd
variable, the variable extension_overlay_name will be defined. So a
typical extension_overlay_cmd will look like this:
extension_overlay_cmd=load mmc 0:1 $extension_overlay_addr /boot/$extension_overlay_name
Here is an example on how to use it:
=> run loadfdt
=> fdt addr $fdtaddr
=> setenv extension_overlay_addr 0x1000
=> setenv extension_overlay_cmd 'load mmc 0:1 ${extension_overlay_addr} /boot/${extension_overlay_name}'
=> extension scan
Found 1 extension board(s).
=> extension apply 0
519 bytes read in 3 ms (168.9 KiB/s)
Signed-off-by: Kory Maincent <kory.maincent@bootlin.com>
Reviewed-by: Maxime Ripard <maxime@cerno.tech>
Nothing should be done “while” the kernel is loading…
Regards,
cbrake
January 20, 2022, 10:01pm
5
Thanks Robert – that looks very useful!