blob: d8990446c85bb4a0ce58ecebd281178494c8e873 [file] [log] [blame]
/*
* Copyright (c) 2011, The Linux Foundation. All rights reserved.
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
* only version 2 as published by the Free Software Foundation.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details
*/
#ifndef __F_CCID_H
#define __F_CCID_H
#define PROTOCOL_TO 0x01
#define PROTOCOL_T1 0x02
#define ABDATA_SIZE 512
/* define for dwFeatures for Smart Card Device Class Descriptors */
/* No special characteristics */
#define CCID_FEATURES_NADA 0x00000000
/* Automatic parameter configuration based on ATR data */
#define CCID_FEATURES_AUTO_PCONF 0x00000002
/* Automatic activation of ICC on inserting */
#define CCID_FEATURES_AUTO_ACTIV 0x00000004
/* Automatic ICC voltage selection */
#define CCID_FEATURES_AUTO_VOLT 0x00000008
/* Automatic ICC clock frequency change */
#define CCID_FEATURES_AUTO_CLOCK 0x00000010
/* Automatic baud rate change */
#define CCID_FEATURES_AUTO_BAUD 0x00000020
/*Automatic parameters negotiation made by the CCID */
#define CCID_FEATURES_AUTO_PNEGO 0x00000040
/* Automatic PPS made by the CCID according to the active parameters */
#define CCID_FEATURES_AUTO_PPS 0x00000080
/* CCID can set ICC in clock stop mode */
#define CCID_FEATURES_ICCSTOP 0x00000100
/* NAD value other than 00 accepted (T=1 protocol in use) */
#define CCID_FEATURES_NAD 0x00000200
/* Automatic IFSD exchange as first exchange (T=1 protocol in use) */
#define CCID_FEATURES_AUTO_IFSD 0x00000400
/* TPDU level exchanges with CCID */
#define CCID_FEATURES_EXC_TPDU 0x00010000
/* Short APDU level exchange with CCID */
#define CCID_FEATURES_EXC_SAPDU 0x00020000
/* Short and Extended APDU level exchange with CCID */
#define CCID_FEATURES_EXC_APDU 0x00040000
/* USB Wake up signaling supported on card insertion and removal */
#define CCID_FEATURES_WAKEUP 0x00100000
#define CCID_NOTIFY_CARD _IOW('C', 1, struct usb_ccid_notification)
#define CCID_NOTIFY_HWERROR _IOW('C', 2, struct usb_ccid_notification)
#define CCID_READ_DTR _IOR('C', 3, int)
struct usb_ccid_notification {
unsigned char buf[4];
} __packed;
struct ccid_bulk_in_header {
unsigned char bMessageType;
unsigned long wLength;
unsigned char bSlot;
unsigned char bSeq;
unsigned char bStatus;
unsigned char bError;
unsigned char bSpecific;
unsigned char abData[ABDATA_SIZE];
unsigned char bSizeToSend;
} __packed;
struct ccid_bulk_out_header {
unsigned char bMessageType;
unsigned long wLength;
unsigned char bSlot;
unsigned char bSeq;
unsigned char bSpecific_0;
unsigned char bSpecific_1;
unsigned char bSpecific_2;
unsigned char APDU[ABDATA_SIZE];
} __packed;
#endif