1 /*
2 * Copyright (c) 2017-2019 The Linux Foundation. All rights reserved.
3 * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
4 *
5 *
6 * Permission to use, copy, modify, and/or distribute this software for
7 * any purpose with or without fee is hereby granted, provided that the
8 * above copyright notice and this permission notice appear in all
9 * copies.
10 *
11 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
12 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
13 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
14 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
15 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
16 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
17 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
18 * PERFORMANCE OF THIS SOFTWARE.
19 */
20
21 /**
22 * DOC: reg_db.h
23 * This file contains regulatory data base parser function declarations
24 */
25
26 #ifndef __REG_DB_PARSER_H
27 #define __REG_DB_PARSER_H
28
29 extern const struct country_code_to_reg_domain g_all_countries[];
30 extern const struct reg_domain_pair g_reg_dmn_pairs[];
31 extern const struct regulatory_rule reg_rules_2g[];
32 extern const struct regdomain regdomains_2g[];
33 extern const struct regulatory_rule reg_rules_5g[];
34 extern const struct regdomain regdomains_5g[];
35
36 #ifdef CONFIG_REG_CLIENT
37 extern const uint32_t reg_2g_sub_dmn_code[];
38 extern const uint32_t reg_5g_sub_dmn_code[];
39 #endif
40
41 #ifdef WLAN_REG_PARTIAL_OFFLOAD
42 /**
43 * reg_is_country_code_valid() - Check if the given country code is valid
44 * @alpha2: Country string
45 *
46 * Return: QDF_STATUS
47 */
48 QDF_STATUS reg_is_country_code_valid(uint8_t *alpha2);
49
50 /**
51 * reg_regrules_assign() - Get 2GHz and 5GHz regulatory rules from regdomain
52 * structure.
53 * @dmn_id_2g: 2GHz regdomain ID
54 * @dmn_id_5g: 5GHz regdomain ID
55 * @ant_gain_2g: 2GHz antenna gain
56 * @ant_gain_5g: 5GHz antenna gain
57 * @reg_info: Pointer to current regulatory info structure
58 *
59 * Return: QDF_STATUS
60 */
61 QDF_STATUS reg_regrules_assign(uint8_t dmn_id_2g, uint8_t dmn_id_5g,
62 uint8_t ant_gain_2g, uint8_t ant_gain_5g,
63 struct cur_regulatory_info *reg_info);
64
65 /**
66 * reg_get_cur_reginfo() - Get current regulatory info for a given country code
67 * @reg_info: Pointer to current regulatory info structure
68 * @country_index: Country code index in the country code table
69 * @regdmn_pair: Regdomain pair ID
70 *
71 * Return: QDF_STATUS
72 */
73 QDF_STATUS reg_get_cur_reginfo(struct cur_regulatory_info *reg_info,
74 uint16_t country_index, uint16_t regdmn_pair);
75
76 /**
77 * reg_get_rdpair_from_country_iso() - Get regdomain pair ID from country string
78 * @alpha: Pointer to country code string
79 * @country_index: Pointer to save country code index
80 * @regdmn_pair: Pointer to save regdomain pair ID index
81 *
82 * Return: QDF_STATUS
83 */
84 QDF_STATUS reg_get_rdpair_from_country_iso(uint8_t *alpha,
85 uint16_t *country_index,
86 uint16_t *regdmn_pair);
87
88 /**
89 * reg_get_rdpair_from_country_code() - Get regdomain pair ID from country code
90 * @cc: Country code
91 * @country_index: Pointer to save country code index
92 * @regdmn_pair: Pointer to save regdomain pair ID index
93 *
94 * Return: QDF_STATUS
95 */
96 QDF_STATUS reg_get_rdpair_from_country_code(uint16_t cc,
97 uint16_t *country_index,
98 uint16_t *regdmn_pair);
99
100 /**
101 * reg_get_rdpair_from_regdmn_id() - Get regdomain pair ID from regdomain ID
102 * @regdmn_id: Regdomain ID
103 * @regdmn_pair: Pointer to save regdomain pair ID index
104 *
105 * Return: QDF_STATUS
106 */
107 QDF_STATUS reg_get_rdpair_from_regdmn_id(uint16_t regdmn_id,
108 uint16_t *regdmn_pair);
109 #else
110 static inline
reg_get_rdpair_from_regdmn_id(uint16_t regdmn_id,uint16_t * regdmn_pair)111 QDF_STATUS reg_get_rdpair_from_regdmn_id(uint16_t regdmn_id,
112 uint16_t *regdmn_pair)
113 {
114 return QDF_STATUS_E_FAILURE;
115 }
116 #endif /* WLAN_REG_PARTIAL_OFFLOAD */
117 #endif /* __REG_DB_PARSER_H */
118