diff options
Diffstat (limited to 'target/linux/layerscape/patches-5.4/701-net-0107-fsl_qbman-Adjust-platform-device-creation-for-QMan-p.patch')
-rw-r--r-- | target/linux/layerscape/patches-5.4/701-net-0107-fsl_qbman-Adjust-platform-device-creation-for-QMan-p.patch | 103 |
1 files changed, 0 insertions, 103 deletions
diff --git a/target/linux/layerscape/patches-5.4/701-net-0107-fsl_qbman-Adjust-platform-device-creation-for-QMan-p.patch b/target/linux/layerscape/patches-5.4/701-net-0107-fsl_qbman-Adjust-platform-device-creation-for-QMan-p.patch deleted file mode 100644 index cd81c007c1..0000000000 --- a/target/linux/layerscape/patches-5.4/701-net-0107-fsl_qbman-Adjust-platform-device-creation-for-QMan-p.patch +++ /dev/null @@ -1,103 +0,0 @@ -From fddd729bd2150e83365528cefb9f1fef581e04c5 Mon Sep 17 00:00:00 2001 -From: Vakul Garg <vakul.garg@nxp.com> -Date: Sun, 6 Jan 2019 19:05:37 +0530 -Subject: [PATCH] fsl_qbman: Adjust platform device creation for QMan portals - -Fix the platform device creation in QMan portals such that -dma mappings are done properly. - -Signed-off-by: Vakul Garg <vakul.garg@nxp.com> -Signed-off-by: Roy Pledge <roy.pledge@nxp.com> ---- - drivers/staging/fsl_qbman/qman_high.c | 47 +++++++++++++++++++---------------- - 1 file changed, 25 insertions(+), 22 deletions(-) - ---- a/drivers/staging/fsl_qbman/qman_high.c -+++ b/drivers/staging/fsl_qbman/qman_high.c -@@ -575,6 +575,7 @@ struct qman_portal *qman_create_portal( - char buf[16]; - int ret; - u32 isdr; -+ struct platform_device_info pdev_info; - - if (!portal) { - portal = kmalloc(sizeof(*portal), GFP_KERNEL); -@@ -671,27 +672,22 @@ struct qman_portal *qman_create_portal( - portal->dqrr_disable_ref = 0; - portal->cb_dc_ern = NULL; - sprintf(buf, "qportal-%d", config->public_cfg.channel); -- portal->pdev = platform_device_alloc(buf, -1); -+ -+ memset(&pdev_info, 0, sizeof(pdev_info)); -+ pdev_info.name = buf; -+ pdev_info.id = PLATFORM_DEVID_NONE; -+ pdev_info.dma_mask = DMA_BIT_MASK(40); -+ -+ portal->pdev = platform_device_register_full(&pdev_info); - if (!portal->pdev) { - pr_err("qman_portal - platform_device_alloc() failed\n"); -- goto fail_devalloc; -- } --#if defined(CONFIG_ARM) || defined(CONFIG_ARM64) -- portal->pdev->dev.coherent_dma_mask = DMA_BIT_MASK(40); -- portal->pdev->dev.dma_mask = &portal->pdev->dev.coherent_dma_mask; --#else -- if (dma_set_mask(&portal->pdev->dev, DMA_BIT_MASK(40))) { -- pr_err("qman_portal - dma_set_mask() failed\n"); -- goto fail_devadd; -+ goto fail_devregister; - } --#endif -+ -+ arch_setup_dma_ops(&portal->pdev->dev, 0, 0, NULL, true); -+ - portal->pdev->dev.pm_domain = &qman_portal_device_pm_domain; - portal->pdev->dev.platform_data = portal; -- ret = platform_device_add(portal->pdev); -- if (ret) { -- pr_err("qman_portal - platform_device_add() failed\n"); -- goto fail_devadd; -- } - dpa_rbtree_init(&portal->retire_table); - isdr = 0xffffffff; - qm_isr_disable_write(__p, isdr); -@@ -751,10 +747,8 @@ fail_eqcr_empty: - fail_affinity: - free_irq(config->public_cfg.irq, portal); - fail_irq: -- platform_device_del(portal->pdev); --fail_devadd: -- platform_device_put(portal->pdev); --fail_devalloc: -+ platform_device_unregister(portal->pdev); -+fail_devregister: - if (num_ceetms) - for (ret = 0; ret < num_ceetms; ret++) - kfree(portal->ccgrs[ret]); -@@ -852,8 +846,7 @@ void qman_destroy_portal(struct qman_por - qm_dqrr_finish(&qm->p); - qm_eqcr_finish(&qm->p); - -- platform_device_del(qm->pdev); -- platform_device_put(qm->pdev); -+ platform_device_unregister(qm->pdev); - - qm->config = NULL; - if (qm->alloced) -@@ -1809,6 +1802,16 @@ int qman_init_fq(struct qman_fq *fq, u32 - } else { - phys_fq = dma_map_single(&p->pdev->dev, fq, sizeof(*fq), - DMA_TO_DEVICE); -+ if (dma_mapping_error(&p->pdev->dev, phys_fq)) { -+ dev_err(&p->pdev->dev, -+ "dma_map_single failed for fqid: %u\n", -+ fq->fqid); -+ FQUNLOCK(fq); -+ PORTAL_IRQ_UNLOCK(p, irqflags); -+ put_affine_portal(); -+ return -EIO; -+ } -+ - qm_fqd_stashing_set64(&mcc->initfq.fqd, phys_fq); - } - } |