1 /* 2 * This file is part of wl18xx 3 * 4 * Copyright (C) 2011 Texas Instruments Inc. 5 * 6 * This program is free software; you can redistribute it and/or 7 * modify it under the terms of the GNU General Public License 8 * version 2 as published by the Free Software Foundation. 9 * 10 * This program is distributed in the hope that it will be useful, but 11 * WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 * General Public License for more details. 14 * 15 * You should have received a copy of the GNU General Public License 16 * along with this program; if not, write to the Free Software 17 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 18 * 02110-1301 USA 19 * 20 */ 21 22 #ifndef __WL18XX_PRIV_H__ 23 #define __WL18XX_PRIV_H__ 24 25 #include "conf.h" 26 27 /* minimum FW required for driver */ 28 #define WL18XX_CHIP_VER 8 29 #define WL18XX_IFTYPE_VER 2 30 #define WL18XX_MAJOR_VER 0 31 #define WL18XX_SUBTYPE_VER 0 32 #define WL18XX_MINOR_VER 100 33 34 #define WL18XX_CMD_MAX_SIZE 740 35 36 #define WL18XX_AGGR_BUFFER_SIZE (13 * PAGE_SIZE) 37 38 #define WL18XX_NUM_TX_DESCRIPTORS 32 39 #define WL18XX_NUM_RX_DESCRIPTORS 32 40 41 #define WL18XX_NUM_MAC_ADDRESSES 3 42 43 struct wl18xx_priv { 44 /* buffer for sending commands to FW */ 45 u8 cmd_buf[WL18XX_CMD_MAX_SIZE]; 46 47 struct wl18xx_priv_conf conf; 48 49 /* Index of last released Tx desc in FW */ 50 u8 last_fw_rls_idx; 51 52 /* number of VIFs requiring extra spare mem-blocks */ 53 int extra_spare_vif_count; 54 }; 55 56 #define WL18XX_FW_MAX_TX_STATUS_DESC 33 57 58 struct wl18xx_fw_status_priv { 59 /* 60 * Index in released_tx_desc for first byte that holds 61 * released tx host desc 62 */ 63 u8 fw_release_idx; 64 65 /* 66 * Array of host Tx descriptors, where fw_release_idx 67 * indicated the first released idx. 68 */ 69 u8 released_tx_desc[WL18XX_FW_MAX_TX_STATUS_DESC]; 70 71 u8 padding[2]; 72 }; 73 74 #define WL18XX_PHY_VERSION_MAX_LEN 20 75 76 struct wl18xx_static_data_priv { 77 char phy_version[WL18XX_PHY_VERSION_MAX_LEN]; 78 }; 79 80 struct wl18xx_clk_cfg { 81 u32 n; 82 u32 m; 83 u32 p; 84 u32 q; 85 bool swallow; 86 }; 87 88 enum { 89 CLOCK_CONFIG_16_2_M = 1, 90 CLOCK_CONFIG_16_368_M, 91 CLOCK_CONFIG_16_8_M, 92 CLOCK_CONFIG_19_2_M, 93 CLOCK_CONFIG_26_M, 94 CLOCK_CONFIG_32_736_M, 95 CLOCK_CONFIG_33_6_M, 96 CLOCK_CONFIG_38_468_M, 97 CLOCK_CONFIG_52_M, 98 99 NUM_CLOCK_CONFIGS, 100 }; 101 102 #endif /* __WL18XX_PRIV_H__ */ 103