usb主机侧都标准化到寄存器都一样了,不过也对,物理上只有两根线,所有的都靠抽象。
Ehci_atmel.c
module_init(ehci_atmel_init);
ehci_atmel_init
{
ehci_init_driver(&ehci_atmel_hc_driver, NULL);//填充ehci_atmel_hc_driver结构体,用系统自带的默认对象ehci_hc_driver
platform_driver_register(&ehci_atmel_driver); --》ehci_atmel_drv_probe
}
ehci_atmel_drv_probe
{
获取中断
判断是否支持dma
usb_create_hcd //进一步初始化hcd
获取并申请内存资源
获取并预使能时钟
usb_add_hcd// 注册hcd
}
ohci-at91.c
sysfs_create_group -》 ohci_hcd_at91_drv_probe
ohci_hcd_at91_drv_probe
{
遍历并设置引脚
申请中断ohci_hcd_at91_overcurrent_irq用来探测设备
usb_hcd_at91_probe
}
usb_hcd_at91_probe
{
usb_create_hcd //进一步填充ohci_at91_hc_driver
获取申请内存和时钟
usb_add_hcd//注册hcd
}
{
.reset = ohci_at91_reset,
.start = ohci_at91_start,
.hub_status_data = ohci_at91_hub_status_data,
.hub_control =ohci_at91_hub_control,
}