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) }, |
