Как ядро Linux поддерживает поиск двух портов на одном устройстве платформы?

#networking #linux-device-driver

Вопрос:

Я пишу драйвер сетевого устройства Linux для взаимодействия с ПЛИС, которая предоставляет два сетевых порта. Я определил, что мне нужно использовать реализацию драйвера платформы, поскольку плис не подключена к шине, и я понимаю, что функция проверки драйвера устройства должна вызываться для каждого порта для создания экземпляра каждого интерфейса. Поскольку известно, что fpga всегда присутствует, я могу вызвать platform_driver_probe (), а не platform_driver_register (), чтобы автоматически запустить функцию проверки устройства при инициализации. Однако мне неясно, как я могу запустить второй зонд или как могут быть запущены два необходимых зонда, если используется вызов регистра выше. Зная, что есть два порта, следует ли мне дважды вызывать функцию platform_driver_probe() или есть способ сообщить ядру, что поддерживаются два порта и что после вызова регистра следует выполнить два вызова проверки устройства? В качестве альтернативы, может ли одна функция зонда создать экземпляр обоих портов? Может ли кто-нибудь указать мне на существующий четкий пример реализации драйвера платформы, который обрабатывает такой случай?

Комментарии:

1. «драйверы/сеть/ethernet/8390/ne.c» может быть одним из таких примеров. Он регистрирует множество устройств платформы и вызывает функцию platform_driver_probe() один раз, чтобы запустить функцию проверки для каждого устройства.