net: wireless: rockchip_wlan: add rtl8723cs support
[firefly-linux-kernel-4.4.55.git] / drivers / net / wireless / rockchip_wlan / rtl8723cs / include / rtw_iol.h
1 /******************************************************************************
2  *
3  * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
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  * You should have received a copy of the GNU General Public License along with
15  * this program; if not, write to the Free Software Foundation, Inc.,
16  * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
17  *
18  *
19  ******************************************************************************/
20 #ifndef __RTW_IOL_H_
21 #define __RTW_IOL_H_
22
23
24 struct xmit_frame       *rtw_IOL_accquire_xmit_frame(ADAPTER *adapter);
25 int rtw_IOL_append_cmds(struct xmit_frame *xmit_frame, u8 *IOL_cmds, u32 cmd_len);
26 int rtw_IOL_append_LLT_cmd(struct xmit_frame *xmit_frame, u8 page_boundary);
27 int rtw_IOL_exec_cmds_sync(ADAPTER *adapter, struct xmit_frame *xmit_frame, u32 max_wating_ms, u32 bndy_cnt);
28 bool rtw_IOL_applied(ADAPTER *adapter);
29 int rtw_IOL_append_DELAY_US_cmd(struct xmit_frame *xmit_frame, u16 us);
30 int rtw_IOL_append_DELAY_MS_cmd(struct xmit_frame *xmit_frame, u16 ms);
31 int rtw_IOL_append_END_cmd(struct xmit_frame *xmit_frame);
32
33
34 #ifdef CONFIG_IOL_NEW_GENERATION
35 #define IOREG_CMD_END_LEN       4
36
37 struct ioreg_cfg {
38         u8      length;
39         u8      cmd_id;
40         u16     address;
41         u32     data;
42         u32  mask;
43 };
44 enum ioreg_cmd {
45         IOREG_CMD_LLT                   = 0x01,
46         IOREG_CMD_REFUSE                = 0x02,
47         IOREG_CMD_EFUSE_PATH = 0x03,
48         IOREG_CMD_WB_REG                = 0x04,
49         IOREG_CMD_WW_REG        = 0x05,
50         IOREG_CMD_WD_REG        = 0x06,
51         IOREG_CMD_W_RF          = 0x07,
52         IOREG_CMD_DELAY_US      = 0x10,
53         IOREG_CMD_DELAY_MS      = 0x11,
54         IOREG_CMD_END           = 0xFF,
55 };
56 void read_efuse_from_txpktbuf(ADAPTER *adapter, int bcnhead, u8 *content, u16 *size);
57
58 int _rtw_IOL_append_WB_cmd(struct xmit_frame *xmit_frame, u16 addr, u8 value, u8 mask);
59 int _rtw_IOL_append_WW_cmd(struct xmit_frame *xmit_frame, u16 addr, u16 value, u16 mask);
60 int _rtw_IOL_append_WD_cmd(struct xmit_frame *xmit_frame, u16 addr, u32 value, u32 mask);
61 int _rtw_IOL_append_WRF_cmd(struct xmit_frame *xmit_frame, u8 rf_path, u16 addr, u32 value, u32 mask);
62 #define rtw_IOL_append_WB_cmd(xmit_frame, addr, value, mask) _rtw_IOL_append_WB_cmd((xmit_frame), (addr), (value), (mask))
63 #define rtw_IOL_append_WW_cmd(xmit_frame, addr, value, mask) _rtw_IOL_append_WW_cmd((xmit_frame), (addr), (value), (mask))
64 #define rtw_IOL_append_WD_cmd(xmit_frame, addr, value, mask) _rtw_IOL_append_WD_cmd((xmit_frame), (addr), (value), (mask))
65 #define rtw_IOL_append_WRF_cmd(xmit_frame, rf_path, addr, value, mask) _rtw_IOL_append_WRF_cmd((xmit_frame), (rf_path), (addr), (value), (mask))
66
67 u8 rtw_IOL_cmd_boundary_handle(struct xmit_frame *pxmit_frame);
68 void  rtw_IOL_cmd_buf_dump(ADAPTER *Adapter, int buf_len, u8 *pbuf);
69
70 #ifdef CONFIG_IOL_IOREG_CFG_DBG
71 struct cmd_cmp {
72         u16 addr;
73         u32 value;
74 };
75 #endif
76
77 #else /* CONFIG_IOL_NEW_GENERATION */
78
79 typedef struct _io_offload_cmd {
80         u8 rsvd0;
81         u8 cmd;
82         u16 address;
83         u32 value;
84 } IO_OFFLOAD_CMD, IOL_CMD;
85
86 #define IOL_CMD_LLT                     0x00
87 /* #define IOL_CMD_R_EFUSE      0x01 */
88 #define IOL_CMD_WB_REG          0x02
89 #define IOL_CMD_WW_REG  0x03
90 #define IOL_CMD_WD_REG          0x04
91 /* #define IOL_CMD_W_RF         0x05 */
92 #define IOL_CMD_DELAY_US        0x80
93 #define IOL_CMD_DELAY_MS        0x81
94 /* #define IOL_CMD_DELAY_S      0x82 */
95 #define IOL_CMD_END                     0x83
96
97 /*****************************************************
98 CMD                                     Address                 Value
99 (B1)                                    (B2/B3:H/L addr)        (B4:B7 : MSB:LSB)
100 ******************************************************
101 IOL_CMD_LLT                     -                               B7: PGBNDY
102 IOL_CMD_R_EFUSE -                               -
103 IOL_CMD_WB_REG          0x0~0xFFFF              B7
104 IOL_CMD_WW_REG  0x0~0xFFFF              B6~B7
105 IOL_CMD_WD_REG  0x0~0xFFFF              B4~B7
106 IOL_CMD_W_RF            RF Reg                  B5~B7
107 IOL_CMD_DELAY_US        -                               B6~B7
108 IOL_CMD_DELAY_MS        -                               B6~B7
109 IOL_CMD_DELAY_S -                               B6~B7
110 IOL_CMD_END             -                               -
111 ******************************************************/
112 int _rtw_IOL_append_WB_cmd(struct xmit_frame *xmit_frame, u16 addr, u8 value);
113 int _rtw_IOL_append_WW_cmd(struct xmit_frame *xmit_frame, u16 addr, u16 value);
114 int _rtw_IOL_append_WD_cmd(struct xmit_frame *xmit_frame, u16 addr, u32 value);
115
116
117 int rtw_IOL_exec_cmd_array_sync(PADAPTER adapter, u8 *IOL_cmds, u32 cmd_num, u32 max_wating_ms);
118 int rtw_IOL_exec_empty_cmds_sync(ADAPTER *adapter, u32 max_wating_ms);
119
120 #ifdef DBG_IO
121 int dbg_rtw_IOL_append_WB_cmd(struct xmit_frame *xmit_frame, u16 addr, u8 value, const char *caller, const int line);
122 int dbg_rtw_IOL_append_WW_cmd(struct xmit_frame *xmit_frame, u16 addr, u16 value, const char *caller, const int line);
123 int dbg_rtw_IOL_append_WD_cmd(struct xmit_frame *xmit_frame, u16 addr, u32 value, const char *caller, const int line);
124 #define rtw_IOL_append_WB_cmd(xmit_frame, addr, value) dbg_rtw_IOL_append_WB_cmd((xmit_frame), (addr), (value), __FUNCTION__, __LINE__)
125 #define rtw_IOL_append_WW_cmd(xmit_frame, addr, value) dbg_rtw_IOL_append_WW_cmd((xmit_frame), (addr), (value), __FUNCTION__, __LINE__)
126 #define rtw_IOL_append_WD_cmd(xmit_frame, addr, value) dbg_rtw_IOL_append_WD_cmd((xmit_frame), (addr), (value), __FUNCTION__, __LINE__)
127 #else
128 #define rtw_IOL_append_WB_cmd(xmit_frame, addr, value) _rtw_IOL_append_WB_cmd((xmit_frame), (addr), (value))
129 #define rtw_IOL_append_WW_cmd(xmit_frame, addr, value) _rtw_IOL_append_WW_cmd((xmit_frame), (addr), (value))
130 #define rtw_IOL_append_WD_cmd(xmit_frame, addr, value) _rtw_IOL_append_WD_cmd((xmit_frame), (addr), (value))
131 #endif /* DBG_IO */
132 #endif /* CONFIG_IOL_NEW_GENERATION */
133
134
135
136 #endif /* __RTW_IOL_H_ */