1 /* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */
2 /* Copyright(c) 2007 - 2011 Realtek Corporation. */
3 
4 #ifndef __RTW_IOL_H_
5 #define __RTW_IOL_H_
6 
7 #include "osdep_service.h"
8 #include "drv_types.h"
9 
10 #define IOREG_CMD_END_LEN	4
11 
12 struct ioreg_cfg {
13 	u8	length;
14 	u8	cmd_id;
15 	__le16	address;
16 	__le32	data;
17 	__le32  mask;
18 };
19 
20 enum ioreg_cmd {
21 	IOREG_CMD_LLT		= 0x01,
22 	IOREG_CMD_REFUSE	= 0x02,
23 	IOREG_CMD_EFUSE_PATH	= 0x03,
24 	IOREG_CMD_WB_REG	= 0x04,
25 	IOREG_CMD_WW_REG	= 0x05,
26 	IOREG_CMD_WD_REG	= 0x06,
27 	IOREG_CMD_W_RF		= 0x07,
28 	IOREG_CMD_DELAY_US	= 0x10,
29 	IOREG_CMD_DELAY_MS	= 0x11,
30 	IOREG_CMD_END		= 0xFF,
31 };
32 
33 struct xmit_frame *rtw_IOL_accquire_xmit_frame(struct adapter *adapter);
34 int rtw_IOL_append_cmds(struct xmit_frame *xmit_frame, u8 *IOL_cmds,
35 			u32 cmd_len);
36 bool rtw_IOL_applied(struct adapter  *adapter);
37 int rtw_IOL_append_DELAY_US_cmd(struct xmit_frame *xmit_frame, u16 us);
38 int rtw_IOL_append_DELAY_MS_cmd(struct xmit_frame *xmit_frame, u16 ms);
39 int rtw_IOL_append_END_cmd(struct xmit_frame *xmit_frame);
40 
41 void read_efuse_from_txpktbuf(struct adapter *adapter, int bcnhead,
42 			      u8 *content, u16 *size);
43 
44 int _rtw_IOL_append_WB_cmd(struct xmit_frame *xmit_frame, u16 addr,
45 			   u8 value, u8 mask);
46 int _rtw_IOL_append_WW_cmd(struct xmit_frame *xmit_frame, u16 addr,
47 			   u16 value, u16 mask);
48 int _rtw_IOL_append_WD_cmd(struct xmit_frame *xmit_frame, u16 addr,
49 			   u32 value, u32 mask);
50 int _rtw_IOL_append_WRF_cmd(struct xmit_frame *xmit_frame, u8 rf_path,
51 			    u16 addr, u32 value, u32 mask);
52 #define rtw_IOL_append_WB_cmd(xmit_frame, addr, value, mask)		\
53 	_rtw_IOL_append_WB_cmd((xmit_frame), (addr), (value) ,(mask))
54 #define rtw_IOL_append_WW_cmd(xmit_frame, addr, value, mask)		\
55 	_rtw_IOL_append_WW_cmd((xmit_frame), (addr), (value),(mask))
56 #define rtw_IOL_append_WD_cmd(xmit_frame, addr, value, mask)		\
57 	_rtw_IOL_append_WD_cmd((xmit_frame), (addr), (value), (mask))
58 #define rtw_IOL_append_WRF_cmd(xmit_frame, rf_path, addr, value, mask)	\
59 	_rtw_IOL_append_WRF_cmd((xmit_frame),(rf_path), (addr), (value), (mask))
60 
61 u8 rtw_IOL_cmd_boundary_handle(struct xmit_frame *pxmit_frame);
62 
63 #endif /* __RTW_IOL_H_ */
64