1 /* SPDX-License-Identifier: BSD-3-Clause-Clear */ 2 /* Copyright (C) 2025 MediaTek Inc. */ 3 4 #ifndef __MT7921_REGD_H 5 #define __MT7921_REGD_H 6 7 #include "mt7921.h" 8 9 struct mt7921_regd_rule_header { 10 u8 alpha2[2]; 11 u8 dfs_region; 12 u8 rsv[13]; 13 }; 14 15 struct mt7921_regd_rule { 16 __le32 start_freq; 17 __le32 end_freq; 18 __le32 max_bw; 19 __le32 eirp; 20 __le32 flags; 21 u8 rsv[12]; 22 }; 23 24 struct mt7921_regd_cc { 25 u8 alpha2[2]; 26 u8 ver; 27 u8 rsv; 28 __le32 n_reg_rules; 29 u8 sign_type; 30 u8 rsv1[7]; 31 u8 data[]; 32 }; 33 34 struct mt7921_regd_rule_ev { 35 __le16 tag; 36 __le16 len; 37 __le32 n_reg_rules; 38 u8 dfs_region; 39 u8 rsv[15]; 40 struct mt7921_regd_rule reg_rule[]; 41 }; 42 43 struct mt7921_regd_query_req { 44 u8 ver; 45 u8 sign_type; 46 u8 rsv1[2]; 47 __le32 size; 48 u8 alpha2[2]; 49 u8 rsv2[2]; 50 __le32 n_reg_rules; 51 u8 rsv3[64]; 52 u8 data[]; 53 }; 54 55 #define MT7921_REGD_SUPPORTED(phy) \ 56 (((phy)->chip_cap & MT792x_CHIP_CAP_REGD_EN) && \ 57 (phy)->clc[MT792x_CLC_REGD]) 58 59 int mt7921_mcu_regd_update(struct mt792x_dev *dev, u8 *alpha2, 60 enum environment_cap country_ie_env); 61 int __mt7921_mcu_regd_update(struct mt792x_dev *dev, u8 *alpha2, 62 enum environment_cap country_ie_env); 63 void mt7921_regd_notifier(struct wiphy *wiphy, 64 struct regulatory_request *request); 65 bool mt7921_regd_clc_supported(struct mt792x_dev *dev); 66 int mt7921_regd_change(struct mt792x_phy *phy, char *alpha2); 67 int mt7921_regd_init(struct mt792x_phy *phy); 68 int mt7921_regd_update(struct mt792x_phy *phy, char *alpha2); 69 70 #endif 71