[RFC PATCH 2/2] board: ti: am65x: Move to using Extension framework

Roger Quadros rogerq at kernel.org
Wed Oct 4 14:39:23 CEST 2023


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 at 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 at 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()?

-- 
cheers,
-roger


More information about the U-Boot mailing list