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:
parent
e7d9457ef8
commit
4f622ec27c
@ -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;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user