Я настраиваю Linux для платы ARM9 Atmel AT91SAM960.
В файле устройства Atmel назвал все USART одинаковыми atmel_usart
.Конечно, с перечислением идентификатора:
static struct platform_device at91sam9260_uart0_device = {
.name = "atmel_usart",
.id = 1,
.dev = { ...}
}
В соответствии с моделью устройства Linux все эти устройства (5 UARTS на SAM9260) будут привязаны к драйверу с именем atmel_usart
.
Я не хочу устанавливать драйвер TTYS на всех UARTS, которые будут зарегистрированы.У меня есть несколько собственных драйверов, которые служат для различных специализированных целей (LON, RS-485 и т. Д.). Я хочу указать, какой драйвер служит определенному USART.Итак, что я мог сделать:
Файлы устройства Atmel неудовлетворительны, и я могу сделать это лучше.Поэтому я переименовываю (исправляю) устройства в файле устройства.Однако в случае, если я хочу драйвер TTYS на UART4, у меня будут проблемы.
Я манипулирую (исправляю) файл устройства, чтобы получить доступ к структурам platform_device
.Я мог бы поменять их имена, прежде чем зарегистрировать их.Но насколько я понял идею Linux Driver Model , устройства должны быть зарегистрированы рано во время загрузки, но привязка к драйверу следует .... позже.
Я мог бы написать драйвер с псевдонимом, который был бы привязан к определенному bus_Id -> atmel_usart.4
.Могу ли я на самом деле?
Какие еще решения существуют.Я хочу коснуться минимального набора файлов ядра, но Я хочу получить всю возможную свободу?
Приложение, что для меня означает свобода : я могу указать во время выполнения, какUARTS можно использовать
- с драйвером Atmel-Serial (ttyS)
- с моими собственными драйверами
Это также означает, что изменения в ядреисточник минимален.