|
|
@@ -41,6 +41,13 @@ struct pxa_spi_info {
|
|
|
static struct dw_dma_slave byt_tx_param = { .dst_id = 0 };
|
|
|
static struct dw_dma_slave byt_rx_param = { .src_id = 1 };
|
|
|
|
|
|
+static struct dw_dma_slave mrfld3_tx_param = { .dst_id = 15 };
|
|
|
+static struct dw_dma_slave mrfld3_rx_param = { .src_id = 14 };
|
|
|
+static struct dw_dma_slave mrfld5_tx_param = { .dst_id = 13 };
|
|
|
+static struct dw_dma_slave mrfld5_rx_param = { .src_id = 12 };
|
|
|
+static struct dw_dma_slave mrfld6_tx_param = { .dst_id = 11 };
|
|
|
+static struct dw_dma_slave mrfld6_rx_param = { .src_id = 10 };
|
|
|
+
|
|
|
static struct dw_dma_slave bsw0_tx_param = { .dst_id = 0 };
|
|
|
static struct dw_dma_slave bsw0_rx_param = { .src_id = 1 };
|
|
|
static struct dw_dma_slave bsw1_tx_param = { .dst_id = 6 };
|
|
|
@@ -93,22 +100,39 @@ static int lpss_spi_setup(struct pci_dev *dev, struct pxa_spi_info *c)
|
|
|
|
|
|
static int mrfld_spi_setup(struct pci_dev *dev, struct pxa_spi_info *c)
|
|
|
{
|
|
|
+ struct pci_dev *dma_dev = pci_get_slot(dev->bus, PCI_DEVFN(21, 0));
|
|
|
+ struct dw_dma_slave *tx, *rx;
|
|
|
+
|
|
|
switch (PCI_FUNC(dev->devfn)) {
|
|
|
case 0:
|
|
|
c->port_id = 3;
|
|
|
c->num_chipselect = 1;
|
|
|
+ c->tx_param = &mrfld3_tx_param;
|
|
|
+ c->rx_param = &mrfld3_rx_param;
|
|
|
break;
|
|
|
case 1:
|
|
|
c->port_id = 5;
|
|
|
c->num_chipselect = 4;
|
|
|
+ c->tx_param = &mrfld5_tx_param;
|
|
|
+ c->rx_param = &mrfld5_rx_param;
|
|
|
break;
|
|
|
case 2:
|
|
|
c->port_id = 6;
|
|
|
c->num_chipselect = 1;
|
|
|
+ c->tx_param = &mrfld6_tx_param;
|
|
|
+ c->rx_param = &mrfld6_rx_param;
|
|
|
break;
|
|
|
default:
|
|
|
return -ENODEV;
|
|
|
}
|
|
|
+
|
|
|
+ tx = c->tx_param;
|
|
|
+ tx->dma_dev = &dma_dev->dev;
|
|
|
+
|
|
|
+ rx = c->rx_param;
|
|
|
+ rx->dma_dev = &dma_dev->dev;
|
|
|
+
|
|
|
+ c->dma_filter = lpss_dma_filter;
|
|
|
return 0;
|
|
|
}
|
|
|
|