drm: sti: remove useless fields from vtg structure

Message ID 1510146255-24982-1-git-send-email-benjamin.gaignard@linaro.org
State Accepted
Commit cc6b741c6f637484316188ae7f3be211b2f2b33a
Headers show
Series
  • drm: sti: remove useless fields from vtg structure
Related show

Commit Message

Benjamin Gaignard Nov. 8, 2017, 1:04 p.m.
Drivers are registered on platform bus so the private list
could be replace by a call to of_find_device_by_node().
Changing this also makes dev, np and link fields useless
in vtg structure.

Signed-off-by: Benjamin Gaignard <benjamin.gaignard@linaro.org>

---
 drivers/gpu/drm/sti/Kconfig   |  1 +
 drivers/gpu/drm/sti/sti_vtg.c | 32 ++++++++------------------------
 2 files changed, 9 insertions(+), 24 deletions(-)

-- 
2.7.4

Comments

Benjamin Gaignard Nov. 8, 2017, 1:55 p.m. | #1
2017-11-08 14:04 GMT+01:00 Benjamin Gaignard <benjamin.gaignard@linaro.org>:
> Drivers are registered on platform bus so the private list

> could be replace by a call to of_find_device_by_node().

> Changing this also makes dev, np and link fields useless

> in vtg structure.

>

> Signed-off-by: Benjamin Gaignard <benjamin.gaignard@linaro.org>


Merge in drm-misc-next with Daniel's irc ack.


> ---

>  drivers/gpu/drm/sti/Kconfig   |  1 +

>  drivers/gpu/drm/sti/sti_vtg.c | 32 ++++++++------------------------

>  2 files changed, 9 insertions(+), 24 deletions(-)

>

> diff --git a/drivers/gpu/drm/sti/Kconfig b/drivers/gpu/drm/sti/Kconfig

> index acd7286..cca4b3c 100644

> --- a/drivers/gpu/drm/sti/Kconfig

> +++ b/drivers/gpu/drm/sti/Kconfig

> @@ -8,5 +8,6 @@ config DRM_STI

>         select DRM_PANEL

>         select FW_LOADER

>         select SND_SOC_HDMI_CODEC if SND_SOC

> +       select OF

>         help

>           Choose this option to enable DRM on STM stiH4xx chipset

> diff --git a/drivers/gpu/drm/sti/sti_vtg.c b/drivers/gpu/drm/sti/sti_vtg.c

> index 2dcba1d..5f75aea 100644

> --- a/drivers/gpu/drm/sti/sti_vtg.c

> +++ b/drivers/gpu/drm/sti/sti_vtg.c

> @@ -9,6 +9,7 @@

>

>  #include <linux/module.h>

>  #include <linux/notifier.h>

> +#include <linux/of_platform.h>

>  #include <linux/platform_device.h>

>

>  #include <drm/drmP.h>

> @@ -72,8 +73,6 @@

>  #define AWG_DELAY_ED        (-8)

>  #define AWG_DELAY_SD        (-7)

>

> -static LIST_HEAD(vtg_lookup);

> -

>  /*

>   * STI VTG register offset structure

>   *

> @@ -123,42 +122,31 @@ struct sti_vtg_sync_params {

>  /**

>   * STI VTG structure

>   *

> - * @dev: pointer to device driver

> - * @np: device node

>   * @regs: register mapping

>   * @sync_params: synchronisation parameters used to generate timings

>   * @irq: VTG irq

>   * @irq_status: store the IRQ status value

>   * @notifier_list: notifier callback

>   * @crtc: the CRTC for vblank event

> - * @link: List node to link the structure in lookup list

>   */

>  struct sti_vtg {

> -       struct device *dev;

> -       struct device_node *np;

>         void __iomem *regs;

>         struct sti_vtg_sync_params sync_params[VTG_MAX_SYNC_OUTPUT];

>         int irq;

>         u32 irq_status;

>         struct raw_notifier_head notifier_list;

>         struct drm_crtc *crtc;

> -       struct list_head link;

>  };

>

> -static void vtg_register(struct sti_vtg *vtg)

> -{

> -       list_add_tail(&vtg->link, &vtg_lookup);

> -}

> -

>  struct sti_vtg *of_vtg_find(struct device_node *np)

>  {

> -       struct sti_vtg *vtg;

> +       struct platform_device *pdev;

>

> -       list_for_each_entry(vtg, &vtg_lookup, link) {

> -               if (vtg->np == np)

> -                       return vtg;

> -       }

> -       return NULL;

> +       pdev = of_find_device_by_node(np);

> +       if (!pdev)

> +               return NULL;

> +

> +       return (struct sti_vtg *)platform_get_drvdata(pdev);

>  }

>

>  static void vtg_reset(struct sti_vtg *vtg)

> @@ -397,9 +385,6 @@ static int vtg_probe(struct platform_device *pdev)

>         if (!vtg)

>                 return -ENOMEM;

>

> -       vtg->dev = dev;

> -       vtg->np = pdev->dev.of_node;

> -

>         /* Get Memory ressources */

>         res = platform_get_resource(pdev, IORESOURCE_MEM, 0);

>         if (!res) {

> @@ -428,10 +413,9 @@ static int vtg_probe(struct platform_device *pdev)

>                 return ret;

>         }

>

> -       vtg_register(vtg);

>         platform_set_drvdata(pdev, vtg);

>

> -       DRM_INFO("%s %s\n", __func__, dev_name(vtg->dev));

> +       DRM_INFO("%s %s\n", __func__, dev_name(dev));

>

>         return 0;

>  }

> --

> 2.7.4

>




-- 
Benjamin Gaignard

Graphic Study Group

Linaro.org │ Open source software for ARM SoCs

Follow Linaro: Facebook | Twitter | Blog

Patch

diff --git a/drivers/gpu/drm/sti/Kconfig b/drivers/gpu/drm/sti/Kconfig
index acd7286..cca4b3c 100644
--- a/drivers/gpu/drm/sti/Kconfig
+++ b/drivers/gpu/drm/sti/Kconfig
@@ -8,5 +8,6 @@  config DRM_STI
 	select DRM_PANEL
 	select FW_LOADER
 	select SND_SOC_HDMI_CODEC if SND_SOC
+	select OF
 	help
 	  Choose this option to enable DRM on STM stiH4xx chipset
diff --git a/drivers/gpu/drm/sti/sti_vtg.c b/drivers/gpu/drm/sti/sti_vtg.c
index 2dcba1d..5f75aea 100644
--- a/drivers/gpu/drm/sti/sti_vtg.c
+++ b/drivers/gpu/drm/sti/sti_vtg.c
@@ -9,6 +9,7 @@ 
 
 #include <linux/module.h>
 #include <linux/notifier.h>
+#include <linux/of_platform.h>
 #include <linux/platform_device.h>
 
 #include <drm/drmP.h>
@@ -72,8 +73,6 @@ 
 #define AWG_DELAY_ED        (-8)
 #define AWG_DELAY_SD        (-7)
 
-static LIST_HEAD(vtg_lookup);
-
 /*
  * STI VTG register offset structure
  *
@@ -123,42 +122,31 @@  struct sti_vtg_sync_params {
 /**
  * STI VTG structure
  *
- * @dev: pointer to device driver
- * @np: device node
  * @regs: register mapping
  * @sync_params: synchronisation parameters used to generate timings
  * @irq: VTG irq
  * @irq_status: store the IRQ status value
  * @notifier_list: notifier callback
  * @crtc: the CRTC for vblank event
- * @link: List node to link the structure in lookup list
  */
 struct sti_vtg {
-	struct device *dev;
-	struct device_node *np;
 	void __iomem *regs;
 	struct sti_vtg_sync_params sync_params[VTG_MAX_SYNC_OUTPUT];
 	int irq;
 	u32 irq_status;
 	struct raw_notifier_head notifier_list;
 	struct drm_crtc *crtc;
-	struct list_head link;
 };
 
-static void vtg_register(struct sti_vtg *vtg)
-{
-	list_add_tail(&vtg->link, &vtg_lookup);
-}
-
 struct sti_vtg *of_vtg_find(struct device_node *np)
 {
-	struct sti_vtg *vtg;
+	struct platform_device *pdev;
 
-	list_for_each_entry(vtg, &vtg_lookup, link) {
-		if (vtg->np == np)
-			return vtg;
-	}
-	return NULL;
+	pdev = of_find_device_by_node(np);
+	if (!pdev)
+		return NULL;
+
+	return (struct sti_vtg *)platform_get_drvdata(pdev);
 }
 
 static void vtg_reset(struct sti_vtg *vtg)
@@ -397,9 +385,6 @@  static int vtg_probe(struct platform_device *pdev)
 	if (!vtg)
 		return -ENOMEM;
 
-	vtg->dev = dev;
-	vtg->np = pdev->dev.of_node;
-
 	/* Get Memory ressources */
 	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
 	if (!res) {
@@ -428,10 +413,9 @@  static int vtg_probe(struct platform_device *pdev)
 		return ret;
 	}
 
-	vtg_register(vtg);
 	platform_set_drvdata(pdev, vtg);
 
-	DRM_INFO("%s %s\n", __func__, dev_name(vtg->dev));
+	DRM_INFO("%s %s\n", __func__, dev_name(dev));
 
 	return 0;
 }