LINUX下USB1.1设备学习小记(4)_uhci(2)
LINUX下USB1.1设备学习小记(4)_uhci(2)
来源: ChinaUnix博客 日期: 2009.03.14 16:44 (共有条评论) 我要评论
好~ 现在万事俱备,只欠uhci硬件的注册了
现在谈一下uhci硬件的组成,uhci的硬件分为两个大的部分,主机控制器和根集线器,如下图
当提交uhci硬件的注册到pci总线后,经过一轮匹配,终于找到了uhci,进入到uhci_pci_driver->probe这个函数下
usb_hcd_pci_probe在/drivers/usb/host/uhci-hcd.c中
int usb_hcd_pci_probe(struct pci_dev *dev, const struct pci_device_id *id)
{
struct hc_driver *driver;
struct usb_hcd *hcd;
int retval;
//判断内核参数是否启用USB
if (usb_disabled())
return -ENODEV;
//判断匹配表是否存在,该表为uhci_pci_driver->id_table中的内容
if (!id)
return -EINVAL;
//取得匹配表中的私有结构,为uhci_driver
driver = (struct hc_driver *)id->driver_data;
//私有结构不存在则返回错误
if (!driver)
return -EINVAL;
//使能pci设备
if (pci_enable_device(dev) 0)
return -ENODEV;
//设置电源为正常状态
dev->current_state = PCI_D0;
//检测是否有中断号
if (!dev->irq)
{
dev_err(&dev->dev,"Found HC with no IRQ. Check BIOS/PCI %s setup!\n",pci_name(dev));
retval = -ENODEV;
goto err1;
}
//创建usb_hcd结构
hcd = usb_create_hcd(driver, &dev->dev, pci_name(dev));
//检测创建是否成功
if (!hcd)
{
retval = -ENOMEM;
goto err1;
}
//检测是否需要映射I/O内存空间,EHCI和OHCI这两个主机控制器有自己的内存空间,访问的时候需要映射到计算机的内存空间中才能对设备进行操作,而UHCI没有自己的内存空间,对UHCI的操作是对IO端口的访问,所以UHCI需要分配IO端口空间
if (driver->flags & HCD_MEMORY)
{
/* EHCI, OHCI */
//这两个设备需要映射I/O内存空间
hcd->rsrc_start = pci_resource_start(dev, 0);
hcd->rsrc_len = pci_resource_len(dev, 0);
if (!request_mem_region(hcd->rsrc_start, hcd->rsrc_len,driver->description))
{
dev_dbg
相关文档:
2007 年 4 月 17 日
Linux® 系统调用 ——
我们每天都在使用它们。不过您清楚系统调用是如何在用户空间和内核之间执行的吗?本文将探究 Linux
系统调用接口(SCI),学习如何添加新的系统调用(以及实现这种功能的其他方法),并介绍与 SCI 有关的一些工具。
系统调用
就是用户空间 ......
VPS使用手记-Linux命令行基础
Written by shine
on 2009, April 21, 4:09 PM. Linux
这里我将列出使用linux
vps
过程中的常用命令,面向的对象是懂一点命令行
的朋友,如果你没有任何命令行基础,建议找本Linux的基础教程来看看。
在讲具体的命令之前,先介绍一下Linux命令行的一些常识:
一条命令一般的格式是这 ......
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 = kz ......
NO
分类
PS1
命令名
用法及参数
功能注解
1
显示目录信息
#
ls
ls -a
列出当前目录下的所有文件,包括以.头的隐含文件
#
ls
ls -l或ll
列出当前目录下文件的详细信息
#
ls
ls -a
显示所有文件,包含隐藏。
#
ls
ls -al
显示所有文件的详细信息。
2
查看路径
#
pwd
pwd
查看当前所在目录的绝 ......