struct usb_device_id

2024-06-04 11:38
文章标签 struct usb device id

本文主要是介绍struct usb_device_id,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

struct usb_device_id {/* which fields to match against? */__u16		match_flags;/* Used for product specific matches; range is inclusive */__u16		idVendor;                   //供应商ID__u16		idProduct;                  //产品ID__u16		bcdDevice_lo;__u16		bcdDevice_hi;/* Used for device class matches */__u8		bDeviceClass;               //设备类型__u8		bDeviceSubClass;            //设备子类型__u8		bDeviceProtocol;            //协议/* Used for interface class matches */__u8		bInterfaceClass;            //接口类__u8		bInterfaceSubClass;         //接口子类__u8		bInterfaceProtocol;         //接口协议/* not matched against */kernel_ulong_t	driver_info;
};

相关宏:

/* Some useful macros to use to create struct usb_device_id */
#define USB_DEVICE_ID_MATCH_VENDOR		0x0001
#define USB_DEVICE_ID_MATCH_PRODUCT		0x0002
#define USB_DEVICE_ID_MATCH_DEV_LO		0x0004
#define USB_DEVICE_ID_MATCH_DEV_HI		0x0008
#define USB_DEVICE_ID_MATCH_DEV_CLASS		0x0010
#define USB_DEVICE_ID_MATCH_DEV_SUBCLASS	0x0020
#define USB_DEVICE_ID_MATCH_DEV_PROTOCOL	0x0040
#define USB_DEVICE_ID_MATCH_INT_CLASS		0x0080
#define USB_DEVICE_ID_MATCH_INT_SUBCLASS	0x0100
#define USB_DEVICE_ID_MATCH_INT_PROTOCOL	0x0200

#define USB_DEVICE_ID_MATCH_DEVICE \(USB_DEVICE_ID_MATCH_VENDOR | USB_DEVICE_ID_MATCH_PRODUCT)
#define USB_DEVICE_ID_MATCH_DEV_RANGE \(USB_DEVICE_ID_MATCH_DEV_LO | USB_DEVICE_ID_MATCH_DEV_HI)
#define USB_DEVICE_ID_MATCH_DEVICE_AND_VERSION \(USB_DEVICE_ID_MATCH_DEVICE | USB_DEVICE_ID_MATCH_DEV_RANGE)
#define USB_DEVICE_ID_MATCH_DEV_INFO \(USB_DEVICE_ID_MATCH_DEV_CLASS | \USB_DEVICE_ID_MATCH_DEV_SUBCLASS | \USB_DEVICE_ID_MATCH_DEV_PROTOCOL)
#define USB_DEVICE_ID_MATCH_INT_INFO \(USB_DEVICE_ID_MATCH_INT_CLASS | \USB_DEVICE_ID_MATCH_INT_SUBCLASS | \USB_DEVICE_ID_MATCH_INT_PROTOCOL)/*** USB_DEVICE - macro used to describe a specific usb device* @vend: the 16 bit USB Vendor ID* @prod: the 16 bit USB Product ID** This macro is used to create a struct usb_device_id that matches a* specific device.*/
#define USB_DEVICE(vend, prod) \.match_flags = USB_DEVICE_ID_MATCH_DEVICE, \.idVendor = (vend), \.idProduct = (prod)
/*** USB_DEVICE_VER - describe a specific usb device with a version range* @vend: the 16 bit USB Vendor ID* @prod: the 16 bit USB Product ID* @lo: the bcdDevice_lo value* @hi: the bcdDevice_hi value** This macro is used to create a struct usb_device_id that matches a* specific device, with a version range.*/
#define USB_DEVICE_VER(vend, prod, lo, hi) \.match_flags = USB_DEVICE_ID_MATCH_DEVICE_AND_VERSION, \.idVendor = (vend), \.idProduct = (prod), \.bcdDevice_lo = (lo), \.bcdDevice_hi = (hi)/*** USB_DEVICE_INTERFACE_PROTOCOL - describe a usb device with a specific interface protocol* @vend: the 16 bit USB Vendor ID* @prod: the 16 bit USB Product ID* @pr: bInterfaceProtocol value** This macro is used to create a struct usb_device_id that matches a* specific interface protocol of devices.*/
#define USB_DEVICE_INTERFACE_PROTOCOL(vend, prod, pr) \.match_flags = USB_DEVICE_ID_MATCH_DEVICE | \USB_DEVICE_ID_MATCH_INT_PROTOCOL, \.idVendor = (vend), \.idProduct = (prod), \.bInterfaceProtocol = (pr)/*** USB_DEVICE_INFO - macro used to describe a class of usb devices* @cl: bDeviceClass value* @sc: bDeviceSubClass value* @pr: bDeviceProtocol value** This macro is used to create a struct usb_device_id that matches a* specific class of devices.*/
#define USB_DEVICE_INFO(cl, sc, pr) \.match_flags = USB_DEVICE_ID_MATCH_DEV_INFO, \.bDeviceClass = (cl), \.bDeviceSubClass = (sc), \.bDeviceProtocol = (pr)/*** USB_INTERFACE_INFO - macro used to describe a class of usb interfaces* @cl: bInterfaceClass value* @sc: bInterfaceSubClass value* @pr: bInterfaceProtocol value** This macro is used to create a struct usb_device_id that matches a* specific class of interfaces.*/
#define USB_INTERFACE_INFO(cl, sc, pr) \.match_flags = USB_DEVICE_ID_MATCH_INT_INFO, \.bInterfaceClass = (cl), \.bInterfaceSubClass = (sc), \.bInterfaceProtocol = (pr)/*** USB_DEVICE_AND_INTERFACE_INFO - describe a specific usb device with a class of usb interfaces* @vend: the 16 bit USB Vendor ID* @prod: the 16 bit USB Product ID* @cl: bInterfaceClass value* @sc: bInterfaceSubClass value* @pr: bInterfaceProtocol value** This macro is used to create a struct usb_device_id that matches a* specific device with a specific class of interfaces.** This is especially useful when explicitly matching devices that have* vendor specific bDeviceClass values, but standards-compliant interfaces.*/
#define USB_DEVICE_AND_INTERFACE_INFO(vend, prod, cl, sc, pr) \.match_flags = USB_DEVICE_ID_MATCH_INT_INFO \| USB_DEVICE_ID_MATCH_DEVICE, \.idVendor = (vend), \.idProduct = (prod), \.bInterfaceClass = (cl), \.bInterfaceSubClass = (sc), \.bInterfaceProtocol = (pr)


这篇关于struct usb_device_id的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1029975

相关文章

USB - USB在消费领域的应用

Switching in USB Consumer Applications 通用串行总线(USB)已成为满足终端设备之间日益增长的快速数据传输需求的主流接口--例如,在个人电脑和便携式设备(如手机、数码相机和个人媒体播放器)之间下载和上传数据。 The universal serial bus (USB) has become a dominant

利用AT命令获取所在位置的小区号LAC和基站号ID,基站ID转换成经纬度

最近在做一个基站ID转换成经纬度的功能。     1.先发AT指令:AT+CREG=2     2.再发AT指令:AT+CREG?     获得返回值:     +CREG:     2,1,"A530","0161F10F",6 A530为LAC,0161F10F为基站ID 然后将获取的LAC,和基站ID,通

离线linux通过USB连接并使用手机网络

离线linux通过USB连接并使用手机网络 引场景 引 离线环境要安装一些软件特别麻烦,要自己去官网下载对应的包,然后上传到服务器上,再解压,编译,执行,配置变量等等,错一步都可能安装失败。有网络的话使用yum或者是docker镜像来安装就非常方便。这里记录一下之前在centos上通过USB连接手机并使用手机网络来做这些基础工作时所遇到的网络问题。 场景 首先手机连上服务器主

平面设计软件PS/AI/ID/CDR怎么选怎么下载(附教程)

随着设计行业的普遍化,平面设计软件也越来越多且功能越来越强大。平面设计软件需要在电脑上运行使用,来进行平面画面、平面文字的设计工作。如大家所了解的,Adobe Photoshop、Adobe Illustrator、CorelDRAW、Adobe InDesign是平面设计中最常用的电脑软件工具,被业内称为平面设计四小花旦。 今天,与大家一起探讨、学习这四款平面设计软件的功能特点及用途。

AG32 MCU是否支持DFU下载实现USB升级

1、AG32 MCU是否支持DFU下载实现USB升级呢? 先说答案是NO. STM32 可以通过内置DFU实现USB升级,AG32 MCU目前不支持。但用户可以自己写一个DFU, 作为二次boot. 2、AG32 MCU可支持的下载方式有哪些呢? 我们AG32裸机下载只支持uart和jtag. 用户可以通过UART实现ISP升级。所以虽然不支持DFU,但是用户仍然可以通过UART实现升级。 3

[驱动] 所有Device设备文件类型释义

#define FILE_DEVICE_BEEP 0x00000001 // 蜂鸣器设备#define FILE_DEVICE_CD_ROM 0x00000002 // CD光驱设备#define FILE_DEVICE_CD_ROM_FILE_SYSTEM 0x00000003 // CD光驱文件系统设备#define FILE_D

华为---理解OSPF Route-ID(五)

9.5 理解OSPF Route-ID 9.5.1 原理概述 一些动态路由协议要求使用Router-ID作为路由器的身份标示,如果在启动这些路由协议时没有指定Router-ID,则默认使用路由器全局下的路由管理Router-ID。 Router-ID选举规则为,如果通过Router-ID命令配置了Router-ID,则按照配置结果设置。在没有配置Router-ID的情况下,如果存在配置了IP

Python 全栈系列255 UCS实践:按ID同步数据

说明 这是一个常见的使用场景,实测下来效果良好。 内容 1 实验场景 将库中所有的数据取出,送到队列 本质上,这是一种单向不返回的模式。除了在遍历全库有用,在进行回测时也是一样的,时间就是单向不返回的。 通过UCS,将任意离散的数据记录归并到了一个更大的单位下。按照brick、block、part、shard四个层级,使得数据的管理兼顾到人的记忆特性,以及程序批量处理的效率。一个

全局唯一ID生成

全局ID生成器,是一种在分布式系统下用来生成全局唯一ID的工具需满足以下特性: 唯一性、递增性、安全性、高可用、高性能 生成在所有库或表中都满足唯一得ID 实现: 利用Redis的自增功能 INCRBY key increment (INCRBY | Docs),并在这个自增值上,拼接其它内容: ID的组成部分:符号位:1bit,永远为0 时间戳:31bit,以秒为单位,可以

数据库中数据的id生成和算法

id生成策略 自增主键 一般使用整数类型的id可使用自增主键的策略去生成id 优点: 简单、易于使用和理解。保证唯一性,无需额外的查询操作。提高查询性能,因为ID是有序的,且支持索引。 缺点: 不适用于分布式系统,因为每个节点都需要维护一个独立的计数器,可能会导致冲突和性能问题。暴露了表中的数据增长模式,可能导致信息泄漏和数据分析的问题。 使用方法:可使用Mybatis-Plus