summaryrefslogtreecommitdiffstats
path: root/drivers/sound/maestro.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/sound/maestro.c')
-rw-r--r--drivers/sound/maestro.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/drivers/sound/maestro.c b/drivers/sound/maestro.c
index 12da6bbc0..81a7d21d2 100644
--- a/drivers/sound/maestro.c
+++ b/drivers/sound/maestro.c
@@ -2381,8 +2381,20 @@ static unsigned int ess_poll(struct file *file, struct poll_table_struct *wait)
struct ess_state *s = (struct ess_state *)file->private_data;
unsigned long flags;
unsigned int mask = 0;
+ int ret;
VALIDATE_STATE(s);
+
+/* In 0.14 prog_dmabuf always returns success anyway ... */
+ if (file->f_mode & FMODE_WRITE) {
+ if (!s->dma_dac.ready && (ret = prog_dmabuf(s, 0)))
+ return POLLERR;
+ }
+ if (file->f_mode & FMODE_READ) {
+ if (!s->dma_adc.ready && (ret = prog_dmabuf(s, 1)))
+ return POLLERR;
+ }
+
if (file->f_mode & FMODE_WRITE)
poll_wait(file, &s->dma_dac.wait, wait);
if (file->f_mode & FMODE_READ)