我正在为 ARM9 Atmel AT91SAM960 板定制 Linux。
在设备文件中, Atmel 将所有 USART 命名为相同atmel_usart
。当然使用 id 枚举:
static struct platform_device at91sam9260_uart0_device = {
.name = "atmel_usart",
.id = 1,
.dev = { ...}
}
根据 Linux 设备模型,所有这些设备(SAM9260 上的 5 个 UARTS)都将绑定到名为atmel_usart
.
我不想在所有将要注册的 UARTS 上设置 TTYS 驱动程序。我有几个自己的驱动程序,它们用于不同的专业用途(LON、RS-485 等)。我想要控制哪个驱动程序确实为某个 USART 服务。那我该怎么办:
Atmel 设备文件无法满足,我可以做得更好。所以我重命名(修补)设备文件中的设备。但是,如果我想在 UART4 上安装 TTYS 驱动程序,我会遇到麻烦。
我操作(修补)设备文件,以便能够访问结构
platform_device
。我可以在注册之前更改他们的名字。但据我了解Linux Driver Model的想法,设备应该在启动期间尽早注册,但与驱动程序的绑定随后......稍后。我可以编写一个驱动程序,它有一个别名并将绑定到特定的 bus_Id ->
atmel_usart.4
。我真的可以吗?
还有什么解决方案。我想接触最小的内核文件集,但我想要所有可能的自由?
附录自由对我意味着什么:我可以在运行时指定如何使用 UARTS
- 使用 Atmel 串行驱动程序 (ttyS)
- 和我自己的司机
这也意味着,对内核源代码的更改是最小的。