On Tue, Aug 29, 2023 at 05:30:55AM +0000, Brandon Pollack wrote: > From: Jim Shargo <jshargo@xxxxxxxxxxxx> > > This is a small refactor to make ConfigFS support easier. This should be > a no-op refactor. > > Signed-off-by: Jim Shargo <jshargo@xxxxxxxxxxxx> > Signed-off-by: Brandon Pollack <brpol@xxxxxxxxxxxx> This should be part of the series to switch over to a real platform driver, since we only need that with that design and not with the current setup/init code. -Sima > --- > drivers/gpu/drm/vkms/vkms_drv.c | 14 ++++++++++++-- > drivers/gpu/drm/vkms/vkms_drv.h | 9 ++++++--- > drivers/gpu/drm/vkms/vkms_output.c | 2 +- > 3 files changed, 19 insertions(+), 6 deletions(-) > > diff --git a/drivers/gpu/drm/vkms/vkms_drv.c b/drivers/gpu/drm/vkms/vkms_drv.c > index 65b1e2c52106..6c94c2b5d529 100644 > --- a/drivers/gpu/drm/vkms/vkms_drv.c > +++ b/drivers/gpu/drm/vkms/vkms_drv.c > @@ -9,6 +9,7 @@ > * the GPU in DRM API tests. > */ > > +#include "asm-generic/errno-base.h" > #include <linux/device.h> > #include <linux/module.h> > #include <linux/platform_device.h> > @@ -171,12 +172,14 @@ static int vkms_modeset_init(struct vkms_device *vkmsdev) > dev->mode_config.preferred_depth = 0; > dev->mode_config.helper_private = &vkms_mode_config_helpers; > > - return vkms_output_init(vkmsdev, 0); > + return vkmsdev->is_default ? vkms_output_init_default(vkmsdev) : > + -EINVAL; > } > > static int vkms_platform_probe(struct platform_device *pdev) > { > int ret; > + struct vkms_device_setup *vkms_device_setup = pdev->dev.platform_data; > struct vkms_device *vkms_device; > void *grp; > > @@ -195,6 +198,7 @@ static int vkms_platform_probe(struct platform_device *pdev) > vkms_device->config.cursor = enable_cursor; > vkms_device->config.writeback = enable_writeback; > vkms_device->config.overlay = enable_overlay; > + vkms_device->is_default = vkms_device_setup->is_default; > > ret = dma_coerce_mask_and_coherent(vkms_device->drm.dev, > DMA_BIT_MASK(64)); > @@ -258,6 +262,9 @@ static int __init vkms_init(void) > { > int ret; > struct platform_device *pdev; > + struct vkms_device_setup vkms_device_setup = { > + .is_default = true, > + }; > > ret = platform_driver_register(&vkms_platform_driver); > if (ret) { > @@ -265,8 +272,11 @@ static int __init vkms_init(void) > return ret; > } > > - pdev = platform_device_register_simple(DRIVER_NAME, -1, NULL, 0); > + pdev = platform_device_register_data(NULL, DRIVER_NAME, 0, > + &vkms_device_setup, > + sizeof(vkms_device_setup)); > if (IS_ERR(pdev)) { > + DRM_ERROR("Unable to register default vkms device\n"); > platform_driver_unregister(&vkms_platform_driver); > return PTR_ERR(pdev); > } > diff --git a/drivers/gpu/drm/vkms/vkms_drv.h b/drivers/gpu/drm/vkms/vkms_drv.h > index 761cd809617e..4262dcffd7e1 100644 > --- a/drivers/gpu/drm/vkms/vkms_drv.h > +++ b/drivers/gpu/drm/vkms/vkms_drv.h > @@ -132,17 +132,20 @@ struct vkms_output { > struct vkms_plane planes[VKMS_MAX_PLANES]; > }; > > -struct vkms_device; > - > struct vkms_config { > bool writeback; > bool cursor; > bool overlay; > }; > > +struct vkms_device_setup { > + bool is_default; > +}; > + > struct vkms_device { > struct drm_device drm; > struct platform_device *platform; > + bool is_default; > struct vkms_output output; > struct vkms_config config; > }; > @@ -166,7 +169,7 @@ struct vkms_crtc *vkms_crtc_init(struct vkms_device *vkmsdev, > struct drm_plane *primary, > struct drm_plane *cursor); > > -int vkms_output_init(struct vkms_device *vkmsdev, int index); > +int vkms_output_init_default(struct vkms_device *vkmsdev); > > struct vkms_plane *vkms_plane_init(struct vkms_device *vkmsdev, > enum drm_plane_type type); > diff --git a/drivers/gpu/drm/vkms/vkms_output.c b/drivers/gpu/drm/vkms/vkms_output.c > index 86faf94f7408..bfc2e2362c6d 100644 > --- a/drivers/gpu/drm/vkms/vkms_output.c > +++ b/drivers/gpu/drm/vkms/vkms_output.c > @@ -80,7 +80,7 @@ static struct drm_encoder *vkms_encoder_init(struct vkms_device *vkms_device) > return encoder; > } > > -int vkms_output_init(struct vkms_device *vkmsdev, int index) > +int vkms_output_init_default(struct vkms_device *vkmsdev) > { > struct vkms_output *output = &vkmsdev->output; > struct drm_device *dev = &vkmsdev->drm; > -- > 2.42.0.rc2.253.gd59a3bf2b4-goog > -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch