[PATCH 5/5] drm/mgag200: Embed DRM device instance in struct mga_device
Daniel Vetter
daniel at ffwll.ch
Tue May 5 14:18:20 UTC 2020
On Tue, May 05, 2020 at 11:56:49AM +0200, Thomas Zimmermann wrote:
> As it is best practice now, the DRM device instance is now embedded in
> struct mga_device. All references to dev_private have been removed.
>
> Signed-off-by: Thomas Zimmermann <tzimmermann at suse.de>
> ---
> drivers/gpu/drm/mgag200/mgag200_cursor.c | 6 +++---
> drivers/gpu/drm/mgag200/mgag200_drv.c | 2 +-
> drivers/gpu/drm/mgag200/mgag200_drv.h | 4 ++--
> drivers/gpu/drm/mgag200/mgag200_main.c | 16 ++++++----------
> drivers/gpu/drm/mgag200/mgag200_mode.c | 4 ++--
> drivers/gpu/drm/mgag200/mgag200_ttm.c | 4 ++--
> 6 files changed, 16 insertions(+), 20 deletions(-)
>
> diff --git a/drivers/gpu/drm/mgag200/mgag200_cursor.c b/drivers/gpu/drm/mgag200/mgag200_cursor.c
> index aebc9ce43d551..e3c717c0cffc0 100644
> --- a/drivers/gpu/drm/mgag200/mgag200_cursor.c
> +++ b/drivers/gpu/drm/mgag200/mgag200_cursor.c
> @@ -15,7 +15,7 @@ static bool warn_palette = true;
> static int mgag200_cursor_update(struct mga_device *mdev, void *dst, void *src,
> unsigned int width, unsigned int height)
> {
> - struct drm_device *dev = mdev->dev;
> + struct drm_device *dev = &mdev->base;
> unsigned int i, row, col;
> uint32_t colour_set[16];
> uint32_t *next_space = &colour_set[0];
> @@ -119,7 +119,7 @@ static void mgag200_cursor_set_base(struct mga_device *mdev, u64 address)
> static int mgag200_show_cursor(struct mga_device *mdev, void *src,
> unsigned int width, unsigned int height)
> {
> - struct drm_device *dev = mdev->dev;
> + struct drm_device *dev = &mdev->base;
> struct drm_gem_vram_object *gbo;
> void *dst;
> s64 off;
> @@ -196,7 +196,7 @@ static void mgag200_move_cursor(struct mga_device *mdev, int x, int y)
>
> int mgag200_cursor_init(struct mga_device *mdev)
> {
> - struct drm_device *dev = mdev->dev;
> + struct drm_device *dev = &mdev->base;
> size_t ncursors = ARRAY_SIZE(mdev->cursor.gbo);
> size_t size;
> int ret;
> diff --git a/drivers/gpu/drm/mgag200/mgag200_drv.c b/drivers/gpu/drm/mgag200/mgag200_drv.c
> index ad12c1b7c66cc..fc0775694c097 100644
> --- a/drivers/gpu/drm/mgag200/mgag200_drv.c
> +++ b/drivers/gpu/drm/mgag200/mgag200_drv.c
> @@ -71,7 +71,7 @@ static int mga_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
> if (ret)
> goto err_pci_disable_device;
>
> - dev = mdev->dev;
> + dev = &mdev->base;
>
> ret = drm_dev_register(dev, ent->driver_data);
> if (ret)
> diff --git a/drivers/gpu/drm/mgag200/mgag200_drv.h b/drivers/gpu/drm/mgag200/mgag200_drv.h
> index 1ce0386669ffa..fb2797d6ff690 100644
> --- a/drivers/gpu/drm/mgag200/mgag200_drv.h
> +++ b/drivers/gpu/drm/mgag200/mgag200_drv.h
> @@ -96,7 +96,7 @@
>
> #define to_mga_crtc(x) container_of(x, struct mga_crtc, base)
> #define to_mga_connector(x) container_of(x, struct mga_connector, base)
> -#define to_mga_device(x) ((struct mga_device *)(x)->dev_private)
> +#define to_mga_device(x) container_of(x, struct mga_device, base)
>
> struct mga_crtc {
> struct drm_crtc base;
> @@ -153,7 +153,7 @@ enum mga_type {
> #define IS_G200_SE(mdev) (mdev->type == G200_SE_A || mdev->type == G200_SE_B)
>
> struct mga_device {
> - struct drm_device *dev;
> + struct drm_device base;
> unsigned long flags;
>
> resource_size_t rmmio_base;
> diff --git a/drivers/gpu/drm/mgag200/mgag200_main.c b/drivers/gpu/drm/mgag200/mgag200_main.c
> index 070ff1f433df2..ca3ed463c2d41 100644
> --- a/drivers/gpu/drm/mgag200/mgag200_main.c
> +++ b/drivers/gpu/drm/mgag200/mgag200_main.c
> @@ -67,7 +67,7 @@ static int mga_probe_vram(struct mga_device *mdev, void __iomem *mem)
> /* Map the framebuffer from the card and configure the core */
> static int mga_vram_init(struct mga_device *mdev)
> {
> - struct drm_device *dev = mdev->dev;
> + struct drm_device *dev = &mdev->base;
> void __iomem *mem;
>
> /* BAR 0 is VRAM */
> @@ -100,14 +100,12 @@ static int mga_vram_init(struct mga_device *mdev)
> int mgag200_device_init(struct mga_device *mdev, struct drm_driver *drv,
> struct pci_dev *pdev, unsigned long flags)
> {
> - struct drm_device *dev = mdev->dev;
> + struct drm_device *dev = &mdev->base;
> int ret, option;
>
> - dev = drm_dev_alloc(drv, &pdev->dev);
> - if (IS_ERR(dev))
> - return PTR_ERR(dev);
> - dev->dev_private = (void *)mdev;
> - mdev->dev = dev;
> + ret = drm_dev_init(dev, drv, &pdev->dev);
You devm_kzalloc this structure in the previous patch. That's kinda less
correct than what we have now ... I think this patch and the previous one
are needless detour, and straight going to embedding and
devm_drm_dev_alloc like I've done e.g. in
commit cd8294540776f7986b7cf658a3579d576853610c
Author: Daniel Vetter <daniel.vetter at ffwll.ch>
Date: Wed Apr 15 09:40:30 2020 +0200
drm/aspeed: Use devm_drm_dev_alloc
Then clean up all the fallout later on (i.e. switch over to mga_device and
away from drm_device, heck even the to_mag_device pointer upcasting you
can all do afterwards).
The intermediate stages all have tricky rules for what exactly can and
can't be done, for no real gain, so here a massively split patch series
imo just increases the risks you break something somewhere.
Cheers, Daniel
> + if (ret)
> + return ret;
>
> dev->pdev = pdev;
> pci_set_drvdata(pdev, dev);
> @@ -185,17 +183,15 @@ int mgag200_device_init(struct mga_device *mdev, struct drm_driver *drv,
> err_drm_dev_put:
> drm_dev_put(dev);
> err_mm:
> - dev->dev_private = NULL;
> return ret;
> }
>
> void mgag200_device_fini(struct mga_device *mdev)
> {
> - struct drm_device *dev = mdev->dev;
> + struct drm_device *dev = &mdev->base;
>
> mgag200_modeset_fini(mdev);
> drm_mode_config_cleanup(dev);
> mgag200_cursor_fini(mdev);
> mgag200_mm_fini(mdev);
> - dev->dev_private = NULL;
> }
> diff --git a/drivers/gpu/drm/mgag200/mgag200_mode.c b/drivers/gpu/drm/mgag200/mgag200_mode.c
> index aaa73b29b04f0..eb58742026adf 100644
> --- a/drivers/gpu/drm/mgag200/mgag200_mode.c
> +++ b/drivers/gpu/drm/mgag200/mgag200_mode.c
> @@ -1433,7 +1433,7 @@ static const struct drm_crtc_helper_funcs mga_helper_funcs = {
> /* CRTC setup */
> static void mga_crtc_init(struct mga_device *mdev)
> {
> - struct drm_device *dev = mdev->dev;
> + struct drm_device *dev = &mdev->base;
> struct mga_crtc *mga_crtc;
>
> mga_crtc = kzalloc(sizeof(struct mga_crtc) +
> @@ -1618,7 +1618,7 @@ static struct drm_connector *mga_vga_init(struct drm_device *dev)
>
> int mgag200_modeset_init(struct mga_device *mdev)
> {
> - struct drm_device *dev = mdev->dev;
> + struct drm_device *dev = &mdev->base;
> struct drm_encoder *encoder = &mdev->encoder;
> struct drm_connector *connector;
> int ret;
> diff --git a/drivers/gpu/drm/mgag200/mgag200_ttm.c b/drivers/gpu/drm/mgag200/mgag200_ttm.c
> index e89657630ea71..86a582490bb67 100644
> --- a/drivers/gpu/drm/mgag200/mgag200_ttm.c
> +++ b/drivers/gpu/drm/mgag200/mgag200_ttm.c
> @@ -34,7 +34,7 @@ int mgag200_mm_init(struct mga_device *mdev)
> {
> struct drm_vram_mm *vmm;
> int ret;
> - struct drm_device *dev = mdev->dev;
> + struct drm_device *dev = &mdev->base;
>
> vmm = drm_vram_helper_alloc_mm(dev, pci_resource_start(dev->pdev, 0),
> mdev->mc.vram_size);
> @@ -57,7 +57,7 @@ int mgag200_mm_init(struct mga_device *mdev)
>
> void mgag200_mm_fini(struct mga_device *mdev)
> {
> - struct drm_device *dev = mdev->dev;
> + struct drm_device *dev = &mdev->base;
>
> mdev->vram_fb_available = 0;
>
> --
> 2.26.0
>
--
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
More information about the dri-devel
mailing list