diff options
Diffstat (limited to 'drivers/gpu/drm/drm_debugfs_crc.c')
-rw-r--r-- | drivers/gpu/drm/drm_debugfs_crc.c | 19 |
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 | ||
310 | static 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 | |||
310 | static const struct file_operations drm_crtc_crc_data_fops = { | 328 | static 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 | ||