Linux USB subsystem --- register generic usb driver
2012-05-15 18:11
357 查看
Linux USB subsystem --- register generic usb driver
[Linux 3.2] [driver/usb/core/driver.c]
函数:usb_register_device_driver
[cpp]
view plaincopy
/**
* usb_register_device_driver - register a USB device (not interface) driver
* @new_udriver: USB operations for the device driver
* @owner: module owner of this driver.
*
* Registers a USB device driver with the USB core. The list of
* unattached devices will be rescanned whenever a new driver is
* added, allowing the new driver to attach to any recognized devices.
* Returns a negative error code on failure and 0 on success.
*/
int usb_register_device_driver(struct usb_device_driver *new_udriver,
struct module *owner)
{
int retval = 0;
if (usb_disabled())
return -ENODEV;
new_udriver->drvwrap.for_devices = 1;
new_udriver->drvwrap.driver.name = (char *) new_udriver->name;
new_udriver->drvwrap.driver.bus = &usb_bus_type;
new_udriver->drvwrap.driver.probe = usb_probe_device;
new_udriver->drvwrap.driver.remove = usb_unbind_device;
new_udriver->drvwrap.driver.owner = owner;
retval = driver_register(&new_udriver->drvwrap.driver);
if (!retval) {
pr_info("%s: registered new device driver %s\n",
usbcore_name, new_udriver->name);
usbfs_update_special();
} else {
printk(KERN_ERR "%s: error %d registering device "
" driver %s\n",
usbcore_name, retval, new_udriver->name);
}
return retval;
}
EXPORT_SYMBOL_GPL(usb_register_device_driver);
此过程是注册一个usb的通用程驱动。驱动注册的过程与usbfs驱动注册类似。其结果是:在/sys/bus/usb/drivers/下面创建usb目录。在usb目录下面创建如下属性文件。
bind uevent unbind
至此,整个usb core的初始化过程完成。
后面将进入到USB host controller的初始化。
[Linux 3.2] [driver/usb/core/driver.c]
函数:usb_register_device_driver
[cpp]
view plaincopy
/**
* usb_register_device_driver - register a USB device (not interface) driver
* @new_udriver: USB operations for the device driver
* @owner: module owner of this driver.
*
* Registers a USB device driver with the USB core. The list of
* unattached devices will be rescanned whenever a new driver is
* added, allowing the new driver to attach to any recognized devices.
* Returns a negative error code on failure and 0 on success.
*/
int usb_register_device_driver(struct usb_device_driver *new_udriver,
struct module *owner)
{
int retval = 0;
if (usb_disabled())
return -ENODEV;
new_udriver->drvwrap.for_devices = 1;
new_udriver->drvwrap.driver.name = (char *) new_udriver->name;
new_udriver->drvwrap.driver.bus = &usb_bus_type;
new_udriver->drvwrap.driver.probe = usb_probe_device;
new_udriver->drvwrap.driver.remove = usb_unbind_device;
new_udriver->drvwrap.driver.owner = owner;
retval = driver_register(&new_udriver->drvwrap.driver);
if (!retval) {
pr_info("%s: registered new device driver %s\n",
usbcore_name, new_udriver->name);
usbfs_update_special();
} else {
printk(KERN_ERR "%s: error %d registering device "
" driver %s\n",
usbcore_name, retval, new_udriver->name);
}
return retval;
}
EXPORT_SYMBOL_GPL(usb_register_device_driver);
此过程是注册一个usb的通用程驱动。驱动注册的过程与usbfs驱动注册类似。其结果是:在/sys/bus/usb/drivers/下面创建usb目录。在usb目录下面创建如下属性文件。
bind uevent unbind
至此,整个usb core的初始化过程完成。
后面将进入到USB host controller的初始化。
相关文章推荐
- Linux USB subsystem --- register generic usb driver
- Linux USB subsystem --- EHCI host controller register
- Linux USB subsystem --- USBFS driver registration
- Linux USB subsystem --- EHCI host controller register
- Linux USB subsystem --- USBFS driver registration
- The Linux USB Input Subsystem, Part I
- Linux功耗管理(20)_Linux cpuidle framework(3)_ARM64 generic CPU idle driver
- Linux USB subsystem --- USB create HCD
- Linux Platform Device and Driver,platform_add_devices()->platform_driver_register()
- 我对linux理解之driver_register
- 我对linux理解之driver_register
- Linux cpuidle framework(3)_ARM64 generic CPU idle driver
- Linux USB subsystem --- USB Hub initialize
- linux下设备device_register和驱动driver_register先后注册的影响和关系
- understanding linux usb ehci device driver(1)
- linux I2C 驱动之----i2c驱动的注册过程(i2c_register_driver->driver_register(&driver->driver)->driver_find)
- 我对linux理解之driver_register
- Linux usb_device usb_bus usb_driver的三角关系-USB Bus
- Linux USB-Wifi Driver
- Linux Platform Device and Driver : platform_add_devices()->platform_driver_register()