[PATCH v3 1/4] common: Add generic function for reading serial number

Artur Rojek artur at conclusive.pl
Wed Oct 4 14:47:34 CEST 2023


>Hi Artur,
>
>On Mon, 2 Oct 2023 at 06:42, Artur Rojek <artur at conclusive.pl> wrote:
>>
>> Provide a generic way for boards to read their serial number from EEPROM
>> at init.
>>
>> If CONFIG_ID_EEPROM is set, the new serial_read_from_eeprom() function
>> will now be called during the post-relocation part of the board init.
>>
>> Provided is the tlv eeprom implementation of the above function, making
>> use of the existing, yet never utilized, populate_serial_number().
>> Boards which use custom logic for interaction with their EEPROMs need to
>> supply their own implementation.
>>
>> Signed-off-by: Artur Rojek <artur at conclusive.pl>
>> ---
>>
>> v3: - restore original function name and make it static
>>     - provide a generic function for reading EEPROM serial number and
>>       wrap it around the existing tlv logic
>>     - move the env var check out of populate_serial_number() and into
>>       the new serial_read_from_eeprom() in order to stay consistent with
>>       the documentation
>>
>> v2: - rename the function
>>     - move function documentation from .c file to the prototype location
>>
>>  cmd/tlv_eeprom.c | 25 +++++++++----------------
>>  common/board_r.c |  8 ++++++++
>>  include/init.h   | 14 ++++++++++++++
>>  3 files changed, 31 insertions(+), 16 deletions(-)
>
>Can you please use events for this? Something like EVT_SETTINGS_R ?
>
>See the one recently added for how to do this:
>
>INITCALL_EVENT(EVT_LAST_STAGE_INIT),

I like this approach, but just to be clear with your intention - you
want me to move both serial_read_from_eeprom AND mac_read_from_eeprom
into a separate function, defined for each affected board? To do this
for mac_read_from_eeprom becomes slightly cumbersome, because there are
this many of them, depending on the current scheme:

$ grep -r "ID_EEPROM" ./configs/ | wc -l
55

If each of them needs to contain something like this:

>static int settings_r(void)
>{
>#if defined(CONFIG_ID_EEPROM)
>       mac_read_from_eeprom();
>#endif
>       return 0;
>}
>EVENT_SPY_SIMPLE(EVT_SETTINGS_R, settings_r);

then this strays very far from the original intention of this series,
which is to add support for a single board :)
Unless you only care about serial_read_from_eeprom, then I don't need to
modify any of the existing boards.

Cheers,
Artur

>
>Regards,
>Simon


More information about the U-Boot mailing list