diff mbox

drm: sti: remove useless fields from vtg structure

Message ID 1510146255-24982-1-git-send-email-benjamin.gaignard@linaro.org (mailing list archive)
State New, archived
Headers show

Commit Message

Benjamin Gaignard Nov. 8, 2017, 1:04 p.m. UTC
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(-)

Comments

Benjamin Gaignard Nov. 8, 2017, 1:55 p.m. UTC | #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
>
diff mbox

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;
 }