it actually needs dynamic creation based on:
- a "base" DTB
- kernel-time detection of the I2C EEPROM
- reading of a board-specific DTB file from the I2C EEPROM
- merging of the "base" DTB with the board-specific DTB.
The two middle points could be done by u-boot, since u-boot already adjusts the kernel's dtb in many cases (e.g. to provide the amount of RAM available).
Stefan