GNU Linux-libre 4.14.302-gnu1
[releases.git] / drivers / staging / rtlwifi / halmac / halmac_tx_bd_nic.h
1 /******************************************************************************
2  *
3  * Copyright(c) 2016  Realtek Corporation.
4  *
5  * This program is free software; you can redistribute it and/or modify it
6  * under the terms of version 2 of the GNU General Public License as
7  * published by the Free Software Foundation.
8  *
9  * This program is distributed in the hope that it will be useful, but WITHOUT
10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
12  * more details.
13  *
14  * The full GNU General Public License is included in this distribution in the
15  * file called LICENSE.
16  *
17  * Contact Information:
18  * wlanfae <wlanfae@realtek.com>
19  * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park,
20  * Hsinchu 300, Taiwan.
21  *
22  * Larry Finger <Larry.Finger@lwfinger.net>
23  *
24  *****************************************************************************/
25 #ifndef _HALMAC_TX_BD_NIC_H_
26 #define _HALMAC_TX_BD_NIC_H_
27
28 /*TXBD_DW0*/
29
30 #define SET_TX_BD_OWN(__tx_bd, __value)                                        \
31         SET_BITS_TO_LE_4BYTE(__tx_bd + 0x00, 31, 1, __value)
32 #define GET_TX_BD_OWN(__tx_bd) LE_BITS_TO_4BYTE(__tx_bd + 0x00, 31, 1)
33 #define SET_TX_BD_PSB(__tx_bd, __value)                                        \
34         SET_BITS_TO_LE_4BYTE(__tx_bd + 0x00, 16, 8, __value)
35 #define GET_TX_BD_PSB(__tx_bd) LE_BITS_TO_4BYTE(__tx_bd + 0x00, 16, 8)
36 #define SET_TX_BD_TX_BUFF_SIZE0(__tx_bd, __value)                              \
37         SET_BITS_TO_LE_4BYTE(__tx_bd + 0x00, 0, 16, __value)
38 #define GET_TX_BD_TX_BUFF_SIZE0(__tx_bd) LE_BITS_TO_4BYTE(__tx_bd + 0x00, 0, 16)
39
40 /*TXBD_DW1*/
41
42 #define SET_TX_BD_PHYSICAL_ADDR0_LOW(__tx_bd, __value)                         \
43         SET_BITS_TO_LE_4BYTE(__tx_bd + 0x04, 0, 32, __value)
44 #define GET_TX_BD_PHYSICAL_ADDR0_LOW(__tx_bd)                                  \
45         LE_BITS_TO_4BYTE(__tx_bd + 0x04, 0, 32)
46
47 /*TXBD_DW2*/
48
49 #define SET_TX_BD_PHYSICAL_ADDR0_HIGH(__tx_bd, __value)                        \
50         SET_BITS_TO_LE_4BYTE(__tx_bd + 0x08, 0, 32, __value)
51 #define GET_TX_BD_PHYSICAL_ADDR0_HIGH(__tx_bd)                                 \
52         LE_BITS_TO_4BYTE(__tx_bd + 0x08, 0, 32)
53
54 /*TXBD_DW4*/
55
56 #define SET_TX_BD_A1(__tx_bd, __value)                                         \
57         SET_BITS_TO_LE_4BYTE(__tx_bd + 0x10, 31, 1, __value)
58 #define GET_TX_BD_A1(__tx_bd) LE_BITS_TO_4BYTE(__tx_bd + 0x10, 31, 1)
59 #define SET_TX_BD_TX_BUFF_SIZE1(__tx_bd, __value)                              \
60         SET_BITS_TO_LE_4BYTE(__tx_bd + 0x10, 0, 16, __value)
61 #define GET_TX_BD_TX_BUFF_SIZE1(__tx_bd) LE_BITS_TO_4BYTE(__tx_bd + 0x10, 0, 16)
62
63 /*TXBD_DW5*/
64
65 #define SET_TX_BD_PHYSICAL_ADDR1_LOW(__tx_bd, __value)                         \
66         SET_BITS_TO_LE_4BYTE(__tx_bd + 0x14, 0, 32, __value)
67 #define GET_TX_BD_PHYSICAL_ADDR1_LOW(__tx_bd)                                  \
68         LE_BITS_TO_4BYTE(__tx_bd + 0x14, 0, 32)
69
70 /*TXBD_DW6*/
71
72 #define SET_TX_BD_PHYSICAL_ADDR1_HIGH(__tx_bd, __value)                        \
73         SET_BITS_TO_LE_4BYTE(__tx_bd + 0x18, 0, 32, __value)
74 #define GET_TX_BD_PHYSICAL_ADDR1_HIGH(__tx_bd)                                 \
75         LE_BITS_TO_4BYTE(__tx_bd + 0x18, 0, 32)
76
77 /*TXBD_DW8*/
78
79 #define SET_TX_BD_A2(__tx_bd, __value)                                         \
80         SET_BITS_TO_LE_4BYTE(__tx_bd + 0x20, 31, 1, __value)
81 #define GET_TX_BD_A2(__tx_bd) LE_BITS_TO_4BYTE(__tx_bd + 0x20, 31, 1)
82 #define SET_TX_BD_TX_BUFF_SIZE2(__tx_bd, __value)                              \
83         SET_BITS_TO_LE_4BYTE(__tx_bd + 0x20, 0, 16, __value)
84 #define GET_TX_BD_TX_BUFF_SIZE2(__tx_bd) LE_BITS_TO_4BYTE(__tx_bd + 0x20, 0, 16)
85
86 /*TXBD_DW9*/
87
88 #define SET_TX_BD_PHYSICAL_ADDR2_LOW(__tx_bd, __value)                         \
89         SET_BITS_TO_LE_4BYTE(__tx_bd + 0x24, 0, 32, __value)
90 #define GET_TX_BD_PHYSICAL_ADDR2_LOW(__tx_bd)                                  \
91         LE_BITS_TO_4BYTE(__tx_bd + 0x24, 0, 32)
92
93 /*TXBD_DW10*/
94
95 #define SET_TX_BD_PHYSICAL_ADDR2_HIGH(__tx_bd, __value)                        \
96         SET_BITS_TO_LE_4BYTE(__tx_bd + 0x28, 0, 32, __value)
97 #define GET_TX_BD_PHYSICAL_ADDR2_HIGH(__tx_bd)                                 \
98         LE_BITS_TO_4BYTE(__tx_bd + 0x28, 0, 32)
99
100 /*TXBD_DW12*/
101
102 #define SET_TX_BD_A3(__tx_bd, __value)                                         \
103         SET_BITS_TO_LE_4BYTE(__tx_bd + 0x30, 31, 1, __value)
104 #define GET_TX_BD_A3(__tx_bd) LE_BITS_TO_4BYTE(__tx_bd + 0x30, 31, 1)
105 #define SET_TX_BD_TX_BUFF_SIZE3(__tx_bd, __value)                              \
106         SET_BITS_TO_LE_4BYTE(__tx_bd + 0x30, 0, 16, __value)
107 #define GET_TX_BD_TX_BUFF_SIZE3(__tx_bd) LE_BITS_TO_4BYTE(__tx_bd + 0x30, 0, 16)
108
109 /*TXBD_DW13*/
110
111 #define SET_TX_BD_PHYSICAL_ADDR3_LOW(__tx_bd, __value)                         \
112         SET_BITS_TO_LE_4BYTE(__tx_bd + 0x34, 0, 32, __value)
113 #define GET_TX_BD_PHYSICAL_ADDR3_LOW(__tx_bd)                                  \
114         LE_BITS_TO_4BYTE(__tx_bd + 0x34, 0, 32)
115
116 /*TXBD_DW14*/
117
118 #define SET_TX_BD_PHYSICAL_ADDR3_HIGH(__tx_bd, __value)                        \
119         SET_BITS_TO_LE_4BYTE(__tx_bd + 0x38, 0, 32, __value)
120 #define GET_TX_BD_PHYSICAL_ADDR3_HIGH(__tx_bd)                                 \
121         LE_BITS_TO_4BYTE(__tx_bd + 0x38, 0, 32)
122
123 #endif