1 | /* SPDX-License-Identifier: GPL-2.0-only */ |
2 | /* |
3 | * This file is part of wl12xx |
4 | * |
5 | * Copyright (C) 2011 Texas Instruments Inc. |
6 | */ |
7 | |
8 | #ifndef __WL12XX_PRIV_H__ |
9 | #define __WL12XX_PRIV_H__ |
10 | |
11 | #include "conf.h" |
12 | |
13 | /* WiLink 6/7 chip IDs */ |
14 | #define CHIP_ID_127X_PG10 (0x04030101) |
15 | #define CHIP_ID_127X_PG20 (0x04030111) |
16 | #define CHIP_ID_128X_PG10 (0x05030101) |
17 | #define CHIP_ID_128X_PG20 (0x05030111) |
18 | |
19 | /* FW chip version for wl127x */ |
20 | #define WL127X_CHIP_VER 6 |
21 | /* minimum single-role FW version for wl127x */ |
22 | #define WL127X_IFTYPE_SR_VER 3 |
23 | #define WL127X_MAJOR_SR_VER 10 |
24 | #define WL127X_SUBTYPE_SR_VER WLCORE_FW_VER_IGNORE |
25 | #define WL127X_MINOR_SR_VER 133 |
26 | /* minimum multi-role FW version for wl127x */ |
27 | #define WL127X_IFTYPE_MR_VER 5 |
28 | #define WL127X_MAJOR_MR_VER 7 |
29 | #define WL127X_SUBTYPE_MR_VER WLCORE_FW_VER_IGNORE |
30 | #define WL127X_MINOR_MR_VER 42 |
31 | |
32 | /* FW chip version for wl128x */ |
33 | #define WL128X_CHIP_VER 7 |
34 | /* minimum single-role FW version for wl128x */ |
35 | #define WL128X_IFTYPE_SR_VER 3 |
36 | #define WL128X_MAJOR_SR_VER 10 |
37 | #define WL128X_SUBTYPE_SR_VER WLCORE_FW_VER_IGNORE |
38 | #define WL128X_MINOR_SR_VER 133 |
39 | /* minimum multi-role FW version for wl128x */ |
40 | #define WL128X_IFTYPE_MR_VER 5 |
41 | #define WL128X_MAJOR_MR_VER 7 |
42 | #define WL128X_SUBTYPE_MR_VER WLCORE_FW_VER_IGNORE |
43 | #define WL128X_MINOR_MR_VER 42 |
44 | |
45 | #define WL12XX_AGGR_BUFFER_SIZE (4 * PAGE_SIZE) |
46 | |
47 | #define WL12XX_NUM_TX_DESCRIPTORS 16 |
48 | #define WL12XX_NUM_RX_DESCRIPTORS 8 |
49 | |
50 | #define WL12XX_NUM_MAC_ADDRESSES 2 |
51 | |
52 | #define WL12XX_RX_BA_MAX_SESSIONS 3 |
53 | |
54 | #define WL12XX_MAX_AP_STATIONS 8 |
55 | #define WL12XX_MAX_LINKS 12 |
56 | |
57 | struct wl127x_rx_mem_pool_addr { |
58 | u32 addr; |
59 | u32 ; |
60 | }; |
61 | |
62 | struct wl12xx_priv { |
63 | struct wl12xx_priv_conf conf; |
64 | |
65 | int ref_clock; |
66 | int tcxo_clock; |
67 | |
68 | struct wl127x_rx_mem_pool_addr *rx_mem_addr; |
69 | }; |
70 | |
71 | /* Reference clock values */ |
72 | enum { |
73 | WL12XX_REFCLOCK_19 = 0, /* 19.2 MHz */ |
74 | WL12XX_REFCLOCK_26 = 1, /* 26 MHz */ |
75 | WL12XX_REFCLOCK_38 = 2, /* 38.4 MHz */ |
76 | WL12XX_REFCLOCK_52 = 3, /* 52 MHz */ |
77 | WL12XX_REFCLOCK_38_XTAL = 4, /* 38.4 MHz, XTAL */ |
78 | WL12XX_REFCLOCK_26_XTAL = 5, /* 26 MHz, XTAL */ |
79 | }; |
80 | |
81 | /* TCXO clock values */ |
82 | enum { |
83 | WL12XX_TCXOCLOCK_19_2 = 0, /* 19.2MHz */ |
84 | WL12XX_TCXOCLOCK_26 = 1, /* 26 MHz */ |
85 | WL12XX_TCXOCLOCK_38_4 = 2, /* 38.4MHz */ |
86 | WL12XX_TCXOCLOCK_52 = 3, /* 52 MHz */ |
87 | WL12XX_TCXOCLOCK_16_368 = 4, /* 16.368 MHz */ |
88 | WL12XX_TCXOCLOCK_32_736 = 5, /* 32.736 MHz */ |
89 | WL12XX_TCXOCLOCK_16_8 = 6, /* 16.8 MHz */ |
90 | WL12XX_TCXOCLOCK_33_6 = 7, /* 33.6 MHz */ |
91 | }; |
92 | |
93 | struct wl12xx_clock { |
94 | u32 freq; |
95 | bool xtal; |
96 | u8 hw_idx; |
97 | }; |
98 | |
99 | struct wl12xx_fw_packet_counters { |
100 | /* Cumulative counter of released packets per AC */ |
101 | u8 tx_released_pkts[NUM_TX_QUEUES]; |
102 | |
103 | /* Cumulative counter of freed packets per HLID */ |
104 | u8 tx_lnk_free_pkts[WL12XX_MAX_LINKS]; |
105 | |
106 | /* Cumulative counter of released Voice memory blocks */ |
107 | u8 tx_voice_released_blks; |
108 | |
109 | /* Tx rate of the last transmitted packet */ |
110 | u8 tx_last_rate; |
111 | |
112 | u8 padding[2]; |
113 | } __packed; |
114 | |
115 | /* FW status registers */ |
116 | struct wl12xx_fw_status { |
117 | __le32 intr; |
118 | u8 fw_rx_counter; |
119 | u8 drv_rx_counter; |
120 | u8 reserved; |
121 | u8 tx_results_counter; |
122 | __le32 rx_pkt_descs[WL12XX_NUM_RX_DESCRIPTORS]; |
123 | |
124 | __le32 fw_localtime; |
125 | |
126 | /* |
127 | * A bitmap (where each bit represents a single HLID) |
128 | * to indicate if the station is in PS mode. |
129 | */ |
130 | __le32 link_ps_bitmap; |
131 | |
132 | /* |
133 | * A bitmap (where each bit represents a single HLID) to indicate |
134 | * if the station is in Fast mode |
135 | */ |
136 | __le32 link_fast_bitmap; |
137 | |
138 | /* Cumulative counter of total released mem blocks since FW-reset */ |
139 | __le32 total_released_blks; |
140 | |
141 | /* Size (in Memory Blocks) of TX pool */ |
142 | __le32 tx_total; |
143 | |
144 | struct wl12xx_fw_packet_counters counters; |
145 | |
146 | __le32 log_start_addr; |
147 | } __packed; |
148 | |
149 | #endif /* __WL12XX_PRIV_H__ */ |
150 | |