drm/crc: Cleanup crtc_crc_open function
This patch make changes to allocate crc-entries buffer before enabling CRC generation. It moves all the failure check early in the function before setting the source or memory allocation. Now set_crc_source takes only two variable inputs, values_cnt we already gets as part of verify_crc_source. Changes since V1: - refactor code to use single spin lock Changes since V2: - rebase Changes since V3: - rebase on top of VKMS driver Signed-off-by: Mahesh Kumar <mahesh1.kumar@intel.com> Cc: dri-devel@lists.freedesktop.org Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Cc: Haneen Mohammed <hamohammed.sa@gmail.com> Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Acked-by: Leo Li <sunpeng.li@amd.com> (V2) Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> (V3) Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20180821083858.26275-3-mahesh1.kumar@intel.com
This commit is contained in:

committed by
Rodrigo Vivi

parent
af6979331d
commit
c0811a7d5b
@@ -101,8 +101,7 @@ int vkms_verify_crc_source(struct drm_crtc *crtc, const char *src_name,
|
||||
return 0;
|
||||
}
|
||||
|
||||
int vkms_set_crc_source(struct drm_crtc *crtc, const char *src_name,
|
||||
size_t *values_cnt)
|
||||
int vkms_set_crc_source(struct drm_crtc *crtc, const char *src_name)
|
||||
{
|
||||
struct vkms_output *out = drm_crtc_to_vkms_output(crtc);
|
||||
bool enabled = false;
|
||||
@@ -111,8 +110,6 @@ int vkms_set_crc_source(struct drm_crtc *crtc, const char *src_name,
|
||||
|
||||
ret = vkms_crc_parse_source(src_name, &enabled);
|
||||
|
||||
*values_cnt = 1;
|
||||
|
||||
/* make sure nothing is scheduled on crtc workq */
|
||||
flush_workqueue(out->crc_workq);
|
||||
|
||||
|
@@ -123,8 +123,7 @@ int vkms_gem_vmap(struct drm_gem_object *obj);
|
||||
void vkms_gem_vunmap(struct drm_gem_object *obj);
|
||||
|
||||
/* CRC Support */
|
||||
int vkms_set_crc_source(struct drm_crtc *crtc, const char *src_name,
|
||||
size_t *values_cnt);
|
||||
int vkms_set_crc_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);
|
||||
void vkms_crc_work_handle(struct work_struct *work);
|
||||
|
Reference in New Issue
Block a user