Hi Alex, On zaterdag 22 juni 2024 23:54:16 Midden-Europese standaardtijd Alex Bee wrote: > The currently existing of_property_present check for interrupts does not > cover all ways interrupts can be defined in a device tree, e.g. > "interrupts-extended". > > In order to support all current and future ways that can be done, drop that > check and call of_irq_parse_one to figure out if an interrupt is defined > and irq_create_of_mapping for the actual mapping and let it be handled by > the interrupt subsystem. This commit seems to break WiFi on qcom/apq8026-asus-sparrow on 6.11.11 release, and I'm guessing also other apq8026 devices that I have. dmesg looks like the following on this board: [ 33.699503] brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac43430-sdio for chip BCM43430/1 [ 33.811445] brcmfmac mmc1:0001:1: Direct firmware load for brcm/brcmfmac43430-sdio.clm_blob failed with error -2 [ 36.565674] brcmfmac: brcmf_sdio_bus_rxctl: resumed on timeout [ 36.565725] ieee80211 phy0: brcmf_bus_started: failed: -110 [ 36.565777] ieee80211 phy0: brcmf_attach: dongle is not responding: err=-110 [ 36.575930] brcmfmac: brcmf_sdio_firmware_callback: brcmf_attach failed After reverting this commit it works well again: [ 141.299739] cfg80211: Loading compiled-in X.509 certificates for regulatory database [ 141.355040] Loaded X.509 cert 'sforshee: 00b28ddf47aef9cea7' [ 141.364695] Loaded X.509 cert 'wens: 61c038651aabdcf94bd0ac7ff06c7248db18c600' [ 141.469042] brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac43430-sdio for chip BCM43430/1 [ 141.612365] brcmfmac mmc1:0001:1: Direct firmware load for brcm/brcmfmac43430-sdio.clm_blob failed with error -2 [ 141.730597] brcmfmac: brcmf_c_process_clm_blob: no clm_blob available (err=-2), device may have limited channels available [ 141.730661] brcmfmac: brcmf_c_process_txcap_blob: no txcap_blob available (err=-2) [ 141.731778] brcmfmac: brcmf_c_preinit_dcmds: Firmware: BCM43430/1 wl0: Jun 23 2016 21:14:35 version 7.10.324.google.security.test (TOB) (r640416) FWID 01-495ddd98 Would you have a different solution apart from just reverting this commit? Regards Luca > > Signed-off-by: Alex Bee <knaerzche@xxxxxxxxx> > --- > Link to v1: > https://lore.kernel.org/all/20240621225558.280462-1-knaerzche@xxxxxxxxx/ > > drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.c | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-) > > diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.c > index e406e11481a6..fe4f65756105 100644 > --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.c > +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.c > @@ -70,6 +70,7 @@ void brcmf_of_probe(struct device *dev, enum brcmf_bus_type bus_type, > { > struct brcmfmac_sdio_pd *sdio = &settings->bus.sdio; > struct device_node *root, *np = dev->of_node; > + struct of_phandle_args oirq; > const char *prop; > int irq; > int err; > @@ -129,10 +130,10 @@ void brcmf_of_probe(struct device *dev, enum brcmf_bus_type bus_type, > sdio->drive_strength = val; > > /* make sure there are interrupts defined in the node */ > - if (!of_property_present(np, "interrupts")) > + if (of_irq_parse_one(np, 0, &oirq)) > return; > > - irq = irq_of_parse_and_map(np, 0); > + irq = irq_create_of_mapping(&oirq); > if (!irq) { > brcmf_err("interrupt could not be mapped\n"); > return; >