我试图了解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 = 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”。
.name = "ixp4xx-ehci",
内核将在注册后搜索一个能够处理此类硬件的驱动程序。无论哪个驱动程序(在您的情况下,ehci hcd模块)与外设名称匹配,都将附加到该设备上。