U-Boot добавляет узел в дерево устройств во время запуска

Я работаю над пользовательской платой с Cyclone V SoC.

Мне нужно добавить некоторую информацию в дерево устройств U-Boot при запуске, и эта информация хранится на устройстве I2C.

Похоже, что дерево устройств U-Boot доступно только для чтения во время его выполнения, но до перемещения. Функцию board_fix_fdt (void *rw_fdt_blob) можно использовать для внесения изменений в дерево устройств перед перемещением.

У меня проблема в том, что в настоящее время я не могу получить доступ к устройству I2C. Драйвер, кажется, еще не загружен.

Может ли кто-нибудь дать мне какие-либо советы о том, как я могу включить I2C на этом этапе?

Версия U-Boot 2018-05.


person grorel    schedule 29.05.2020    source источник


Ответы (1)


Решение состоит в том, чтобы добавить в дерево устройств u-boot драйвер i2c, а также драйвер сброса для состояний до перемещения:

&rst {
    status = "okay";
    u-boot,dm-pre-reloc;  // HERE
};

&i2c2 {
    status = "okay";
    u-boot,dm-pre-reloc;   // and HERE
}
person grorel    schedule 29.05.2020