Разработих работещ драйвер за моя custom_hardware, който разчита на дървото на устройствата. Тъй като драйверът ми може да се развива, не искам драйверът ми да бъде част от ядрото (когато казвам „да бъде част от ядрото“, имам предвид да бъде компилиран с ядрото по време на създаването на ядрото)
Ето един поглед на моя 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 шофьор на em>.
Това е важно, тъй като драйверът на existing_hardware изисква virq от irq_domain на драйвера на custom_hardware. За да получите irq_domain, първо трябва да се зареди драйверът на custom_hardware.
Обърнете внимание, че драйверът на existing_hardware се зарежда по време на сондирането на дървото на устройствата, което изглежда се случва в ранния етап на последователността на зареждане на ядрото.