From patchwork Mon May 1 21:30:04 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Roy Pledge X-Patchwork-Id: 757318 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 [103.22.144.68]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3wGyR13Nsbz9sMN for ; Tue, 2 May 2017 07:36:13 +1000 (AEST) Received: from lists.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3]) by lists.ozlabs.org (Postfix) with ESMTP id 3wGyR1257VzDqLj for ; Tue, 2 May 2017 07:36:13 +1000 (AEST) X-Original-To: linuxppc-dev@lists.ozlabs.org Delivered-To: linuxppc-dev@lists.ozlabs.org Received: from NAM03-CO1-obe.outbound.protection.outlook.com (mail-co1nam03on0054.outbound.protection.outlook.com [104.47.40.54]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 3wGyJL65sRzDq5W for ; Tue, 2 May 2017 07:30:26 +1000 (AEST) Received: from CY1PR03CA0002.namprd03.prod.outlook.com (10.174.128.12) by BY1PR0301MB0904.namprd03.prod.outlook.com (10.160.195.143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1047.13; Mon, 1 May 2017 21:30:20 +0000 Received: from BL2FFO11FD032.protection.gbl (2a01:111:f400:7c09::194) by CY1PR03CA0002.outlook.office365.com (2603:10b6:600::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1061.12 via Frontend Transport; Mon, 1 May 2017 21:30:20 +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 BL2FFO11FD032.mail.protection.outlook.com (10.173.160.73) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.1047.9 via Frontend Transport; Mon, 1 May 2017 21:30:19 +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 v41LUGrY009537; Mon, 1 May 2017 14:30:18 -0700 From: Roy Pledge To: , , , , Subject: [PATCH v3 02/11] soc/fsl/qbman: Use shared-dma-pool for QMan private memory allocations Date: Mon, 1 May 2017 17:30:04 -0400 Message-ID: <1493674213-963-3-git-send-email-roy.pledge@nxp.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1493674213-963-1-git-send-email-roy.pledge@nxp.com> References: <1493674213-963-1-git-send-email-roy.pledge@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131381478197350079; (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)(39400400002)(39380400002)(39410400002)(39850400002)(39860400002)(39840400002)(39450400003)(2980300002)(1110001)(1109001)(339900001)(199003)(189002)(9170700003)(81156014)(8936002)(81166006)(106466001)(33646002)(50226002)(105606002)(85426001)(8656002)(8676002)(38730400002)(2950100002)(6666003)(36756003)(356003)(230783001)(47776003)(5003940100001)(54906002)(3450700001)(50466002)(76176999)(48376002)(5660300001)(498600001)(189998001)(50986999)(2906002)(43066003)(53936002)(4326008)(86362001)(77096006)(2201001)(104016004)(305945005)(2101003); DIR:OUT; SFP:1101; SCL:1; SRVR:BY1PR0301MB0904; H:az84smr01.freescale.net; FPR:; SPF:Fail; MLV:ovrnspm; A:1; MX:1; PTR:InfoDomainNonexistent; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BL2FFO11FD032; 1:MLfVdoPDKZcyz8vmacbymVWv4Wrmoj8zHNB5QtovuPkDLy7rIwjtQJv5sLE1F7n70KRJpGYHAhcEL/Fjq9SdUmr7mr4aJ9ovEbZVLoH9z3rtg+B4kJZIUDocPkqQMxYcZstQyyrcOVVA7Fg1dqpamII/2YwLQGCtJB0WcsYnyFRuNeUjcPVGkyBOQUODdD3ZTOtd2ii4L/vlPCXwr3HgqYi1ndbuVxPuka9sFhR8PnTXlrzC3GLdYrBWfCYEMcVkBPU4PWXn16d0plkT6/Ywz9XIRpy2Y2DGjLpQnstwztKT02n2e5HlXzP1xTGTY4HHyOTFTwC7YMafZfI6DmoQvM9q2kZMW6dva+HBIG6HBlqQmtH4aHTgdQaFSTr9IcBJwxVmvv1wuK4E0QjBWvkxLSdJ67pEV9sxPp+cQXcMuKoP+cTdOK6eOrNcPeyDXdP4XPR62w0cl6XVaICC7bTXS7gIb0v2RL+oHjC4BpCdnirGelujF+GKyVk11DpwBBgiWYY42YUNeqEUoP1sZcYmstAkeQbR7zDWVnPhi9lXo8wFftcB+2IrlN0Qv/Uz9EzPVaGf9zzVwr03o9t7XQhXy33hho2IMdt5/65Uuooq1neH+AQc+CB5hKcO3i2OfhD0Awp/68aeAbd5aCpcqJLJwYcwcvl+DOEXfSjCm+MgaYiSutr8Qyo2mOzIzFkwTTFfW/nn5ut6WK1J/SPqpqjOX3lXTFrVG8v/hSNaLoQt46uJsQnA9aKJDrEugL7tXDXI MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 91de37e2-ff00-4216-6d5f-08d490d94479 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(201703131430075)(201703131517081); SRVR:BY1PR0301MB0904; X-Microsoft-Exchange-Diagnostics: 1; BY1PR0301MB0904; 3:4KI5J8vFZ7GrLsEGFV27br2iOI1j32piXuKnv2ICnCli700wB23kGXrPys//V+XC+vnKUL2jiN99RlWACRWwYp9NrzuO6pFUEuY3yqp2uxDzxzXxvKFDb65letn/V5VXKeb4oQZ3nZPZR0nk/ZdpA8MoaPQEhxOZyKsPwEsw4AlaQJc8ZFuB7M88RVE/n1Zlq+1eosUrSvK0FOdQmrZIa5MBTd6nIf2bhF1i3+7fCh7NEkaGkL38evH/ZF8Ikr+ciJ4kRFGBwQ8XmxmpFxi9Ep+fU6UnISqOfW0AupgpNI02QBQjVK2xyri+rtume8VNmYq3T2pAIW+uNLPqAFqmoYOHCixmtXBT7x2Fuzjpb2zh7sQwvHT/fZ0TWX3xvxfDmwdO8cW+nMSS37Yn+L3ilawg/hkn/h69IbhHYsU8c3vV7i/OvTXYyY5jwOFG2eXP; 25:OrnRwUuvteXvR40m8DbSQzTuqVSxbgGJJ1flLU8mjyehqxV2Yk9Us3HJ/t1ROaipHfriKC2JfiuZu8cVEhnvQdsm1sGSFWfH4BIrwchc1tLrsxLpuMezdADuT0RDQZjgPiTDM05t9QYk1DircginaEIBYTUeLPH3TD0CcWgM0n6s8P/jzcdZ+jsKRLtXNhAum2i6DlLIxc8ILUhdeCDqS0uJVxuD4LD8vq6a9Dibkwo4Cd/j/hhjOpDGdVPDJeSm9Wx4B/mKwnZRS3loZZYKuj7ey4VvodLI0nMRuBro4ip+5qeFiPk6Mq5NafrTvEn1GSsEVttzO6snLL8u/ESmj0VTFWE6V91Db+icz0ovmoCfSq/qoR2OO4i03Rz0QGsylZ3gN6VA6rreMhpQVfEtQ/8XGtr9wdrlY9aSAcTOGrfJ+3dVOKrvSsxQV9BsllW0dwrOZTH5q+ez8GEzmxW4/Q== X-Microsoft-Exchange-Diagnostics: 1; BY1PR0301MB0904; 31:BN0yvCF5FC3MVSjC9e+XHlTN6TiFw+/TOUo5yGS695eDhgeoi0N52sXWKQNvD4/gcwsf5tTGF66izTnSdai6VUWd8PTZv5E7JClPQPmKSQ7s8JwPa7P2IRAUi5vanawsGfLK6Gk8vWCVCxDXae+m1tmTO7qoTESoTD9qPMzFNws4v5gYUGrKLHp29Fy4027vRVIwH19/CWuwc9oWgWuRLjtbgUdVnQRxRXRV85wF3n6Sd1tPp0b2y2HvHXutjTotLupxfXLTpMrGXsNjPOJCzxL2ITah94+b0/6WE40SW9U= 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)(13023025)(13024025)(13018025)(13015025)(13017025)(8121501046)(5005006)(93006095)(93001095)(10201501046)(3002001)(6055026)(6096035)(20161123563025)(201703131430075)(201703131433075)(201703131448075)(201703161259150)(20161123565025)(20161123561025)(20161123556025); SRVR:BY1PR0301MB0904; BCL:0; PCL:0; RULEID:(400006); SRVR:BY1PR0301MB0904; X-Microsoft-Exchange-Diagnostics: 1; BY1PR0301MB0904; 4:npC73PFRgiNbKmn3lBKfQk9yIFDr+REEjiUSa2mMEHULHoODko1Gn0Ib7hKHm5UswpAYxF5ctyX27bJbAawOCgWXGzlkz4FPjr+efMF51aKoeRHXuoupxbEONghMk60BrVZ9zUGhyLLgjXQO8jQrhJqk4jkwvOhJwUUCHdGlulhKyj0ZvEYsHHt/TWVB7tFYQwbtlitutNNq5u45T09c628GcePghzzbv7pV8j1nK9Mw1j8hpQq1AE5WtGjCT2NojCj8vZ5wDU84IYI57O35llvAR7FMZHh1RthFEaJEO6ohUkSMcpXRtYrDx4X0RtLeqqjlKvZYjeyKgZx+0270BGYFbvYG6/yAUHSWE7U4Wg33dK8d/K422MI8ScFKwTrM8M6hps/SaZ+RUk6ugyyrbuoj6EnnyvlFg7vSMyKEOlcTK88ywGKHLuMVTRV333I7txrmAtaWcJu8N97DrFhCxSqeohYS+hgwrYz0Qq34XSZJyYkNEcY95wuBaW3dDCxDG5XpEFYe79n3unb0m997VexFLUoUMg2Eap3ujjvbPoJaP1sv68BSMT82YkTP2RkoUDbgM4mvCSqylVhxSai0qQfxbJrYGjkpTfV6sYVKjRfEwSVCZK6ZpzXEozEPH1ehV3Am/G7bv7/Rl8F2TJMg8QJ1/vcIoJrDSyXvBaR3N1ZoBXLturJRhmfevkdt9v1yUyE0IeLORe8fXujDsZLumXPNwIZdKyF8vW3uiigSZNPo5E8WOYBCdUU4PFZMODp/tnUr+4b66vH00JzskGTLkdYxSERbiiDUV7Juj8FAYGFvkO0CUxHWMVRop7oFSskZNlDp0gAQoW4+WzttBmBwWbYXUqvi6UOS5nh3wJEzS7cl9acJe/h/EBLuRm88lh2crZDu2E1aaqUo0zf/k8Po9w== X-Forefront-PRVS: 02945962BD X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BY1PR0301MB0904; 23:i63Yf4eajmalDAsVcJp5pdDK813oG5Ct2sgHGYi?= =?us-ascii?Q?klR8hodAJm6wnJjmPiRWUJ2C1GG9+Sv6hb2PlwIGNjvCcE8MXIvtbhDejKwQ?= =?us-ascii?Q?8+cYMrIRRWubvCcCH3mql4JPq9nBtAerGkpBA25uUvy5aLpUeT4JZ5yBGPHa?= =?us-ascii?Q?bfJO0D/ij1xJq+Brb0jCPzf0S9g7cpw9PH7RoVOgRJB2ZLMz9/X4d/ABiLu3?= =?us-ascii?Q?XRTW4gM9NmaU1XMnkKdwuOaMeZrt+FEqNTOYQC2d+vmYnZaBToR/qJVTP36g?= =?us-ascii?Q?sGkU/kZ8xy73Msw3eXocxFV2jDFB/FoiHMxQ1Mex+7fTYIMMFn2cMZiduQdG?= =?us-ascii?Q?4vEGwxAU+uhAE+ivMFEA8p8I9I64S2D5D826NUejhfLvUppgc+7Rv/aSM3Y1?= =?us-ascii?Q?cJVqeZakDmOtB+tRQE+fZZF7I7gkb44cKwq9W2Vqa6XEyLT0L4Tb06xxHBuv?= =?us-ascii?Q?D4cDp4ssXcDxJng4NdvjD5za5p4QuRZW8ub9q9LLgdXhbGew2BoW+EsFGvr2?= =?us-ascii?Q?gsCQ5y/Opg5vBIrz9cDf4KJ5MHbpVyNfaTj798PLXgY2W2cLjjhsIgvzUnKE?= =?us-ascii?Q?aSzvND5EX0n1tYvKoSJEY71yn62hwpM0XXwjTRHl28KfHNARGYvlTNucnuJO?= =?us-ascii?Q?cg6XXZUzVxQsSwCF3B1Ni7G7W6a5Zl6Kqjwj47KoHQdOUjzc0nrcVQn1H29U?= =?us-ascii?Q?nyOMYZA+Iof6nTwBZm9JD1qtgtD59pxfEotMM49H0E0wvXETLuCx1Or4eI5X?= =?us-ascii?Q?45RWRFRg1gNuepaN1tP8XrhjkaQQGzMM1Skr43q/0mUiIKebOBstLFRRtJAl?= =?us-ascii?Q?YnyNye0ZNjqCui3UsQsuj92eqZX0+e9eR5pColCqY4bLu7uvhbkY9/fMIcGy?= =?us-ascii?Q?6DuMYnJIME23o+989EUTGGKpq+JZOSpenYwen+F7ZtlmT/NQu5+ZzRQRBe8i?= =?us-ascii?Q?gnUG5rsz+9Foaas86n18ApfphocOVrU0GJjMXcvEsRkF3O7l1g+wqvpktWNM?= =?us-ascii?Q?3dIb+TPfTeHkjMJdOsVlGY5wpJK6YcfKII4XGGpXmBX8hMb4cWA4BOTi6OyF?= =?us-ascii?Q?hGWuYYzxpfJmPPyc1U+cgDvcUhE7ZS4nVNjOF9xwLGqyRjHDcASsLVhJnEPm?= =?us-ascii?Q?xzgNQpH22NjuVmhA+MYeazTox87Lky0gnuieLZteQmbnL9ZKqQBaRSOglYKw?= =?us-ascii?Q?6ufp4RZiWfJxD8vhHsRsDs12/A0lTDNAMYCGYf4A0BIoW4HeJMpdRSFP0e5v?= =?us-ascii?Q?zEyHz1FGsGJK716v8EJMyI7E6JHq79Iu5Gn1yuXyhZrDN5j4BozntQ5s2PUc?= =?us-ascii?Q?hy1iPOLlJn8A2KNtNDAoyWyc=3D?= X-Microsoft-Exchange-Diagnostics: 1; BY1PR0301MB0904; 6:cG4VuJ+7azwjhLf1RfPC/x8fHAxE9fPGMvCAqsi4LfpLjz7vxc5VzZXM1x0OSeOq57JKDxobxEHUF4CFCBqgdCa7a4/VXCD37xDMJJ9H1094g3DTjmQ8NPnD4Td5zrSefYpIPsKW3JVY8v62lNmw2GELhbpOYcwiwpmskri0DlW+804PDkz621BWkdXz9o05OY0IgnfU8aUoBVS9pZ2d2ncuMwb91QqRw+NdCvw0rXeKtQRtLbL8fzj+MZ8mZeYIBD3G5Pz3IA6E5HLTyE0rMbmoYbebPDyax39xMR2DLI58mrnQW3aSBzbIq3dbuFQDKL+2lPK6n3HFmtsIHDi03l3h+V4Drw3MhRINviyb/F2CN6WG4PvR/2h29XZLg9aKU4wOeM5Xl+6/QvEB5RANNJs77D70EMtV5A/2kqvazvLyaiES9g/BT+IW0d4mHzKRtM5eTuxzRNEFFOR0zxdq2QzfNNPJxkXjel/uAoj2s0wiKcQWVfJn+0X2Jjkp+U6JGB0XC48VJxLSAQt4t5u0rQ==; 5:/jQqWjUrWtGIQDjz0ISFXjhWLp1t4KbXRjbO/Sjwa0TpVtwTFzRnoqyUracWiCPShahPbsXVTFtWR1FFfeQ4V7A3PHQwdPcwTjfa5zJlxbNY4x/two9v0YOO4GAP89XT+UyCBnLhrbv8EplmxKyZsvcAGFh9f1/KH3KqJM7t2DvgwL8f0k36sdO3HQtU/pAU; 24:qrB1Fq3Dy12NHiZJd2obejE6R17u03zqPOuf8hsuMB1PdQzwK7P/8mugAQR2ZL/2h09Yfoa/kBPdAGpjCUbDWPQop4wBM79x6+W62DaC9Mw= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BY1PR0301MB0904; 7:eBMPd7fuxfpo90STx6yJTtzIctfg9/9dQ+sO0DZXBDHWO7uhd1lkS6QkKs1I9pcSAmII/00vobTgTMFa1P2fifKKFIC5ALXnjsO+EQ9m89emequeK0YQo/V83mVVMoX8fxEYZABk+UQockXOd+Rev/b1HyJ7HQbiRHtpLbIovJJiEoA69Tk9IDybth3cePVKbWrJxaUG+Pa7C+CEkaLWUvwKrLlys9i2muSYyK32WYhiA7hRCtrndZIMJwdIKFrFQCi98Z44q8fw1gEOQ9jDK6CJWy4OWAmrmcyphT2SoaxEIMbqTU11UREzoojRyBTY9Oo+74XyeQnyHeY8TttS8A== X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 May 2017 21:30:19.5010 (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: BY1PR0301MB0904 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@nxp.com, 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 | 138 +++++++++++++++++++++++++++++--------- drivers/soc/fsl/qbman/qman_priv.h | 4 +- drivers/soc/fsl/qbman/qman_test.h | 2 - 3 files changed, 109 insertions(+), 35 deletions(-) diff --git a/drivers/soc/fsl/qbman/qman_ccsr.c b/drivers/soc/fsl/qbman/qman_ccsr.c index 90bc40c..17a4aaa 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,83 @@ 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); +#else + WARN(1, "Unexpected archiceture using non shared-dma-mem reservations"); +#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 reserved 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_dbg(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);