net: wireless: rockchip_wlan: add rtl8188fu support
[firefly-linux-kernel-4.4.55.git] / drivers / net / wireless / rockchip_wlan / rtl8188fu / include / rtw_iol.h
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8188fu/include/rtw_iol.h b/drivers/net/wireless/rockchip_wlan/rtl8188fu/include/rtw_iol.h
new file mode 100644 (file)
index 0000000..ddabeac
--- /dev/null
@@ -0,0 +1,137 @@
+/******************************************************************************\r
+ *\r
+ * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.\r
+ *                                        \r
+ * This program is free software; you can redistribute it and/or modify it\r
+ * under the terms of version 2 of the GNU General Public License as\r
+ * published by the Free Software Foundation.\r
+ *\r
+ * This program is distributed in the hope that it will be useful, but WITHOUT\r
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or\r
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for\r
+ * more details.\r
+ *\r
+ * You should have received a copy of the GNU General Public License along with\r
+ * this program; if not, write to the Free Software Foundation, Inc.,\r
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA\r
+ *\r
+ *\r
+ ******************************************************************************/\r
+#ifndef __RTW_IOL_H_\r
+#define __RTW_IOL_H_\r
+\r
+\r
+struct xmit_frame      *rtw_IOL_accquire_xmit_frame(ADAPTER *adapter);\r
+int rtw_IOL_append_cmds(struct xmit_frame *xmit_frame, u8 *IOL_cmds, u32 cmd_len);\r
+int rtw_IOL_append_LLT_cmd(struct xmit_frame *xmit_frame, u8 page_boundary);\r
+int rtw_IOL_exec_cmds_sync(ADAPTER *adapter, struct xmit_frame *xmit_frame, u32 max_wating_ms, u32 bndy_cnt);\r
+bool rtw_IOL_applied(ADAPTER *adapter);\r
+int rtw_IOL_append_DELAY_US_cmd(struct xmit_frame *xmit_frame, u16 us);\r
+int rtw_IOL_append_DELAY_MS_cmd(struct xmit_frame *xmit_frame, u16 ms);\r
+int rtw_IOL_append_END_cmd(struct xmit_frame *xmit_frame);\r
+\r
+\r
+#ifdef CONFIG_IOL_NEW_GENERATION\r
+#define IOREG_CMD_END_LEN      4\r
+\r
+struct ioreg_cfg{\r
+       u8      length;\r
+       u8      cmd_id;\r
+       u16     address;\r
+       u32     data;\r
+       u32  mask;\r
+};\r
+enum ioreg_cmd{\r
+       IOREG_CMD_LLT                   = 0x01,\r
+       IOREG_CMD_REFUSE                = 0x02,\r
+       IOREG_CMD_EFUSE_PATH = 0x03,\r
+       IOREG_CMD_WB_REG                = 0x04,\r
+       IOREG_CMD_WW_REG        = 0x05,\r
+       IOREG_CMD_WD_REG        = 0x06,\r
+       IOREG_CMD_W_RF          = 0x07,\r
+       IOREG_CMD_DELAY_US      = 0x10,\r
+       IOREG_CMD_DELAY_MS      = 0x11,\r
+       IOREG_CMD_END           = 0xFF,         \r
+};\r
+void read_efuse_from_txpktbuf(ADAPTER *adapter, int bcnhead, u8 *content, u16 *size);\r
+\r
+int _rtw_IOL_append_WB_cmd(struct xmit_frame *xmit_frame, u16 addr, u8 value, u8 mask);\r
+int _rtw_IOL_append_WW_cmd(struct xmit_frame *xmit_frame, u16 addr, u16 value, u16 mask);\r
+int _rtw_IOL_append_WD_cmd(struct xmit_frame *xmit_frame, u16 addr, u32 value, u32 mask);\r
+int _rtw_IOL_append_WRF_cmd(struct xmit_frame *xmit_frame, u8 rf_path, u16 addr, u32 value, u32 mask);\r
+#define rtw_IOL_append_WB_cmd(xmit_frame, addr, value,mask) _rtw_IOL_append_WB_cmd((xmit_frame), (addr), (value) ,(mask))\r
+#define rtw_IOL_append_WW_cmd(xmit_frame, addr, value,mask) _rtw_IOL_append_WW_cmd((xmit_frame), (addr), (value),(mask))\r
+#define rtw_IOL_append_WD_cmd(xmit_frame, addr, value,mask) _rtw_IOL_append_WD_cmd((xmit_frame), (addr), (value),(mask))\r
+#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))\r
+\r
+u8 rtw_IOL_cmd_boundary_handle(struct xmit_frame *pxmit_frame);\r
+void  rtw_IOL_cmd_buf_dump(ADAPTER *Adapter,int buf_len,u8 *pbuf);\r
+\r
+#ifdef CONFIG_IOL_IOREG_CFG_DBG\r
+       struct cmd_cmp{\r
+               u16 addr;\r
+               u32 value;\r
+       };\r
+#endif\r
+\r
+#else //CONFIG_IOL_NEW_GENERATION\r
+\r
+typedef struct _io_offload_cmd {\r
+       u8 rsvd0;\r
+       u8 cmd;\r
+       u16 address;\r
+       u32 value;\r
+} IO_OFFLOAD_CMD, IOL_CMD;\r
+\r
+#define IOL_CMD_LLT                    0x00\r
+//#define IOL_CMD_R_EFUSE      0x01\r
+#define IOL_CMD_WB_REG         0x02\r
+#define IOL_CMD_WW_REG         0x03\r
+#define IOL_CMD_WD_REG         0x04\r
+//#define IOL_CMD_W_RF         0x05\r
+#define IOL_CMD_DELAY_US       0x80\r
+#define IOL_CMD_DELAY_MS       0x81\r
+//#define IOL_CMD_DELAY_S      0x82\r
+#define IOL_CMD_END                    0x83\r
+\r
+/*****************************************************\r
+CMD                                    Address                 Value\r
+(B1)                                   (B2/B3:H/L addr)        (B4:B7 : MSB:LSB)\r
+******************************************************\r
+IOL_CMD_LLT                    -                               B7: PGBNDY\r
+//IOL_CMD_R_EFUSE      -                               -\r
+IOL_CMD_WB_REG         0x0~0xFFFF              B7\r
+IOL_CMD_WW_REG 0x0~0xFFFF              B6~B7\r
+IOL_CMD_WD_REG 0x0~0xFFFF              B4~B7\r
+//IOL_CMD_W_RF         RF Reg                  B5~B7\r
+IOL_CMD_DELAY_US       -                               B6~B7\r
+IOL_CMD_DELAY_MS       -                               B6~B7\r
+//IOL_CMD_DELAY_S      -                               B6~B7\r
+IOL_CMD_END            -                               -\r
+******************************************************/\r
+int _rtw_IOL_append_WB_cmd(struct xmit_frame *xmit_frame, u16 addr, u8 value);\r
+int _rtw_IOL_append_WW_cmd(struct xmit_frame *xmit_frame, u16 addr, u16 value);\r
+int _rtw_IOL_append_WD_cmd(struct xmit_frame *xmit_frame, u16 addr, u32 value);\r
+\r
+\r
+int rtw_IOL_exec_cmd_array_sync(PADAPTER adapter, u8 *IOL_cmds, u32 cmd_num, u32 max_wating_ms);\r
+int rtw_IOL_exec_empty_cmds_sync(ADAPTER *adapter, u32 max_wating_ms);\r
+\r
+#ifdef DBG_IO\r
+int dbg_rtw_IOL_append_WB_cmd(struct xmit_frame *xmit_frame, u16 addr, u8 value, const char *caller, const int line);\r
+int dbg_rtw_IOL_append_WW_cmd(struct xmit_frame *xmit_frame, u16 addr, u16 value, const char *caller, const int line);\r
+int dbg_rtw_IOL_append_WD_cmd(struct xmit_frame *xmit_frame, u16 addr, u32 value, const char *caller, const int line);\r
+#define rtw_IOL_append_WB_cmd(xmit_frame, addr, value) dbg_rtw_IOL_append_WB_cmd((xmit_frame), (addr), (value), __FUNCTION__, __LINE__)\r
+#define rtw_IOL_append_WW_cmd(xmit_frame, addr, value) dbg_rtw_IOL_append_WW_cmd((xmit_frame), (addr), (value), __FUNCTION__, __LINE__)\r
+#define rtw_IOL_append_WD_cmd(xmit_frame, addr, value) dbg_rtw_IOL_append_WD_cmd((xmit_frame), (addr), (value), __FUNCTION__, __LINE__)\r
+#else\r
+#define rtw_IOL_append_WB_cmd(xmit_frame, addr, value) _rtw_IOL_append_WB_cmd((xmit_frame), (addr), (value))\r
+#define rtw_IOL_append_WW_cmd(xmit_frame, addr, value) _rtw_IOL_append_WW_cmd((xmit_frame), (addr), (value))\r
+#define rtw_IOL_append_WD_cmd(xmit_frame, addr, value) _rtw_IOL_append_WD_cmd((xmit_frame), (addr), (value))\r
+#endif // DBG_IO\r
+#endif // CONFIG_IOL_NEW_GENERATION\r
+\r
+\r
+\r
+#endif //__RTW_IOL_H_\r
+\r