> >>> Upon further thought, why can't you decide all this just on PCI >>> VID/PID? The giant switch statement in ath10k_pci_probe() could all >>> just be struct of driver_data from the PCI match table. >> I cannot decide all this just on PCI VID/PID because PCI VID/PID cannot tell whether calibration data are stored in the device (like most expansion cards) or not (for example, in an NVRAM cell referenced by the device tree). >> > For a given VID/PID, you could have calibration data in DT that you > want to ignore sometimes and not other times (because the compatible > is wrong)? Some devices will change their VID/PID after applied with calibration data (e.g. AR922X will do 168c:ff1d -> 168c:0029), but most device trees only record their post-calibration VID/PID in their compatibility string. Should we match such device against their pre-calibration VID/PID only, and break all current device trees for them? I think we could add these pre-calibration VID/PIDs to the ID-list of the PCI driver, but had better match compatibility strings against drivers, not devices.