• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt-6.x.4708/linux/linux-2.6/drivers/staging/rt2860/iface/
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#include "../rtusb_io.h"
32
33#include <linux/usb.h>
34
35extern u8 EpToQueue[6];
36
37#define RXBULKAGGRE_ZISE			12
38#define MAX_TXBULK_LIMIT			(LOCAL_TXBUF_SIZE*(BULKAGGRE_ZISE-1))
39#define MAX_TXBULK_SIZE			(LOCAL_TXBUF_SIZE*BULKAGGRE_ZISE)
40#define MAX_RXBULK_SIZE			(LOCAL_TXBUF_SIZE*RXBULKAGGRE_ZISE)
41#define MAX_MLME_HANDLER_MEMORY 20
42
43// Flags for Bulkflags control for bulk out data
44//
45#define	fRTUSB_BULK_OUT_DATA_NULL				0x00000001
46#define	fRTUSB_BULK_OUT_RTS						0x00000002
47#define	fRTUSB_BULK_OUT_MLME						0x00000004
48
49#define	fRTUSB_BULK_OUT_PSPOLL					0x00000010
50#define	fRTUSB_BULK_OUT_DATA_FRAG				0x00000020
51#define	fRTUSB_BULK_OUT_DATA_FRAG_2				0x00000040
52#define	fRTUSB_BULK_OUT_DATA_FRAG_3				0x00000080
53#define	fRTUSB_BULK_OUT_DATA_FRAG_4				0x00000100
54
55#define	fRTUSB_BULK_OUT_DATA_NORMAL				0x00010000
56#define	fRTUSB_BULK_OUT_DATA_NORMAL_2			0x00020000
57#define	fRTUSB_BULK_OUT_DATA_NORMAL_3			0x00040000
58#define	fRTUSB_BULK_OUT_DATA_NORMAL_4			0x00080000
59
60// TODO:move to ./ate/include/iface/ate_usb.h
61
62#define FREE_HTTX_RING(_pCookie, _pipeId, _txContext)			\
63{										\
64	if ((_txContext)->ENextBulkOutPosition == (_txContext)->CurWritePosition)	\
65	{																	\
66		(_txContext)->bRingEmpty = TRUE;			\
67	}																	\
68	/*NdisInterlockedDecrement(&(_p)->TxCount); */\
69}
70
71/******************************************************************************
72
73	USB Bulk operation related definitions
74
75******************************************************************************/
76
77#define BULKAGGRE_ZISE          100
78#define RT28XX_PUT_DEVICE							usb_put_dev
79#define RTUSB_ALLOC_URB(iso)							usb_alloc_urb(iso, GFP_ATOMIC)
80#define RTUSB_SUBMIT_URB(pUrb)							usb_submit_urb(pUrb, GFP_ATOMIC)
81#define RTUSB_URB_ALLOC_BUFFER(pUsb_Dev, BufSize, pDma_addr)			usb_alloc_coherent(pUsb_Dev, BufSize, GFP_ATOMIC, pDma_addr)
82#define RTUSB_URB_FREE_BUFFER(pUsb_Dev, BufSize, pTransferBuf, Dma_addr)	usb_free_coherent(pUsb_Dev, BufSize, pTransferBuf, Dma_addr)
83
84#define RTUSB_FREE_URB(pUrb)	usb_free_urb(pUrb)
85
86// unlink urb
87#define RTUSB_UNLINK_URB(pUrb)		usb_kill_urb(pUrb)
88
89extern void dump_urb(struct urb *purb);
90
91#define InterlockedIncrement		atomic_inc
92#define NdisInterlockedIncrement	atomic_inc
93#define InterlockedDecrement		atomic_dec
94#define NdisInterlockedDecrement	atomic_dec
95#define InterlockedExchange		atomic_set
96
97#define NT_SUCCESS(status)			(((status) >=0) ? (TRUE):(FALSE))
98
99#define USBD_TRANSFER_DIRECTION_OUT		0
100#define USBD_TRANSFER_DIRECTION_IN		0
101#define USBD_SHORT_TRANSFER_OK			0
102#define PURB			struct urb *
103
104#define PIRP		void *
105#define NDIS_OID	u32
106#ifndef USB_ST_NOERROR
107#define USB_ST_NOERROR     0
108#endif
109
110// vendor-specific control operations
111#define CONTROL_TIMEOUT_JIFFIES ( (100 * OS_HZ) / 1000)
112#define UNLINK_TIMEOUT_MS		3
113
114void RTUSBBulkOutDataPacketComplete(struct urb *purb, struct pt_regs *pt_regs);
115void RTUSBBulkOutMLMEPacketComplete(struct urb *pUrb, struct pt_regs *pt_regs);
116void RTUSBBulkOutNullFrameComplete(struct urb *pUrb, struct pt_regs *pt_regs);
117void RTUSBBulkOutRTSFrameComplete(struct urb *pUrb, struct pt_regs *pt_regs);
118void RTUSBBulkOutPsPollComplete(struct urb *pUrb, struct pt_regs *pt_regs);
119void RTUSBBulkRxComplete(struct urb *pUrb, struct pt_regs *pt_regs);
120
121#ifdef KTHREAD_SUPPORT
122#define RTUSBMlmeUp(pAd) \
123	do{								    \
124		struct rt_rtmp_os_task *_pTask = &((pAd)->mlmeTask);\
125		if (_pTask->kthread_task) \
126        { \
127			_pTask->kthread_running = TRUE; \
128	        wake_up(&_pTask->kthread_q); \
129		} \
130	}while(0)
131#else
132#define RTUSBMlmeUp(pAd)	        \
133	do{								    \
134		struct rt_rtmp_os_task *_pTask = &((pAd)->mlmeTask);\
135		CHECK_PID_LEGALITY(_pTask->taskPID)		    \
136		{ \
137			RTMP_SEM_EVENT_UP(&(_pTask->taskSema)); \
138		}\
139	}while(0)
140#endif
141
142#ifdef KTHREAD_SUPPORT
143#define RTUSBCMDUp(pAd) \
144	do{	\
145		struct rt_rtmp_os_task *_pTask = &((pAd)->cmdQTask);	\
146		{ \
147			_pTask->kthread_running = TRUE; \
148	        wake_up(&_pTask->kthread_q); \
149		} \
150	}while(0)
151
152#else
153#define RTUSBCMDUp(pAd)	                \
154	do{									    \
155		struct rt_rtmp_os_task *_pTask = &((pAd)->cmdQTask);	\
156		CHECK_PID_LEGALITY(_pTask->taskPID)	    \
157		{\
158			RTMP_SEM_EVENT_UP(&(_pTask->taskSema)); \
159		}\
160	}while(0)
161#endif
162
163#define DEVICE_VENDOR_REQUEST_OUT       0x40
164#define DEVICE_VENDOR_REQUEST_IN        0xc0
165//#define INTERFACE_VENDOR_REQUEST_OUT    0x41
166//#define INTERFACE_VENDOR_REQUEST_IN     0xc1
167
168#define BULKOUT_MGMT_RESET_FLAG		0x80
169
170#define RTUSB_SET_BULK_FLAG(_M, _F)	((_M)->BulkFlags |= (_F))
171#define RTUSB_CLEAR_BULK_FLAG(_M, _F)	((_M)->BulkFlags &= ~(_F))
172#define RTUSB_TEST_BULK_FLAG(_M, _F)	(((_M)->BulkFlags & (_F)) != 0)
173
174#define RTMP_IRQ_REQUEST(net_dev)		do{}while(0)
175#define RTMP_IRQ_RELEASE(net_dev)		do{}while(0)
176
177#endif // __RTMP_USB_H__ //
178