usb

来源:互联网 发布:trittec防霾窗纱 知乎 编辑:程序博客网 时间:2024/04/29 07:43

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

}


ohci_at91_hc_driver
{
    .reset = ohci_at91_reset,
    .start = ohci_at91_start,
    
    .hub_status_data = ohci_at91_hub_status_data,
    .hub_control =ohci_at91_hub_control,
}
0 0