1
0
mirror of https://github.com/DigitalDevices/dddvb.git synced 2023-10-10 13:37:43 +02:00

fixes for input/output handlers

add casts and use spin_lock_irqsave
This commit is contained in:
Ralph Metzler 2018-01-21 11:53:16 +01:00
parent e7d9457ef8
commit 4f622ec27c

View File

@ -2402,7 +2402,7 @@ static void input_handler(void *data)
#ifdef DDB_USE_WORK #ifdef DDB_USE_WORK
queue_work(ddb_wq, &dma->work); queue_work(ddb_wq, &dma->work);
#else #else
input_tasklet(dma); input_tasklet((unsigned long)dma);
#endif #endif
} }
#endif #endif
@ -2414,26 +2414,26 @@ static void output_work(struct work_struct *work)
#else #else
static void output_tasklet(unsigned long data) static void output_tasklet(unsigned long data)
{ {
struct ddb_dma *dma = (struct ddb_output *)data; struct ddb_dma *dma = (struct ddb_dma *)data;
#endif #endif
struct ddb_output *output = (struct ddb_output *)dma->io; struct ddb_output *output = (struct ddb_output *)dma->io;
struct ddb *dev = output->port->dev; struct ddb *dev = output->port->dev;
unsigned long flags;
spin_lock(&dma->lock); spin_lock_irqsave(&dma->lock, flags);
if (!dma->running) { if (!dma->running)
spin_unlock(&dma->lock); goto unlock_exit;
return;
}
dma->stat = ddbreadl(dev, DMA_BUFFER_CURRENT(dma)); dma->stat = ddbreadl(dev, DMA_BUFFER_CURRENT(dma));
dma->ctrl = ddbreadl(dev, DMA_BUFFER_CONTROL(dma)); dma->ctrl = ddbreadl(dev, DMA_BUFFER_CONTROL(dma));
if (output->redi) if (output->redi)
output_ack_input(output, output->redi); output_ack_input(output, output->redi);
wake_up(&dma->wq); wake_up(&dma->wq);
spin_unlock(&dma->lock); unlock_exit:
spin_unlock_irqrestore(&dma->lock, flags);
} }
#if 0 #if 0
static void output_handler(unsigned long data) static void output_handler(void *data)
{ {
struct ddb_output *output = (struct ddb_output *)data; struct ddb_output *output = (struct ddb_output *)data;
struct ddb_dma *dma = output->dma; struct ddb_dma *dma = output->dma;