Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/137.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 平台设备寄存器和usb ehci驱动程序_Linux_Linux Kernel_Linux Device Driver - Fatal编程技术网

Linux 平台设备寄存器和usb ehci驱动程序

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

我试图了解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”


内核将搜索一个驱动程序,该驱动程序可以在您注册后的一段时间内处理此类硬件。无论哪种驱动程序(在您的情况下,ehci hcd模块)与外设名称匹配,都将附加到该设备。

有关该问题的更多信息。 Linux设备驱动程序模型揭示了底层关系。有几本好书可以帮助您更多地了解linux设备驱动程序。
平台设备和驱动程序都注册到平台总线,当驱动程序注册时,总线驱动程序将尝试匹配它们(通过此处的名称),然后探测设备。

在我问了这个问题几分钟后,我自己找到了答案:)查找“ixp4xx ehci”名称并配置ehci是ehci-ixp4xx.c文件的角色。当然,你的回答也很有帮助。
    .name       = "ixp4xx-ehci",