我试图了解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模块)与外设名称匹配,都将附加到该设备上。

10-08 00:00