Re: [PATCH v2 2/4] drm/panel: Initialise panel dev and funcs through drm_panel_init()

2019-08-24 Thread Sam Ravnborg
On Fri, Aug 23, 2019 at 10:32:43PM +0300, Laurent Pinchart wrote:
> Instead of requiring all drivers to set the dev and funcs fields of
> drm_panel manually after calling drm_panel_init(), pass the data as
> arguments to the function. This simplifies the panel drivers, and will
> help future refactoring when adding new arguments to drm_panel_init().
> 
> The panel drivers have been updated with the following Coccinelle
> semantic patch, with manual inspection to verify that no call to
> drm_panel_init() with a single argument still exists.
> 
> @@
> expression panel;
> expression device;
> identifier ops;
> @@
>  drm_panel_init(&panel
> + , device, &ops
>  );
>  ...
> (
> -panel.dev = device;
> -panel.funcs = &ops;
> |
> -panel.funcs = &ops;
> -panel.dev = device;
> )
> 
> Suggested-by: Sam Ravnborg 
> Signed-off-by: Laurent Pinchart 

Thanks, applied to drm-misc-next.
Nice use of Coccinelle.

Sam


> ---
>  drivers/gpu/drm/drm_panel.c   | 11 ---
>  drivers/gpu/drm/panel/panel-arm-versatile.c   |  4 +---
>  drivers/gpu/drm/panel/panel-feiyang-fy07024di26a30d.c |  4 +---
>  drivers/gpu/drm/panel/panel-ilitek-ili9322.c  |  4 +---
>  drivers/gpu/drm/panel/panel-ilitek-ili9881c.c |  4 +---
>  drivers/gpu/drm/panel/panel-innolux-p079zca.c |  4 +---
>  drivers/gpu/drm/panel/panel-jdi-lt070me05000.c|  4 +---
>  drivers/gpu/drm/panel/panel-kingdisplay-kd097d04.c|  5 ++---
>  drivers/gpu/drm/panel/panel-lg-lb035q02.c |  4 +---
>  drivers/gpu/drm/panel/panel-lg-lg4573.c   |  4 +---
>  drivers/gpu/drm/panel/panel-lvds.c|  4 +---
>  drivers/gpu/drm/panel/panel-nec-nl8048hl11.c  |  4 +---
>  drivers/gpu/drm/panel/panel-novatek-nt39016.c |  4 +---
>  drivers/gpu/drm/panel/panel-olimex-lcd-olinuxino.c|  4 +---
>  drivers/gpu/drm/panel/panel-orisetech-otm8009a.c  |  4 +---
>  drivers/gpu/drm/panel/panel-osd-osd101t2587-53ts.c|  5 ++---
>  drivers/gpu/drm/panel/panel-panasonic-vvx10f034n00.c  |  5 ++---
>  drivers/gpu/drm/panel/panel-raspberrypi-touchscreen.c |  4 +---
>  drivers/gpu/drm/panel/panel-raydium-rm67191.c |  4 +---
>  drivers/gpu/drm/panel/panel-raydium-rm68200.c |  4 +---
>  drivers/gpu/drm/panel/panel-rocktech-jh057n00900.c|  4 +---
>  drivers/gpu/drm/panel/panel-ronbo-rb070d30.c  |  4 +---
>  drivers/gpu/drm/panel/panel-samsung-ld9040.c  |  4 +---
>  drivers/gpu/drm/panel/panel-samsung-s6d16d0.c |  4 +---
>  drivers/gpu/drm/panel/panel-samsung-s6e3ha2.c |  4 +---
>  drivers/gpu/drm/panel/panel-samsung-s6e63j0x03.c  |  4 +---
>  drivers/gpu/drm/panel/panel-samsung-s6e63m0.c |  4 +---
>  drivers/gpu/drm/panel/panel-samsung-s6e8aa0.c |  4 +---
>  drivers/gpu/drm/panel/panel-seiko-43wvf1g.c   |  4 +---
>  drivers/gpu/drm/panel/panel-sharp-lq101r1sx01.c   |  4 +---
>  drivers/gpu/drm/panel/panel-sharp-ls037v7dw01.c   |  4 +---
>  drivers/gpu/drm/panel/panel-sharp-ls043t1le01.c   |  5 ++---
>  drivers/gpu/drm/panel/panel-simple.c  |  4 +---
>  drivers/gpu/drm/panel/panel-sitronix-st7701.c |  4 +---
>  drivers/gpu/drm/panel/panel-sitronix-st7789v.c|  4 +---
>  drivers/gpu/drm/panel/panel-sony-acx565akm.c  |  4 +---
>  drivers/gpu/drm/panel/panel-tpo-td028ttec1.c  |  4 +---
>  drivers/gpu/drm/panel/panel-tpo-td043mtea1.c  |  4 +---
>  drivers/gpu/drm/panel/panel-tpo-tpg110.c  |  4 +---
>  drivers/gpu/drm/panel/panel-truly-nt35597.c   |  4 +---
>  include/drm/drm_panel.h   |  3 ++-
>  41 files changed, 53 insertions(+), 121 deletions(-)
> 
> diff --git a/drivers/gpu/drm/drm_panel.c b/drivers/gpu/drm/drm_panel.c
> index 6b0bf42039cf..ba2fad4c9648 100644
> --- a/drivers/gpu/drm/drm_panel.c
> +++ b/drivers/gpu/drm/drm_panel.c
> @@ -44,13 +44,18 @@ static LIST_HEAD(panel_list);
>  /**
>   * drm_panel_init - initialize a panel
>   * @panel: DRM panel
> + * @dev: parent device of the panel
> + * @funcs: panel operations
>   *
> - * Sets up internal fields of the panel so that it can subsequently be added
> - * to the registry.
> + * Initialize the panel structure for subsequent registration with
> + * drm_panel_add().
>   */
> -void drm_panel_init(struct drm_panel *panel)
> +void drm_panel_init(struct drm_panel *panel, struct device *dev,
> + const struct drm_panel_funcs *funcs)
>  {
>   INIT_LIST_HEAD(&panel->list);
> + panel->dev = dev;
> + panel->funcs = funcs;
>  }
>  EXPORT_SYMBOL(drm_panel_init);
>  
> diff --git a/drivers/gpu/drm/panel/panel-arm-versatile.c 
> b/drivers/gpu/drm/panel/panel-arm-versatile.c
> index 5f72c922a04b..a4333ed0f20c 100644
> --- a/drivers/gpu/drm/panel/panel-arm-versatile.c
> +++ b/drivers/gpu/drm/panel/panel-arm-versatile.c
> @@ -350,9 +350,7 @@ static int versatile_panel_probe(struct platform_device 
> *pdev)
>   

[PATCH v2 2/4] drm/panel: Initialise panel dev and funcs through drm_panel_init()

2019-08-23 Thread Laurent Pinchart
Instead of requiring all drivers to set the dev and funcs fields of
drm_panel manually after calling drm_panel_init(), pass the data as
arguments to the function. This simplifies the panel drivers, and will
help future refactoring when adding new arguments to drm_panel_init().

The panel drivers have been updated with the following Coccinelle
semantic patch, with manual inspection to verify that no call to
drm_panel_init() with a single argument still exists.

@@
expression panel;
expression device;
identifier ops;
@@
 drm_panel_init(&panel
+   , device, &ops
 );
 ...
(
-panel.dev = device;
-panel.funcs = &ops;
|
-panel.funcs = &ops;
-panel.dev = device;
)

Suggested-by: Sam Ravnborg 
Signed-off-by: Laurent Pinchart 
---
 drivers/gpu/drm/drm_panel.c   | 11 ---
 drivers/gpu/drm/panel/panel-arm-versatile.c   |  4 +---
 drivers/gpu/drm/panel/panel-feiyang-fy07024di26a30d.c |  4 +---
 drivers/gpu/drm/panel/panel-ilitek-ili9322.c  |  4 +---
 drivers/gpu/drm/panel/panel-ilitek-ili9881c.c |  4 +---
 drivers/gpu/drm/panel/panel-innolux-p079zca.c |  4 +---
 drivers/gpu/drm/panel/panel-jdi-lt070me05000.c|  4 +---
 drivers/gpu/drm/panel/panel-kingdisplay-kd097d04.c|  5 ++---
 drivers/gpu/drm/panel/panel-lg-lb035q02.c |  4 +---
 drivers/gpu/drm/panel/panel-lg-lg4573.c   |  4 +---
 drivers/gpu/drm/panel/panel-lvds.c|  4 +---
 drivers/gpu/drm/panel/panel-nec-nl8048hl11.c  |  4 +---
 drivers/gpu/drm/panel/panel-novatek-nt39016.c |  4 +---
 drivers/gpu/drm/panel/panel-olimex-lcd-olinuxino.c|  4 +---
 drivers/gpu/drm/panel/panel-orisetech-otm8009a.c  |  4 +---
 drivers/gpu/drm/panel/panel-osd-osd101t2587-53ts.c|  5 ++---
 drivers/gpu/drm/panel/panel-panasonic-vvx10f034n00.c  |  5 ++---
 drivers/gpu/drm/panel/panel-raspberrypi-touchscreen.c |  4 +---
 drivers/gpu/drm/panel/panel-raydium-rm67191.c |  4 +---
 drivers/gpu/drm/panel/panel-raydium-rm68200.c |  4 +---
 drivers/gpu/drm/panel/panel-rocktech-jh057n00900.c|  4 +---
 drivers/gpu/drm/panel/panel-ronbo-rb070d30.c  |  4 +---
 drivers/gpu/drm/panel/panel-samsung-ld9040.c  |  4 +---
 drivers/gpu/drm/panel/panel-samsung-s6d16d0.c |  4 +---
 drivers/gpu/drm/panel/panel-samsung-s6e3ha2.c |  4 +---
 drivers/gpu/drm/panel/panel-samsung-s6e63j0x03.c  |  4 +---
 drivers/gpu/drm/panel/panel-samsung-s6e63m0.c |  4 +---
 drivers/gpu/drm/panel/panel-samsung-s6e8aa0.c |  4 +---
 drivers/gpu/drm/panel/panel-seiko-43wvf1g.c   |  4 +---
 drivers/gpu/drm/panel/panel-sharp-lq101r1sx01.c   |  4 +---
 drivers/gpu/drm/panel/panel-sharp-ls037v7dw01.c   |  4 +---
 drivers/gpu/drm/panel/panel-sharp-ls043t1le01.c   |  5 ++---
 drivers/gpu/drm/panel/panel-simple.c  |  4 +---
 drivers/gpu/drm/panel/panel-sitronix-st7701.c |  4 +---
 drivers/gpu/drm/panel/panel-sitronix-st7789v.c|  4 +---
 drivers/gpu/drm/panel/panel-sony-acx565akm.c  |  4 +---
 drivers/gpu/drm/panel/panel-tpo-td028ttec1.c  |  4 +---
 drivers/gpu/drm/panel/panel-tpo-td043mtea1.c  |  4 +---
 drivers/gpu/drm/panel/panel-tpo-tpg110.c  |  4 +---
 drivers/gpu/drm/panel/panel-truly-nt35597.c   |  4 +---
 include/drm/drm_panel.h   |  3 ++-
 41 files changed, 53 insertions(+), 121 deletions(-)

diff --git a/drivers/gpu/drm/drm_panel.c b/drivers/gpu/drm/drm_panel.c
index 6b0bf42039cf..ba2fad4c9648 100644
--- a/drivers/gpu/drm/drm_panel.c
+++ b/drivers/gpu/drm/drm_panel.c
@@ -44,13 +44,18 @@ static LIST_HEAD(panel_list);
 /**
  * drm_panel_init - initialize a panel
  * @panel: DRM panel
+ * @dev: parent device of the panel
+ * @funcs: panel operations
  *
- * Sets up internal fields of the panel so that it can subsequently be added
- * to the registry.
+ * Initialize the panel structure for subsequent registration with
+ * drm_panel_add().
  */
-void drm_panel_init(struct drm_panel *panel)
+void drm_panel_init(struct drm_panel *panel, struct device *dev,
+   const struct drm_panel_funcs *funcs)
 {
INIT_LIST_HEAD(&panel->list);
+   panel->dev = dev;
+   panel->funcs = funcs;
 }
 EXPORT_SYMBOL(drm_panel_init);
 
diff --git a/drivers/gpu/drm/panel/panel-arm-versatile.c 
b/drivers/gpu/drm/panel/panel-arm-versatile.c
index 5f72c922a04b..a4333ed0f20c 100644
--- a/drivers/gpu/drm/panel/panel-arm-versatile.c
+++ b/drivers/gpu/drm/panel/panel-arm-versatile.c
@@ -350,9 +350,7 @@ static int versatile_panel_probe(struct platform_device 
*pdev)
dev_info(dev, "panel mounted on IB2 daughterboard\n");
}
 
-   drm_panel_init(&vpanel->panel);
-   vpanel->panel.dev = dev;
-   vpanel->panel.funcs = &versatile_panel_drm_funcs;
+   drm_panel_init(&vpanel->panel, dev, &versatile_panel_drm_funcs);
 
return drm_panel_add(&vpanel->panel);