diff options
author | Lucas Stach <dev@lynxeye.de> | 2015-03-05 22:49:55 +0100 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2015-03-06 07:51:47 +0100 |
commit | e05f9586b302d0dba5e9c98d849596cad1716a6f (patch) | |
tree | e4f8aa0b3e0dd5c3899d09e6d46746a37baf4635 /drivers/net | |
parent | 6c583d0e327deecaea026cf47576fbe42274bd8c (diff) | |
download | barebox-e05f9586b302d0dba5e9c98d849596cad1716a6f.tar.gz barebox-e05f9586b302d0dba5e9c98d849596cad1716a6f.tar.xz |
ARM: change dma_alloc/free_coherent to match other architectures
As a lot drivers currently rely on the 1:1 virt->phys mapping on ARM
we define DMA_ADDRESS_BROKEN to mark them. In order to use them on
other architectures with a different mapping they need proper fixing.
Signed-off-by: Lucas Stach <dev@lynxeye.de>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'drivers/net')
-rw-r--r-- | drivers/net/arc_emac.c | 6 | ||||
-rw-r--r-- | drivers/net/at91_ether.c | 6 | ||||
-rw-r--r-- | drivers/net/designware.c | 6 | ||||
-rw-r--r-- | drivers/net/fec_imx.c | 4 | ||||
-rw-r--r-- | drivers/net/macb.c | 10 | ||||
-rw-r--r-- | drivers/net/mvneta.c | 6 | ||||
-rw-r--r-- | drivers/net/orion-gbe.c | 6 | ||||
-rw-r--r-- | drivers/net/rtl8169.c | 4 | ||||
-rw-r--r-- | drivers/net/xgmac.c | 8 |
9 files changed, 35 insertions, 21 deletions
diff --git a/drivers/net/arc_emac.c b/drivers/net/arc_emac.c index 17705067bc..05206494fe 100644 --- a/drivers/net/arc_emac.c +++ b/drivers/net/arc_emac.c @@ -430,8 +430,10 @@ static int arc_emac_probe(struct device_d *dev) miibus->parent = dev; /* allocate rx/tx descriptors */ - priv->rxbd = dma_alloc_coherent(RX_BD_NUM * sizeof(struct arc_emac_bd)); - priv->txbd = dma_alloc_coherent(TX_BD_NUM * sizeof(struct arc_emac_bd)); + priv->rxbd = dma_alloc_coherent(RX_BD_NUM * sizeof(struct arc_emac_bd), + DMA_ADDRESS_BROKEN); + priv->txbd = dma_alloc_coherent(TX_BD_NUM * sizeof(struct arc_emac_bd), + DMA_ADDRESS_BROKEN); priv->rxbuf = dma_alloc(RX_BD_NUM * PKTSIZE); /* Set poll rate so that it polls every 1 ms */ diff --git a/drivers/net/at91_ether.c b/drivers/net/at91_ether.c index e09ea83f68..20aa045da3 100644 --- a/drivers/net/at91_ether.c +++ b/drivers/net/at91_ether.c @@ -320,8 +320,10 @@ static int at91_ether_probe(struct device_d *dev) edev->halt = at91_ether_halt; edev->get_ethaddr = at91_ether_get_ethaddr; edev->set_ethaddr = at91_ether_set_ethaddr; - ether_dev->rbf_framebuf = dma_alloc_coherent(MAX_RX_DESCR * MAX_RBUFF_SZ); - ether_dev->rbfdt = dma_alloc_coherent(sizeof(struct rbf_t) * MAX_RX_DESCR); + ether_dev->rbf_framebuf = dma_alloc_coherent(MAX_RX_DESCR * MAX_RBUFF_SZ, + DMA_ADDRESS_BROKEN); + ether_dev->rbfdt = dma_alloc_coherent(sizeof(struct rbf_t) * MAX_RX_DESCR, + DMA_ADDRESS_BROKEN); ether_dev->phy_addr = pdata->phy_addr; miibus->read = at91_ether_mii_read; diff --git a/drivers/net/designware.c b/drivers/net/designware.c index 49ed0b1922..e0e348fb00 100644 --- a/drivers/net/designware.c +++ b/drivers/net/designware.c @@ -448,9 +448,11 @@ static int dwc_ether_probe(struct device_d *dev) dwc_version(dev, readl(&priv->mac_regs_p->version)); priv->dma_regs_p = base + DW_DMA_BASE_OFFSET; priv->tx_mac_descrtable = dma_alloc_coherent( - CONFIG_TX_DESCR_NUM * sizeof(struct dmamacdescr)); + CONFIG_TX_DESCR_NUM * sizeof(struct dmamacdescr), + DMA_ADDRESS_BROKEN); priv->rx_mac_descrtable = dma_alloc_coherent( - CONFIG_RX_DESCR_NUM * sizeof(struct dmamacdescr)); + CONFIG_RX_DESCR_NUM * sizeof(struct dmamacdescr), + DMA_ADDRESS_BROKEN); priv->txbuffs = dma_alloc(TX_TOTAL_BUFSIZE); priv->rxbuffs = dma_alloc(RX_TOTAL_BUFSIZE); diff --git a/drivers/net/fec_imx.c b/drivers/net/fec_imx.c index c1fa1517da..c12b26b4a0 100644 --- a/drivers/net/fec_imx.c +++ b/drivers/net/fec_imx.c @@ -600,7 +600,7 @@ static int fec_alloc_receive_packets(struct fec_priv *fec, int count, int size) int i; /* reserve data memory and consider alignment */ - p = dma_alloc_coherent(size * count); + p = dma_alloc_coherent(size * count, DMA_ADDRESS_BROKEN); if (!p) return -ENOMEM; @@ -698,7 +698,7 @@ static int fec_probe(struct device_d *dev) * Datasheet forces the startaddress of each chain is 16 byte aligned */ base = dma_alloc_coherent((2 + FEC_RBD_NUM) * - sizeof(struct buffer_descriptor)); + sizeof(struct buffer_descriptor), DMA_ADDRESS_BROKEN); fec->rbd_base = base; base += FEC_RBD_NUM * sizeof(struct buffer_descriptor); fec->tbd_base = base; diff --git a/drivers/net/macb.c b/drivers/net/macb.c index 8e67aecc84..9cdb7d8539 100644 --- a/drivers/net/macb.c +++ b/drivers/net/macb.c @@ -597,7 +597,8 @@ static void macb_init_rx_buffer_size(struct macb_device *bp, size_t size) bp->rx_buffer_size = roundup(bp->rx_buffer_size, RX_BUFFER_MULTIPLE); } - bp->rx_buffer = dma_alloc_coherent(bp->rx_buffer_size * bp->rx_ring_size); + bp->rx_buffer = dma_alloc_coherent(bp->rx_buffer_size * bp->rx_ring_size, + DMA_ADDRESS_BROKEN); } dev_dbg(bp->dev, "[%d] rx_buffer_size [%d]\n", @@ -667,9 +668,10 @@ static int macb_probe(struct device_d *dev) edev->recv = macb_recv; macb_init_rx_buffer_size(macb, PKTSIZE); - macb->rx_buffer = dma_alloc_coherent(macb->rx_buffer_size * macb->rx_ring_size); - macb->rx_ring = dma_alloc_coherent(RX_RING_BYTES(macb)); - macb->tx_ring = dma_alloc_coherent(TX_RING_BYTES); + macb->rx_buffer = dma_alloc_coherent(macb->rx_buffer_size * macb->rx_ring_size, + DMA_ADDRESS_BROKEN); + macb->rx_ring = dma_alloc_coherent(RX_RING_BYTES(macb), DMA_ADDRESS_BROKEN); + macb->tx_ring = dma_alloc_coherent(TX_RING_BYTES, DMA_ADDRESS_BROKEN); macb_reset_hw(macb); ncfgr = macb_mdc_clk_div(macb); diff --git a/drivers/net/mvneta.c b/drivers/net/mvneta.c index 8042e90951..32ba726ac9 100644 --- a/drivers/net/mvneta.c +++ b/drivers/net/mvneta.c @@ -590,9 +590,11 @@ void mvneta_setup_tx_rx(struct mvneta_port *priv) u32 val; /* Allocate descriptors and buffers */ - priv->txdesc = dma_alloc_coherent(ALIGN(sizeof(*priv->txdesc), 32)); + priv->txdesc = dma_alloc_coherent(ALIGN(sizeof(*priv->txdesc), 32), + DMA_ADDRESS_BROKEN); priv->rxdesc = dma_alloc_coherent(RX_RING_SIZE * - ALIGN(sizeof(*priv->rxdesc), 32)); + ALIGN(sizeof(*priv->rxdesc), 32), + DMA_ADDRESS_BROKEN); priv->rxbuf = dma_alloc(RX_RING_SIZE * ALIGN(PKTSIZE, 8)); mvneta_init_rx_ring(priv); diff --git a/drivers/net/orion-gbe.c b/drivers/net/orion-gbe.c index 3fbc1df893..5104f87264 100644 --- a/drivers/net/orion-gbe.c +++ b/drivers/net/orion-gbe.c @@ -419,9 +419,11 @@ static int port_probe(struct device_d *parent, struct port_priv *port) return PTR_ERR(port->regs); /* allocate rx/tx descriptors and buffers */ - port->txdesc = dma_alloc_coherent(ALIGN(sizeof(*port->txdesc), 16)); + port->txdesc = dma_alloc_coherent(ALIGN(sizeof(*port->txdesc), 16), + DMA_ADDRESS_BROKEN); port->rxdesc = dma_alloc_coherent(RX_RING_SIZE * - ALIGN(sizeof(*port->rxdesc), 16)); + ALIGN(sizeof(*port->rxdesc), 16), + DMA_ADDRESS_BROKEN); port->rxbuf = dma_alloc(RX_RING_SIZE * ALIGN(PKTSIZE, 8)); port_stop(port); diff --git a/drivers/net/rtl8169.c b/drivers/net/rtl8169.c index f8a6500a0f..bab20e8c57 100644 --- a/drivers/net/rtl8169.c +++ b/drivers/net/rtl8169.c @@ -228,10 +228,10 @@ static void rtl8169_init_ring(struct rtl8169_priv *priv) priv->cur_rx = priv->cur_tx = 0; priv->tx_desc = dma_alloc_coherent(NUM_TX_DESC * - sizeof(struct bufdesc)); + sizeof(struct bufdesc), DMA_ADDRESS_BROKEN); priv->tx_buf = malloc(NUM_TX_DESC * PKT_BUF_SIZE); priv->rx_desc = dma_alloc_coherent(NUM_RX_DESC * - sizeof(struct bufdesc)); + sizeof(struct bufdesc), DMA_ADDRESS_BROKEN); priv->rx_buf = malloc(NUM_RX_DESC * PKT_BUF_SIZE); dma_clean_range((unsigned long)priv->rx_buf, (unsigned long)priv->rx_buf + NUM_RX_DESC * PKT_BUF_SIZE); diff --git a/drivers/net/xgmac.c b/drivers/net/xgmac.c index cc22d0ea54..240684ee1e 100644 --- a/drivers/net/xgmac.c +++ b/drivers/net/xgmac.c @@ -698,9 +698,11 @@ static int hb_xgmac_probe(struct device_d *dev) priv->dev = dev; priv->base = base; - priv->rxbuffer = dma_alloc_coherent(RX_BUF_SZ); - priv->rx_chain = dma_alloc_coherent(RX_NUM_DESC * sizeof(struct xgmac_dma_desc)); - priv->tx_chain = dma_alloc_coherent(TX_NUM_DESC * sizeof(struct xgmac_dma_desc)); + priv->rxbuffer = dma_alloc_coherent(RX_BUF_SZ, DMA_ADDRESS_BROKEN); + priv->rx_chain = dma_alloc_coherent(RX_NUM_DESC * sizeof(struct xgmac_dma_desc), + DMA_ADDRESS_BROKEN); + priv->tx_chain = dma_alloc_coherent(TX_NUM_DESC * sizeof(struct xgmac_dma_desc), + DMA_ADDRESS_BROKEN); edev = &priv->edev; edev->priv = priv; |