aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/drm_debugfs_crc.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/drm_debugfs_crc.c')
-rw-r--r--drivers/gpu/drm/drm_debugfs_crc.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/drivers/gpu/drm/drm_debugfs_crc.c b/drivers/gpu/drm/drm_debugfs_crc.c
index 9dd879589a2c..9f8312137cad 100644
--- a/drivers/gpu/drm/drm_debugfs_crc.c
+++ b/drivers/gpu/drm/drm_debugfs_crc.c
@@ -307,10 +307,29 @@ static ssize_t crtc_crc_read(struct file *filep, char __user *user_buf,
307 return LINE_LEN(crc->values_cnt); 307 return LINE_LEN(crc->values_cnt);
308} 308}
309 309
310static unsigned int crtc_crc_poll(struct file *file, poll_table *wait)
311{
312 struct drm_crtc *crtc = file->f_inode->i_private;
313 struct drm_crtc_crc *crc = &crtc->crc;
314 unsigned ret;
315
316 poll_wait(file, &crc->wq, wait);
317
318 spin_lock_irq(&crc->lock);
319 if (crc->source && crtc_crc_data_count(crc))
320 ret = POLLIN | POLLRDNORM;
321 else
322 ret = 0;
323 spin_unlock_irq(&crc->lock);
324
325 return ret;
326}
327
310static const struct file_operations drm_crtc_crc_data_fops = { 328static const struct file_operations drm_crtc_crc_data_fops = {
311 .owner = THIS_MODULE, 329 .owner = THIS_MODULE,
312 .open = crtc_crc_open, 330 .open = crtc_crc_open,
313 .read = crtc_crc_read, 331 .read = crtc_crc_read,
332 .poll = crtc_crc_poll,
314 .release = crtc_crc_release, 333 .release = crtc_crc_release,
315}; 334};
316 335