From e1ae30545347709590bab5f4a3c27e7f639c6ead Mon Sep 17 00:00:00 2001 From: Madalin Bucur Date: Wed, 18 Oct 2017 19:36:59 +0300 Subject: [PATCH] sdk: dpa: use netdev dev for DMA mapping Signed-off-by: Madalin Bucur --- drivers/net/ethernet/freescale/sdk_dpaa/dpaa_eth.c | 2 +- .../ethernet/freescale/sdk_dpaa/dpaa_eth_base.c | 2 +- .../ethernet/freescale/sdk_dpaa/dpaa_eth_common.c | 35 ++++------------------ .../ethernet/freescale/sdk_dpaa/dpaa_eth_common.h | 2 +- 4 files changed, 9 insertions(+), 32 deletions(-) --- a/drivers/net/ethernet/freescale/sdk_dpaa/dpaa_eth.c +++ b/drivers/net/ethernet/freescale/sdk_dpaa/dpaa_eth.c @@ -875,7 +875,7 @@ static int dpa_priv_bp_create(struct net for (i = 0; i < count; i++) { int err; - err = dpa_bp_alloc(&dpa_bp[i]); + err = dpa_bp_alloc(&dpa_bp[i], net_dev->dev.parent); if (err < 0) { dpa_bp_free(priv); priv->dpa_bp = NULL; --- a/drivers/net/ethernet/freescale/sdk_dpaa/dpaa_eth_base.c +++ b/drivers/net/ethernet/freescale/sdk_dpaa/dpaa_eth_base.c @@ -176,7 +176,7 @@ int dpa_bp_create(struct net_device *net for (i = 0; i < count; i++) { int err; - err = dpa_bp_alloc(&dpa_bp[i]); + err = dpa_bp_alloc(&dpa_bp[i], net_dev->dev.parent); if (err < 0) { dpa_bp_free(priv); priv->dpa_bp = NULL; --- a/drivers/net/ethernet/freescale/sdk_dpaa/dpaa_eth_common.c +++ b/drivers/net/ethernet/freescale/sdk_dpaa/dpaa_eth_common.c @@ -686,11 +686,10 @@ void dpa_set_buffers_layout(struct mac_d EXPORT_SYMBOL(dpa_set_buffers_layout); int __attribute__((nonnull)) -dpa_bp_alloc(struct dpa_bp *dpa_bp) +dpa_bp_alloc(struct dpa_bp *dpa_bp, struct device *dev) { int err; struct bman_pool_params bp_params; - struct platform_device *pdev; if (dpa_bp->size == 0 || dpa_bp->config_count == 0) { pr_err("Buffer pool is not properly initialized! Missing size or initial number of buffers"); @@ -723,44 +722,25 @@ dpa_bp_alloc(struct dpa_bp *dpa_bp) dpa_bp->bpid = (uint8_t)bman_get_params(dpa_bp->pool)->bpid; - pdev = platform_device_register_simple("dpaa_eth_bpool", - dpa_bp->bpid, NULL, 0); - if (IS_ERR(pdev)) { - pr_err("platform_device_register_simple() failed\n"); - err = PTR_ERR(pdev); - goto pdev_register_failed; - } - { - struct dma_map_ops *ops = get_dma_ops(&pdev->dev); - ops->dma_supported = NULL; - } - err = dma_coerce_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(40)); + err = dma_coerce_mask_and_coherent(dev, DMA_BIT_MASK(40)); if (err) { pr_err("dma_coerce_mask_and_coherent() failed\n"); - goto pdev_mask_failed; + goto bman_free_pool; } -#ifdef CONFIG_FMAN_ARM - /* force coherency */ - pdev->dev.archdata.dma_coherent = true; - arch_setup_dma_ops(&pdev->dev, 0, 0, NULL, true); -#endif - dpa_bp->dev = &pdev->dev; + dpa_bp->dev = dev; if (dpa_bp->seed_cb) { err = dpa_bp->seed_cb(dpa_bp); if (err) - goto pool_seed_failed; + goto bman_free_pool; } dpa_bpid2pool_map(dpa_bp->bpid, dpa_bp); return 0; -pool_seed_failed: -pdev_mask_failed: - platform_device_unregister(pdev); -pdev_register_failed: +bman_free_pool: bman_free_pool(dpa_bp->pool); return err; @@ -822,9 +802,6 @@ _dpa_bp_free(struct dpa_bp *dpa_bp) dpa_bp_array[bp->bpid] = NULL; bman_free_pool(bp->pool); - - if (bp->dev) - platform_device_unregister(to_platform_device(bp->dev)); } void __cold __attribute__((nonnull)) --- a/drivers/net/ethernet/freescale/sdk_dpaa/dpaa_eth_common.h +++ b/drivers/net/ethernet/freescale/sdk_dpaa/dpaa_eth_common.h @@ -163,7 +163,7 @@ void dpa_set_rx_mode(struct net_device * void dpa_set_buffers_layout(struct mac_device *mac_dev, struct dpa_buffer_layout_s *layout); int __attribute__((nonnull)) -dpa_bp_alloc(struct dpa_bp *dpa_bp); +dpa_bp_alloc(struct dpa_bp *dpa_bp, struct device *dev); void __cold __attribute__((nonnull)) dpa_bp_free(struct dpa_priv_s *priv); struct dpa_bp *dpa_bpid2pool(int bpid);