On Thu, Jul 25, 2024 at 02:38:18AM +0200, Ben Hutchings wrote: > If CONFIG_USB_XHCI_PCI_RENESAS is enabled, xhci-pci conditionally > calls into the xhci-pci-renesas module, which means both modules must > be loaded to use any xHCI PCI controller. > > The MODULE_FIRMWARE declaration in the base xhci-pci module causes > initramfs-tools to check for and warn about missing firmware for the > Renesas xHCI controllers, when any xHCI PCI controller is present. > And because of the previous oddity, simply moving this declaration to > xhci-pci-renesas wouldn't help. > > To fix this, reverse the relationship between the modules: > > - Remove the quirk for the Renesas xHCIs, and the driver_data > structure used only for them > - In xhci-pci: > - Rename xhci_pci_probe() to xhci_pci_common_probe() > - Export xhci_pci_common_probe() and xhci_pci_remove() > - Use a new probe function that rejects the Renesas xHCIs and then > calls the common probe function > - In xhci-pci-renesas: > - Stop exporting renesas_xhci_check_request_fw() > - Add a probe function that calls renesas_xhci_check_request_fw() > followed by xhci_pci_common_probe() > - Add and register a new pci_driver matching only the Renesas xHCIs > and using its own probe function, but with other operations the > same as in xhci-pci > - Make CONFIG_USB_XHCI_PCI_RENESAS depend on CONFIG_USB_XHCI_PCI, > not the other way around > > Finally, move the MODULE_FIRMWARE declaration to xhci-pci-renesas. Thanks for doing this, this has long bugged me, and "simple" fixes didn't seem to do it, but this looks nice. I'll queue it up after -rc1 is out. greg k-h