wifi: iwlwifi: add Device Tree hardware integration information
v3 cover wifi: iwlwifi: add Device Tree hardware integration information
Add Device Tree support for Intel Wi-Fi hardware integration information on platforms that do not provide UEFI variables or ACPI methods.
Patch 1/3 adds the DT binding schema for the Intel iwlwifi compatible node. Patches 2/3 and 3/3 add the driver infrastructure and integrate DT as the lowest-priority fallback after UEFI and ACPI; they are included for reference to show how the binding is consumed by the driver and will be merged through the regular iwlwifi upstreaming process, not through the DT tree.
Changes since v2:
Binding (patch 1/3):
- Subject and title updated to describe the BE200 hardware
- Revision header cell removed from all properties; each property is now a scalar uint32 or plain fixed-size array
- intel,wrds: reduced to 49 cells (mode word + 4x12 SAR values)
- intel,uats: reduced to 338 bytes (26x13 country nibble matrix)
- Removed allOf/items const: 0 constraints from all properties
- intel,srd: changed from integer enum to string enum (active-scan/passive-scan/disabled)
- Removed "reserved, must be 0" annotations; bits with no assigned meaning are not documented
- Added allOf: $ref: /schemas/net/wireless/ieee80211.yaml#
Driver (patch 2/3):
- Removed dsm_func_to_prop_name() and all IWL_DT_PROP_* defines; each property function now calls of_property_read_*() directly with the literal property string
- Driver updated to match binding changes (no revision cells, string-based intel,srd, scalar uint32 DSM properties, 338-byte intel,uats)
- Added iwl_dt_init() to validate DT node compatible at probe time;
all DT reads gated on fwrt->dt_compatible
- fw/dt.h now includes fw/runtime.h directly, making it self-contained
Fallback integration (patch 3/3):
- No changes from v2
Link to v2: https://patchwork.kernel.org/project/linux-wireless/patch/[email protected]/
Link to v1: https://patchwork.kernel.org/project/linux-wireless/patch/[email protected]/
Link to RFC: https://patchwork.kernel.org/project/devicetree/patch/[email protected]/
Avinash Bhatt (3):
dt-bindings: net: wireless: Add Intel Wi-Fi 7 BE200 PCIe adapter
wifi: iwlwifi: dt: add Device Tree BIOS configuration infrastructure
wifi: iwlwifi: dt: use Device Tree as fallback BIOS configuration source
.../bindings/net/wireless/intel,iwlwifi.yaml | 248 +++++++++++++++++ MAINTAINERS | 1 + drivers/net/wireless/intel/iwlwifi/Makefile | 1 + drivers/net/wireless/intel/iwlwifi/fw/acpi.h | 5 +- .../wireless/intel/iwlwifi/fw/api/nvm-reg.h | 4 +- drivers/net/wireless/intel/iwlwifi/fw/dt.c | 332 +++++++++++++++++++ drivers/net/wireless/intel/iwlwifi/fw/dt.h | 161 +++++++++ drivers/net/wireless/intel/iwlwifi/fw/init.c | 4 +- .../wireless/intel/iwlwifi/fw/regulatory.c | 3 +++ .../wireless/intel/iwlwifi/fw/regulatory.h | 3 +- drivers/net/wireless/intel/iwlwifi/fw/runtime.h | 6 +- drivers/net/wireless/intel/iwlwifi/mld/mld.c | 3 +++ .../intel/iwlwifi/mld/regulatory.c | 5 ++- 13 files changed, 772 insertions(+), 11 deletions(-)
Signature · 1 line
2.34.1
PATCH v3 1/3 dt-bindings: net: wireless: Add Intel Wi-Fi 7 BE200 PCIe adapter
The Intel Wi-Fi 7 BE200 is a discrete PCIe Wi-Fi adapter supporting 802.11be with tri-band operation including the 6 GHz band.
--- .../bindings/net/wireless/intel,iwlwifi.yaml | 248 ++++++++++++++++++ MAINTAINERS | 1 + 2 files changed, 249 insertions(+) create mode 100644 Documentation/devicetree/bindings/net/wireless/intel,iwlwifi.yaml
Documentation/devicetree/bindings/net/wireless/intel,iwlwifi.yaml new file +248 -0
@@ -0,0 +1,248 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +# Copyright (c) 2026 Intel Corporation +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/net/wireless/intel,iwlwifi.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Intel Wi-Fi 7 BE200 PCIe adapter + +maintainers: + - Avinash Bhatt <[email protected]> + - Miri Korenblit <[email protected]> + +description: + Intel Wi-Fi 7 BE200 (BE200NGW) IEEE 802.11be discrete PCIe adapter. + +allOf: + - $ref: /schemas/net/wireless/ieee80211.yaml# + +properties: + compatible: + enum: + - pci8086,272b + + reg: + maxItems: 1 + + intel,wrds: + description: | + SAR (Specific Absorption Rate) transmit power limits per antenna chain + and frequency subband, in units of 0.125 dBm. + + First cell is the mode word: bit 0 set enables SAR limiting, bit 0 + clear disables it (device uses its certified maximum). + + Followed by 48 limit values for four antenna chains in order: + chain A, chain B, CDB chain A, CDB chain B. Each chain has 12 + subband values covering the following frequency ranges: + + [0] 2.4 GHz ch 1-13 (2412-2472 MHz) + [1] 5 GHz ch 36-64 (5180-5320 MHz) + [2] 5 GHz ch 68-96 (5340-5480 MHz) + [3] 5 GHz ch 100-144 (5500-5720 MHz) + [4] 5 GHz ch 149-177 (5745-5885 MHz) + [5] 6 GHz ch 1-45 (5955-6175 MHz) + [6] 6 GHz ch 49-93 (6195-6415 MHz) + [7] 6 GHz ch 97-115 (6435-6525 MHz) + [8] 6 GHz ch 117-151 (6535-6705 MHz) + [9] 6 GHz ch 153-183 (6715-6865 MHz) + [10] 6 GHz ch 185-233 (6875-7115 MHz) + [11] 6 GHz ch 237-253 (7135-7215 MHz) + $ref: /schemas/types.yaml#/definitions/uint32-array + minItems: 49 + maxItems: 49 + + intel,uats: + description: | + Per-country enablement matrix for 6 GHz AP types. 338-byte array + encoding which AP types (AFC, VLP, LPI) are permitted per country. + + Countries are identified by ISO 3166-1 alpha-2 code. The matrix + covers all 26x26 = 676 two-letter combinations (AA..ZZ), stored + column-major (all second-letter variants for first letter A first, + then B, and so on). 26 columns x 13 bytes = 338 bytes total. + + Each country occupies 4 bits (a nibble); two countries are packed + per byte, low nibble first: + bit 0: AFC (Standard Power AP) permitted + bit 1: VLP (Very Low Power AP) permitted + bit 2: LPI (Low Power Indoor AP) permitted + + A bit is only effective when the corresponding control bit in + intel,6e-uhb is also set (bit 30 for AFC, bit 29 for VLP, + bit 31 for LPI per-country mode). + $ref: /schemas/types.yaml#/definitions/uint8-array + minItems: 338 + maxItems: 338 + + intel,srd: + description: | + ETSI 5.8 GHz SRD (Short Range Device) channel behaviour in the + 5725-5875 MHz band for ETSI regulatory domains. + + active-scan - active scanning permitted (default) + passive-scan - device may associate and transfer data but must + not transmit probe requests on SRD channels + disabled - device must not scan, associate, or operate on + any SRD channel + enum: + - active-scan + - passive-scan + - disabled + + intel,6e-uhb: + description: | + 6-7 GHz Ultra-High Band (UHB) per-country enable bitmask. + + bit 0: override control; 0 = use device defaults, + 1 = force-disable all countries not explicitly + enabled in bits 1-25 + bit 1: USA + bit 2: Rest of World (ROW) + bit 3: EU + bit 4: South Korea + bit 5: Brazil + bit 6: Chile + bit 7: Japan + bit 8: Canada + bit 9: Morocco + bit 10: Mongolia + bit 11: Malaysia + bit 12: Saudi Arabia + bit 13: Mexico + bit 14: Nigeria + bit 15: Thailand + bit 16: Singapore + bit 17: Taiwan + bit 18: South Africa + bit 19: Philippines + bit 20: Serbia + bit 21: Indonesia + bit 22: Azerbaijan + bit 23: Paraguay + bit 24: Vietnam + bit 25: India + bit 27: enable VLP active scan, SoftAP, and P2P-GO in Japan + bit 29: enable VLP mode per intel,uats country table + bit 30: enable AFC mode per intel,uats country table + bit 31: use intel,uats country table for LPI (0 = group mode) + $ref: /schemas/types.yaml#/definitions/uint32 + + intel,regulatory-special: + description: | + Special regulatory configuration flags. + + bit 4: enable Australia UHB band extension + bit 5: Bangladesh 6 GHz UHB enablement + $ref: /schemas/types.yaml#/definitions/uint32 + + intel,activate-channel: + description: | + Indoor channel activation bitmask. Enables specific frequency bands + for active use when the platform is operating indoors. + + bit 0: EU U-NII-1 (5150-5250 MHz) + bit 1: Japan U-NII-1 (5150-5250 MHz) + bit 2: China Mainland U-NII-1 (5150-5250 MHz) + bit 3: USA U-NII-4 (5850-5925 MHz) + bit 4: Worldwide U-NII-1 (5150-5250 MHz) for any country + where the band is permitted indoors + bit 5: Canada U-NII-4 (5850-5925 MHz) + $ref: /schemas/types.yaml#/definitions/uint32 + + intel,force-disable-channels: + description: | + Per-band force-disable bitmask. Permanently disables specific + frequency bands regardless of regulatory domain. + + bit 0: 2.4 GHz (ch 1-13, 2412-2472 MHz) + bit 1: 5.2 GHz (ch 36-48, 5180-5240 MHz) + bit 2: 5.3 GHz (ch 52-64, 5260-5320 MHz) + bit 3: 5.5 GHz (ch 100-144, 5500-5720 MHz) + bit 4: 5.8 GHz (ch 149-165, 5745-5825 MHz) + bit 5: 5.9 GHz (ch 169-177, 5845-5885 MHz) + bit 6: 6.2 GHz (ch 1-93, 5955-6415 MHz) + bit 7: 6.5 GHz (ch 97-113, 6435-6525 MHz) + bit 8: 6.6 GHz (ch 117-153, 6535-6705 MHz) + bit 9: 6.8 GHz (ch 157-185, 6715-6885 MHz) + bit 10: 7.0 GHz (ch 185-233, 6875-7115 MHz) + $ref: /schemas/types.yaml#/definitions/uint32 + + intel,11be: + description: | + 802.11be (Wi-Fi 7) per-country enable bitmask. + + bit 0: China (CN) + bit 1: South Korea + $ref: /schemas/types.yaml#/definitions/uint32 + + intel,splc: + description: + Platform thermal power limit for the Wi-Fi core in mW. The device + will not exceed this limit regardless of regulatory maximums. + $ref: /schemas/types.yaml#/definitions/uint32 + minimum: 1 + + intel,wcpe: + description: | + 802.11be channel puncturing enable bitmask. When set, allows the + device to puncture (skip) sub-channels within a wide channel for + coexistence with incumbents, subject to country certification. + + bit 0: USA + bit 1: Canada + $ref: /schemas/types.yaml#/definitions/uint32 + + intel,wbem: + description: | + 320 MHz channel bandwidth enable bitmask per country. Each bit + takes effect only if the installed module is certified for 320 MHz + in that country. + + bit 0: Japan + bit 1: South Korea + $ref: /schemas/types.yaml#/definitions/uint32 + +required: + - compatible + - reg + +additionalProperties: false + +examples: + - | + pcie { + #address-cells = <3>; + #size-cells = <2>; + + pcie@0 { + device_type = "pci"; + reg = <0x0 0x0 0x0 0x0 0x0>; + #address-cells = <3>; + #size-cells = <2>; + ranges; + bus-range = <0x01 0xff>; + + wifi@0 { + compatible = "pci8086,272b"; + reg = <0x10000 0x0 0x0 0x0 0x0>; + + /* SAR power limits: mode + 4 chains x 12 subbands */ + intel,wrds = < + 0x01 + 0x38 0x38 0x38 0x38 0x38 0x38 0x38 0x38 0x38 0x38 0x38 0x38 + 0x38 0x38 0x38 0x38 0x38 0x38 0x38 0x38 0x38 0x38 0x38 0x38 + 0x3c 0x3c 0x3c 0x3c 0x3c 0x3c 0x3c 0x3c 0x3c 0x3c 0x3c 0x3c + 0x3c 0x3c 0x3c 0x3c 0x3c 0x3c 0x3c 0x3c 0x3c 0x3c 0x3c 0x3c + >; + + intel,splc = <4500>; + intel,wcpe = <0x03>; + intel,wbem = <0x03>; + intel,srd = "passive-scan"; + intel,activate-channel = <0x01>; + intel,6e-uhb = <0x06>; + }; + }; + };
MAINTAINERS +1 -0
@@ -13256,6 +13256,7 @@ L: [email protected] S: Supported W: https://wireless.wiki.kernel.org/en/users/drivers/iwlwifi T: git https://git.kernel.org/pub/scm/linux/kernel/git/iwlwifi/iwlwifi-next.git/ +F: Documentation/devicetree/bindings/net/wireless/intel,iwlwifi.yaml F: drivers/net/wireless/intel/iwlwifi/ INTEL VISION SENSING CONTROLLER DRIVER
Signature · 1 line
2.34.1
Re: [PATCH v3 1/3] dt-bindings: net: wireless: Add Intel Wi-Fi 7 BE200 PCIe adapter
Quoted 5 lines · Avinash Bhatt
The Intel Wi-Fi 7 BE200 is a discrete PCIe Wi-Fi adapter supporting 802.11be with tri-band operation including the 6 GHz band.
Signed-off-by Avinash Bhatt <[email protected]>---
You sent v2 on 4th of May.
I replied one day later, on 4th of May.
It took you entire week to reply to my comments, but then you do not wait for my replies one week. You send v3 the next day.
DO NOT POST new versions while discussion is going.
Best regards,
Krzysztof
Re: [PATCH v3 1/3] dt-bindings: net: wireless: Add Intel Wi-Fi 7 BE200 PCIe adapter
Quoted 9 lines · Krzysztof Kozlowski
Quoted 5 lines · Avinash Bhatt
The Intel Wi-Fi 7 BE200 is a discrete PCIe Wi-Fi adapter supporting 802.11be with tri-band operation including the 6 GHz band.
Signed-off-by Avinash Bhatt <[email protected]>---
You sent v2 on 4th of May.
I replied one day later, on 4th of May.
4th -> 5th of May
Quoted 5 lines
It took you entire week to reply to my comments, but then you do not wait for my replies one week. You send v3 the next day.
DO NOT POST new versions while discussion is going.
Best regards,
Krzysztof
Re: [PATCH v3 1/3] dt-bindings: net: wireless: Add Intel Wi-Fi 7 BE200 PCIe adapter
In reply to Avinash BhattQuoted 5 lines · Avinash Bhatt
Documentation/devicetree/bindings/net/wireless/intel,iwlwifi.yaml new file +5
-0+ bit 23: Paraguay + bit 24: Vietnam + bit 25: India + bit 27: enable VLP active scan, SoftAP, and P2P-GO in Japan + bit 29: enable VLP mode per intel,uats country table
Documentation/devicetree/bindings/net/wireless/intel,iwlwifi.yaml line 137
Quoted 10 lines
Documentation/devicetree/bindings/net/wireless/intel,iwlwifi.yaml new file +10
-0+ bit 30: enable AFC mode per intel,uats country table + bit 31: use intel,uats country table for LPI (0 = group mode) + $ref: /schemas/types.yaml#/definitions/uint32 + + intel,regulatory-special: + description: | + Special regulatory configuration flags. + + bit 4: enable Australia UHB band extension + bit 5: Bangladesh 6 GHz UHB enablement
I already NAK-ed this.
You took one week to reply to my comments but then gave me only one day to disagree.
This is not how it works.
Implement previous comments. v2 discussion is still going, but this time read netiquette and configure your email systems correctly.
Best regards,
Krzysztof
PATCH v3 2/3 wifi: iwlwifi: dt: add Device Tree BIOS configuration infrastructure
In reply to Avinash BhattOn platforms that use Device Tree and do not provide UEFI variables or ACPI methods, discrete Intel Wi-Fi adapters have no way to receive BIOS configuration. Add Device Tree as a supported configuration source for SAR limits and 6 GHz AP type support, with stub hooks for TAS and per-platform antenna gain tables.
DT support is gated on CONFIG_OF and is a no-op on x86. BIOS_SOURCE_DT is added to enum bios_source to track the configuration origin.
--- drivers/net/wireless/intel/iwlwifi/Makefile | 1 + drivers/net/wireless/intel/iwlwifi/fw/acpi.h | 5 +- .../wireless/intel/iwlwifi/fw/api/nvm-reg.h | 4 +- drivers/net/wireless/intel/iwlwifi/fw/dt.c | 332 ++++++++++++++++++ drivers/net/wireless/intel/iwlwifi/fw/dt.h | 161 +++++++++ drivers/net/wireless/intel/iwlwifi/fw/init.c | 4 +- .../wireless/intel/iwlwifi/fw/regulatory.h | 3 +- .../net/wireless/intel/iwlwifi/fw/runtime.h | 6 +- intc-scripts/publishable-files | 2 + 9 files changed, 510 insertions(+), 8 deletions(-) create mode 100644 drivers/net/wireless/intel/iwlwifi/fw/dt.c create mode 100644 drivers/net/wireless/intel/iwlwifi/fw/dt.h
drivers/net/wireless/intel/iwlwifi/Makefile +1 -0
@@ -18,6 +18,7 @@ iwlwifi-$(CPTCFG_IWLMVM) += fw/paging.o fw/smem.o fw/init.o iwlwifi-$(CPTCFG_IWLMLD) += fw/smem.o fw/init.o iwlwifi-$(CONFIG_ACPI) += fw/acpi.o iwlwifi-$(CONFIG_EFI) += fw/uefi.o +iwlwifi-$(CONFIG_OF) += fw/dt.o iwlwifi-$(CPTCFG_IWLXVT) += fw/paging.o fw/smem.o iwlwifi-$(CPTCFG_IWLPROD) += fw/init.o
drivers/net/wireless/intel/iwlwifi/fw/acpi.h +1 -4
@@ -1,7 +1,7 @@/* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */ /* * Copyright (C) 2017 Intel Deutschland GmbH -* Copyright (C) 2018-2023, 2025 Intel Corporation +* Copyright (C) 2018-2023, 2025-2026 Intel Corporation */ #ifndef __iwl_fw_acpi__#define __iwl_fw_acpi__
@@ -115,9 +115,6 @@#define ACPI_PPAG_WIFI_DATA_SIZE_V3 ((ACPI_PPAG_NUM_CHAINS * \ ACPI_PPAG_NUM_BANDS_V3) + 2) -#define IWL_SAR_ENABLE_MSK BIT(0) -#define IWL_REDUCE_POWER_FLAGS_POS 1 -/* The Inidcator whether UEFI WIFI GUID tables are locked is read from ACPI */ #define UEFI_WIFI_GUID_UNLOCKED 0
drivers/net/wireless/intel/iwlwifi/fw/api/nvm-reg.h +3 -1
@@ -1,6 +1,6 @@/* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */ /* -* Copyright (C) 2012-2014, 2018-2025 Intel Corporation +* Copyright (C) 2012-2014, 2018-2026 Intel Corporation * Copyright (C) 2013-2015 Intel Mobile Communications GmbH * Copyright (C) 2016-2017 Intel Deutschland GmbH */
@@ -527,11 +527,13 @@ struct iwl_tas_config_cmd_v2_v4 {* @BIOS_SOURCE_NONE: BIOS source is not defined * @BIOS_SOURCE_ACPI: BIOS source is ACPI * @BIOS_SOURCE_UEFI: BIOS source is UEFI +* @BIOS_SOURCE_DT: BIOS source is Device Tree */ enum bios_source {BIOS_SOURCE_NONE ,BIOS_SOURCE_ACPI ,BIOS_SOURCE_UEFI , +BIOS_SOURCE_DT , };/**
drivers/net/wireless/intel/iwlwifi/fw/dt.c new file +332 -0
332 lines not on this page · raw message
drivers/net/wireless/intel/iwlwifi/fw/dt.h new file +161 -0
161 lines not on this page · raw message
drivers/net/wireless/intel/iwlwifi/fw/init.c +3 -1
@@ -1,12 +1,13 @@// SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause /* * Copyright (C) 2017 Intel Deutschland GmbH -* Copyright (C) 2019-2021, 2024-2025 Intel Corporation +* Copyright (C) 2019-2021, 2024-2026 Intel Corporation */ #include "iwl-drv.h" #include "runtime.h" #include "dbg.h" #include "debugfs.h" +#include "dt.h" #include "fw/api/system.h" #include "fw/api/commands.h"
@@ -36,6 +37,7 @@ void iwl_fw_runtime_init(struct iwl_fw_runtime *fwrt, struct iwl_trans *trans,INIT_DELAYED_WORK (&fwrt->dump.wks[i].wk, iwl_fw_error_dump_wk); }iwl_fwrt_dbgfs_register (fwrt, dbgfs_dir); +iwl_dt_init (fwrt); }IWL_EXPORT_SYMBOL (iwl_fw_runtime_init);
drivers/net/wireless/intel/iwlwifi/fw/regulatory.h +2 -1
@@ -1,6 +1,6 @@/* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */ /* -* Copyright (C) 2023-2025 Intel Corporation +* Copyright (C) 2023-2026 Intel Corporation */ #ifndef __fw_regulatory_h__
@@ -30,6 +30,7 @@#define BIOS_GEO_MIN_PROFILE_NUM 3#define IWL_SAR_ENABLE_MSK BIT(0) +#define IWL_REDUCE_POWER_FLAGS_POS 1/* PPAG gain value bounds in 1/8 dBm */ #define IWL_PPAG_MIN_LB -16
drivers/net/wireless/intel/iwlwifi/fw/runtime.h +5 -1
@@ -1,7 +1,7 @@/* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */ /* * Copyright (C) 2017 Intel Deutschland GmbH -* Copyright (C) 2018-2025 Intel Corporation +* Copyright (C) 2018-2026 Intel Corporation */ #ifndef __iwl_fw_runtime_h__#define __iwl_fw_runtime_h__
@@ -108,6 +108,7 @@ struct iwl_txf_iter_data {* @dump: debug dump data * @ap_type_cmd: AP type tables (for enablement on 6 GHz) * @ap_type_cmd_valid: if &ap_type_cmd is valid +* @dt_compatible: true if the DT node compatible matches a supported device * @uefi_tables_lock_status: The status of the WIFI GUID UEFI variables lock: * 0: Unlocked, 1 and 2: Locked. * Only read the UEFI variables if locked.
@@ -217,6 +218,9 @@ struct iwl_fw_runtime {bool sgom_enabled;struct iwl_mcc_allowed_ap_type_cmd ap_type_cmd;bool ap_type_cmd_valid; +#if IS_ENABLED (CONFIG_OF ) +bool dt_compatible; +#endif u8 uefi_tables_lock_status;struct iwl_phy_specific_cfg phy_filters;enum bios_source dsm_source;
intc-scripts/publishable-files +2 -0
@@ -76,6 +76,8 @@ drivers/net/wireless/intel/iwlwifi/fw/dbg.h drivers/net/wireless/intel/iwlwifi/fw/debugfs.c drivers/net/wireless/intel/iwlwifi/fw/debugfs.h drivers/net/wireless/intel/iwlwifi/fw/dhc-utils.h +drivers/net/wireless/intel/iwlwifi/fw/dt.c +drivers/net/wireless/intel/iwlwifi/fw/dt.h drivers/net/wireless/intel/iwlwifi/fw/dump.c drivers/net/wireless/intel/iwlwifi/fw/error-dump.h drivers/net/wireless/intel/iwlwifi/fw/file.h
Signature · 1 line
2.34.1
PATCH v3 3/3 wifi: iwlwifi: dt: use Device Tree as fallback BIOS configuration source
In reply to Avinash BhattWhen neither UEFI variables nor ACPI methods provide a BIOS configuration table, fall back to Device Tree. This preserves the existing UEFI -> ACPI priority order and extends it with DT as the lowest-priority source.
--- drivers/net/wireless/intel/iwlwifi/fw/regulatory.c | 3 +++ drivers/net/wireless/intel/iwlwifi/mld/mld.c | 3 +++ drivers/net/wireless/intel/iwlwifi/mld/regulatory.c | 5 ++++- 3 files changed, 10 insertions(+), 1 deletion(-)
drivers/net/wireless/intel/iwlwifi/fw/regulatory.c +3 -0
@@ -8,6 +8,7 @@#include "regulatory.h" #include "fw/runtime.h" #include "fw/uefi.h" +#include "fw/dt.h" #define GET_BIOS_TABLE (__name, ...) \ do { \
@@ -16,6 +17,8 @@ do { \ ret = iwl_uefi_get_ ## __name(__VA_ARGS__); \if (ret <0 ) \ ret = iwl_acpi_get_ ## __name(__VA_ARGS__); \ +if (ret <0 &&iwl_dt_is_compatible (fwrt)) \ + ret = iwl_dt_get_ ## __name(__VA_ARGS__); \return ret; \ }while (0 )
drivers/net/wireless/intel/iwlwifi/mld/mld.c +3 -0
@@ -12,6 +12,7 @@#include "fw/api/coex.h" #include "fw/dbg.h" #include "fw/uefi.h" +#include "fw/dt.h" #include "mld.h" #include "mlo.h"
@@ -466,6 +467,8 @@ iwl_op_mode_mld_start(struct iwl_trans *trans, const struct iwl_rf_cfg *cfg,iwl_mld_get_bios_tables (mld);iwl_uefi_get_sgom_table (trans, &mld->fwrt); mld->bios_enable_puncturing =iwl_uefi_get_puncturing (&mld->fwrt); +if (!mld->bios_enable_puncturing &&iwl_dt_is_compatible (&mld->fwrt)) + mld->bios_enable_puncturing =iwl_dt_get_puncturing (&mld->fwrt); mld->rfi.bios_enabled =iwl_rfi_is_enabled_in_bios (&mld->fwrt);iwl_mld_hw_set_regulatory (mld);
drivers/net/wireless/intel/iwlwifi/mld/regulatory.c +4 -1
@@ -1,6 +1,6 @@// SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause /* -* Copyright (C) 2024-2025 Intel Corporation +* Copyright (C) 2024-2026 Intel Corporation */ #include <linux/dmi.h>
@@ -8,6 +8,7 @@#include "fw/regulatory.h" #include "fw/acpi.h" #include "fw/uefi.h" +#include "fw/dt.h" #include "regulatory.h" #include "mld.h"
@@ -64,6 +65,8 @@ void iwl_mld_get_bios_tables(struct iwl_mld *mld) }iwl_uefi_get_uats_table (mld->trans, &mld->fwrt); +if (!mld->fwrt.ap_type_cmd_valid &&iwl_dt_is_compatible (&mld->fwrt)) +iwl_dt_get_uats_table (&mld->fwrt);iwl_uefi_get_uneb_table (mld->trans, &mld->fwrt);iwl_bios_get_phy_filters (&mld->fwrt);
Signature · 1 line
2.34.1