• Tony Lindgren's avatar
    PCI: pci-dra7xx: Prepare for deferred probe with module_platform_driver · e259c292
    Tony Lindgren authored
    After updating pci-dra7xx driver to probe with ti-sysc and genpd, I
    noticed that dra7xx_pcie_probe() would not run if a power-domains property
    was configured for the interconnect target module.
    
    Turns out that module_platform_driver_probe uses platform_driver_probe(),
    while builtin_platform_driver uses platform_driver_register().
    
    Only platform_driver_register() works for deferred probe as noted in the
    comments for __platform_driver_probe() in drivers/base/platform.c with a
    line saying "Note that this is incompatible with deferred probing".
    
    With module_platform_driver_probe, we have platform_driver_probe() produce
    -ENODEV error at device_initcall() level, and no further attempts are done.
    Let's fix this by using module_platform_driver instead.
    
    Note this is not an issue currently as we probe devices with simple-bus,
    and only is needed as we start probing the device with ti-sysc, or when
    probed with simple-pm-bus.
    
    Note that we must now also remove __init for probe related functions to
    avoid a section mismatch warning.
    
    Cc: linux-pci@vger.kernel.org
    Cc: Bjorn Helgaas <bhelgaas@google.com>
    Cc: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Tested-by: default avatarKishon Vijay Abraham I <kishon@ti.com>
    Signed-off-by: default avatarTony Lindgren <tony@atomide.com>
    e259c292
pci-dra7xx.c 22.2 KB