|  | /* SPDX-License-Identifier: GPL-2.0-or-later */ | 
|  | /* | 
|  | *  Copyright (c) 2018  Vincent Pelletier | 
|  | */ | 
|  | /* | 
|  | */ | 
|  | #ifndef __CCID_H | 
|  | #define __CCID_H | 
|  |  | 
|  | #include <linux/types.h> | 
|  |  | 
|  | #define USB_INTERFACE_CLASS_CCID 0x0b | 
|  |  | 
|  | struct ccid_descriptor { | 
|  | __u8  bLength; | 
|  | __u8  bDescriptorType; | 
|  | __le16 bcdCCID; | 
|  | __u8  bMaxSlotIndex; | 
|  | __u8  bVoltageSupport; | 
|  | __le32 dwProtocols; | 
|  | __le32 dwDefaultClock; | 
|  | __le32 dwMaximumClock; | 
|  | __u8  bNumClockSupported; | 
|  | __le32 dwDataRate; | 
|  | __le32 dwMaxDataRate; | 
|  | __u8  bNumDataRatesSupported; | 
|  | __le32 dwMaxIFSD; | 
|  | __le32 dwSynchProtocols; | 
|  | __le32 dwMechanical; | 
|  | __le32 dwFeatures; | 
|  | __le32 dwMaxCCIDMessageLength; | 
|  | __u8  bClassGetResponse; | 
|  | __u8  bClassEnvelope; | 
|  | __le16 wLcdLayout; | 
|  | __u8  bPINSupport; | 
|  | __u8  bMaxCCIDBusySlots; | 
|  | } __attribute__ ((packed)); | 
|  |  | 
|  | #endif /* __CCID_H */ |