Re: [PATCH v2 2/4] drm/panel: Initialise panel dev and funcs through drm_panel_init()
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()
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);