diff options
author | Andy Shevchenko <andriy.shevchenko@linux.intel.com> | 2017-01-17 06:57:32 -0500 |
---|---|---|
committer | Vinod Koul <vinod.koul@intel.com> | 2017-01-25 01:21:40 -0500 |
commit | f7c799e950f96191a16f18606e43e6f861b2a361 (patch) | |
tree | 2ec2e9bc483f1e0120f8b02cb338731428d4172b | |
parent | 199244d69458770770890f8b5988a1b6cad701ad (diff) |
dmaengine: dw: we do support Merrifield SoC in PCI mode
Intel Merrifield platform contains Intel integrated DMA (iDMA 32-bit) which has
a slightly different register mapping, e.g. some bits in CTL_* and CFG_*
channel registers, and has to use platform data since there is no
autoconfiguration.
The iDMA 32-bit specification is available in the publicly available
documentation for Intel Braswell and BayTrail SoCs as LPE Audio DMA.
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
-rw-r--r-- | drivers/dma/dw/pci.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/drivers/dma/dw/pci.c b/drivers/dma/dw/pci.c index 47194372f738..7778ed705a1a 100644 --- a/drivers/dma/dw/pci.c +++ b/drivers/dma/dw/pci.c | |||
@@ -15,6 +15,18 @@ | |||
15 | 15 | ||
16 | #include "internal.h" | 16 | #include "internal.h" |
17 | 17 | ||
18 | static struct dw_dma_platform_data mrfld_pdata = { | ||
19 | .nr_channels = 8, | ||
20 | .is_private = true, | ||
21 | .is_memcpy = true, | ||
22 | .is_idma32 = true, | ||
23 | .chan_allocation_order = CHAN_ALLOCATION_ASCENDING, | ||
24 | .chan_priority = CHAN_PRIORITY_ASCENDING, | ||
25 | .block_size = 131071, | ||
26 | .nr_masters = 1, | ||
27 | .data_width = {4}, | ||
28 | }; | ||
29 | |||
18 | static int dw_pci_probe(struct pci_dev *pdev, const struct pci_device_id *pid) | 30 | static int dw_pci_probe(struct pci_dev *pdev, const struct pci_device_id *pid) |
19 | { | 31 | { |
20 | const struct dw_dma_platform_data *pdata = (void *)pid->driver_data; | 32 | const struct dw_dma_platform_data *pdata = (void *)pid->driver_data; |
@@ -103,6 +115,9 @@ static const struct pci_device_id dw_pci_id_table[] = { | |||
103 | { PCI_VDEVICE(INTEL, 0x0f06) }, | 115 | { PCI_VDEVICE(INTEL, 0x0f06) }, |
104 | { PCI_VDEVICE(INTEL, 0x0f40) }, | 116 | { PCI_VDEVICE(INTEL, 0x0f40) }, |
105 | 117 | ||
118 | /* Merrifield iDMA 32-bit (GPDMA) */ | ||
119 | { PCI_VDEVICE(INTEL, 0x11a2), (kernel_ulong_t)&mrfld_pdata }, | ||
120 | |||
106 | /* Braswell */ | 121 | /* Braswell */ |
107 | { PCI_VDEVICE(INTEL, 0x2286) }, | 122 | { PCI_VDEVICE(INTEL, 0x2286) }, |
108 | { PCI_VDEVICE(INTEL, 0x22c0) }, | 123 | { PCI_VDEVICE(INTEL, 0x22c0) }, |