Looking at the code (and something I notice also earlier....) the reset code is totally missing. In the original qca code, the first thing the driver do on init is assert the gpio reset. For some reason this is missing in the upstream code. Still I can't understand why declaring it, triggers the reset.
Hm, as far as I understand any PCI-E driver should reset any device it founds.
At least that's what I have seen is done, so without perst GPIO, you cant even find the device.
reset-gpio is a generic Linux property that is usually handled by the subsystem core.
Well that would cause the issues since they changed the default polarity while I doubt that DTSI in OpenWrt was updated with the changed polarity.
You can simply change the polarity in OpenWrt DTSI to test
Anyway i found the solution...
The fix proposed consist in deleting the perst definition and adding reset gpio
Problem is that the driver doesn't do anything with a reset-gpio so the real solution is removing the perst...
Now i remember that in the original code there is a special implementation for perst gpio that in short defined only ONE gpio for a particular soc...
I tried removing the perst gpio and i notice that pci0 fails to load but pci1 actually load correctly...
Defining perst gpio only for pci0 make them load correctly.
This would explain the special implementation in the original code...
(wonder if the gpio is connected to all the pcie line?)
(also in newer kernel the definition for gpio changed perst-gpios to perst-gpio and since the perst is optional the pci port was never actually reset)
@robimarko any idea how to identify board based on db147 or ap148 or rumi3 ?
r7800 looks like db147 since pci1 doesn't require gpio reset (and in db147 that is set to -1 so disabled)
The easiest way would be to simply extract the DTB used by stock FW and you will have the board identifier there.
You can also take a look at the stock bootlog but sometimes the full revision is missing from the model there
Hey, not sure if this is the proper way to ask things but I just got a hold of an Nighthawk AC2600 (R7800) and I was wondering if I should run OpenWRT or Stock (V1.0.2.68) - I am a pretty basic user so I am just looking for the best performance I can get without much manual work, and I was just wondering if the OpenWRT firmware is way better to use for performance then the stock version.
Security is much better though, latency as well. so it all depends on how much bandwidth he needs. if his internet connection is <200mbit, Openwrt will be just fine.
Agree, but you are missing the time/effort investment required to get everything running: even setting up a guest wifi is not for fainthearted. The poster came here with the only criteria: performance. It is clear that there is no understanding of what running an OpenWrt router means and why do that. A Google WiFi router is a better choice here.