1 /* 2 * Copyright (c) 2017-2019 The Linux Foundation. All rights reserved. 3 * 4 * 5 * Permission to use, copy, modify, and/or distribute this software for 6 * any purpose with or without fee is hereby granted, provided that the 7 * above copyright notice and this permission notice appear in all 8 * copies. 9 * 10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL 11 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED 12 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE 13 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL 14 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR 15 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 16 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 17 * PERFORMANCE OF THIS SOFTWARE. 18 */ 19 20 /** 21 * DOC: reg_db.h 22 * This file contains regulatory component data structures 23 */ 24 25 #ifndef __REG_DB_H 26 #define __REG_DB_H 27 28 /** 29 * struct regulatory_rule 30 * @start_freq: start frequency 31 * @end_freq: end frequency 32 * @max_bw: maximum bandwidth 33 * @reg_power: regulatory power 34 * @flags: regulatory flags 35 */ 36 struct regulatory_rule { 37 uint16_t start_freq; 38 uint16_t end_freq; 39 uint16_t max_bw; 40 uint8_t reg_power; 41 uint16_t flags; 42 }; 43 44 /** 45 * struct regdomain 46 * @ctl_val: CTL value 47 * @dfs_region: dfs region 48 * @min_bw: minimum bandwidth 49 * @num_reg_rules: number of regulatory rules 50 * @reg_rules_id: regulatory rule index 51 */ 52 struct regdomain { 53 uint8_t ctl_val; 54 enum dfs_reg dfs_region; 55 uint16_t min_bw; 56 uint8_t ant_gain; 57 uint8_t num_reg_rules; 58 uint8_t reg_rule_id[MAX_REG_RULES]; 59 }; 60 61 /** 62 * struct country_code_to_reg_domain 63 * @country_code: country code 64 * @reg_dmn_pair_id: reg domainpair id 65 * @alpha2: iso-3166 alpha2 66 * @max_bw_2g: maximum 2g bandwidth 67 * @max_bw_5g: maximum 5g bandwidth 68 * @phymode_bitmap: phymodes not supported 69 */ 70 struct country_code_to_reg_domain { 71 uint16_t country_code; 72 uint16_t reg_dmn_pair_id; 73 uint8_t alpha2[REG_ALPHA2_LEN + 1]; 74 uint16_t max_bw_2g; 75 uint16_t max_bw_5g; 76 uint16_t phymode_bitmap; 77 }; 78 79 /** 80 * struct reg_domain_pair 81 * @reg_dmn_pair_id: reg domainpiar value 82 * @dmn_id_5g: 5g reg domain value 83 * @dmn_id_2g: 2g regdomain value 84 */ 85 struct reg_domain_pair { 86 uint16_t reg_dmn_pair_id; 87 uint8_t dmn_id_5g; 88 uint8_t dmn_id_2g; 89 }; 90 91 QDF_STATUS reg_get_num_countries(int *num_countries); 92 93 QDF_STATUS reg_get_num_reg_dmn_pairs(int *num_reg_dmn); 94 95 QDF_STATUS reg_get_default_country(uint16_t *default_country); 96 97 /** 98 * reg_etsi13_regdmn () - Checks if the reg domain is ETSI13 or not 99 * @reg_dmn: reg domain 100 * 101 * Return: true or false 102 */ 103 bool reg_etsi13_regdmn(uint8_t reg_dmn); 104 #endif 105