zoukankan      html  css  js  c++  java
  • Linux 内核驱动支持什么设备

    struct usb_device_id 结构提供了这个驱动支持的一个不同类型 USB 设备的列表. 这个 列表被 USB 核心用来决定给设备哪个驱动, 并且通过热插拔脚本来决定哪个驱动自动加载, 当特定设备被插入系统时.

    struct usb_device_id 结构定义有下面的成员:

        u16 match_flags

    决定设备应当匹配结构中下列的哪个成员. 这是一个位成员, 由在 include/linux/mod_devicetable.h 文件中指定的不同的 USB_DEVICE_ID_MATCH_* 值所定义. 这个成员常常从不直接设置, 但是由 USB_DEVICE 类型宏来初始化.

        u16 idVendor

    这个设备的 USB 供应商 ID. 这个数由 USB 论坛分配给它的成员并且不能由任何 别的构成.

        u16 idProduct

    这个设备的 USB 产品 ID. 所有的有分配给他们的供应商 ID 的供应商可以随意管 理它们的产品 ID.

        u16 bcdDevice_lo

        u16 bcdDevice_hi

    定义供应商分配的产品版本号的高低范围. bcdDevice_hi 值包括其中; 它的值是 最高编号的设备号. 这 2 个值以 BCD 方式编码. 这些变量, 连同 idVendor 和 idProduct, 用来定义一个特定的设备版本.

        u8 bDeviceClass

        u8 bDeviceSubClass

        u8 bDeviceProtocol

    定义类, 子类, 和设备协议, 分别地. 这些值被 USB 论坛分配并且定义在 USB 规 范中. 这些值指定这个设备的行为, 包括设备上所有的接口.

        u8 bInterfaceClass

        u8 bInterfaceSubClass

        u8 bInterfaceProtocol

    非常象上面的设备特定值, 这些定义了类, 子类, 和单个接口协议, 分别地. 这些 值由 USB 论坛指定并且定义在 USB 规范中.

    kernel_ulong_t driver_info

    这个值不用来匹配, 但是它持有信息, 驱动可用来在 USB 驱动的探测回调函数区 分不同的设备.

    至于 PCI 设备, 有几个宏可用来初始化这个结构: USB_DEVICE(vendor, product)

    创建一个 struct usb_device_id, 可用来只匹配特定供应商和产品 ID 值. 这是 非常普遍用的, 对于需要特定驱动的 USB 设备.

    USB_DEVICE_VER(vendor, product, lo, hi)

    创建一个 struct usb_device_id, 用来在一个版本范围中只匹配特定供应商和产 品 ID 值.

    LINUX DEVICE DRIVERS,3RD EDITION

    USB_DEVICE_INFO(class, subclass, protocol)

    创建一个 struct usb_device_id, 可用来只匹配一个特定类的 USB 设备.

    USB_INTERFACE_INFO(class, subclass, protocol)

    创建一个 struct usb_device_id, 可用来只匹配一个特定类的 USB 接口.

    对于一个简单的 USB 设备驱动, 只控制来自一个供应商的一个单一 USB 设备, struct usb_device_id 表可定义如:

    /* table of devices that work with this driver */ static struct usb_device_id skel_table [] = {

    { USB_DEVICE(USB_SKEL_VENDOR_ID, USB_SKEL_PRODUCT_ID) },

    { } /* Terminating entry */

    };

    MODULE_DEVICE_TABLE (usb, skel_table);

    至于 PCI 驱动, MODULE_DEVICE_TABLE 宏有必要允许用户空间工具来发现这个驱动可控 制什么设备. 但是对于 USB 驱动, 字符串 usb 必须是在这个宏中的第一个值.

  • 相关阅读:
    php7.4 降级 php7.1 的坑
    python 记录网页 生成pdf
    Mac 安装常用软件环境
    python 2.7 操作 excel
    007整数反转
    006Z字形变换
    005最长回文子串
    004寻找两个正序数组的中位数
    003无重复字符的最长子串
    002两数相加
  • 原文地址:https://www.cnblogs.com/fanweisheng/p/11147369.html
Copyright © 2011-2022 走看看