diff mbox series

[v3,39/56] drm/omap: remove global dss_device variable

Message ID 20201105120333.947408-40-tomi.valkeinen@ti.com
State Superseded
Headers show
Series Convert DSI code to use drm_mipi_dsi and drm_panel | expand

Commit Message

Tomi Valkeinen Nov. 5, 2020, 12:03 p.m. UTC
From: Sebastian Reichel <sebastian.reichel@collabora.com>

We can simply provide the device to the omapdrm driver
via pdata. omapdss_is_initialized() is no longer required
(even before this patch), since omapdrm device is only
registered after the pointer is initialized.

Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
---
 drivers/gpu/drm/omapdrm/dss/base.c    | 14 --------------
 drivers/gpu/drm/omapdrm/dss/dss.c     |  9 ++++-----
 drivers/gpu/drm/omapdrm/dss/omapdss.h |  9 +++------
 drivers/gpu/drm/omapdrm/omap_drv.c    |  6 ++----
 4 files changed, 9 insertions(+), 29 deletions(-)

Comments

Laurent Pinchart Nov. 9, 2020, 10:51 a.m. UTC | #1
Hi Tomi and Sebastian,

Thank you for the patch.

On Thu, Nov 05, 2020 at 02:03:16PM +0200, Tomi Valkeinen wrote:
> From: Sebastian Reichel <sebastian.reichel@collabora.com>

> 

> We can simply provide the device to the omapdrm driver

> via pdata. omapdss_is_initialized() is no longer required

> (even before this patch), since omapdrm device is only

> registered after the pointer is initialized.

> 

> Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>

> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>


Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>


> ---

>  drivers/gpu/drm/omapdrm/dss/base.c    | 14 --------------

>  drivers/gpu/drm/omapdrm/dss/dss.c     |  9 ++++-----

>  drivers/gpu/drm/omapdrm/dss/omapdss.h |  9 +++------

>  drivers/gpu/drm/omapdrm/omap_drv.c    |  6 ++----

>  4 files changed, 9 insertions(+), 29 deletions(-)

> 

> diff --git a/drivers/gpu/drm/omapdrm/dss/base.c b/drivers/gpu/drm/omapdrm/dss/base.c

> index 455b410f7401..8e08c49b4f97 100644

> --- a/drivers/gpu/drm/omapdrm/dss/base.c

> +++ b/drivers/gpu/drm/omapdrm/dss/base.c

> @@ -16,20 +16,6 @@

>  #include "dss.h"

>  #include "omapdss.h"

>  

> -static struct dss_device *dss_device;

> -

> -struct dss_device *omapdss_get_dss(void)

> -{

> -	return dss_device;

> -}

> -EXPORT_SYMBOL(omapdss_get_dss);

> -

> -void omapdss_set_dss(struct dss_device *dss)

> -{

> -	dss_device = dss;

> -}

> -EXPORT_SYMBOL(omapdss_set_dss);

> -

>  struct dispc_device *dispc_get_dispc(struct dss_device *dss)

>  {

>  	return dss->dispc;

> diff --git a/drivers/gpu/drm/omapdrm/dss/dss.c b/drivers/gpu/drm/omapdrm/dss/dss.c

> index 6ccbc29c4ce4..6e86f4e67a2c 100644

> --- a/drivers/gpu/drm/omapdrm/dss/dss.c

> +++ b/drivers/gpu/drm/omapdrm/dss/dss.c

> @@ -1305,6 +1305,7 @@ static int dss_bind(struct device *dev)

>  {

>  	struct dss_device *dss = dev_get_drvdata(dev);

>  	struct platform_device *drm_pdev;

> +	struct dss_pdata pdata;

>  	int r;

>  

>  	r = component_bind_all(dev, NULL);

> @@ -1313,9 +1314,9 @@ static int dss_bind(struct device *dev)

>  

>  	pm_set_vt_switch(0);

>  

> -	omapdss_set_dss(dss);

> -

> -	drm_pdev = platform_device_register_simple("omapdrm", 0, NULL, 0);

> +	pdata.dss = dss;

> +	drm_pdev = platform_device_register_data(NULL, "omapdrm", 0,

> +						 &pdata, sizeof(pdata));

>  	if (IS_ERR(drm_pdev)) {

>  		component_unbind_all(dev, NULL);

>  		return PTR_ERR(drm_pdev);

> @@ -1332,8 +1333,6 @@ static void dss_unbind(struct device *dev)

>  

>  	platform_device_unregister(dss->drm_pdev);

>  

> -	omapdss_set_dss(NULL);

> -

>  	component_unbind_all(dev, NULL);

>  }

>  

> diff --git a/drivers/gpu/drm/omapdrm/dss/omapdss.h b/drivers/gpu/drm/omapdrm/dss/omapdss.h

> index 3ee3063b6a2d..42d1ec3aaf0c 100644

> --- a/drivers/gpu/drm/omapdrm/dss/omapdss.h

> +++ b/drivers/gpu/drm/omapdrm/dss/omapdss.h

> @@ -356,12 +356,9 @@ struct omap_dss_device {

>  	unsigned int of_port;

>  };

>  

> -struct dss_device *omapdss_get_dss(void);

> -void omapdss_set_dss(struct dss_device *dss);

> -static inline bool omapdss_is_initialized(void)

> -{

> -	return !!omapdss_get_dss();

> -}

> +struct dss_pdata {

> +	struct dss_device *dss;

> +};

>  

>  void omapdss_display_init(struct omap_dss_device *dssdev);

>  int omapdss_display_get_modes(struct drm_connector *connector,

> diff --git a/drivers/gpu/drm/omapdrm/omap_drv.c b/drivers/gpu/drm/omapdrm/omap_drv.c

> index 53d5e184ee77..b342f5b6ced0 100644

> --- a/drivers/gpu/drm/omapdrm/omap_drv.c

> +++ b/drivers/gpu/drm/omapdrm/omap_drv.c

> @@ -577,6 +577,7 @@ static const struct soc_device_attribute omapdrm_soc_devices[] = {

>  static int omapdrm_init(struct omap_drm_private *priv, struct device *dev)

>  {

>  	const struct soc_device_attribute *soc;

> +	struct dss_pdata *pdata = dev->platform_data;

>  	struct drm_device *ddev;

>  	int ret;

>  

> @@ -591,7 +592,7 @@ static int omapdrm_init(struct omap_drm_private *priv, struct device *dev)

>  	ddev->dev_private = priv;

>  

>  	priv->dev = dev;

> -	priv->dss = omapdss_get_dss();

> +	priv->dss = pdata->dss;

>  	priv->dispc = dispc_get_dispc(priv->dss);

>  	priv->dispc_ops = dispc_get_ops(priv->dss);

>  

> @@ -686,9 +687,6 @@ static int pdev_probe(struct platform_device *pdev)

>  	struct omap_drm_private *priv;

>  	int ret;

>  

> -	if (omapdss_is_initialized() == false)

> -		return -EPROBE_DEFER;

> -

>  	ret = dma_coerce_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(32));

>  	if (ret) {

>  		dev_err(&pdev->dev, "Failed to set the DMA mask\n");


-- 
Regards,

Laurent Pinchart
diff mbox series

Patch

diff --git a/drivers/gpu/drm/omapdrm/dss/base.c b/drivers/gpu/drm/omapdrm/dss/base.c
index 455b410f7401..8e08c49b4f97 100644
--- a/drivers/gpu/drm/omapdrm/dss/base.c
+++ b/drivers/gpu/drm/omapdrm/dss/base.c
@@ -16,20 +16,6 @@ 
 #include "dss.h"
 #include "omapdss.h"
 
-static struct dss_device *dss_device;
-
-struct dss_device *omapdss_get_dss(void)
-{
-	return dss_device;
-}
-EXPORT_SYMBOL(omapdss_get_dss);
-
-void omapdss_set_dss(struct dss_device *dss)
-{
-	dss_device = dss;
-}
-EXPORT_SYMBOL(omapdss_set_dss);
-
 struct dispc_device *dispc_get_dispc(struct dss_device *dss)
 {
 	return dss->dispc;
diff --git a/drivers/gpu/drm/omapdrm/dss/dss.c b/drivers/gpu/drm/omapdrm/dss/dss.c
index 6ccbc29c4ce4..6e86f4e67a2c 100644
--- a/drivers/gpu/drm/omapdrm/dss/dss.c
+++ b/drivers/gpu/drm/omapdrm/dss/dss.c
@@ -1305,6 +1305,7 @@  static int dss_bind(struct device *dev)
 {
 	struct dss_device *dss = dev_get_drvdata(dev);
 	struct platform_device *drm_pdev;
+	struct dss_pdata pdata;
 	int r;
 
 	r = component_bind_all(dev, NULL);
@@ -1313,9 +1314,9 @@  static int dss_bind(struct device *dev)
 
 	pm_set_vt_switch(0);
 
-	omapdss_set_dss(dss);
-
-	drm_pdev = platform_device_register_simple("omapdrm", 0, NULL, 0);
+	pdata.dss = dss;
+	drm_pdev = platform_device_register_data(NULL, "omapdrm", 0,
+						 &pdata, sizeof(pdata));
 	if (IS_ERR(drm_pdev)) {
 		component_unbind_all(dev, NULL);
 		return PTR_ERR(drm_pdev);
@@ -1332,8 +1333,6 @@  static void dss_unbind(struct device *dev)
 
 	platform_device_unregister(dss->drm_pdev);
 
-	omapdss_set_dss(NULL);
-
 	component_unbind_all(dev, NULL);
 }
 
diff --git a/drivers/gpu/drm/omapdrm/dss/omapdss.h b/drivers/gpu/drm/omapdrm/dss/omapdss.h
index 3ee3063b6a2d..42d1ec3aaf0c 100644
--- a/drivers/gpu/drm/omapdrm/dss/omapdss.h
+++ b/drivers/gpu/drm/omapdrm/dss/omapdss.h
@@ -356,12 +356,9 @@  struct omap_dss_device {
 	unsigned int of_port;
 };
 
-struct dss_device *omapdss_get_dss(void);
-void omapdss_set_dss(struct dss_device *dss);
-static inline bool omapdss_is_initialized(void)
-{
-	return !!omapdss_get_dss();
-}
+struct dss_pdata {
+	struct dss_device *dss;
+};
 
 void omapdss_display_init(struct omap_dss_device *dssdev);
 int omapdss_display_get_modes(struct drm_connector *connector,
diff --git a/drivers/gpu/drm/omapdrm/omap_drv.c b/drivers/gpu/drm/omapdrm/omap_drv.c
index 53d5e184ee77..b342f5b6ced0 100644
--- a/drivers/gpu/drm/omapdrm/omap_drv.c
+++ b/drivers/gpu/drm/omapdrm/omap_drv.c
@@ -577,6 +577,7 @@  static const struct soc_device_attribute omapdrm_soc_devices[] = {
 static int omapdrm_init(struct omap_drm_private *priv, struct device *dev)
 {
 	const struct soc_device_attribute *soc;
+	struct dss_pdata *pdata = dev->platform_data;
 	struct drm_device *ddev;
 	int ret;
 
@@ -591,7 +592,7 @@  static int omapdrm_init(struct omap_drm_private *priv, struct device *dev)
 	ddev->dev_private = priv;
 
 	priv->dev = dev;
-	priv->dss = omapdss_get_dss();
+	priv->dss = pdata->dss;
 	priv->dispc = dispc_get_dispc(priv->dss);
 	priv->dispc_ops = dispc_get_ops(priv->dss);
 
@@ -686,9 +687,6 @@  static int pdev_probe(struct platform_device *pdev)
 	struct omap_drm_private *priv;
 	int ret;
 
-	if (omapdss_is_initialized() == false)
-		return -EPROBE_DEFER;
-
 	ret = dma_coerce_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(32));
 	if (ret) {
 		dev_err(&pdev->dev, "Failed to set the DMA mask\n");