aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/staging/rt2860/iface/rtmp_usb.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/staging/rt2860/iface/rtmp_usb.h')
-rw-r--r--drivers/staging/rt2860/iface/rtmp_usb.h200
1 files changed, 200 insertions, 0 deletions
diff --git a/drivers/staging/rt2860/iface/rtmp_usb.h b/drivers/staging/rt2860/iface/rtmp_usb.h
new file mode 100644
index 00000000000..2e9165effb9
--- /dev/null
+++ b/drivers/staging/rt2860/iface/rtmp_usb.h
@@ -0,0 +1,200 @@
1/*
2 *************************************************************************
3 * Ralink Tech Inc.
4 * 5F., No.36, Taiyuan St., Jhubei City,
5 * Hsinchu County 302,
6 * Taiwan, R.O.C.
7 *
8 * (c) Copyright 2002-2007, Ralink Technology, Inc.
9 *
10 * This program is free software; you can redistribute it and/or modify *
11 * it under the terms of the GNU General Public License as published by *
12 * the Free Software Foundation; either version 2 of the License, or *
13 * (at your option) any later version. *
14 * *
15 * This program is distributed in the hope that it will be useful, *
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
18 * GNU General Public License for more details. *
19 * *
20 * You should have received a copy of the GNU General Public License *
21 * along with this program; if not, write to the *
22 * Free Software Foundation, Inc., *
23 * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
24 * *
25 *************************************************************************
26*/
27
28#ifndef __RTMP_USB_H__
29#define __RTMP_USB_H__
30
31
32#include "../rtusb_io.h"
33
34
35#ifdef LINUX
36#include <linux/usb.h>
37
38typedef struct usb_device * PUSB_DEV;
39typedef struct urb *purbb_t;
40typedef struct usb_ctrlrequest devctrlrequest;
41#endif // LINUX //
42
43extern UCHAR EpToQueue[6];
44
45
46#define RXBULKAGGRE_ZISE 12
47#define MAX_TXBULK_LIMIT (LOCAL_TXBUF_SIZE*(BULKAGGRE_ZISE-1))
48#define MAX_TXBULK_SIZE (LOCAL_TXBUF_SIZE*BULKAGGRE_ZISE)
49#define MAX_RXBULK_SIZE (LOCAL_TXBUF_SIZE*RXBULKAGGRE_ZISE)
50#define MAX_MLME_HANDLER_MEMORY 20
51
52
53// Flags for Bulkflags control for bulk out data
54//
55#define fRTUSB_BULK_OUT_DATA_NULL 0x00000001
56#define fRTUSB_BULK_OUT_RTS 0x00000002
57#define fRTUSB_BULK_OUT_MLME 0x00000004
58
59#define fRTUSB_BULK_OUT_PSPOLL 0x00000010
60#define fRTUSB_BULK_OUT_DATA_FRAG 0x00000020
61#define fRTUSB_BULK_OUT_DATA_FRAG_2 0x00000040
62#define fRTUSB_BULK_OUT_DATA_FRAG_3 0x00000080
63#define fRTUSB_BULK_OUT_DATA_FRAG_4 0x00000100
64
65#define fRTUSB_BULK_OUT_DATA_NORMAL 0x00010000
66#define fRTUSB_BULK_OUT_DATA_NORMAL_2 0x00020000
67#define fRTUSB_BULK_OUT_DATA_NORMAL_3 0x00040000
68#define fRTUSB_BULK_OUT_DATA_NORMAL_4 0x00080000
69
70// TODO:move to ./ate/include/iface/ate_usb.h
71
72
73#define FREE_HTTX_RING(_pCookie, _pipeId, _txContext) \
74{ \
75 if ((_txContext)->ENextBulkOutPosition == (_txContext)->CurWritePosition) \
76 { \
77 (_txContext)->bRingEmpty = TRUE; \
78 } \
79 /*NdisInterlockedDecrement(&(_p)->TxCount); */\
80}
81
82
83
84/******************************************************************************
85
86 USB Bulk operation related definitions
87
88******************************************************************************/
89
90#ifdef LINUX
91#define BULKAGGRE_ZISE 100
92#define RT28XX_PUT_DEVICE usb_put_dev
93#define RTUSB_ALLOC_URB(iso) usb_alloc_urb(iso, GFP_ATOMIC)
94#define RTUSB_SUBMIT_URB(pUrb) usb_submit_urb(pUrb, GFP_ATOMIC)
95#define RTUSB_URB_ALLOC_BUFFER(pUsb_Dev, BufSize, pDma_addr) usb_buffer_alloc(pUsb_Dev, BufSize, GFP_ATOMIC, pDma_addr)
96#define RTUSB_URB_FREE_BUFFER(pUsb_Dev, BufSize, pTransferBuf, Dma_addr) usb_buffer_free(pUsb_Dev, BufSize, pTransferBuf, Dma_addr)
97
98#define RTUSB_FREE_URB(pUrb) usb_free_urb(pUrb)
99
100// unlink urb
101#define RTUSB_UNLINK_URB(pUrb) usb_kill_urb(pUrb)
102
103extern void dump_urb(struct urb* purb);
104
105#define InterlockedIncrement atomic_inc
106#define NdisInterlockedIncrement atomic_inc
107#define InterlockedDecrement atomic_dec
108#define NdisInterlockedDecrement atomic_dec
109#define InterlockedExchange atomic_set
110
111#endif // LINUX //
112
113
114
115#define NT_SUCCESS(status) (((status) >=0) ? (TRUE):(FALSE))
116
117
118
119#define USBD_TRANSFER_DIRECTION_OUT 0
120#define USBD_TRANSFER_DIRECTION_IN 0
121#define USBD_SHORT_TRANSFER_OK 0
122#define PURB purbb_t
123
124#define PIRP PVOID
125#define NDIS_OID UINT
126#ifndef USB_ST_NOERROR
127#define USB_ST_NOERROR 0
128#endif
129
130// vendor-specific control operations
131#define CONTROL_TIMEOUT_JIFFIES ( (100 * OS_HZ) / 1000)
132#define UNLINK_TIMEOUT_MS 3
133
134
135VOID RTUSBBulkOutDataPacketComplete(purbb_t purb, struct pt_regs *pt_regs);
136VOID RTUSBBulkOutMLMEPacketComplete(purbb_t pUrb, struct pt_regs *pt_regs);
137VOID RTUSBBulkOutNullFrameComplete(purbb_t pUrb, struct pt_regs *pt_regs);
138VOID RTUSBBulkOutRTSFrameComplete(purbb_t pUrb, struct pt_regs *pt_regs);
139VOID RTUSBBulkOutPsPollComplete(purbb_t pUrb, struct pt_regs *pt_regs);
140VOID RTUSBBulkRxComplete(purbb_t pUrb, struct pt_regs *pt_regs);
141
142
143#ifdef KTHREAD_SUPPORT
144#define RTUSBMlmeUp(pAd) \
145 do{ \
146 RTMP_OS_TASK *_pTask = &((pAd)->mlmeTask);\
147 if (_pTask->kthread_task) \
148 { \
149 _pTask->kthread_running = TRUE; \
150 wake_up(&_pTask->kthread_q); \
151 } \
152 }while(0)
153#else
154#define RTUSBMlmeUp(pAd) \
155 do{ \
156 RTMP_OS_TASK *_pTask = &((pAd)->mlmeTask);\
157 CHECK_PID_LEGALITY(_pTask->taskPID) \
158 { \
159 RTMP_SEM_EVENT_UP(&(_pTask->taskSema)); \
160 }\
161 }while(0)
162#endif
163
164#ifdef KTHREAD_SUPPORT
165#define RTUSBCMDUp(pAd) \
166 do{ \
167 RTMP_OS_TASK *_pTask = &((pAd)->cmdQTask); \
168 { \
169 _pTask->kthread_running = TRUE; \
170 wake_up(&_pTask->kthread_q); \
171 } \
172 }while(0)
173
174#else
175#define RTUSBCMDUp(pAd) \
176 do{ \
177 RTMP_OS_TASK *_pTask = &((pAd)->cmdQTask); \
178 CHECK_PID_LEGALITY(_pTask->taskPID) \
179 {\
180 RTMP_SEM_EVENT_UP(&(_pTask->taskSema)); \
181 }\
182 }while(0)
183#endif
184
185#define DEVICE_VENDOR_REQUEST_OUT 0x40
186#define DEVICE_VENDOR_REQUEST_IN 0xc0
187//#define INTERFACE_VENDOR_REQUEST_OUT 0x41
188//#define INTERFACE_VENDOR_REQUEST_IN 0xc1
189
190#define BULKOUT_MGMT_RESET_FLAG 0x80
191
192#define RTUSB_SET_BULK_FLAG(_M, _F) ((_M)->BulkFlags |= (_F))
193#define RTUSB_CLEAR_BULK_FLAG(_M, _F) ((_M)->BulkFlags &= ~(_F))
194#define RTUSB_TEST_BULK_FLAG(_M, _F) (((_M)->BulkFlags & (_F)) != 0)
195
196#define RTMP_IRQ_REQUEST(net_dev) do{}while(0)
197#define RTMP_IRQ_RELEASE(net_dev) do{}while(0)
198
199
200#endif // __RTMP_USB_H__ //