Question about extension board used in U-boot

Ying-Chun Liu (PaulLiu) paulliu at debian.org
Wed Sep 22 03:46:24 CEST 2021


Hi Heinrich,

I think I met some chicken and egg problem. Or I misunderstand something
you mentioned.


So I tried board_fdt_blob_setup() and board_fix_fdt().
Both are too early.
I need i2c to be drived first. And then I can use
dm_i2c_probe() on different address to detect which extension board it is.
However, in board_fdt_blob_setup() or board_fix_fdt(). i2c seems not
working there.
I can do the detection in board_late_init() but it is just too late for
U-boot itself.
Good for Linux kernel though.


Sorry for my bad English. Measured boot is already working on my branch.
But the way I implemented this is directly modify the dts of U-boot and
assume
the TPM extension board is always there. Thus this is not upstreamable.


I think let me upstream some code by extension manager first (for linux
kernel first).
And then we can see how the detection is implemented and how to modify
it for U-boot.


Thanks,
Paul


Heinrich Schuchardt 於 2021/9/18 下午3:14 寫道:
>
>
> On 9/18/21 8:54 AM, François Ozog wrote:
>> Le sam. 18 sept. 2021 à 08:49, François Ozog
>> <francois.ozog at linaro.org> a
>> écrit :
>>
>>> Hi Paul
>>>
>>> Too posting because I think we also need to address this at a higher
>>> level.
>>>
>>> i think we discussed this topic quite a while back. I may be wrong
>>> but it
>>> may be Bill Mills who proposed to have an eeprom on the extensions
>>> that the
>>> carrier board can use to detect and fetch proper overlay. Another
>>> way would
>>> be that the contract between the extension board and the carrier board
>>> includes an i2c accessible storage to fetch an overlay that would
>>> identify
>>> the board and give all details.
>>>
>> i just forgot to state that the mode is well known: SPD for DIMMs.
>>
>>> Bottom line, a software only solution seems not entirely satisfying.
>>> In that suboptimal case, U-Boot shall be able to assemble a DT for
>>> itself
>>> and another for OS (may be same in some cases) through scripting.
>>> And in
>>> this case, come your questions  below
>>>
>>> .
>>>
>>> Le sam. 18 sept. 2021 à 01:21, Ying-Chun Liu (PaulLiu)
>>> <paulliu at debian.org>
>>> a écrit :
>>>
>>>> Hi all,
>>>>
>>>>
>>>> I have some questions about how to implement extension board usage.
>>>> My case is on imx8mm-cl-iot-gate. It can add three different types of
>>>> extension boards.
>>>> One of the extension boards is SPI extension which have 3 empty slots.
>>>> And you can add
>>>> some small boards onto it. One of them is a "TPM2" module.
>
> You could implement the weak function board_fdt_blob_setup() to detect
> your addon boards and extend the devicetree.
>
>
>>>>
>>>>
>>>> My first question is if I want to use tpm2 in U-boot for measured
>>>> boot.
>>>> How to implement this right? Currently I just modify the dts used by
>>>> U-boot to let it drive
>
> Measured boot is provided in U-Boot v2021.10-rc4 based on TPMv2. Just
> enable CONFIG_EFI_TCG2_PROTOCOL.
>
>>>> the extension board. And let it drive the TPM. But it is not good for
>>>> upstreaming because
>>>> when other types of extension boards installed then it is not working.
>>>> Where to implement this? What is the best practice of this?
>>>
>>>
>>>> The second question is about extension manager.
>>>> I have read the extension.rst. I think I'll implement this anyway
>>>> because then
>>>> I can have a command to query what type of extension boards I have.
>>>> And if the extension board is the 3 slots one. I can then detect which
>>>> slot is the TPM.
>>>> I'll implement this anyway because the "extension" command is
>>>> convenient
>>>> for users.
>>>> But it seems to me that it only solves the problem for Linux kernel.
>>>> It can apply a DTB Overlay to Linux DTB to let Linux knows we have
>>>> that
>>>> extension board.
>>>> But it is too late for U-boot itself, right?
>>>>
>>>>
>>>> The third question is I'm also dong SystemReady IR certificate.
>>>> That means
>>>> the dtb for Linux is directly provided by U-boot. We use U-boot dtb
>>>> directly to Linux
>>>> kernel. In this case, how to modify that dts dynamically to feed to
>>>> the
>>>> Linux kernel by
>>>> the extension manager?
>
> U-Boot has a fdt command which you could use to apply overlays. Or
> implement function board_fdt_blob_setup().
>
> Best regards
>
> Heinrich
>
>>>> What is the best practice if I want to use U-boot dts for Linux in
>>>> implementation?
>>>>
>>>>
>>>> Thanks a lot.
>>>>
>>>>
>>>> Yours,
>>>> Paul
>>>>
>>>>
>>>> -- 
>>> François-Frédéric Ozog | *Director Business Development*
>>> T: +33.67221.6485
>>> francois.ozog at linaro.org | Skype: ffozog
>>>
>>> -- 
>> François-Frédéric Ozog | *Director Business Development*
>> T: +33.67221.6485
>> francois.ozog at linaro.org | Skype: ffozog
>> _______________________________________________
>> boot-architecture mailing list
>> boot-architecture at lists.linaro.org
>> https://lists.linaro.org/mailman/listinfo/boot-architecture
>>

-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_signature
Type: application/pgp-signature
Size: 840 bytes
Desc: OpenPGP digital signature
URL: <https://lists.denx.de/pipermail/u-boot/attachments/20210922/f57c0a4f/attachment.sig>


More information about the U-Boot mailing list