xref: /OK3568_Linux_fs/kernel/drivers/net/wireless/rockchip_wlan/ssv6xxx/smac/dev_tbl.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1 /*
2  * Copyright (c) 2015 South Silicon Valley Microelectronics Inc.
3  * Copyright (c) 2015 iComm Corporation
4  *
5  * This program is free software: you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation, either version 3 of the License, or
8  * (at your option) any later version.
9  * This program is distributed in the hope that it will be useful, but
10  * WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
12  * See the GNU General Public License for more details.
13  * You should have received a copy of the GNU General Public License
14  * along with this program. If not, see <http://www.gnu.org/licenses/>.
15  */
16 
17 #ifndef _DEV_TBL_H_
18 #define _DEV_TBL_H_
19 #include "ssv6200_configuration.h"
20 #include "drv_comm.h"
21 struct ssv6xxx_dev_table {
22     u32 address;
23     u32 data;
24 };
25 #define ssv6200_phy_tbl phy_setting
26 #ifdef CONFIG_SSV_CABRIO_E
27 #define ssv6200_rf_tbl asic_rf_setting
28 #else
29 #undef ssv6200_rf_tbl
30 #define ssv6200_rf_tbl fpga_rf_setting
31 #endif
32 #define ACTION_DO_NOTHING 0
33 #define ACTION_UPDATE_NAV 1
34 #define ACTION_RESET_NAV 2
35 #define ACTION_SIGNAL_ACK 3
36 #define FRAME_ACCEPT 0
37 #define FRAME_DROP 1
38 #define SET_DEC_TBL(_type,_mask,_action,_drop) \
39     (_type<<9| \
40     _mask <<3| \
41     _action<<1| \
42     _drop)
43 #ifndef USE_GENERIC_DECI_TBL
44  u16 sta_deci_tbl[] =
45  {
46   SET_DEC_TBL(0x1e, 0x3e, ACTION_RESET_NAV, FRAME_DROP),
47   SET_DEC_TBL(0x18, 0x3e, ACTION_SIGNAL_ACK, FRAME_ACCEPT),
48   SET_DEC_TBL(0x1a, 0x3f, ACTION_SIGNAL_ACK, FRAME_DROP),
49   SET_DEC_TBL(0x10, 0x38, ACTION_DO_NOTHING, FRAME_DROP),
50   SET_DEC_TBL(0x25, 0x3f, ACTION_DO_NOTHING, FRAME_DROP),
51   SET_DEC_TBL(0x26, 0x36, ACTION_DO_NOTHING, FRAME_DROP),
52   SET_DEC_TBL(0x08, 0x3f, ACTION_DO_NOTHING, FRAME_ACCEPT),
53   SET_DEC_TBL(0x05, 0x3f, ACTION_SIGNAL_ACK, FRAME_ACCEPT),
54   SET_DEC_TBL(0x0b, 0x3f, ACTION_SIGNAL_ACK, FRAME_ACCEPT),
55   SET_DEC_TBL(0x01, 0x3d, ACTION_SIGNAL_ACK, FRAME_ACCEPT),
56   SET_DEC_TBL(0x20, 0x30, ACTION_SIGNAL_ACK, FRAME_ACCEPT),
57   SET_DEC_TBL(0x00, 0x00, ACTION_SIGNAL_ACK, FRAME_ACCEPT),
58   SET_DEC_TBL(0x00, 0x00, ACTION_DO_NOTHING, FRAME_DROP),
59   SET_DEC_TBL(0x00, 0x00, ACTION_UPDATE_NAV, FRAME_DROP),
60   SET_DEC_TBL(0x00, 0x00, ACTION_RESET_NAV, FRAME_DROP),
61   SET_DEC_TBL(0x00, 0x00, ACTION_SIGNAL_ACK, FRAME_DROP),
62   0x2008,
63   0x1001,
64 #if 0
65   0x8408,
66   0x1000,
67 #else
68   0x0808,
69   0x1040,
70 #endif
71   0x2008,
72   0x800E,
73   0x0BB8,
74   0x2B88,
75   0x0800,
76  };
77  u16 ap_deci_tbl[] =
78  {
79   SET_DEC_TBL(0x1e, 0x3e, ACTION_RESET_NAV, FRAME_DROP),
80   SET_DEC_TBL(0x18, 0x3e, ACTION_SIGNAL_ACK, FRAME_ACCEPT),
81   SET_DEC_TBL(0x1a, 0x3f, ACTION_SIGNAL_ACK, FRAME_ACCEPT),
82   SET_DEC_TBL(0x10, 0x38, ACTION_DO_NOTHING, FRAME_DROP),
83   SET_DEC_TBL(0x25, 0x3f, ACTION_DO_NOTHING, FRAME_DROP),
84   SET_DEC_TBL(0x26, 0x36, ACTION_DO_NOTHING, FRAME_DROP),
85   SET_DEC_TBL(0x08, 0x3f, ACTION_DO_NOTHING, FRAME_DROP),
86   SET_DEC_TBL(0x20, 0x30, ACTION_DO_NOTHING, FRAME_DROP),
87   SET_DEC_TBL(0x00, 0x00, ACTION_DO_NOTHING, FRAME_ACCEPT),
88   SET_DEC_TBL(0x00, 0x00, ACTION_DO_NOTHING, FRAME_ACCEPT),
89   SET_DEC_TBL(0x20, 0x30, ACTION_SIGNAL_ACK, FRAME_ACCEPT),
90   SET_DEC_TBL(0x00, 0x00, ACTION_SIGNAL_ACK, FRAME_ACCEPT),
91   SET_DEC_TBL(0x00, 0x00, ACTION_DO_NOTHING, FRAME_DROP),
92   SET_DEC_TBL(0x00, 0x00, ACTION_UPDATE_NAV, FRAME_DROP),
93   SET_DEC_TBL(0x00, 0x00, ACTION_RESET_NAV, FRAME_DROP),
94   SET_DEC_TBL(0x00, 0x00, ACTION_SIGNAL_ACK, FRAME_DROP),
95   0x2008,
96   0x1001,
97   0x0888,
98   0x1040,
99   0x2008,
100   0x800E,
101   0x0800,
102   0x2008,
103   0x0800,
104  };
105 #else
106 u16 generic_deci_tbl[] =
107     {
108             SET_DEC_TBL(0x1e, 0x3e, ACTION_RESET_NAV, FRAME_DROP),
109             SET_DEC_TBL(0x18, 0x3e, ACTION_SIGNAL_ACK, FRAME_ACCEPT),
110             SET_DEC_TBL(0x1a, 0x3f, ACTION_DO_NOTHING, FRAME_ACCEPT),
111             SET_DEC_TBL(0x10, 0x38, ACTION_DO_NOTHING, FRAME_DROP),
112             0,
113             0,
114             0,
115             SET_DEC_TBL(0x05, 0x3f, ACTION_SIGNAL_ACK, FRAME_ACCEPT),
116             SET_DEC_TBL(0x0b, 0x3f, ACTION_SIGNAL_ACK, FRAME_ACCEPT),
117             SET_DEC_TBL(0x01, 0x3d, ACTION_SIGNAL_ACK, FRAME_ACCEPT),
118             SET_DEC_TBL(0x00, 0x00, ACTION_DO_NOTHING, FRAME_ACCEPT),
119             SET_DEC_TBL(0x00, 0x00, ACTION_SIGNAL_ACK, FRAME_ACCEPT),
120             SET_DEC_TBL(0x00, 0x00, ACTION_DO_NOTHING, FRAME_DROP),
121             SET_DEC_TBL(0x00, 0x00, ACTION_UPDATE_NAV, FRAME_DROP),
122             SET_DEC_TBL(0x00, 0x00, ACTION_RESET_NAV, FRAME_DROP),
123             SET_DEC_TBL(0x00, 0x00, ACTION_SIGNAL_ACK, FRAME_DROP),
124             0x2008,
125             0x1001,
126             0x0400,
127             0x0400,
128             0x2000,
129             0x800E,
130             0x0800,
131             0x0B88,
132             0x0800,
133     };
134 #endif
135 #define SET_PHY_INFO(_ctsdur,_ba_rate_idx,_ack_rate_idx,_llength_idx,_llength_enable) \
136          (_ctsdur<<16| \
137          _ba_rate_idx <<10| \
138          _ack_rate_idx<<4| \
139          _llength_idx<<1| \
140          _llength_enable)
141 #define SET_PHY_L_LENGTH(_l_ba,_l_rts,_l_cts_ack) (_l_ba<<12|_l_rts<<6 |_l_cts_ack)
142 #ifdef CONFIG_SSV_CABRIO_E
143 static u32 phy_info_6051z[] =
144 {
145         0x18000000, 0x18000100, 0x18000200, 0x18000300, 0x18000140,
146         0x18000240, 0x18000340, 0x0C000001, 0x0C000101, 0x0C000201,
147         0x0C000301, 0x18000401, 0x18000501, 0x18000601, 0x18000701,
148         0x0C030002, 0x0C030102, 0x0C030202, 0x18030302, 0x18030402,
149         0x18030502, 0x18030602, 0x1C030702, 0x0C030082, 0x0C030182,
150         0x0C030282, 0x18030382, 0x18030482, 0x18030582, 0x18030682,
151         0x1C030782, 0x0C030042, 0x0C030142, 0x0C030242, 0x18030342,
152         0x18030442, 0x18030542, 0x18030642, 0x1C030742
153 };
154 #endif
155 static u32 phy_info_tbl[] =
156  {
157   0x0C000000, 0x0C000100, 0x0C000200, 0x0C000300, 0x0C000140,
158   0x0C000240, 0x0C000340, 0x00000001, 0x00000101, 0x00000201,
159   0x00000301, 0x0C000401, 0x0C000501, 0x0C000601, 0x0C000701,
160   0x00030002, 0x00030102, 0x00030202, 0x0C030302, 0x0C030402,
161   0x0C030502, 0x0C030602, 0x10030702, 0x00030082, 0x00030182,
162   0x00030282, 0x0C030382, 0x0C030482, 0x0C030582, 0x0C030682,
163   0x10030782, 0x00030042, 0x00030142, 0x00030242, 0x0C030342,
164   0x0C030442, 0x0C030542, 0x0C030642, 0x10030742,
165   SET_PHY_INFO(314, 0, 0, 0, 0),
166   SET_PHY_INFO(258, 0, 1, 0, 0),
167   SET_PHY_INFO(223, 0, 1, 0, 0),
168   SET_PHY_INFO(213, 0, 1, 0, 0),
169   SET_PHY_INFO(162, 0, 4, 0, 0),
170   SET_PHY_INFO(127, 0, 4, 0, 0),
171   SET_PHY_INFO(117, 0, 4, 0, 0),
172   SET_PHY_INFO(60, 7, 7, 0, 0),
173   SET_PHY_INFO(52, 7, 7, 0, 0),
174   SET_PHY_INFO(48, 9, 9, 0, 0),
175   SET_PHY_INFO(44, 9, 9, 0, 0),
176   SET_PHY_INFO(44, 11, 11, 0, 0),
177   SET_PHY_INFO(40, 11, 11, 0, 0),
178   SET_PHY_INFO(40, 11, 11, 0, 0),
179   SET_PHY_INFO(40, 11, 11, 0, 0),
180   SET_PHY_INFO(76, 7, 7, 0, 1),
181   SET_PHY_INFO(64, 9, 9, 1, 1),
182   SET_PHY_INFO(60, 9, 9, 2, 1),
183   SET_PHY_INFO(60, 11, 11, 3, 1),
184   SET_PHY_INFO(56, 11, 11, 4, 1),
185   SET_PHY_INFO(56, 11, 11, 5, 1),
186   SET_PHY_INFO(56, 11, 11, 5, 1),
187   SET_PHY_INFO(56, 11, 11, 5, 1),
188   SET_PHY_INFO(76, 7, 7, 6, 1),
189   SET_PHY_INFO(64, 9, 9, 1, 1),
190   SET_PHY_INFO(60, 9, 9, 2, 1),
191   SET_PHY_INFO(60, 11, 11, 3, 1),
192   SET_PHY_INFO(56, 11, 11, 4, 1),
193   SET_PHY_INFO(56, 11, 11, 5, 1),
194   SET_PHY_INFO(56, 11, 11, 5, 1),
195   SET_PHY_INFO(56, 11, 11, 5, 1),
196   SET_PHY_INFO(64, 7, 7, 0, 0),
197   SET_PHY_INFO(52, 9, 9, 0, 0),
198   SET_PHY_INFO(48, 9, 9, 0, 0),
199   SET_PHY_INFO(48, 11, 11, 0, 0),
200   SET_PHY_INFO(44, 11, 11, 0, 0),
201   SET_PHY_INFO(44, 11, 11, 0, 0),
202   SET_PHY_INFO(44, 11, 11, 0, 0),
203   SET_PHY_INFO(44, 11, 11, 0, 0),
204   SET_PHY_L_LENGTH(50, 38, 35),
205   SET_PHY_L_LENGTH(35, 29, 26),
206   SET_PHY_L_LENGTH(29, 26, 23),
207   SET_PHY_L_LENGTH(26, 23, 23),
208   SET_PHY_L_LENGTH(23, 23, 20),
209   SET_PHY_L_LENGTH(23, 20, 20),
210   SET_PHY_L_LENGTH(47, 38, 35),
211   SET_PHY_L_LENGTH( 0, 0, 0),
212  };
213 #endif
214