From patchwork Wed Apr 19 20:48:41 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Roy Pledge X-Patchwork-Id: 752461 X-Patchwork-Delegate: scottwood@freescale.com Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from lists.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3w7Z2g1mKyz9s65 for ; Thu, 20 Apr 2017 06:52:59 +1000 (AEST) Received: from lists.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3]) by lists.ozlabs.org (Postfix) with ESMTP id 3w7Z2g11BGzDqKp for ; Thu, 20 Apr 2017 06:52:59 +1000 (AEST) X-Original-To: linuxppc-dev@lists.ozlabs.org Delivered-To: linuxppc-dev@lists.ozlabs.org Received: from NAM02-CY1-obe.outbound.protection.outlook.com (mail-cys01nam02on0063.outbound.protection.outlook.com [104.47.37.63]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 3w7Yy73JxZzDq99 for ; Thu, 20 Apr 2017 06:49:03 +1000 (AEST) Received: from BN6PR03CA0081.namprd03.prod.outlook.com (10.164.122.147) by BN1PR03MB250.namprd03.prod.outlook.com (10.255.200.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1034.10; Wed, 19 Apr 2017 20:48:57 +0000 Received: from BY2FFO11FD013.protection.gbl (2a01:111:f400:7c0c::140) by BN6PR03CA0081.outlook.office365.com (2603:10b6:405:6f::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1034.10 via Frontend Transport; Wed, 19 Apr 2017 20:48:58 +0000 Authentication-Results: spf=fail (sender IP is 192.88.158.2) smtp.mailfrom=nxp.com; nxp.com; dkim=none (message not signed) header.d=none;nxp.com; dmarc=fail action=none header.from=nxp.com; Received-SPF: Fail (protection.outlook.com: domain of nxp.com does not designate 192.88.158.2 as permitted sender) receiver=protection.outlook.com; client-ip=192.88.158.2; helo=az84smr01.freescale.net; Received: from az84smr01.freescale.net (192.88.158.2) by BY2FFO11FD013.mail.protection.outlook.com (10.1.14.75) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.1019.14 via Frontend Transport; Wed, 19 Apr 2017 20:48:57 +0000 Received: from otc-sw1.am.freescale.net (otc-sw1.am.freescale.net [10.29.200.182]) by az84smr01.freescale.net (8.14.3/8.14.0) with ESMTP id v3JKmswj006946; Wed, 19 Apr 2017 13:48:56 -0700 From: Roy Pledge To: , , , , Subject: [PATCH v2 02/11] soc/fsl/qbman: Use shared-dma-pool for QMan private memory allocations Date: Wed, 19 Apr 2017 16:48:41 -0400 Message-ID: <1492634930-10765-3-git-send-email-roy.pledge@nxp.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1492634930-10765-1-git-send-email-roy.pledge@nxp.com> References: <1492634930-10765-1-git-send-email-roy.pledge@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131371085379397016; (91ab9b29-cfa4-454e-5278-08d120cd25b8); () X-Forefront-Antispam-Report: CIP:192.88.158.2; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(336005)(39410400002)(39860400002)(39840400002)(39400400002)(39850400002)(39380400002)(39450400003)(2980300002)(1110001)(1109001)(339900001)(189002)(199003)(9170700003)(3450700001)(48376002)(356003)(8936002)(5660300001)(8656002)(8676002)(2906002)(54906002)(305945005)(50226002)(230783001)(104016004)(85426001)(43066003)(81166006)(38730400002)(2201001)(50466002)(50986999)(76176999)(86362001)(36756003)(5003940100001)(106466001)(6666003)(47776003)(189998001)(2950100002)(105606002)(53936002)(4326008)(77096006)(33646002)(2101003); DIR:OUT; SFP:1101; SCL:1; SRVR:BN1PR03MB250; H:az84smr01.freescale.net; FPR:; SPF:Fail; MLV:ovrnspm; MX:1; A:1; PTR:InfoDomainNonexistent; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BY2FFO11FD013; 1:BU8iSk/XR5qjI5f43eLFutC89TzMLQ6WukaTgTOw/PU4/65LHfQRVapdpIXkiiAgpwgZ72AWnfQWYeCbW8/KJcLlDys1lqNTMAEc5EUyslCxbkM7Uv+953pQ9qWAFSsGnvNPO3xsQ5Qu8SD0iTDDDfVl4undUsYDE9wSI/vm6Pt+XTZnbT4tqf3qvLUcE29Ms/EK47zIBW6aDbByQvWMkKAgTsYw7YxoUR+54AqHQ5p0mehtoGZKOL5IPd6bO3B6klktlV0ndixYDmGFqppdEmXZ/YEC0/+Ch0MXgG+sehjFEMGifIJ5cPBnhx/3jL101aH70XHigrqCsHuzkNIQtAiusRx0D2zQNKMK1CYOzd4bt4rJdcUT+yNjIgiTDV72oHtT8GZKdh0q7VHu91vk+/ef2mmH28z+z7r3O+YAlGtN1U9r7FSH5fOFOq2Mb2qDAUQb9yI/qmOVsT7NEw2NMPWTrVnUug/wk5ew9ljHJucGb1P+Q/ya1nurQ2PhM4s1ukNDk/vkc9A/unqYxJfJVoEOgFh3VWsvGh0gacdoMDNbq6aRMVCYvhdVRnso7rlL8O5r5s21d0kzTb6sMHEEeHwEc8EymHkuevLRNGZ8ulJn5yKTulScfB2p+sGhGZXrQ2jge6EiGKEY4/0PauZ+Ufa6h78PNbcGd3YfdusMNkGJOtI6ICXw6e20kTwQszzfkikcVfZrdOq3HxmFYno84ef0UHE8wP2n9nY0EnxPqdIyz0rL9lfmqLN5Z9l1Qls9 MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 3da02af0-8a8a-4b2b-8437-08d487658040 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(201703131430075)(201703131517081); SRVR:BN1PR03MB250; X-Microsoft-Exchange-Diagnostics: 1; BN1PR03MB250; 3:XsO870jCZ6+czAF4hif3OrX3X8AbqU+oOxZD06oCMNzIPofA4PUGNBVvsFIgK6tXaHEGif0UvIxA5+nHONUP92hgI1y8Jk/LSHHVb/ap/kMYhgNCziW/gM/lTWSo5AKOycom4hpQ9rdwAC+UtLcfDXzaSAkzGVr9sHcxHfs7az6PW+UMN5LDAMCp31VJeBR6kcNT6bQPEbKDxGFQ2MqlH5ObiqEIeAKfsf6DXvaO/Mgr56ErBC6aw6jAhyulvFygSEi0OO64SAcFzhc1FEyEAckOMGieuvfzc8c78Rk81nN0j0Qv4dbrCpjFS6AhJQusYTnXruJxEvXhxAyqjl/iv39j9PRBKpuFUbCKrNahf+IpL72xckRdpKtZ7Z7FIGgboKucRsgHgAqmyWBiKG4MszvsBlwiKCem51ah5ePVQ2lHoi/kNR7Vt64KQGlFH7+z; 25:Oo38MbCOBiVe1UJT9uucLsmExaYPr1Hlv2d8OXtccUp6jclPOReMvErL6K3Y3aGRiO1JW2ZQ9tyW2C4EIYhZp+W4Qkt7Qtuq1+BUCRiQH3FcHKRUGO21SiNK/YIswR1X09A9F/qx1lYdSs0RKLBA3n/SA02rchRpiBJW0jCG9EKbJkL28WciiFMQLBZrx4sahCqEmkceZwSxphQ4p1VqUptjczl4Mbs/tWF4FU62oiYNqRixQk1Qyn+iKIsKZFTFIO0QVmn75ynrvI64iTPnHPtT3/lzzFlSUFQRK2E3Zz/0auPOzd8GW78v5C3sXpGjl2ToSZUjXvG9e35Bg78wc5wkDUyiK0t5lawhWGHihJkEdPZlEKCnx8zXncRtlpmgqZL1YP8lRWzyU80ptts1t5ccKAue4aCCr0EL+mqi4wTyc+F6DvBhlnGqof4yPcp+SM9uHE0swMYu0lcNbe4y8Q== X-Microsoft-Exchange-Diagnostics: 1; BN1PR03MB250; 31:MRt8VBSJDWcPwiEAbO4eBFZtiivNn3KP0MdN9iGs0AUJ/8HAK4K8p66VPowV3qG6lty9l4oMU6odEGVw5GwRA3Cn5QuKwGTGaEQsQYUrDRplUcrIXImp+p6RGEwDd3hSzINmiIIe81y9pOp6HSJpbHOdbWyInFqctCY6wEpnKeK5qdCxJbNTOhrUeTUyT5gzw4WA37A5nz4RqEE6WIsNtEGSj2JyHn0eoph6pwCQSPIO8nAo3bE7kzmq92vIcX2Aa8GSiFLuVatYjdi/vFDAxQ== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6095135)(601004)(2401047)(13015025)(13024025)(13023025)(13018025)(13017025)(5005006)(8121501046)(10201501046)(3002001)(93006095)(93001095)(6055026)(6096035)(20161123561025)(201703131430075)(201703131433075)(201703131441075)(201703131448075)(201703161259150)(20161123556025)(20161123563025)(20161123565025); SRVR:BN1PR03MB250; BCL:0; PCL:0; RULEID:(400006); SRVR:BN1PR03MB250; X-Microsoft-Exchange-Diagnostics: 1; BN1PR03MB250; 4:WYmJ4oeNaoBfhC3rKpyVm1dfFJTrFEnzdF4DQBmN/cDhCn2Tc3gvhluNPd3H0UMlyXs7HhUnv8R9lU0rcmgG4NqttQZumzIX/qlvYemWFmlnl3U2Hn6xjGzNl1Njk9u45yzj3+w8BgzyeQgyTcdJJwBOW4cNz3V00Oq0pSLFSZnGVsQPXKpzy9s3Ni+DCU6sgSJl+2XSU9RuecRC5GH8V5Pn6pdBXZdoYYHVqsP0MlCcxUEwUoh/r1S10D+d/hvrx56ZGJpp4VCBAkFZTy3XpIuML8tEcNZBo4fCf4hQxM79+ZqeFPRygMcAW9wJ/PoC8UMhojxOUhkz1csZyjj20ZEmhvLUUhbyfm6jpn861yN/Uo/91hM1QobRac8YygOJA2QnBz/0vIbbhcdChuMvoqRiwAqaBByi28wnwMng8bvAOcGl4PstoTTKLTonoaCQgF85V3imeBkmdOzzRL+2lJeRpxJ8HvC+UorpQXXLRkxgcVN3zCbqhGnFeaOmhYwrDUL4IcAOJmOTvkFUWmi4n3vVQ9Rk+zMgrSQFmngldPkQRDQ4f3Uu8XbcpZ0xb2uv7CwyB/5ZB/Zsrr/fU1Z27hO1YGzdMhfTVzBb14lo7n7IJL8xHQdptOanfS5UU4tq5tSjAlTMdjMvTpgHlnG2DceaQjNftUjBtw9a4j8JhAwYgrltYNZ+v42rF7dqdEXfrMC4pFEHJzdMAuYM7k32bDlpO31v6rzEMMqpfslMKdAd245MEztMRwCL9s3De3DBvSlTVe60M4vjTX+MaZJFFpcl3CpUaJnW952Yi9bvQueyW+ASwrC5tAEy3ofzI2U5Ve61A82ovvmSjUJZFUmUPaQ2Anzjf5uBMu76+s2rupn8PztoM3Aeah2e9H++vCoCSdn9lZu8BwuoJfo+o88kJn+IJhDnsm8ChbnW5sypaoo= X-Forefront-PRVS: 028256169F X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BN1PR03MB250; 23:rm/TJlKTNwI8oiOfrPs8eI/wICKwlbkLrLIhfzpKZv?= =?us-ascii?Q?Cmv/vTgdDnPJeaok1zKnuTwe58Vft3lVN7jDtv9xIB4lLB2KKWFHTN88eEUT?= =?us-ascii?Q?tCHXDhTTkMuGzlNWXQL15Etgqh/pNAAYYfjpiLfCcoYKoYHvf8co0vfE9lGA?= =?us-ascii?Q?+Z1n9iftoq1gCugKs7MZRhs6WvLfySge+sWA3vB/qkks27l4llX6a2H8Wy02?= =?us-ascii?Q?z5nKovz38Fe8Ywv0MWT0sLocKmAvHmwvI747KoQuowMDNsDHhOwwvSoE9QzG?= =?us-ascii?Q?88fUCHedK4k2NPNFmMPhwpEordTPSr4UU2vF2Fb0dMv004KWTtbyI/GkZge6?= =?us-ascii?Q?ZAjntEW/ZI6Gnq78LHUMrWl3AsCtveMPuoOT4FEFRg1x2ZgWzJSrRlddiGJP?= =?us-ascii?Q?t6B2QztmbcaBWAtO6eg+ntRqGtl/lulVBxhqjrpsvxVzI+egeaBPxGSk4AGU?= =?us-ascii?Q?ijNv/x8L0VmpWSagx+HMVyWijeNUegoZRscVDt4Uk9g1xeVU1No6f8Y8teKF?= =?us-ascii?Q?KBSU1TUsR5WsgCE0/lTJRniM1Nywhug06m26pDevSzOVMz0ISJEmR8FEYCGo?= =?us-ascii?Q?rCwfMd22uoyEzbd69U8Lz95POnPelM7iktktSM3eW5zYm4JjEbPLHbJTb+vw?= =?us-ascii?Q?kFOZNwh5zN6wbukASbun2mEXDj64CXBZR6DUE7GjzNxD9JtgnO807NpKoYvs?= =?us-ascii?Q?7/JbSO9I5GXsLoa4/xhpxNMFf2L/kLHYYmFh/ksanmwUxq8UjVmigCZnjv39?= =?us-ascii?Q?o40IC30+4Ikq6D5tL6N2SGusbKjyb2BPGt9opXHsOZvuiXFZ4dHBtZmDhRFJ?= =?us-ascii?Q?5NNoVR7UBlt8CfVQ4grArrETM4vw3unCu+V6u+wc8IJSN/XuomYN2jgiMdf8?= =?us-ascii?Q?5zPqxKAKYct/JemOMVUGQySw2gf4Oto4jftA34wJ59esa88gOxaguXx2D28j?= =?us-ascii?Q?m3mhQC0/hyTCTJfjhxiY71ThzYKPrrVwixkcfD39x2Qw32sqWnzP0D0KgLAV?= =?us-ascii?Q?jV3sWfl96u3Fw4FJYMZIpgwpZDGjxd+sXQHlvi3Mz43hvqCWyav3QJ1MaOTg?= =?us-ascii?Q?d8R4iGcIuuE+c1U9FfAbPn2Mjf0/DT1FRy5QgU7/pzKIIDj+zlR3Wg10+VHE?= =?us-ascii?Q?ND6erLQjkW/B90E6Ge92GHvo/68GDdRY/DIzfDgQRSCYuCEG1M//w9Lvmx0h?= =?us-ascii?Q?NH4+6YGl6FXcbabdMvYt9C2LsGAWkgsqWl4SqGLYWO15crFGotL9WsPi9Yzs?= =?us-ascii?Q?D1Jjfui+kzJhHCYf5NAII5HJj410Az1ByCJ+Ia?= X-Microsoft-Exchange-Diagnostics: 1; BN1PR03MB250; 6:MFPvXo16/MmpiVyZg3ySV/EGpsOQe2+YoAIZglNl61siNyxoTRtJU4V0XsMqC43kws8BIvxFd13gSKaiKPgLapO8dlt/OMIJbRzvw7YsvxUwH6b9tT7UCnm+sQiATmVChzaSbOkkoz4D9Zp0erwDT4LZLeswfL7NFT6TwIDjsmsvZa9+BCyAFOf1sjfhMAjtruQblF/BbOMllfedoKMgoQ+NSaPfojfdUdE3L+fmSGn4zPqck/ZPeW0QC0EfSc1vXtPGHbFCrK2dnKZ/YGcx7tP+v4qBtBWAAkAozf5+U8AKnXC1azpgoE6KYO8sszCA8bsR4L/8lNz4cEx9gxFw7hcDqbhaG7vo5etxLtZY9GA7P6ZsqLcYel6y1SXr0CGftwHqHrEe89doi9UD6XHl/5P8qNg2mjlwGHm56HUtmGfjsz/WFaQZ5AuVjo7xP4utxfHeXV048FUbo1d97IBSRKDPE6AWv1DKCyFLDU/zZSKys47t2U+aUcUMWlx3CkcsOWI1iO1zuxYfM2IMucrMtA==; 5:dTFTYGdBSnRN+tpRKBOdgl9BXJimnJSkRL/24npPq7UzalNS+/OaqWBw+lqsNX5mIfrV3v82D843PxuwoGubEFN9JdaLBQxDEnYkXnBz4JX4jxnMoZOIX4M7Lz05Fx8UYZdB9csZjAJVBJR8hL0HG+kauv93wf9rN90F97A39tsfVKSnxiQxdqhfdSiBICy/; 24:fgez7OX+xT9/+fmxr+duQwWXyR/O7ZU8n9x3cxwgvlCDBZ+AtLFAfpLY0jJg+ui3jJWqR5um0Det50IsRmdmGECS82LBCwcBcGsySfkCf9Q= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BN1PR03MB250; 7:RVc8Elw7MyHVwzZLgS1rFYw8ANfYoYicbBNHZeypSwHbT0sXRg4o+TIimfHBmZ+5VKN8nOYYSBWaG7XuCR/YK6cJgXkHvS0+MlZTJHIMMqTBPEzcPxwVpysBdoukzNWcG/HTgBYPesDqScZpHVWe5QpPACFp0LbjdSKTphwa4OsXD4V0UE4XzRJG83vtWsnigob5nBQ0tkL86kKH6oKjchUQ76i2JJncsqLkdCnWSbCOXGJMTbJ2A41vrm3oV1bEg/7KpaWliQjukjlW05j3XFM0yIg3cBLhbaktXoglc1ZswzCM0JOc9Sve9K7woPds4J2O1PmPYIOtzHEnqdjWog== X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Apr 2017 20:48:57.7993 (UTC) X-MS-Exchange-CrossTenant-Id: 5afe0b00-7697-4969-b663-5eab37d5f47e X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e; Ip=[192.88.158.2]; Helo=[az84smr01.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN1PR03MB250 X-BeenThere: linuxppc-dev@lists.ozlabs.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: roy.pledge@nxp.com Cc: Roy Pledge , madalin.bucur@nxp.com Errors-To: linuxppc-dev-bounces+patchwork-incoming=ozlabs.org@lists.ozlabs.org Sender: "Linuxppc-dev" Use the shared-memory-pool mechanism for frame queue descriptor and packed frame descriptor record area allocations. Signed-off-by: Roy Pledge --- drivers/soc/fsl/qbman/qman_ccsr.c | 136 +++++++++++++++++++++++++++++--------- drivers/soc/fsl/qbman/qman_priv.h | 4 +- drivers/soc/fsl/qbman/qman_test.h | 2 - 3 files changed, 107 insertions(+), 35 deletions(-) diff --git a/drivers/soc/fsl/qbman/qman_ccsr.c b/drivers/soc/fsl/qbman/qman_ccsr.c index 90bc40c..39ad7c4 100644 --- a/drivers/soc/fsl/qbman/qman_ccsr.c +++ b/drivers/soc/fsl/qbman/qman_ccsr.c @@ -401,21 +401,42 @@ static int qm_init_pfdr(struct device *dev, u32 pfdr_start, u32 num) } /* - * Ideally we would use the DMA API to turn rmem->base into a DMA address - * (especially if iommu translations ever get involved). Unfortunately, the - * DMA API currently does not allow mapping anything that is not backed with - * a struct page. + * QMan needs two global memory areas initialized at boot time: + * 1) FQD: Frame Queue Descriptors used to manage frame queues + * 2) PFDR: Packed Frame Queue Descriptor Records used to store frames + * Both areas are reserved using the device tree reserved memory framework + * and the addresses and sizes are initialized when the QMan device is probed */ static dma_addr_t fqd_a, pfdr_a; static size_t fqd_sz, pfdr_sz; +#ifdef CONFIG_PPC +/* + * Support for PPC Device Tree backward compatibility when compatiable + * string is set to fsl-qman-fqd and fsl-qman-pfdr + */ +static int zero_priv_mem(phys_addr_t addr, size_t sz) +{ + /* map as cacheable, non-guarded */ + void __iomem *tmpp = ioremap_prot(addr, sz, 0); + + if (!tmpp) + return -ENOMEM; + + memset_io(tmpp, 0, sz); + flush_dcache_range((unsigned long)tmpp, + (unsigned long)tmpp + sz); + iounmap(tmpp); + + return 0; +} + static int qman_fqd(struct reserved_mem *rmem) { fqd_a = rmem->base; fqd_sz = rmem->size; WARN_ON(!(fqd_a && fqd_sz)); - return 0; } RESERVEDMEM_OF_DECLARE(qman_fqd, "fsl,qman-fqd", qman_fqd); @@ -431,32 +452,13 @@ static int qman_pfdr(struct reserved_mem *rmem) } RESERVEDMEM_OF_DECLARE(qman_pfdr, "fsl,qman-pfdr", qman_pfdr); +#endif + static unsigned int qm_get_fqid_maxcnt(void) { return fqd_sz / 64; } -/* - * Flush this memory range from data cache so that QMAN originated - * transactions for this memory region could be marked non-coherent. - */ -static int zero_priv_mem(struct device *dev, struct device_node *node, - phys_addr_t addr, size_t sz) -{ - /* map as cacheable, non-guarded */ - void __iomem *tmpp = ioremap_prot(addr, sz, 0); - - if (!tmpp) - return -ENOMEM; - - memset_io(tmpp, 0, sz); - flush_dcache_range((unsigned long)tmpp, - (unsigned long)tmpp + sz); - iounmap(tmpp); - - return 0; -} - static void log_edata_bits(struct device *dev, u32 bit_count) { u32 i, j, mask = 0xffffffff; @@ -687,11 +689,12 @@ static int qman_resource_init(struct device *dev) static int fsl_qman_probe(struct platform_device *pdev) { struct device *dev = &pdev->dev; - struct device_node *node = dev->of_node; + struct device_node *mem_node, *node = dev->of_node; struct resource *res; int ret, err_irq; u16 id; u8 major, minor; + u64 size; res = platform_get_resource(pdev, IORESOURCE_MEM, 0); if (!res) { @@ -727,10 +730,81 @@ static int fsl_qman_probe(struct platform_device *pdev) qm_channel_caam = QMAN_CHANNEL_CAAM_REV3; } - ret = zero_priv_mem(dev, node, fqd_a, fqd_sz); - WARN_ON(ret); - if (ret) - return -ENODEV; + if (fqd_a) { +#ifdef CONFIG_PPC + /* + * For PPC backward DT compatibility + * FQD memory MUST be zero'd by software + */ + zero_priv_mem(fqd_a, fqd_sz); +#endif + } else { + /* + * Order of memory regions is assumed as FQD followed by PFDR + * in order to ensure allocations from the correct regions the + * driver initializes then allocates each piece in order + */ + ret = of_reserved_mem_device_init_by_idx(dev, dev->of_node, 0); + if (ret) { + dev_err(dev, "of_reserved_mem_device_init_by_idx(0) failed 0x%x\n", + ret); + return -ENODEV; + } + mem_node = of_parse_phandle(dev->of_node, "memory-region", 0); + if (mem_node) { + ret = of_property_read_u64(mem_node, "size", &size); + if (ret) { + dev_err(dev, "FQD: of_address_to_resource fails 0x%x\n", + ret); + return -ENODEV; + } + fqd_sz = size; + } else { + dev_err(dev, "No memory-region found for FQD\n"); + return -ENODEV; + } + if (!dma_zalloc_coherent(dev, fqd_sz, &fqd_a, 0)) { + dev_err(dev, "Alloc FQD memory failed\n"); + return -ENODEV; + } + + /* + * Disassociate the FQD reseverd memory area from the device + * because a device can only have one DMA memory area. This + * should be fine since the memory is allocated and initialized + * and only ever accessed by the QMan device from now on + */ + of_reserved_mem_device_release(dev); + } + dev_info(dev, "Allocated FQD 0x%llx 0x%zx\n", fqd_a, fqd_sz); + + if (!pfdr_a) { + /* Setup PFDR memory */ + ret = of_reserved_mem_device_init_by_idx(dev, dev->of_node, 1); + if (ret) { + dev_err(dev, "of_reserved_mem_device_init(1) failed 0x%x\n", + ret); + return -ENODEV; + } + mem_node = of_parse_phandle(dev->of_node, "memory-region", 1); + if (mem_node) { + ret = of_property_read_u64(mem_node, "size", &size); + if (ret) { + dev_err(dev, "PFDR: of_address_to_resource fails 0x%x\n", + ret); + return -ENODEV; + } + pfdr_sz = size; + } else { + dev_err(dev, "No memory-region found for PFDR\n"); + return -ENODEV; + } + if (!dma_zalloc_coherent(dev, pfdr_sz, &pfdr_a, 0)) { + dev_err(dev, "Alloc PFDR Failed size 0x%zx\n", pfdr_sz); + return -ENODEV; + } + } + dev_info(dev, "Allocated PFDR 0x%llx 0x%zx\n", pfdr_a, pfdr_sz); ret = qman_init_ccsr(dev); if (ret) { diff --git a/drivers/soc/fsl/qbman/qman_priv.h b/drivers/soc/fsl/qbman/qman_priv.h index 22725bd..1e998ea5 100644 --- a/drivers/soc/fsl/qbman/qman_priv.h +++ b/drivers/soc/fsl/qbman/qman_priv.h @@ -28,12 +28,12 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt - #include "dpaa_sys.h" #include #include +#include +#include #if defined(CONFIG_FSL_PAMU) #include diff --git a/drivers/soc/fsl/qbman/qman_test.h b/drivers/soc/fsl/qbman/qman_test.h index d5f8cb2..41bdbc48 100644 --- a/drivers/soc/fsl/qbman/qman_test.h +++ b/drivers/soc/fsl/qbman/qman_test.h @@ -30,7 +30,5 @@ #include "qman_priv.h" -#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt - int qman_test_stash(void); int qman_test_api(void);