could be unrelated but in kernel 5.5+ they added extra check to the pci driver and for ipq806x the second and third pci port didn't work as the io address was too big. Problem is that pcie doesn't display any warning about this and this results in problem loading the ath10k firmware in my case (the firmware reported problem writing on some pci address)
The fix for ipq806x was enlarge the max io address space for the entire arm arch
There is some deeper issue with the driver as it will randomly load but then crash on unrelated stuff.
mwifiex driver will load the fw and succeed, but it wont bring up the AP, it always just returns an error code.
There is a kernel panic, but it points to a completely wrong function that does not even get executed.
So, I did some manual prints and found that of_find_node_by_name() will fail and crash the kernel with it.
The current fix is to simply comment it out.
Also, the AW-CM276NF PCIe module used for WLAN on Espressobin Ultra has a HW bug that requires its power to be toggled off/on with a 5ms delay before PCI link training as otherwise it wont change state to D3h and that will crash the kernel as well.
Some further digging leads to the root cause, pci_bus_to_OF_node() is being used to get the PCI BUS DT node, but there is no sanity checking on what it returns.
And since It cant find a DT node, it will return NULL and then there is a print that is supposed to print the node name.
And obviously since the node is NULL we get a NULL dereference.