From 65b21e3eba2b9dc8027606de9b51252d271b15df Mon Sep 17 00:00:00 2001 From: Viresh Kumar Date: Fri, 4 Mar 2011 16:39:29 +0530 Subject: [PATCH] --- yaml --- r: 234998 b: refs/heads/master c: 60a230e4a62be6837335911b09101bd8aeb7c95a h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/ata/pata_arasan_cf.c | 7 ++++++- trunk/include/linux/pata_arasan_cf_data.h | 2 ++ 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 41bda6c68eb4..fcccdb948ae1 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 8d7b1c70b3c1aac4b63109f5c73f732f1d63fad6 +refs/heads/master: 60a230e4a62be6837335911b09101bd8aeb7c95a diff --git a/trunk/drivers/ata/pata_arasan_cf.c b/trunk/drivers/ata/pata_arasan_cf.c index 8b060c44bbe1..65cee74605b4 100644 --- a/trunk/drivers/ata/pata_arasan_cf.c +++ b/trunk/drivers/ata/pata_arasan_cf.c @@ -210,6 +210,8 @@ struct arasan_cf_dev { struct dma_chan *dma_chan; /* Mask for DMA transfers */ dma_cap_mask_t mask; + /* dma channel private data */ + void *dma_priv; /* DMA transfer work */ struct work_struct work; /* DMA delayed finish work */ @@ -356,6 +358,7 @@ static void dma_callback(void *dev) static bool filter(struct dma_chan *chan, void *slave) { + chan->private = slave; return true; } @@ -526,7 +529,8 @@ static void data_xfer(struct work_struct *work) /* request dma channels */ /* dma_request_channel may sleep, so calling from process context */ - acdev->dma_chan = dma_request_channel(acdev->mask, filter, NULL); + acdev->dma_chan = dma_request_channel(acdev->mask, filter, + acdev->dma_priv); if (!acdev->dma_chan) { dev_err(acdev->host->dev, "Unable to get dma_chan\n"); goto chan_request_fail; @@ -853,6 +857,7 @@ static int __devinit arasan_cf_probe(struct platform_device *pdev) INIT_WORK(&acdev->work, data_xfer); INIT_DELAYED_WORK(&acdev->dwork, delayed_finish); dma_cap_set(DMA_MEMCPY, acdev->mask); + acdev->dma_priv = pdata->dma_priv; /* Handle platform specific quirks */ if (pdata->quirk) { diff --git a/trunk/include/linux/pata_arasan_cf_data.h b/trunk/include/linux/pata_arasan_cf_data.h index d979fe688796..a6ee9aa898bb 100644 --- a/trunk/include/linux/pata_arasan_cf_data.h +++ b/trunk/include/linux/pata_arasan_cf_data.h @@ -37,6 +37,8 @@ struct arasan_cf_pdata { #define CF_BROKEN_PIO (1) #define CF_BROKEN_MWDMA (1 << 1) #define CF_BROKEN_UDMA (1 << 2) + /* This is platform specific data for the DMA controller */ + void *dma_priv; }; static inline void