
Hi,
On 13/07/2023 21:44, Nishanth Menon wrote:
On 15:29-20230711, Roger Quadros wrote:
Hi Simon,
On 10/07/2023 22:45, Simon Glass wrote:
Hi Roger,
On Mon, 10 Jul 2023 at 08:51, Roger Quadros rogerq@kernel.org wrote:
Support the Expansion cards via Extension framework. This should make 'expansion' command work to scan for expansion cards and apply DT overlays.
Card detection code is moved to a library so other boards can benefit from it.
Signed-off-by: Roger Quadros rogerq@kernel.org
board/ti/am65x/evm.c | 264 ++++++++--------------------- board/ti/common/Kconfig | 8 + board/ti/common/Makefile | 1 + board/ti/common/ti_card_detect.c | 155 +++++++++++++++++ board/ti/common/ti_card_detect.h | 43 +++++ configs/am65x_evm_a53_defconfig | 2 + configs/am65x_hs_evm_a53_defconfig | 2 + 7 files changed, 280 insertions(+), 195 deletions(-) create mode 100644 board/ti/common/ti_card_detect.c create mode 100644 board/ti/common/ti_card_detect.h
Before this goes too far I think this should move to using a linker list to declare the driver (or a driver-model driver if you prefer, but that might be overkill).
So I've been working on this on the side and got linker list way working with custom script booting but as soon as I move to standard boot flow it no longer works. This is because there is no code in place to apply the overlay and pass it to next stage e.g. EFI.
I see the following note at https://elixir.bootlin.com/u-boot/latest/source/boot/bootmeth_efi.c#L304
" /* * TODO: Apply extension overlay * * Here we need to load and apply the extension overlay. This is * not implemented. See do_extension_apply(). The extension * stuff needs an implementation in boot/extension.c so it is * separate from the command code. Really the extension stuff * should use the device tree and a uclass / driver interface * rather than implementing its own list */ "
Another note at https://elixir.bootlin.com/u-boot/latest/source/cmd/extension_board.c#L198
"/* extensions should have a uclass - for now we use UCLASS_SIMPLE_BUS uclass */"
So are we better off implementing a class driver for extension stuff?
Once that is in place how should extension apply work? Current implementation relies on a extension_overlay_cmd environment to be specified. e.g. for EFI boot case, the overlay files should be obtained in the same way we get the base device tree i.e. bootmeth_common_read_file()?