forked from ~ljy/RK356X_SDK_RELEASE

hc
2024-02-19 1c055e55a242a33e574e48be530e06770a210dcd
kernel/drivers/net/wireless/intel/iwlwifi/fw/acpi.h
....@@ -6,7 +6,7 @@
66 * GPL LICENSE SUMMARY
77 *
88 * Copyright(c) 2017 Intel Deutschland GmbH
9
- * Copyright(c) 2018 Intel Corporation
9
+ * Copyright(c) 2018 - 2020 Intel Corporation
1010 *
1111 * This program is free software; you can redistribute it and/or modify
1212 * it under the terms of version 2 of the GNU General Public License as
....@@ -16,9 +16,6 @@
1616 * WITHOUT ANY WARRANTY; without even the implied warranty of
1717 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
1818 * General Public License for more details.
19
- *
20
- * You should have received a copy of the GNU General Public License
21
- * along with this program;
2219 *
2320 * The full GNU General Public License is included in this distribution
2421 * in the file called COPYING.
....@@ -30,7 +27,7 @@
3027 * BSD LICENSE
3128 *
3229 * Copyright(c) 2017 Intel Deutschland GmbH
33
- * Copyright(c) 2018 Intel Corporation
30
+ * Copyright(c) 2018 - 2020 Intel Corporation
3431 * All rights reserved.
3532 *
3633 * Redistribution and use in source and binary forms, with or without
....@@ -64,12 +61,22 @@
6461 #define __iwl_fw_acpi__
6562
6663 #include <linux/acpi.h>
64
+#include "fw/api/commands.h"
65
+#include "fw/api/power.h"
66
+#include "fw/api/phy.h"
67
+#include "fw/api/nvm-reg.h"
68
+#include "fw/img.h"
69
+#include "iwl-trans.h"
70
+
6771
6872 #define ACPI_WRDS_METHOD "WRDS"
6973 #define ACPI_EWRD_METHOD "EWRD"
7074 #define ACPI_WGDS_METHOD "WGDS"
7175 #define ACPI_WRDD_METHOD "WRDD"
7276 #define ACPI_SPLC_METHOD "SPLC"
77
+#define ACPI_ECKV_METHOD "ECKV"
78
+#define ACPI_PPAG_METHOD "PPAG"
79
+#define ACPI_WTAS_METHOD "WTAS"
7380
7481 #define ACPI_WIFI_DOMAIN (0x07)
7582
....@@ -82,6 +89,7 @@
8289
8390 #define ACPI_SAR_NUM_CHAIN_LIMITS 2
8491 #define ACPI_SAR_NUM_SUB_BANDS 5
92
+#define ACPI_SAR_NUM_TABLES 1
8593
8694 #define ACPI_WRDS_WIFI_DATA_SIZE (ACPI_SAR_TABLE_SIZE + 2)
8795 #define ACPI_EWRD_WIFI_DATA_SIZE ((ACPI_SAR_PROFILE_NUM - 1) * \
....@@ -89,16 +97,67 @@
8997 #define ACPI_WGDS_WIFI_DATA_SIZE 19
9098 #define ACPI_WRDD_WIFI_DATA_SIZE 2
9199 #define ACPI_SPLC_WIFI_DATA_SIZE 2
100
+#define ACPI_ECKV_WIFI_DATA_SIZE 2
92101
93
-#define ACPI_WGDS_NUM_BANDS 2
102
+/*
103
+ * 1 type, 1 enabled, 1 block list size, 16 block list array
104
+ */
105
+#define APCI_WTAS_BLACK_LIST_MAX 16
106
+#define ACPI_WTAS_WIFI_DATA_SIZE (3 + APCI_WTAS_BLACK_LIST_MAX)
107
+
94108 #define ACPI_WGDS_TABLE_SIZE 3
109
+
110
+#define ACPI_PPAG_WIFI_DATA_SIZE ((IWL_NUM_CHAIN_LIMITS * \
111
+ IWL_NUM_SUB_BANDS) + 3)
112
+#define ACPI_PPAG_WIFI_DATA_SIZE_V2 ((IWL_NUM_CHAIN_LIMITS * \
113
+ IWL_NUM_SUB_BANDS_V2) + 3)
114
+
115
+/* PPAG gain value bounds in 1/8 dBm */
116
+#define ACPI_PPAG_MIN_LB -16
117
+#define ACPI_PPAG_MAX_LB 24
118
+#define ACPI_PPAG_MIN_HB -16
119
+#define ACPI_PPAG_MAX_HB 40
120
+
121
+struct iwl_sar_profile {
122
+ bool enabled;
123
+ u8 table[ACPI_SAR_TABLE_SIZE];
124
+};
125
+
126
+struct iwl_geo_profile {
127
+ u8 values[ACPI_GEO_TABLE_SIZE];
128
+};
129
+
130
+enum iwl_dsm_funcs_rev_0 {
131
+ DSM_FUNC_QUERY = 0,
132
+ DSM_FUNC_DISABLE_SRD = 1,
133
+ DSM_FUNC_ENABLE_INDONESIA_5G2 = 2,
134
+};
135
+
136
+enum iwl_dsm_values_srd {
137
+ DSM_VALUE_SRD_ACTIVE,
138
+ DSM_VALUE_SRD_PASSIVE,
139
+ DSM_VALUE_SRD_DISABLE,
140
+ DSM_VALUE_SRD_MAX
141
+};
142
+
143
+enum iwl_dsm_values_indonesia {
144
+ DSM_VALUE_INDONESIA_DISABLE,
145
+ DSM_VALUE_INDONESIA_ENABLE,
146
+ DSM_VALUE_INDONESIA_RESERVED,
147
+ DSM_VALUE_INDONESIA_MAX
148
+};
95149
96150 #ifdef CONFIG_ACPI
97151
152
+struct iwl_fw_runtime;
153
+
98154 void *iwl_acpi_get_object(struct device *dev, acpi_string method);
155
+
156
+int iwl_acpi_get_dsm_u8(struct device *dev, int rev, int func);
157
+
99158 union acpi_object *iwl_acpi_get_wifi_pkg(struct device *dev,
100159 union acpi_object *data,
101
- int data_size);
160
+ int data_size, int *tbl_rev);
102161
103162 /**
104163 * iwl_acpi_get_mcc - read MCC from ACPI, if available
....@@ -112,6 +171,35 @@
112171
113172 u64 iwl_acpi_get_pwr_limit(struct device *dev);
114173
174
+/*
175
+ * iwl_acpi_get_eckv - read external clock validation from ACPI, if available
176
+ *
177
+ * @dev: the struct device
178
+ * @extl_clk: output var (2 bytes) that will get the clk indication.
179
+ *
180
+ * This function tries to read the external clock indication
181
+ * from ACPI if available.
182
+ */
183
+int iwl_acpi_get_eckv(struct device *dev, u32 *extl_clk);
184
+
185
+int iwl_sar_select_profile(struct iwl_fw_runtime *fwrt,
186
+ __le16 *per_chain, u32 n_tables, u32 n_subbands,
187
+ int prof_a, int prof_b);
188
+
189
+int iwl_sar_get_wrds_table(struct iwl_fw_runtime *fwrt);
190
+
191
+int iwl_sar_get_ewrd_table(struct iwl_fw_runtime *fwrt);
192
+
193
+int iwl_sar_get_wgds_table(struct iwl_fw_runtime *fwrt);
194
+
195
+bool iwl_sar_geo_support(struct iwl_fw_runtime *fwrt);
196
+
197
+int iwl_sar_geo_init(struct iwl_fw_runtime *fwrt,
198
+ struct iwl_per_chain_offset *table, u32 n_bands);
199
+
200
+int iwl_acpi_get_tas(struct iwl_fw_runtime *fwrt, __le32 *block_list_array,
201
+ int *block_list_size);
202
+
115203 #else /* CONFIG_ACPI */
116204
117205 static inline void *iwl_acpi_get_object(struct device *dev, acpi_string method)
....@@ -119,9 +207,21 @@
119207 return ERR_PTR(-ENOENT);
120208 }
121209
210
+static inline void *iwl_acpi_get_dsm_object(struct device *dev, int rev,
211
+ int func, union acpi_object *args)
212
+{
213
+ return ERR_PTR(-ENOENT);
214
+}
215
+
216
+static inline int iwl_acpi_get_dsm_u8(struct device *dev, int rev, int func)
217
+{
218
+ return -ENOENT;
219
+}
220
+
122221 static inline union acpi_object *iwl_acpi_get_wifi_pkg(struct device *dev,
123222 union acpi_object *data,
124
- int data_size)
223
+ int data_size,
224
+ int *tbl_rev)
125225 {
126226 return ERR_PTR(-ENOENT);
127227 }
....@@ -136,5 +236,43 @@
136236 return 0;
137237 }
138238
239
+static inline int iwl_acpi_get_eckv(struct device *dev, u32 *extl_clk)
240
+{
241
+ return -ENOENT;
242
+}
243
+
244
+static inline int iwl_sar_select_profile(struct iwl_fw_runtime *fwrt,
245
+ __le16 *per_chain, u32 n_tables, u32 n_subbands,
246
+ int prof_a, int prof_b)
247
+{
248
+ return -ENOENT;
249
+}
250
+
251
+static inline int iwl_sar_get_wrds_table(struct iwl_fw_runtime *fwrt)
252
+{
253
+ return -ENOENT;
254
+}
255
+
256
+static inline int iwl_sar_get_ewrd_table(struct iwl_fw_runtime *fwrt)
257
+{
258
+ return -ENOENT;
259
+}
260
+
261
+static inline int iwl_sar_get_wgds_table(struct iwl_fw_runtime *fwrt)
262
+{
263
+ return -ENOENT;
264
+}
265
+
266
+static inline bool iwl_sar_geo_support(struct iwl_fw_runtime *fwrt)
267
+{
268
+ return false;
269
+}
270
+
271
+static inline int iwl_acpi_get_tas(struct iwl_fw_runtime *fwrt,
272
+ __le32 *block_list_array,
273
+ int *block_list_size)
274
+{
275
+ return -ENOENT;
276
+}
139277 #endif /* CONFIG_ACPI */
140278 #endif /* __iwl_fw_acpi__ */