2 * Copyright (c) 2013 Qualcomm Atheros, Inc.
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted (subject to the limitations in the
7 * disclaimer below) provided that the following conditions are met:
9 * * Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
12 * * Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in the
14 * documentation and/or other materials provided with the
17 * * Neither the name of Qualcomm Atheros nor the names of its
18 * contributors may be used to endorse or promote products derived
19 * from this software without specific prior written permission.
21 * NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE
22 * GRANTED BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT
23 * HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
24 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
25 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
26 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
27 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
28 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
29 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
30 * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
31 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
32 * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
33 * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
40 /*********************** for Faraday USB controller *******************/
43 CMD_VOID, // No command
44 CMD_GET_DESCRIPTOR, // Get_Descriptor command
45 CMD_SET_DESCRIPTOR // Set_Descriptor command
55 typedef struct Setup_Packet
57 uint8_t Direction; /* Data transfer direction: IN, OUT */
58 uint8_t Type; /* Request Type: Standard, Class, Vendor */
59 uint8_t Object; /* Recipient: Device, Interface, Endpoint,other */
60 uint16_t Request; /* Refer to Table 9-3 */
66 #define mBIT(b) (1 << (b))
67 #define mMASK(w) (mBIT(w) - 1)
69 #define mWORD_IDX(bsize) ((bsize) >> 1)
70 #define mWORD_SIZE(bsize) (((bsize) + 1) >> 1)
72 #define mTABLE_WID mWORD_SIZE
73 #define mTABLE_IDX mWORD_IDX
74 #define mTABLE_LEN mLOW_BYTE
76 #define mLOW_MASK(u16) ((uint8_t) ((u16) & mMASK(8)))
77 #define mHIGH_MASK(u16) ((uint8_t) ((u16) & ~mMASK(8)))
78 #define mLOW2HIGH(u16) (((uint8_t) (u16)) << 8)
81 //#define mLOW_BYTE(u16) ((U_8)(u16))
82 #define mLOW_BYTE(u16) mLOW_MASK(u16)
84 #define mHIGH_BYTE(u16) ((uint8_t) (((uint16_t) (u16)) >> 8))
86 #define mGET_REG1(var0, reg0) { var0 = reg0; }
88 /* (1234, 5678) -> 7834 */
89 #define m2BYTE(ch1L, ch2H) (mLOW_MASK(ch1L) | mLOW2HIGH(ch2H))
91 #define mREAD_WORD(var0, reg0, reg1) \
92 { var0 = reg0; var0 += mLOW2HIGH(reg1); }