Linux 平台设备寄存器和usb ehci驱动程序
我试图了解linux如何在我的cambria(ARM)板上初始化USB EHCI控制器 linux内核中有一些文件:Linux 平台设备寄存器和usb ehci驱动程序,linux,linux-kernel,linux-device-driver,Linux,Linux Kernel,Linux Device Driver,我试图了解linux如何在我的cambria(ARM)板上初始化USB EHCI控制器 linux内核中有一些文件: arch/arm/mach-ixp4xx/cambria-setup.c USB EHCI控制器作为平台设备有一些定义: static struct platform_device cambria_usb0_device = { .name = "ixp4xx-ehci", .id = 0, .resource = cambri
arch/arm/mach-ixp4xx/cambria-setup.c
USB EHCI控制器作为平台设备有一些定义:
static struct platform_device cambria_usb0_device = {
.name = "ixp4xx-ehci",
.id = 0,
.resource = cambria_usb0_resources,
.num_resources = ARRAY_SIZE(cambria_usb0_resources),
.dev = {
.dma_mask = &ehci_dma_mask,
.coherent_dma_mask = 0xffffffff,
},
};
并由以下人员引用:
platform_device_register(&cambria_usb0_device);
我的问题是:linux如何知道该平台设备是USB EHCI控制器,并且应该为其初始化EHCI-hcd.ko模块?它知道,因为您告诉它该平台设备是USB EHCI控制器:) 在下面的代码中,您告诉内核外围设备的名称是“ixp4xx ehci”
内核将搜索一个驱动程序,该驱动程序可以在您注册后的一段时间内处理此类硬件。无论哪种驱动程序(在您的情况下,ehci hcd模块)与外设名称匹配,都将附加到该设备。有关该问题的更多信息。 Linux设备驱动程序模型揭示了底层关系。有几本好书可以帮助您更多地了解linux设备驱动程序。
平台设备和驱动程序都注册到平台总线,当驱动程序注册时,总线驱动程序将尝试匹配它们(通过此处的名称),然后探测设备。在我问了这个问题几分钟后,我自己找到了答案:)查找“ixp4xx ehci”名称并配置ehci是ehci-ixp4xx.c文件的角色。当然,你的回答也很有帮助。
.name = "ixp4xx-ehci",