On Fri, Dec 09, 2016 at 01:04:12PM -0500, Sean Paul wrote: > On Fri, Dec 9, 2016 at 9:19 AM, Daniel Vetter <daniel.vetter@xxxxxxxx> wrote: > > It's deprecated and only should be used by drivers which still use > > drm_platform_init, not by anyone else. > > > > And indeed it's entirely unused and can be nuked. > > > > This required a bit more fudging, but I guess kirin_dc_ops really > > wants to operate on the platform_device, not something else. Also > > bonus points for implementing abstraction, and then storing the vfunc > > in a global variable. > > > > v2: Don't break the build soooo badly :( > > Note that the cleanup function is a bit confused: ade_data was never > > set as drvdata, and calling drm_crtc_cleanup directly is a bug - this > > is called indirectly through drm_mode_config_cleanup, which calls into > > crtc->destroy, which already has the call to drm_crtc_cleanup. Which > > means we can just nuke it. > > > > Note this is the 2nd attempt after the first one failed and had to be > > reverted again in > > > > commit 9cd2e854d61ccfa51686f3ed7b0c917708fc641f > > Author: Daniel Vetter <daniel.vetter@xxxxxxxx> > > Date: Wed Aug 17 13:59:40 2016 +0200 > > > > Revert "drm/hisilicon: Don't set drm_device->platformdev" > > > > Cc: Xinliang Liu <xinliang.liu@xxxxxxxxxx> > > Cc: Xinwei Kong <kong.kongxinwei@xxxxxxxxxxxxx> > > Cc: Archit Taneja <architt@xxxxxxxxxxxxxx> > > Cc: Sean Paul <seanpaul@xxxxxxxxxxxx> > > This time with feeling! > > Reviewed-by: Sean Paul <seanpaul@xxxxxxxxxxxx> Thanks for the review, applied to drm-misc (but for 4.11). -Daniel > > > Signed-off-by: Daniel Vetter <daniel.vetter@xxxxxxxxx> > > --- > > drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c | 11 +++-------- > > drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c | 8 +++----- > > drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h | 4 ++-- > > 3 files changed, 8 insertions(+), 15 deletions(-) > > > > diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c > > index afc2b5d2d5f0..3ea70459b901 100644 > > --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c > > +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c > > @@ -973,9 +973,9 @@ static int ade_dts_parse(struct platform_device *pdev, struct ade_hw_ctx *ctx) > > return 0; > > } > > > > -static int ade_drm_init(struct drm_device *dev) > > +static int ade_drm_init(struct platform_device *pdev) > > { > > - struct platform_device *pdev = dev->platformdev; > > + struct drm_device *dev = platform_get_drvdata(pdev); > > struct ade_data *ade; > > struct ade_hw_ctx *ctx; > > struct ade_crtc *acrtc; > > @@ -1034,13 +1034,8 @@ static int ade_drm_init(struct drm_device *dev) > > return 0; > > } > > > > -static void ade_drm_cleanup(struct drm_device *dev) > > +static void ade_drm_cleanup(struct platform_device *pdev) > > { > > - struct platform_device *pdev = dev->platformdev; > > - struct ade_data *ade = platform_get_drvdata(pdev); > > - struct drm_crtc *crtc = &ade->acrtc.base; > > - > > - drm_crtc_cleanup(crtc); > > } > > > > const struct kirin_dc_ops ade_dc_ops = { > > diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c > > index ebd5f4fe4c23..fa228b7b022c 100644 > > --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c > > +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c > > @@ -42,7 +42,7 @@ static int kirin_drm_kms_cleanup(struct drm_device *dev) > > #endif > > drm_kms_helper_poll_fini(dev); > > drm_vblank_cleanup(dev); > > - dc_ops->cleanup(dev); > > + dc_ops->cleanup(to_platform_device(dev->dev)); > > drm_mode_config_cleanup(dev); > > devm_kfree(dev->dev, priv); > > dev->dev_private = NULL; > > @@ -104,7 +104,7 @@ static int kirin_drm_kms_init(struct drm_device *dev) > > kirin_drm_mode_config_init(dev); > > > > /* display controller init */ > > - ret = dc_ops->init(dev); > > + ret = dc_ops->init(to_platform_device(dev->dev)); > > if (ret) > > goto err_mode_config_cleanup; > > > > @@ -138,7 +138,7 @@ static int kirin_drm_kms_init(struct drm_device *dev) > > err_unbind_all: > > component_unbind_all(dev->dev, dev); > > err_dc_cleanup: > > - dc_ops->cleanup(dev); > > + dc_ops->cleanup(to_platform_device(dev->dev)); > > err_mode_config_cleanup: > > drm_mode_config_cleanup(dev); > > devm_kfree(dev->dev, priv); > > @@ -209,8 +209,6 @@ static int kirin_drm_bind(struct device *dev) > > if (IS_ERR(drm_dev)) > > return PTR_ERR(drm_dev); > > > > - drm_dev->platformdev = to_platform_device(dev); > > - > > ret = kirin_drm_kms_init(drm_dev); > > if (ret) > > goto err_drm_dev_unref; > > diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h > > index 1a07caf8e7f4..a0bb217c4c64 100644 > > --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h > > +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h > > @@ -15,8 +15,8 @@ > > > > /* display controller init/cleanup ops */ > > struct kirin_dc_ops { > > - int (*init)(struct drm_device *dev); > > - void (*cleanup)(struct drm_device *dev); > > + int (*init)(struct platform_device *pdev); > > + void (*cleanup)(struct platform_device *pdev); > > }; > > > > struct kirin_drm_private { > > -- > > 2.10.2 > > -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx