- diff --git a/drivers/gpu/drm/vkms/vkms_composer.c b/drivers/gpu/drm/vkms/vkms_composer.c
- index 2988d5b49eb6..2b516e60c07f 100644
- --- a/drivers/gpu/drm/vkms/vkms_composer.c
- +++ b/drivers/gpu/drm/vkms/vkms_composer.c
- @@ -373,8 +373,22 @@ int vkms_set_crc_source(struct drm_crtc *crtc, const char *src_name)
- int ret = 0;
- ret = vkms_crc_parse_source(src_name, &enabled);
- -
- + printk(KERN_CRIT "enabled after parsing is %d\n", enabled);
- vkms_set_composer(out, enabled);
- return ret;
- }
- +
- +
- +int vkms_set_crc_vhw_source(struct drm_crtc *crtc, const char *src_name)
- +{
- + struct vkms_output *out = drm_crtc_to_vkms_output(crtc);
- + bool enabled = false;
- + int ret = 0;
- +
- + ret = vkms_crc_parse_source(src_name, &enabled);
- +
- + //vkms_set_composer(out, enabled);
- +
- + return ret;
- +}
- \ No newline at end of file
- diff --git a/drivers/gpu/drm/vkms/vkms_crtc.c b/drivers/gpu/drm/vkms/vkms_crtc.c
- index 8477b33c4d09..957f560612f1 100644
- --- a/drivers/gpu/drm/vkms/vkms_crtc.c
- +++ b/drivers/gpu/drm/vkms/vkms_crtc.c
- @@ -174,6 +174,21 @@ static const struct drm_crtc_funcs vkms_crtc_funcs = {
- .verify_crc_source = vkms_verify_crc_source,
- };
- +static const struct drm_crtc_funcs vkms_crtc_vhw_funcs = {
- + .set_config = drm_atomic_helper_set_config,
- + .destroy = drm_crtc_cleanup,
- + .page_flip = drm_atomic_helper_page_flip,
- + .reset = vkms_atomic_crtc_reset,
- + .atomic_duplicate_state = vkms_atomic_crtc_duplicate_state,
- + .atomic_destroy_state = vkms_atomic_crtc_destroy_state,
- + //.enable_vblank = vkms_enable_vblank,
- + //.disable_vblank = vkms_disable_vblank,
- + //.get_vblank_timestamp = vkms_get_vblank_timestamp,
- + .get_crc_sources = vkms_get_crc_sources,
- + .set_crc_source = vkms_set_crc_vhw_source,
- + .verify_crc_source = vkms_verify_crc_source,
- +};
- +
- static int vkms_crtc_atomic_check(struct drm_crtc *crtc,
- struct drm_atomic_state *state)
- {
- @@ -302,8 +317,15 @@ int vkms_crtc_init(struct drm_device *dev, struct drm_crtc *crtc,
- struct vkms_device *vkmsdev = drm_device_to_vkms_device(dev);
- int ret;
- - ret = drm_crtc_init_with_planes(dev, crtc, primary, cursor,
- + if (vkmsdev->config->virtual_hw)
- + ret = drm_crtc_init_with_planes(dev, crtc, primary, cursor,
- + &vkms_crtc_vhw_funcs, NULL);
- + else
- + ret = drm_crtc_init_with_planes(dev, crtc, primary, cursor,
- &vkms_crtc_funcs, NULL);
- +
- + //ret = drm_crtc_init_with_planes(dev, crtc, primary, cursor,
- + // &vkms_crtc_funcs, NULL);
- if (ret) {
- DRM_ERROR("Failed to init CRTC\n");
- return ret;
- diff --git a/drivers/gpu/drm/vkms/vkms_drv.h b/drivers/gpu/drm/vkms/vkms_drv.h
- index 770594e07f0e..1959e78746c5 100644
- --- a/drivers/gpu/drm/vkms/vkms_drv.h
- +++ b/drivers/gpu/drm/vkms/vkms_drv.h
- @@ -129,6 +129,7 @@ struct vkms_plane *vkms_plane_init(struct vkms_device *vkmsdev,
- const char *const *vkms_get_crc_sources(struct drm_crtc *crtc,
- size_t *count);
- int vkms_set_crc_source(struct drm_crtc *crtc, const char *src_name);
- +int vkms_set_crc_vhw_source(struct drm_crtc *crtc, const char *src_name);
- int vkms_verify_crc_source(struct drm_crtc *crtc, const char *source_name,
- size_t *values_cnt);