diff options
author | Tony Lindgren <tony@atomide.com> | 2021-03-10 13:01:00 +0100 |
---|---|---|
committer | Tony Lindgren <tony@atomide.com> | 2021-03-10 13:01:00 +0100 |
commit | e259c2926c016dd815e5547412356d378fc1f589 (patch) | |
tree | 563c7eb46198a62e3db959dabebedad6be898c59 /arch/arm/mach-omap2 | |
parent | clk: ti: omap5: Add missing gpmc and ocmc clkctrl (diff) | |
download | linux-e259c2926c016dd815e5547412356d378fc1f589.tar.xz linux-e259c2926c016dd815e5547412356d378fc1f589.zip |
PCI: pci-dra7xx: Prepare for deferred probe with module_platform_driver
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: Kishon Vijay Abraham I <kishon@ti.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
Diffstat (limited to 'arch/arm/mach-omap2')
0 files changed, 0 insertions, 0 deletions