On Tue, Apr 24, 2018 at 06:51:07PM +0300, Jyri Sarha wrote: > Remove all drm_panel_detach() calls from all panel drives update the > kernel doc for drm_panel_detach(). > > Setting the connector and drm to NULL when the drm panel device is > going away hardly serves any purpose. Usually the the whole memory > structure is freed right after the remove call. However, calling the > detach function from the master drm device, and setting the connector > pointer to NULL, has the logic of marking the panel again as available > for another drm master to attach. The usual situation would be the same > drm master device binding again. > > Signed-off-by: Jyri Sarha <jsarha@xxxxxx> Yeah this makes tons of sense, no panel driver calls attach either. > --- > drivers/gpu/drm/drm_panel.c | 4 ++++ > drivers/gpu/drm/panel/panel-innolux-p079zca.c | 1 - > drivers/gpu/drm/panel/panel-jdi-lt070me05000.c | 1 - > drivers/gpu/drm/panel/panel-lvds.c | 1 - > drivers/gpu/drm/panel/panel-panasonic-vvx10f034n00.c | 1 - > drivers/gpu/drm/panel/panel-seiko-43wvf1g.c | 1 - > drivers/gpu/drm/panel/panel-sharp-lq101r1sx01.c | 1 - > drivers/gpu/drm/panel/panel-sharp-ls043t1le01.c | 1 - > drivers/gpu/drm/panel/panel-simple.c | 1 - > drivers/gpu/drm/panel/panel-sitronix-st7789v.c | 1 - > 10 files changed, 4 insertions(+), 9 deletions(-) > > diff --git a/drivers/gpu/drm/drm_panel.c b/drivers/gpu/drm/drm_panel.c > index 308d442..29d2c74 100644 > --- a/drivers/gpu/drm/drm_panel.c > +++ b/drivers/gpu/drm/drm_panel.c > @@ -115,6 +115,10 @@ EXPORT_SYMBOL(drm_panel_attach); > * Detaches a panel from the connector it is attached to. If a panel is not > * attached to any connector this is effectively a no-op. > * > + * NOTE: This function should not be called by the panel device > + * itself. It is only for the drm device that called the > + * drm_panel_attach(). Does this result in pretty output when building the docs with $ make htmldocs Also might be good to add something like * When unloading, the driver should detach from the panel by calling * drm_panel_detach(). to the kerneldoc of drm_panel_attach. Either way: Reviewed-by: Daniel Vetter <daniel.vetter@xxxxxxxx> > + * > * Return: 0 on success or a negative error code on failure. > */ > int drm_panel_detach(struct drm_panel *panel) > diff --git a/drivers/gpu/drm/panel/panel-innolux-p079zca.c b/drivers/gpu/drm/panel/panel-innolux-p079zca.c > index 57df39b..bb53e08 100644 > --- a/drivers/gpu/drm/panel/panel-innolux-p079zca.c > +++ b/drivers/gpu/drm/panel/panel-innolux-p079zca.c > @@ -292,7 +292,6 @@ static int innolux_panel_remove(struct mipi_dsi_device *dsi) > DRM_DEV_ERROR(&dsi->dev, "failed to detach from DSI host: %d\n", > err); > > - drm_panel_detach(&innolux->base); > innolux_panel_del(innolux); > > return 0; > diff --git a/drivers/gpu/drm/panel/panel-jdi-lt070me05000.c b/drivers/gpu/drm/panel/panel-jdi-lt070me05000.c > index 0a94ab7..99caa78 100644 > --- a/drivers/gpu/drm/panel/panel-jdi-lt070me05000.c > +++ b/drivers/gpu/drm/panel/panel-jdi-lt070me05000.c > @@ -500,7 +500,6 @@ static int jdi_panel_remove(struct mipi_dsi_device *dsi) > dev_err(&dsi->dev, "failed to detach from DSI host: %d\n", > ret); > > - drm_panel_detach(&jdi->base); > jdi_panel_del(jdi); > > return 0; > diff --git a/drivers/gpu/drm/panel/panel-lvds.c b/drivers/gpu/drm/panel/panel-lvds.c > index 5185819..8a16878 100644 > --- a/drivers/gpu/drm/panel/panel-lvds.c > +++ b/drivers/gpu/drm/panel/panel-lvds.c > @@ -282,7 +282,6 @@ static int panel_lvds_remove(struct platform_device *pdev) > { > struct panel_lvds *lvds = dev_get_drvdata(&pdev->dev); > > - drm_panel_detach(&lvds->panel); > drm_panel_remove(&lvds->panel); > > panel_lvds_disable(&lvds->panel); > diff --git a/drivers/gpu/drm/panel/panel-panasonic-vvx10f034n00.c b/drivers/gpu/drm/panel/panel-panasonic-vvx10f034n00.c > index 74a8061..cb4dfb9 100644 > --- a/drivers/gpu/drm/panel/panel-panasonic-vvx10f034n00.c > +++ b/drivers/gpu/drm/panel/panel-panasonic-vvx10f034n00.c > @@ -299,7 +299,6 @@ static int wuxga_nt_panel_remove(struct mipi_dsi_device *dsi) > if (ret < 0) > dev_err(&dsi->dev, "failed to detach from DSI host: %d\n", ret); > > - drm_panel_detach(&wuxga_nt->base); > wuxga_nt_panel_del(wuxga_nt); > > return 0; > diff --git a/drivers/gpu/drm/panel/panel-seiko-43wvf1g.c b/drivers/gpu/drm/panel/panel-seiko-43wvf1g.c > index 71c09ed..75f9253 100644 > --- a/drivers/gpu/drm/panel/panel-seiko-43wvf1g.c > +++ b/drivers/gpu/drm/panel/panel-seiko-43wvf1g.c > @@ -292,7 +292,6 @@ static int seiko_panel_remove(struct platform_device *pdev) > { > struct seiko_panel *panel = dev_get_drvdata(&pdev->dev); > > - drm_panel_detach(&panel->base); > drm_panel_remove(&panel->base); > > seiko_panel_disable(&panel->base); > diff --git a/drivers/gpu/drm/panel/panel-sharp-lq101r1sx01.c b/drivers/gpu/drm/panel/panel-sharp-lq101r1sx01.c > index 6bf8730..02fc0f5 100644 > --- a/drivers/gpu/drm/panel/panel-sharp-lq101r1sx01.c > +++ b/drivers/gpu/drm/panel/panel-sharp-lq101r1sx01.c > @@ -418,7 +418,6 @@ static int sharp_panel_remove(struct mipi_dsi_device *dsi) > if (err < 0) > dev_err(&dsi->dev, "failed to detach from DSI host: %d\n", err); > > - drm_panel_detach(&sharp->base); > sharp_panel_del(sharp); > > return 0; > diff --git a/drivers/gpu/drm/panel/panel-sharp-ls043t1le01.c b/drivers/gpu/drm/panel/panel-sharp-ls043t1le01.c > index 494aa9b..e5cae00 100644 > --- a/drivers/gpu/drm/panel/panel-sharp-ls043t1le01.c > +++ b/drivers/gpu/drm/panel/panel-sharp-ls043t1le01.c > @@ -327,7 +327,6 @@ static int sharp_nt_panel_remove(struct mipi_dsi_device *dsi) > if (ret < 0) > dev_err(&dsi->dev, "failed to detach from DSI host: %d\n", ret); > > - drm_panel_detach(&sharp_nt->base); > sharp_nt_panel_del(sharp_nt); > > return 0; > diff --git a/drivers/gpu/drm/panel/panel-simple.c b/drivers/gpu/drm/panel/panel-simple.c > index f2d96611..9388acf 100644 > --- a/drivers/gpu/drm/panel/panel-simple.c > +++ b/drivers/gpu/drm/panel/panel-simple.c > @@ -364,7 +364,6 @@ static int panel_simple_remove(struct device *dev) > { > struct panel_simple *panel = dev_get_drvdata(dev); > > - drm_panel_detach(&panel->base); > drm_panel_remove(&panel->base); > > panel_simple_disable(&panel->base); > diff --git a/drivers/gpu/drm/panel/panel-sitronix-st7789v.c b/drivers/gpu/drm/panel/panel-sitronix-st7789v.c > index 358c64e..74284e5 100644 > --- a/drivers/gpu/drm/panel/panel-sitronix-st7789v.c > +++ b/drivers/gpu/drm/panel/panel-sitronix-st7789v.c > @@ -419,7 +419,6 @@ static int st7789v_remove(struct spi_device *spi) > { > struct st7789v *ctx = spi_get_drvdata(spi); > > - drm_panel_detach(&ctx->panel); > drm_panel_remove(&ctx->panel); > > if (ctx->backlight) > -- > Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki. Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki > -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel