linux usb代码,Linux USB Host Controller的初始化代码框架分析
usb_hcd_omap_probe (const struct hc_driver *driver) (dev/ohci/ohci-omap.c)
在模块初始化时被platform_driver_register()调用,用来初始化与ohci_hcd_omap_driver
相匹配的usb主控制器.
->usb_create_hcd(driver); 创建一个代表host-controller的数据结构(struct usb_hcd)并初始化 core/hcd.h
->hcd = kzalloc(sizeof(*hcd) + driver->hcd_priv_size, GFP_KERNEL); 为struct usb_hcd分配一块内存
->usb_bus_init (struct usb_bus *bus); (hcd.c) 初始化代表usb bus的数据结构(struct usb_bus)
->初始化struct usb_hcd的定时器,工作队列
->填充struct usb_hcd的rsrc_start字段:host-controller memory/io的起始物理地址
rsrc_len字段:host-controller memory/io的长度
regs字段:host-controller memory/io映射的内核虚拟地址。
->ohci_hcd_init(struct ohci_hcd *ohci); (dev/ohci/ohci-mem.c)
->usb_add_hcd(struct usb_hcd *hcd,unsigned int irqnum, unsigned long irqflags) (/core/hcd.h)
完成struct usb_hcd剩余的初始化工作
->hcd_buffer_create(hcd):创建dmapool
->usb_register_bus(usb_bus):注册usb bus
->usb_alloc_dev(NULL, &hcd->self, 0): (core/usb.c)
处理主控制器hcd上的根Hub(hcd->self.root_hub),这里做的就是为Root Hub申请了一个struct usb_device结构体,并且初始化, 将返回值赋给指针rhdev. Root Hub的parent指针指向了Controller本身.
->ohci_omap_init:完成omap硬件的init工作
->otg_get_transceiver();
->otg_set_host(ohci->transceiver, &ohci_to_hcd(ohci)->self);
针对OTG特性进行的初始化,后面分析
->ohci_init(struct ohci_hcd *ohci); (host/ohci-hcd.c)
->为ohci->hcca分配空间
->ohci_mem_init() 创建ohci->td_cache和ohci->ed_cache的dma_pool
->request_irq(irqnum, &usb_hcd_irq, irqflags,hcd->irq_descr, hcd)
注册中断处理函数.其中中断号是irqnum, 中断服务程序是usb_hcd_irq(struct usb_hcd *hcd) (ohci-hcd.c).
根据usb2.0 spec定义的中断类型有:usb_hcd_irq()根据具体类型执行相应操作,后面分析.
#define OHCI_INTR_SO (1 << 0) /* scheduling overrun */
#define OHCI_INTR_WDH (1 << 1) /* writeback of done_head */
#
linux usb代码,Linux USB Host Controller的初始化代码框架分析相关推荐
- linux v4l2系统详解,Linux摄像头驱动学习之:(一)V4L2_框架分析
这段时间开始搞安卓camera底层驱动了,把以前的的Linux视频驱动回顾一下,本篇主要概述一下vfl2(video for linux 2). 一. V4L2框架: video for linux ...
- 嵌入式Linux——音频设备驱动(1):uda1341音频设备驱动框架分析
简介: 本文主要分析uda1341音频设备驱动的框架,通过分析这个框架了解如何操作音频设备.而本文将分为两部分,第一部分总体介绍uda1341音频设备的框架,而第二部分会结合详细代码分析设备操作流程. ...
- XHCI host controller/device 初始化
1.host controller初始化步骤 Initialize the xHC using MSI-X as the interrupt mechanism 1) 初始化system I/O me ...
- usb驱动 linux,Linux usb驱动
8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 初期教育应是一种娱乐,这样才更容易发现一个人天生的爱好. -- 柏拉图 深深赞同柏拉图的这个观点,人是有天性的,教育无非 ...
- 4g上网卡托 linux,openwrt/LEDE通过USB连接4G网卡或者手机移动网络共享上网(RNDIS)...
本帖最后由 w1634w 于 2017-11-11 13:33 编辑 按照楼主的方法.设置步骤,最终无法实现用本人的小米note顶配版安卓手机通过USB共享网络上网,求解????????????? r ...
- linux 查看usb日志,Linux中显示系统中USB信息的lsusb命令
Linux中显示系统中USB信息的lsusb命令 通用串行总线(USB)被设计成为连接计算机外设的标准,如键盘.鼠标.打印机.数码相机.便携式媒体播放器.磁盘和网络适配器等等 - 来源:Wikiped ...
- Linux驱动——mmc host controller(九)
Linux驱动--mmc host controller(九) 备注: 1. Kernel版本:5.4 2. 使用工具:Source Insight 4.0 文章目录 Linux驱动--mmc ...
- USB学习5---android usb驱动源代码目录说明
kernel\msm-3.18\drivers\usb下目录内容 我们msm8937+android7.1平台编译out目录下usb目录下有编译到的目录如下: 我们先参考kernel\msm-3.18 ...
- i.MX6ULL系统移植:Linux移植6 - Linux 内核移植
一.测试 NXP 官方linux 1.解压 NXP 官方 Linux 内核 tar -vxif linux-imx-rel_imx_4.1.15_2.1.0_ga.tar.bz2 2.清除配置 mak ...
最新文章
- 混合云备份利用自定义Workflow保护MySQL的实践
- 如何使用MSTSC命令远程连接服务器或客户端
- MySQL中的多表连接
- 基于pygame的射击小游戏制作(三)让外星人动起来
- 主成分分析(PCA)原理详解 2016/12/17 · IT技术 · 主成分分析, 数学 分享到: 21 原文出处: 中科春哥 一、PCA简介 1. 相关背景 主成分分析(Principa
- JAVA多线程(一)线程安全问题产生的原因
- mysql 时间差_后端从mysql取值返回0时区时间数据的问题
- 《美团数据平台及数仓建设实践》(209页).PDF
- java外部工具配置_eclipse配置外部工具利用javah编译生成头文件
- C 线程同步的四种方式(Windows)
- Eclipse下载安装Spring插件
- 芜湖市市一中2021年高考成绩查询,2021年芜湖各高中录取分数线预测
- mysql数据库innodb性能优化之缓冲池配置
- Gluster集群搭建
- 2023款ThinkBook 14和15锐龙版区别对比评测选哪个好
- uniapp解决图片底部留白
- 集束搜索BeamSearch
- (3)riak_core系统的工作方式
- 第五章 Java字符串总结
- xcode打包报错Command CodeSign failed with a nonzero exit code的解决方案
热门文章
- 陷波滤波器消除周期噪声python_50Hz 工频电磁场干扰的消除方案
- 自然语言处理——使用词向量(腾讯词向量)
- Android Wi-Fi EAP-TLS/EAP-PEAP/EAP-TTLS(扩展认证协议)简介
- 系统交互流程-订单支付-支付流程-JAVA实战演示
- 使用USB在PC上操作Android手机
- Android ART
- artTemplate基本语法
- oracle clob导入mysql_Oracle数据库中包含CLOB字段表的导出和导入
- 最小采样频率计算公式_《傅里叶光学(九)》 信号采样与重建
- iOS- P12发生错误,无法导入项目