ehci ohci 驱动逻辑
1. EHCI
ehci_platform_probe:
platform_get_irq
usb_hcd_request_irqs
usb_hcd_irq 使用的是ehci的irq
hcd->driver->irq(hcd) 调用ehci的usb_hcd的irq
usb_create_hcd() 使用的ehci_platform_hc_driver是被ehci-hcd覆盖过的,值拷贝,创建一个主机控制器驱动
usb_add_hcd()
hcd_buffer_create() 创建DMA buff
usb_register_bus() 注册这条USB总线
usb_alloc_dev() 分配root hub设备
usb_hcd_request_irqs() 申请中断服务函数usb_hcd_irq
register_root_hub() 注册root-hub
sysfs_create_group() 创建root-hub的sysfs文件 ehci_hc_driver结构体:
.ehci_setup
ehci_init
ehci_halt
ehci_reset .ehci_run
add_sysfs_files .ehci_stop
remove_sysfs_files .ehci_shutdown
hrtimer_cancel .ehci_hub_control
体现出各种typeReq的实际操作!可以看出支持哪些feature,例如GetHubStatus是不支持的! .reset = ehci_setup
但是使用的不是这个函数,见ehci_init_driver(),调用的是函数:ehci_platform_reset(),但是最终还是会调用到这个函数
2. OHCI
ohci-platform中只是获取一个设备树中的中断号和映射寄存器io内存,然后执行下面的操作,剩下的全归ohci-hcd.c做了
ohci_platform_probe
platform_get_irq
usb_hcd_request_irqs
usb_hcd_irq 使用的是ohci的irq
hcd->driver->irq(hcd) 调用ohci的usb_hcd的irq
usb_create_hcd
usb_bus_init
usb_add_hcd
hcd_buffer_create
usb_register_bus
usb_alloc_dev
register_root_hub
sysfs_create_group
参考:https://blog.csdn.net/chenliang0224/article/details/79692374
ehci ohci 驱动逻辑的更多相关文章
- EDK II之USB主控制器(EHCI)驱动的实现框架
本文简要介绍一下UEFI中EHCI驱动的代码实现框架: 下图是HCDI: 上图是Host驱动程序向上层驱动提供的接口图: 1.大部分接口的最后动作都是去操作主控制器寄存器,ECHI的spec:< ...
- 《网蜂A8实战演练》——8.Linux USB 主机控制器和设备驱动
USB 的全称是 Universal Serial Bus,顾名思义:通用串行总线. 提到总线,联想一下,在你心目中总线总是用来干嘛的?还记得 I2C 总线? I2C 总线上挂有二条信号线,一条是 S ...
- linux设备驱动之USB主机控制器驱动分析 【转】
转自:http://blog.chinaunix.net/uid-20543183-id-1930831.html ---------------------------------------- ...
- Windows网络驱动、NDIS驱动(微端口驱动、中间层驱动、协议驱动)、TDI驱动(网络传输层过滤)、WFP(Windows Filtering Platform)
catalog . 引言 . Windows 2000网络结构和OSI模型 . NDIS驱动 . NDIS微端口驱动编程实例 . NDIS中间层驱动编程实例 . NDIS协议层驱动编程实例 . TDI ...
- Linux USB摄像头驱动【转】
本文转载自:http://www.itdadao.com/articles/c15a509940p0.html 在 cortex-a8 中,可接入摄像头的接口通常可以分为两种, CAMERA 接口和 ...
- Linux设备驱动剖析之IIC(四)
558行,又重试2次. 560行,调用s3c24xx_i2c_doxfer函数: static int s3c24xx_i2c_doxfer(struct s3c24xx_i2c *i2c, stru ...
- Linux块设备驱动_WDS
推荐书:<Linux内核源代码情景分析> 1.字符设备驱动和使用中等待某一事件的方法①查询方式②休眠唤醒,但是这种没有超时时间③poll机制,在休眠唤醒基础上加一个超时时间④异步通知,异步 ...
- Linux USB 摄像头驱动
在 cortex-a8 中,可接入摄像头的接口通常可以分为两种, CAMERA 接口和 USB 接口的摄像头.这一章主要是介绍 USB 摄像头的设备驱动程序.在我们印象中,驱动程序都是一个萝卜一个坑, ...
- 框架-设备与驱动的拆分及实现-I2C
目录 前言 笔录草稿 概要 原理及实现方法 IIC 例子实战-驱动 1. 创建文件 2. 创建 I2C 驱动名字列表 3. 组建 I2C 驱动结构体 4. 编写-注册 I2C 驱动函数 5. 创建 I ...
随机推荐
- Codeforces Round #526 (Div. 2) Solution
A. The Fair Nut and Elevator Solved. 签. #include <bits/stdc++.h> using namespace std; #define ...
- Codeforces Round #265 (Div. 2) E
这题说的是给了数字的字符串 然后有n种的操作没次将一个数字替换成另一个字符串,求出最后形成的字符串的 数字是多大,我们可以逆向的将每个数推出来,计算出他的值和位数记住位数用10的k次方来记 1位就是1 ...
- 图解Kerberos认证工作原理
本文是我在看了这篇英文说明之后的总结 https://technet.microsoft.com/zh-cn/library/cc961976.aspx 是总结,不是翻译,所以是我看后按自己的理解写的 ...
- linux时区问题
时区问题很麻烦- 0.查看时间命令 #date 查看系统时间 #date -s 修改时间,看下面的例子 #// (将系统日期设定为2014年07月16日) #:: (将系统时间设定为下午11::) # ...
- pyDay17
1.用filter求素数. 埃拉托色尼筛选法. #!/usr/bin/env python3 # -*- coding: utf-8 -*- def _odd_iter(): n = 1 while ...
- Java学习笔记之MyEclipse 2017 CI 7、CI 8、CI 9和CI 10的安装与激活
0x00 前言 本文介绍MyEclipse 2017 CI 7.CI 8.CI 9和CI 10的安装与激活. 重要提示:此方法理论上应该能激活MyEclipse 2017 CI所有系列,即激活方法是通 ...
- 20145307陈俊达《网络对抗》Exp3 免杀原理与实践
20145307陈俊达<网络对抗>Exp3 免杀原理与实践 基础问题回答 杀软是如何检测出恶意代码的? 恶意代码中一般会有一段有较明显特征的代码也就是特征码,如果杀毒软件检测到有程序包含的 ...
- JS实现焦点图轮播效果
大家平时逛淘宝网的时候,在首页就能看到焦点图轮播的效果,就是这个样子的: PS:想起每每打开淘宝,总会被这个玩意先夺眼球,偶尔还去点进去溜溜,幸好我定力好,总能控制住自己的购买欲望,为自己不用剁手感到 ...
- Ubuntu16.04下安装tensorflow(GPU加速)【转】
本文转载自:https://blog.csdn.net/qq_30520759/article/details/78947034 版权声明:本文为博主原创文章,未经博主允许不得转载. https:// ...
- noip2018 爆炸记
noip2018 爆炸记 day-4 ~ day-2 最后考了两套模拟题,题目好水啊,但是我还是爆炸了. 第一套最后一道题竟然时一道毒瘤打表?但是我看着插头DP可做啊..(然而我并不会插头DP)然后还 ...