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 /* Alpha2 code for world reg domain */ 29 #define REG_WORLD_ALPHA2 "00" 30 31 /** 32 * struct regulatory_rule 33 * @start_freq: start frequency 34 * @end_freq: end frequency 35 * @max_bw: maximum bandwidth 36 * @reg_power: regulatory power 37 * @flags: regulatory flags 38 */ 39 struct regulatory_rule { 40 uint16_t start_freq; 41 uint16_t end_freq; 42 uint16_t max_bw; 43 uint8_t reg_power; 44 uint16_t flags; 45 }; 46 47 /** 48 * struct regdomain 49 * @ctl_val: CTL value 50 * @dfs_region: dfs region 51 * @min_bw: minimum bandwidth 52 * @num_reg_rules: number of regulatory rules 53 * @reg_rules_id: regulatory rule index 54 */ 55 struct regdomain { 56 uint8_t ctl_val; 57 enum dfs_reg dfs_region; 58 uint16_t min_bw; 59 uint8_t ant_gain; 60 uint8_t num_reg_rules; 61 uint8_t reg_rule_id[MAX_REG_RULES]; 62 }; 63 64 /** 65 * struct country_code_to_reg_domain 66 * @country_code: country code 67 * @reg_dmn_pair_id: reg domainpair id 68 * @alpha2: iso-3166 alpha2 69 * @max_bw_2g: maximum 2g bandwidth 70 * @max_bw_5g: maximum 5g bandwidth 71 * @phymode_bitmap: phymodes not supported 72 */ 73 struct country_code_to_reg_domain { 74 uint16_t country_code; 75 uint16_t reg_dmn_pair_id; 76 uint8_t alpha2[REG_ALPHA2_LEN + 1]; 77 uint16_t max_bw_2g; 78 uint16_t max_bw_5g; 79 uint16_t phymode_bitmap; 80 }; 81 82 /** 83 * struct reg_domain_pair 84 * @reg_dmn_pair_id: reg domainpiar value 85 * @dmn_id_5g: 5g reg domain value 86 * @dmn_id_2g: 2g regdomain value 87 */ 88 struct reg_domain_pair { 89 uint16_t reg_dmn_pair_id; 90 uint8_t dmn_id_5g; 91 uint8_t dmn_id_2g; 92 }; 93 94 QDF_STATUS reg_get_num_countries(int *num_countries); 95 96 QDF_STATUS reg_get_num_reg_dmn_pairs(int *num_reg_dmn); 97 98 QDF_STATUS reg_get_default_country(uint16_t *default_country); 99 100 /** 101 * reg_etsi13_regdmn () - Checks if the reg domain is ETSI13 or not 102 * @reg_dmn: reg domain 103 * 104 * Return: true or false 105 */ 106 bool reg_etsi13_regdmn(uint8_t reg_dmn); 107 108 /** 109 * reg_en302_502_regdmn() - Check if the reg domain is en302_502 applicable. 110 * @reg_dmn: Regulatory domain pair ID. 111 * 112 * Return: True if EN302_502 applicable, else false. 113 */ 114 bool reg_en302_502_regdmn(uint16_t reg_dmn); 115 #endif 116