All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v6] dmaengine: mxs: use platform_driver_register
@ 2022-09-21 17:05 ` Dario Binacchi
  0 siblings, 0 replies; 4+ messages in thread
From: Dario Binacchi @ 2022-09-21 17:05 UTC (permalink / raw)
  To: linux-kernel
  Cc: Michael Trimarchi, linux-amarula, Robin Murphy, Marco Felsch,
	Dario Binacchi, Sascha Hauer, stable, Fabio Estevam,
	NXP Linux Team, Pengutronix Kernel Team, Shawn Guo, Vinod Koul,
	dmaengine, linux-arm-kernel

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.

The __init annotation has been dropped because it is not compatible with
deferred probing. The code is not executed once and its memory cannot be
freed.

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>
Acked-by: Sascha Hauer <s.hauer@pengutronix.de>
Cc: stable@vger.kernel.org

---

Changes in v6:
- Drop __init annotation.
- Drop the "dmaengine: mxs: fix section mismatch" patch.
- Update the commit message.
- Add Sascha Hauer's Acked-by tag.

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 | 11 ++++-------
 1 file changed, 4 insertions(+), 7 deletions(-)

diff --git a/drivers/dma/mxs-dma.c b/drivers/dma/mxs-dma.c
index 994fc4d2aca4..dc147cc2436e 100644
--- a/drivers/dma/mxs-dma.c
+++ b/drivers/dma/mxs-dma.c
@@ -670,7 +670,7 @@ static enum dma_status mxs_dma_tx_status(struct dma_chan *chan,
 	return mxs_chan->status;
 }
 
-static int __init mxs_dma_init(struct mxs_dma_engine *mxs_dma)
+static int mxs_dma_init(struct mxs_dma_engine *mxs_dma)
 {
 	int ret;
 
@@ -741,7 +741,7 @@ static struct dma_chan *mxs_dma_xlate(struct of_phandle_args *dma_spec,
 				     ofdma->of_node);
 }
 
-static int __init mxs_dma_probe(struct platform_device *pdev)
+static int mxs_dma_probe(struct platform_device *pdev)
 {
 	struct device_node *np = pdev->dev.of_node;
 	const struct mxs_dma_type *dma_type;
@@ -839,10 +839,7 @@ 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


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH v6] dmaengine: mxs: use platform_driver_register
@ 2022-09-21 17:05 ` Dario Binacchi
  0 siblings, 0 replies; 4+ messages in thread
From: Dario Binacchi @ 2022-09-21 17:05 UTC (permalink / raw)
  To: linux-kernel
  Cc: Michael Trimarchi, linux-amarula, Robin Murphy, Marco Felsch,
	Dario Binacchi, Sascha Hauer, stable, Fabio Estevam,
	NXP Linux Team, Pengutronix Kernel Team, Shawn Guo, Vinod Koul,
	dmaengine, linux-arm-kernel

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.

The __init annotation has been dropped because it is not compatible with
deferred probing. The code is not executed once and its memory cannot be
freed.

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>
Acked-by: Sascha Hauer <s.hauer@pengutronix.de>
Cc: stable@vger.kernel.org

---

Changes in v6:
- Drop __init annotation.
- Drop the "dmaengine: mxs: fix section mismatch" patch.
- Update the commit message.
- Add Sascha Hauer's Acked-by tag.

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 | 11 ++++-------
 1 file changed, 4 insertions(+), 7 deletions(-)

diff --git a/drivers/dma/mxs-dma.c b/drivers/dma/mxs-dma.c
index 994fc4d2aca4..dc147cc2436e 100644
--- a/drivers/dma/mxs-dma.c
+++ b/drivers/dma/mxs-dma.c
@@ -670,7 +670,7 @@ static enum dma_status mxs_dma_tx_status(struct dma_chan *chan,
 	return mxs_chan->status;
 }
 
-static int __init mxs_dma_init(struct mxs_dma_engine *mxs_dma)
+static int mxs_dma_init(struct mxs_dma_engine *mxs_dma)
 {
 	int ret;
 
@@ -741,7 +741,7 @@ static struct dma_chan *mxs_dma_xlate(struct of_phandle_args *dma_spec,
 				     ofdma->of_node);
 }
 
-static int __init mxs_dma_probe(struct platform_device *pdev)
+static int mxs_dma_probe(struct platform_device *pdev)
 {
 	struct device_node *np = pdev->dev.of_node;
 	const struct mxs_dma_type *dma_type;
@@ -839,10 +839,7 @@ 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


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH v6] dmaengine: mxs: use platform_driver_register
  2022-09-21 17:05 ` Dario Binacchi
@ 2022-09-22  2:35   ` Vinod Koul
  -1 siblings, 0 replies; 4+ messages in thread
From: Vinod Koul @ 2022-09-22  2:35 UTC (permalink / raw)
  To: Dario Binacchi
  Cc: linux-kernel, Michael Trimarchi, linux-amarula, Robin Murphy,
	Marco Felsch, Sascha Hauer, stable, Fabio Estevam,
	NXP Linux Team, Pengutronix Kernel Team, Shawn Guo, dmaengine,
	linux-arm-kernel

On 21-09-22, 19:05, 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.
> 
> The __init annotation has been dropped because it is not compatible with
> deferred probing. The code is not executed once and its memory cannot be
> freed.

Applied, thanks

-- 
~Vinod

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH v6] dmaengine: mxs: use platform_driver_register
@ 2022-09-22  2:35   ` Vinod Koul
  0 siblings, 0 replies; 4+ messages in thread
From: Vinod Koul @ 2022-09-22  2:35 UTC (permalink / raw)
  To: Dario Binacchi
  Cc: linux-kernel, Michael Trimarchi, linux-amarula, Robin Murphy,
	Marco Felsch, Sascha Hauer, stable, Fabio Estevam,
	NXP Linux Team, Pengutronix Kernel Team, Shawn Guo, dmaengine,
	linux-arm-kernel

On 21-09-22, 19:05, 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.
> 
> The __init annotation has been dropped because it is not compatible with
> deferred probing. The code is not executed once and its memory cannot be
> freed.

Applied, thanks

-- 
~Vinod

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2022-09-22  2:37 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-09-21 17:05 [PATCH v6] dmaengine: mxs: use platform_driver_register Dario Binacchi
2022-09-21 17:05 ` Dario Binacchi
2022-09-22  2:35 ` Vinod Koul
2022-09-22  2:35   ` Vinod Koul

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.