aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/staging/ft1000/ft1000-usb/ft1000_ioctl.h
blob: e9472bebda0be7daef781a9bd5266e51720254c3 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
/*
 *---------------------------------------------------------------------------
 * FT1000 driver for Flarion Flash OFDM NIC Device
 *
 * Copyright (C) 2002 Flarion Technologies, 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 as published by the Free
 * Software Foundation; either version 2 of the License, or (at your option) any
 * later version. 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. You should have received a copy of the GNU General Public
 * License along with this program; if not, write to the
 * Free Software Foundation, Inc., 59 Temple Place -
 * Suite 330, Boston, MA 02111-1307, USA.
 *---------------------------------------------------------------------------
 *
 * File:         ft1000_ioctl.h
 *
 * Description:    Common structures and defines relating to IOCTL
 *
 * History:
 * 11/5/02    Whc                Created.
 *
 *---------------------------------------------------------------------------
 */
#ifndef _FT1000IOCTLH_
#define _FT1000IOCTLH_

struct IOCTL_GET_VER {
	unsigned long drv_ver;
} __packed;

/* Data structure for Dsp statistics */
struct IOCTL_GET_DSP_STAT {
	unsigned char DspVer[DSPVERSZ];        /* DSP version number */
	unsigned char HwSerNum[HWSERNUMSZ];    /* Hardware Serial Number */
	unsigned char Sku[SKUSZ];              /* SKU */
	unsigned char eui64[EUISZ];            /* EUI64 */
	unsigned short ConStat;                /* Connection Status */
	/*    Bits 0-3 = Connection Status Field */
	/*               0000=Idle (Disconnect) */
	/*               0001=Searching */
	/*               0010=Active (Connected) */
	/*               0011=Waiting for L2 down */
	/*               0100=Sleep */
	unsigned short LedStat;                /* Led Status */
	/*    Bits 0-3   = Signal Strength Field */
	/*                 0000 = -105dBm to -92dBm */
	/*                 0001 = -92dBm to -85dBm */
	/*                 0011 = -85dBm to -75dBm */
	/*                 0111 = -75dBm to -50dBm */
	/*                 1111 = -50dBm to 0dBm */
	/*    Bits 4-7   = Reserved */
	/*    Bits 8-11  = SNR Field */
	/*                 0000 = <2dB */
	/*                 0001 = 2dB to 8dB */
	/*                 0011 = 8dB to 15dB */
	/*                 0111 = 15dB to 22dB */
	/*                 1111 = >22dB */
	/*    Bits 12-15 = Reserved */
	unsigned long nTxPkts;                /* Number of packets transmitted
					       * from host to dsp
					       */
	unsigned long nRxPkts;                /* Number of packets received from
					       * dsp to host
					       */
	unsigned long nTxBytes;               /* Number of bytes transmitted
					       * from host to dsp
					       */
	unsigned long nRxBytes;               /* Number of bytes received from
					       * dsp to host
					       */
	unsigned long ConTm;                  /* Current session connection time
					       * in seconds
					       */
	unsigned char CalVer[CALVERSZ];       /* Proprietary Calibration
					       * Version
					       */
	unsigned char CalDate[CALDATESZ];     /* Proprietary Calibration Date */
} __packed;

/* Data structure for Dual Ported RAM messaging between Host and Dsp */
struct IOCTL_DPRAM_BLK {
	unsigned short total_len;
	struct pseudo_hdr pseudohdr;
	unsigned char buffer[1780];
} __packed;

struct IOCTL_DPRAM_COMMAND {
	unsigned short extra;
	struct IOCTL_DPRAM_BLK dpram_blk;
} __packed;

/*
 * Custom IOCTL command codes
 */
#define FT1000_MAGIC_CODE      'F'

#define IOCTL_REGISTER_CMD	0
#define IOCTL_SET_DPRAM_CMD	3
#define IOCTL_GET_DPRAM_CMD	4
#define IOCTL_GET_DSP_STAT_CMD	6
#define IOCTL_GET_VER_CMD	7
#define IOCTL_CONNECT		10
#define IOCTL_DISCONNECT	11

#define IOCTL_FT1000_GET_DSP_STAT _IOR(FT1000_MAGIC_CODE,		\
				       IOCTL_GET_DSP_STAT_CMD,		\
				       struct IOCTL_GET_DSP_STAT)
#define IOCTL_FT1000_GET_VER _IOR(FT1000_MAGIC_CODE, IOCTL_GET_VER_CMD, \
				  struct IOCTL_GET_VER)
#define IOCTL_FT1000_CONNECT _IO(FT1000_MAGIC_CODE, IOCTL_CONNECT)
#define IOCTL_FT1000_DISCONNECT _IO(FT1000_MAGIC_CODE, IOCTL_DISCONNECT)
#define IOCTL_FT1000_SET_DPRAM _IOW(FT1000_MAGIC_CODE, IOCTL_SET_DPRAM_CMD, \
				    struct IOCTL_DPRAM_BLK)
#define IOCTL_FT1000_GET_DPRAM _IOR(FT1000_MAGIC_CODE, IOCTL_GET_DPRAM_CMD, \
				    struct IOCTL_DPRAM_BLK)
#define IOCTL_FT1000_REGISTER  _IOW(FT1000_MAGIC_CODE, IOCTL_REGISTER_CMD, \
				    unsigned short *)

#endif /* _FT1000IOCTLH_ */