Я разработал работающий драйвер для своего пользовательского_оборудования, который опирается на дерево устройств. Поскольку мой драйвер может развиваться, я не хочу, чтобы мой драйвер был частью ядра (когда я говорю «быть частью ядра», я имею в виду, что он должен быть скомпилирован с ядром во время создания ядра).
Вот краткий обзор моего dts:
custom_hardware: custom_hardware@0x41006000 {
compatible = "mfg,custom";
reg = <0x41006000 0x1000>;
#interrupt-cells = <0x1>;
interrupt-controller;
};
existing_hardware: existing_hardward@41004000 {
compatible = "mfg,existing";
reg = <0x41004000 0x1000>;
interrupt-parent = <&custom_hardware>;
interrupts = <0>;
};
Драйвер existing_hardware уже скомпилирован с ядром (драйвер existing_hardware был скомпилирован с ядром во время создания ядра).
Что я хотел бы сделать, так это добавить драйвер моего custom_hardware в ramfs и позволить ядру загрузить драйвер custom_hardware перед existing_hardware.
Это важно, поскольку драйвер existing_hardware запрашивает virq из irq_domain драйвера custom_hardware. Чтобы получить irq_domain, сначала необходимо загрузить драйвер custom_hardware.
Обратите внимание, что драйвер existing_hardware загружается во время проверки дерева устройств, что, по-видимому, происходит на ранней стадии последовательности загрузки ядра.