Hi Dario,
On Sun, Sep 04, 2022 at 04:10:19PM +0200, Dario Binacchi wrote:
Driver registration fails on SOC imx8mn as its supplier, the clock control module, is probed later than subsys initcall level. This driver uses platform_driver_probe which is not compatible with deferred probing and won't be probed again later if probe function fails due to clock not being available at that time.
This patch replaces the use of platform_driver_probe with platform_driver_register which will allow probing the driver later again when the clock control module will be available.
Fixes: a580b8c5429a ("dmaengine: mxs-dma: add dma support for i.MX23/28") Co-developed-by: Michael Trimarchi michael@amarulasolutions.com Signed-off-by: Michael Trimarchi michael@amarulasolutions.com Signed-off-by: Dario Binacchi dario.binacchi@amarulasolutions.com Cc: stable@vger.kernel.org
How I see it v3 of this patch is perfectly fine and should be taken instead of this one. I just commented that to v3.
Not sure if Vinod would take v3, or if you should resend v3 as v6 instead. If you do, you can add my Acked-by.
Vinod, please let us know what you prefer.
Sascha
Changes in v5:
- Update the commit message.
- Add the patch "dmaengine: mxs: fix section mismatch" to remove the warning raised by this patch.
Changes in v4:
- Restore __init in front of mxs_dma_probe() definition.
- Rename the mxs_dma_driver variable to mxs_dma_driver_probe.
- Update the commit message.
- Use builtin_platform_driver() instead of module_platform_driver().
Changes in v3:
- Restore __init in front of mxs_dma_init() definition.
Changes in v2:
- Add the tag "Cc: stable@vger.kernel.org" in the sign-off area.
drivers/dma/mxs-dma.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-)
diff --git a/drivers/dma/mxs-dma.c b/drivers/dma/mxs-dma.c index 994fc4d2aca4..18f8154b859b 100644 --- a/drivers/dma/mxs-dma.c +++ b/drivers/dma/mxs-dma.c @@ -839,10 +839,6 @@ static struct platform_driver mxs_dma_driver = { .name = "mxs-dma", .of_match_table = mxs_dma_dt_ids, },
- .probe = mxs_dma_probe,
};
-static int __init mxs_dma_module_init(void) -{
- return platform_driver_probe(&mxs_dma_driver, mxs_dma_probe);
-} -subsys_initcall(mxs_dma_module_init);
+builtin_platform_driver(mxs_dma_driver);
2.32.0