From: Mehmet Fide <[email protected]>

The Toradex config block is read by settings_r(), which is reachable
only as an event spy:

  EVENT_SPY_SIMPLE(EVT_SETTINGS_R, settings_r);

board_r.c does call INITCALL_EVT(EVT_SETTINGS_R) unconditionally, but
with CONFIG_EVENT disabled event_notify_null() is an empty inline, so
the spy is never reached and settings_r() never runs. Nothing else
selects EVENT for colibri_vf, and CONFIG_EVENT has no prompt, so a
defconfig cannot turn it on by itself.

The effect is that serial#, ethaddr and eth1addr are never populated
from the config block. serial# in turn is what fdt_root() copies into
the device tree as "serial-number", so Linux loses
/proc/device-tree/serial-number along with anything deriving a MAC
address or a device identity from it. The failure is quiet: a module
whose saved environment predates the conversion to the event framework
keeps the old values and looks healthy until the environment is
rewritten.

Verified on a Colibri VF50. Before the change "printenv serial#"
reports "not defined" and no "MISSING TORADEX CONFIG BLOCK" is
printed, which is the signature of the spy never running. After it the
banner shows

  Model: Toradex 0013 Colibri VF50 128MB IT V1.2B
  Serial#: 03135809

and Linux finds /proc/device-tree/serial-number again.

TDX_CFG_BLOCK cannot work without the spy, so select what it needs.

Signed-off-by: Mehmet Fide <[email protected]>
---
 board/toradex/common/Kconfig | 1 +
 1 file changed, 1 insertion(+)

diff --git a/board/toradex/common/Kconfig b/board/toradex/common/Kconfig
index b85893ab44e..05f8341e4c3 100644
--- a/board/toradex/common/Kconfig
+++ b/board/toradex/common/Kconfig
@@ -3,6 +3,7 @@
 
 menuconfig TDX_CFG_BLOCK
        bool "Enable Toradex config block support"
+       select EVENT
        select OF_BOARD_SETUP
        select SYSINFO
        help
-- 
2.54.0

Reply via email to