Merge tag 'dma-mapping-5.2' of git://git.infradead.org/users/hch/dma-mapping
Pull DMA mapping updates from Christoph Hellwig: - remove the already broken support for NULL dev arguments to the DMA API calls - Kconfig tidyups * tag 'dma-mapping-5.2' of git://git.infradead.org/users/hch/dma-mapping: dma-mapping: add a Kconfig symbol to indicate arch_dma_prep_coherent presence dma-mapping: remove an unnecessary NULL check x86/dma: Remove the x86_dma_fallback_dev hack dma-mapping: remove leftover NULL device support arm: use a dummy struct device for ISA DMA use of the DMA API pxa3xx-gcu: pass struct device to dma_mmap_coherent gbefb: switch to managed version of the DMA allocator da8xx-fb: pass struct device to DMA API functions parport_ip32: pass struct device to DMA API functions dma: select GENERIC_ALLOCATOR for DMA_REMAP
This commit is contained in:
@@ -568,6 +568,7 @@ static irqreturn_t parport_ip32_merr_interrupt(int irq, void *dev_id)
|
||||
|
||||
/**
|
||||
* parport_ip32_dma_start - begins a DMA transfer
|
||||
* @p: partport to work on
|
||||
* @dir: DMA direction: DMA_TO_DEVICE or DMA_FROM_DEVICE
|
||||
* @addr: pointer to data buffer
|
||||
* @count: buffer size
|
||||
@@ -575,8 +576,8 @@ static irqreturn_t parport_ip32_merr_interrupt(int irq, void *dev_id)
|
||||
* Calls to parport_ip32_dma_start() and parport_ip32_dma_stop() must be
|
||||
* correctly balanced.
|
||||
*/
|
||||
static int parport_ip32_dma_start(enum dma_data_direction dir,
|
||||
void *addr, size_t count)
|
||||
static int parport_ip32_dma_start(struct parport *p,
|
||||
enum dma_data_direction dir, void *addr, size_t count)
|
||||
{
|
||||
unsigned int limit;
|
||||
u64 ctrl;
|
||||
@@ -601,7 +602,7 @@ static int parport_ip32_dma_start(enum dma_data_direction dir,
|
||||
|
||||
/* Prepare DMA pointers */
|
||||
parport_ip32_dma.dir = dir;
|
||||
parport_ip32_dma.buf = dma_map_single(NULL, addr, count, dir);
|
||||
parport_ip32_dma.buf = dma_map_single(&p->bus_dev, addr, count, dir);
|
||||
parport_ip32_dma.len = count;
|
||||
parport_ip32_dma.next = parport_ip32_dma.buf;
|
||||
parport_ip32_dma.left = parport_ip32_dma.len;
|
||||
@@ -625,11 +626,12 @@ static int parport_ip32_dma_start(enum dma_data_direction dir,
|
||||
|
||||
/**
|
||||
* parport_ip32_dma_stop - ends a running DMA transfer
|
||||
* @p: partport to work on
|
||||
*
|
||||
* Calls to parport_ip32_dma_start() and parport_ip32_dma_stop() must be
|
||||
* correctly balanced.
|
||||
*/
|
||||
static void parport_ip32_dma_stop(void)
|
||||
static void parport_ip32_dma_stop(struct parport *p)
|
||||
{
|
||||
u64 ctx_a;
|
||||
u64 ctx_b;
|
||||
@@ -685,8 +687,8 @@ static void parport_ip32_dma_stop(void)
|
||||
enable_irq(MACEISA_PAR_CTXB_IRQ);
|
||||
parport_ip32_dma.irq_on = 1;
|
||||
|
||||
dma_unmap_single(NULL, parport_ip32_dma.buf, parport_ip32_dma.len,
|
||||
parport_ip32_dma.dir);
|
||||
dma_unmap_single(&p->bus_dev, parport_ip32_dma.buf,
|
||||
parport_ip32_dma.len, parport_ip32_dma.dir);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1445,7 +1447,7 @@ static size_t parport_ip32_fifo_write_block_dma(struct parport *p,
|
||||
|
||||
priv->irq_mode = PARPORT_IP32_IRQ_HERE;
|
||||
|
||||
parport_ip32_dma_start(DMA_TO_DEVICE, (void *)buf, len);
|
||||
parport_ip32_dma_start(p, DMA_TO_DEVICE, (void *)buf, len);
|
||||
reinit_completion(&priv->irq_complete);
|
||||
parport_ip32_frob_econtrol(p, ECR_DMAEN | ECR_SERVINTR, ECR_DMAEN);
|
||||
|
||||
@@ -1461,7 +1463,7 @@ static size_t parport_ip32_fifo_write_block_dma(struct parport *p,
|
||||
if (ecr & ECR_SERVINTR)
|
||||
break; /* DMA transfer just finished */
|
||||
}
|
||||
parport_ip32_dma_stop();
|
||||
parport_ip32_dma_stop(p);
|
||||
written = len - parport_ip32_dma_get_residue();
|
||||
|
||||
priv->irq_mode = PARPORT_IP32_IRQ_FWD;
|
||||
|
Reference in New Issue
Block a user