diff mbox

gpu: ipu-v3: Fix imx-ipuv3-crtc module autoloading

Message ID 1461745743-13460-1-git-send-email-p.zabel@pengutronix.de (mailing list archive)
State New, archived
Headers show

Commit Message

Philipp Zabel April 27, 2016, 8:29 a.m. UTC
If of_node is set before calling platform_device_add, the driver core
will try to use of: modalias matching, which fails because the device
tree nodes don't have a compatible property set. This patch fixes
imx-ipuv3-crtc module autoloading by setting the of_node property only
after the platform modalias is set.

Fixes: 304e6be652e2 ("gpu: ipu-v3: Assign of_node of child platform devices to corresponding ports")
Reported-by: Dennis Gilmore <dennis@ausil.us>
Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
---
 drivers/gpu/ipu-v3/ipu-common.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

Comments

Dennis Gilmore April 27, 2016, 1:54 p.m. UTC | #1
Thanks Philipp,

I tested and module loading worked correctly

Dennis

On 2016-04-27 03:29, Philipp Zabel wrote:
> If of_node is set before calling platform_device_add, the driver core
> will try to use of: modalias matching, which fails because the device
> tree nodes don't have a compatible property set. This patch fixes
> imx-ipuv3-crtc module autoloading by setting the of_node property only
> after the platform modalias is set.
> 
> Fixes: 304e6be652e2 ("gpu: ipu-v3: Assign of_node of child platform
> devices to corresponding ports")
> Reported-by: Dennis Gilmore <dennis@ausil.us>
> Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
Tested-By: Dennis Gilmore <dennis@ausil.us>

> ---
>  drivers/gpu/ipu-v3/ipu-common.c | 7 ++++++-
>  1 file changed, 6 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/ipu-v3/ipu-common.c 
> b/drivers/gpu/ipu-v3/ipu-common.c
> index e00db3f..abb98c7 100644
> --- a/drivers/gpu/ipu-v3/ipu-common.c
> +++ b/drivers/gpu/ipu-v3/ipu-common.c
> @@ -1068,7 +1068,6 @@ static int ipu_add_client_devices(struct ipu_soc
> *ipu, unsigned long ipu_base)
>  			goto err_register;
>  		}
> 
> -		pdev->dev.of_node = of_node;
>  		pdev->dev.parent = dev;
> 
>  		ret = platform_device_add_data(pdev, &reg->pdata,
> @@ -1079,6 +1078,12 @@ static int ipu_add_client_devices(struct
> ipu_soc *ipu, unsigned long ipu_base)
>  			platform_device_put(pdev);
>  			goto err_register;
>  		}
> +
> +		/*
> +		 * Set of_node only after calling platform_device_add. Otherwise
> +		 * the platform:imx-ipuv3-crtc modalias won't be used.
> +		 */
> +		pdev->dev.of_node = of_node;
>  	}
> 
>  	return 0;
Philipp Zabel April 27, 2016, 2:10 p.m. UTC | #2
Am Mittwoch, den 27.04.2016, 08:54 -0500 schrieb Dennis Gilmore:
> Thanks Philipp,
> 
> I tested and module loading worked correctly
> 
> Dennis
> 
> On 2016-04-27 03:29, Philipp Zabel wrote:
> > If of_node is set before calling platform_device_add, the driver core
> > will try to use of: modalias matching, which fails because the device
> > tree nodes don't have a compatible property set. This patch fixes
> > imx-ipuv3-crtc module autoloading by setting the of_node property only
> > after the platform modalias is set.
> > 
> > Fixes: 304e6be652e2 ("gpu: ipu-v3: Assign of_node of child platform
> > devices to corresponding ports")
> > Reported-by: Dennis Gilmore <dennis@ausil.us>
> > Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
> Tested-By: Dennis Gilmore <dennis@ausil.us>

Thank you.

regards
Philipp
diff mbox

Patch

diff --git a/drivers/gpu/ipu-v3/ipu-common.c b/drivers/gpu/ipu-v3/ipu-common.c
index e00db3f..abb98c7 100644
--- a/drivers/gpu/ipu-v3/ipu-common.c
+++ b/drivers/gpu/ipu-v3/ipu-common.c
@@ -1068,7 +1068,6 @@  static int ipu_add_client_devices(struct ipu_soc *ipu, unsigned long ipu_base)
 			goto err_register;
 		}
 
-		pdev->dev.of_node = of_node;
 		pdev->dev.parent = dev;
 
 		ret = platform_device_add_data(pdev, &reg->pdata,
@@ -1079,6 +1078,12 @@  static int ipu_add_client_devices(struct ipu_soc *ipu, unsigned long ipu_base)
 			platform_device_put(pdev);
 			goto err_register;
 		}
+
+		/*
+		 * Set of_node only after calling platform_device_add. Otherwise
+		 * the platform:imx-ipuv3-crtc modalias won't be used.
+		 */
+		pdev->dev.of_node = of_node;
 	}
 
 	return 0;