From patchwork Fri Mar 3 14:52:10 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Horia Geanta X-Patchwork-Id: 9603269 X-Patchwork-Delegate: herbert@gondor.apana.org.au Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 48FBE602B4 for ; Fri, 3 Mar 2017 16:33:18 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 3A1D6285CE for ; Fri, 3 Mar 2017 16:33:18 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 2E676285AF; Fri, 3 Mar 2017 16:33:18 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.9 required=2.0 tests=BAYES_00,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 732BC285AF for ; Fri, 3 Mar 2017 16:33:17 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751459AbdCCQdR (ORCPT ); Fri, 3 Mar 2017 11:33:17 -0500 Received: from mail-by2nam01on0065.outbound.protection.outlook.com ([104.47.34.65]:17536 "EHLO NAM01-BY2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751445AbdCCQdA (ORCPT ); Fri, 3 Mar 2017 11:33:00 -0500 Received: from CY4PR03CA0012.namprd03.prod.outlook.com (10.168.162.22) by SN2PR03MB1951.namprd03.prod.outlook.com (10.164.114.163) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.888.16; Fri, 3 Mar 2017 14:52:56 +0000 Received: from BN1AFFO11FD030.protection.gbl (2a01:111:f400:7c10::190) by CY4PR03CA0012.outlook.office365.com (2603:10b6:903:33::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.947.12 via Frontend Transport; Fri, 3 Mar 2017 14:52:56 +0000 Authentication-Results: spf=fail (sender IP is 192.88.168.50) 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.168.50 as permitted sender) receiver=protection.outlook.com; client-ip=192.88.168.50; helo=tx30smr01.am.freescale.net; Received: from tx30smr01.am.freescale.net (192.88.168.50) by BN1AFFO11FD030.mail.protection.outlook.com (10.58.52.168) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.947.7 via Frontend Transport; Fri, 3 Mar 2017 14:52:55 +0000 Received: from enigma.ea.freescale.net (enigma.ea.freescale.net [10.171.77.120]) by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id v23EqdQT018743; Fri, 3 Mar 2017 07:52:53 -0700 From: =?UTF-8?q?Horia=20Geant=C4=83?= To: Herbert Xu , Scott Wood , Roy Pledge CC: , , Dan Douglass , Alexandru Porosanu , Vakul Garg , Cristian Stoica , Claudiu Manoil Subject: [RFC 4/7] soc/qman: add helper functions needed by caam/qi driver Date: Fri, 3 Mar 2017 16:52:10 +0200 Message-ID: <1488552733-20806-5-git-send-email-horia.geanta@nxp.com> X-Mailer: git-send-email 2.4.4 In-Reply-To: <1488552733-20806-1-git-send-email-horia.geanta@nxp.com> References: <1488552733-20806-1-git-send-email-horia.geanta@nxp.com> MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-Matching-Connectors: 131330263759158043; (91ab9b29-cfa4-454e-5278-08d120cd25b8); () X-Forefront-Antispam-Report: CIP:192.88.168.50; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(7916002)(336005)(39850400002)(39450400003)(39860400002)(39410400002)(39380400002)(39840400002)(39400400002)(2980300002)(1109001)(1110001)(339900001)(199003)(189002)(9170700003)(47776003)(77096006)(105606002)(106466001)(104016004)(50986999)(50226002)(92566002)(38730400002)(4326008)(54906002)(76176999)(50466002)(8676002)(86362001)(2870700001)(356003)(5820100001)(23676002)(33646002)(8656002)(2906002)(189998001)(5660300001)(36756003)(2950100002)(305945005)(8936002)(626004)(81166006)(7416002)(6666003)(53936002)(6636002)(85426001); DIR:OUT; SFP:1101; SCL:1; SRVR:SN2PR03MB1951; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; MLV:ovrnspm; A:1; MX:1; PTR:InfoDomainNonexistent; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BN1AFFO11FD030; 1:vhMQ50+jAz4vNjH4kNp4yvqAgt8nT2nm0KxsdwKHWKPjLgHTSU2VFv0h+km39Lei25ahESU4fHeRPlU4ctzHWLOfNQcSrIN1BiA937rYAKmvfnrPEMuIPTyudHd3i93VAVDwpmk/y3xYZnRLuLyTbi7BCLBHIdssOx+N31PvZaocA6IcXG0bKMyByzk9GmgKAYGDOWAcgLpaJMgqKHrUbv0HCmS4hmeBMUK9E97bvlFlzotq9tEPmWbZpb9fMBIGa6Ad23+ffi0lfNfijUxUR2BCR66vjh3Cwo7R5oihn3GzLSYQqZlKmsdEttDar7DF1LwxnBm3ehiFYXwophJR2ar0sDVaJBaBh32wYG4cRaFmR/e5ZyO5TTRjGpc6niqRlmxc5ql9a2rynA6Su7pvUJC8mMpRMF6CURccEniAC9pIUvGM7Llv0Rtsdxu3s9+zoCX4nkJjemOkzLREN7Y04UC9Qx3+ruPPjmC/4NsPFpizpB6F3K9zF9+G0OmwmSFJOP19vDrSmBYN+ogJcaTcgD0Y8ZllO0ekVR+qU9t/ZbVAXkLaNLsdbl++o2uaqZrJzAD9TMZLIaAH1mOkC7OaDQ6nVzNfUpv9EbhJw8TlrA1ZcCejbYpg9l+AHkxF094zcwc0FzJ94AH5d7f+lRZEmlbc5M4uSxHSGSUgZYu/lZmrdivVpM9Giv9qIqiJ0l+0UNoaTlU4PmyxxVwkkwRivA== X-MS-Office365-Filtering-Correlation-Id: bfb517df-177d-4194-19bc-08d46244fa14 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001); SRVR:SN2PR03MB1951; X-Microsoft-Exchange-Diagnostics: 1; SN2PR03MB1951; 3:dYejWMdLalhC0EWN1pG4i2MY9dfP2CH5TGdcBa7C3+GSjkKGNFbne9YOtTVqLHLS+VFf1ZR8KD3thJ0F7XyBi3dR3T9rh6aa0uprIv26uaPeMmC5o4H0oYr8lIY6V2GthqivW2fA/sQ8RSh1/W05YC31RvcwUaW/SJBlqPbaPrqD0QcIoMLwg9MxLfZGGO11KWemMT5SCiS4Xom3V21I0Rv+JB/GXJgQirSqECNbbJab5IDSjLB+HXdLA+kQ539M2E/LmziOnWnUPNpaD0dQF9xyT7+iaqVQndcHqSnNaKw/y68MVtA9hKq6bcBxl7/TceRS4Qug3R62xok+unwt94jnsVc9mCKQrdcO0YhNxW0upqMyvDnHsUGIW6IZNO8l; 25:hxImXU/K4hNZEU6KKNoAAgKL3DtssD6XRrPPLgsbwQVXCOGVfZ7HrGcexbR0G6Sip/8/T4PBlMP8jbsfTwVxacfF9wonJgQk5G+6I1TymM4owbV8Dxwj58fs5OdGgB6mYeYMRRHWM+wqveZrVclxeMrW9pDwTgWQxgLG+DrpwQaxONsNvxL06MW6nzorof5aXTcw4gH44uQuF4pmvVJC96j3l3EYSZMhOaTwczluQdrIBSoHrV/jkvsUAzXV2HomOvcArzxi4mOPt6++wlKrezEA8gX8PJEtPxCPgyWu23aFR4QvM39Lq6tTcbV3Q9MFjxgR6DfD4ogCRQZkPD1cJ7tiyYWyzzzRXEKFdQJ7gjbXBKaBb41w6gtkHTbd8ClyAUyJXziSaR6/hR86VwFGFIOchssn96DCUWfYq14dPMgwKeg6vS8hWG9l5qDv34kiJMfuhip/V2N49ibqSVjI5A== X-Microsoft-Exchange-Diagnostics: 1; SN2PR03MB1951; 31:huRfB67RA7KumNlD5E2m/nGB9oyhOraWP+lvCKGg4FhS/0l5J4bjrXvVuekXug+vwbCXKg3BVCGuh/0p3zun/oNvX9KB2VUE4WZrvkUUN8LN3g2Q0V/u0yKfERDwQaWSJxFqiy8y4lJkphtX1WvWYZYxE5bmJiT/cLkiCw4AgcwAkb8Pfj7jI9GJ9Wl6FioeoQVcIr0JPInw4rNYrWinjDjmk5NeXNQ480qVeKhBk8AzCuVq5938QLbRrLV/OyY4 X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197)(275809806118684); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6095060)(601004)(2401047)(13023025)(13015025)(13017025)(13018025)(13024025)(8121501046)(5005006)(10201501046)(3002001)(6055026)(6096035)(20161123556025)(20161123561025)(20161123563025)(20161123559025)(20161123565025); SRVR:SN2PR03MB1951; BCL:0; PCL:0; RULEID:(400006); SRVR:SN2PR03MB1951; X-Microsoft-Exchange-Diagnostics: 1; SN2PR03MB1951; 4:mFzAgEg0SGL+Rg05eTzQKSGhzF3qm2Sj2tb61royzrIBVbHBmvl+gtHXFeelEGTRdwI1FdugAmW5OGmcCwUSPhgo9WcAqiXVWLv9+MzDT0J2x/R86J1gkB4ZHNYHcolNu3wIOjWUon4OLa90l5v4i6FbYjWuXcdMaOPmF3rO2xGLrp0O22O5w4FQesIH8oP2TcJAIwfbjztjLHao7gVpxxxuwCuf/e+TZya7XVglZa10E/YTZYyj9vz7BaQdIoi4uZCGoIs3A411D+zWa067Mc8XE0815ZfAuvojiVCvtNgA2n8ZRy1RMAfWpREz7SHStcpkHHBVzTFuGu6Epf+jH+Q0iSBEkRAnteP85tP5j3tBxYVN5fMsExz4av86huawxW+cqLONV1YvR11heWyb++rAbcMUmUwgte41khrVhnhvJog/KKWcKIcBIFiLYmv3++Bfc5OfR7M/6fQQtIcZKzFCQMVIWfKHiDEuiWXG58yrPpA+BTjjczzyQ0EKEhHfBpGgn8Ly7zTo6yayPFJDdIjHDkmV5SIapzzo/1hyeSIDDCWwbXxgA4TrG5KvnyEc/2rEudLs/yHjl16eA9Kwsr1dHSgqcaMlCaqfc2BUKkzE/a+0reycg6hRLU+OnF1GtWbYyPAGEG8M+f7ldwShvs6p6Fwz3ido4MXg4WKPz8k/o7hCmfhrUN1uFESa2FGCDbna9KASo6Zj25j7hDMqK8GDOWvwmM8RX9hh5d1BNVrQ8In5iKCfgxo6I2bHrdQOyWP0gZV4kFiL5B/OS6cFpg== X-Forefront-PRVS: 0235CBE7D0 X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtTTjJQUjAzTUIxOTUxOzIzOm9YV3hCYTZLbGlWVWkrL2ROdS9UaTBFbUs1?= =?utf-8?B?ZzZUVCtOTURuQ1J5b29Qa2dkYTRQMlFqZmNYOHF1dGxlV1lsNDhjLzFVQzEw?= =?utf-8?B?WEtJV1FjK2xIU0hoZWd1NlRWUVdaaUpHS080c1ROSHdxVWZnVUdoWFR0WWEw?= =?utf-8?B?WXVFdkJxNzJ4NmYwQkE5K1hGcjRTSDY0WlVPd0UrTFNsT1dncXZqcUhzUGFs?= =?utf-8?B?N2JTaXNOYXNKcEcrQWE1alYrNGlRTVlIWnpNVitDcDI5Y0w0WkdOWmI3WWlY?= =?utf-8?B?SzIxOHNRN2lYV3NHZDJHODVLamlsLzc0TlRObU9LMFAzai9oQkZpbzVTbXdD?= =?utf-8?B?TGJEVGFvZG9sSW5HekN2VE8rSXVvNlFRdjZMZUZEUGJTK2taV3VaVUoreEdu?= =?utf-8?B?N1kwd1VEVnY5RlRsdjJhTDdLOXBCMXdzYklrS1BvbUNSek9oR01uMDZXN2VH?= =?utf-8?B?K1VJV3VRTzJYb3RQS3FaQVVmMlJTRmF1clRRaC9zSFVielNBYkUwNGZHRDRB?= =?utf-8?B?bVhUc09wMEJ4ZmRwMlZSSnhqRy9NbURXS1NHQmJvMUhCQU94bTRrNVN4MmUz?= =?utf-8?B?cjEwbmgwZFQrMnlYK1QzWHduVWZEUzRmS1QvZ3BDbytVd1RzNGwzV2U5Qloz?= =?utf-8?B?bGZ4Ukx2YXRKNS9TNkVBYWlUb1NBVHhLYitzRlV1RGFPR0Y2T3orRW9qWWsz?= =?utf-8?B?SFU4RzgzNklnS3FJdXBNOUJUVUJjYzJBSmU1aFBqSmFNcVRaekRPcWZ0dit6?= =?utf-8?B?VU93ek5XZzlQSDgrdWFOZDdISjhCZDloMVc5OFhJMUtrUXcva2xINS9jSnNq?= =?utf-8?B?WkdQTWhlWkFPQU5BamZoUkxPbDlWbFVFMXN3MkF0VVREdzRYTHEzTHJZdlFX?= =?utf-8?B?ZjJzMllhUDVTQVhkRVFqZHlVVTE0Q1B2SStKTGJMbngrRjQvWDhTR29Ja3ZI?= =?utf-8?B?YjJ2c0l1NDdkakJIQkhKMmx4NjVvV0dRcDhFUTJEeVFUdzFjWnM2a0JnY0hm?= =?utf-8?B?djVZemxHd2RZWUtReFNUV1YyN1BmTmcvUVVnUjdNdnh6b1R5eGN1WWR1djV3?= =?utf-8?B?Wk45Umx2SE8xdS9EamJjR1JVTTMxVWN1ZnY3RnQxM0dPb2tyYnN2QkpIUWVs?= =?utf-8?B?ZmZZbVRhd3dieEVpdkU1OW0wYnV3WHBJNVk0SUpEbk5XUFJNY05jWUhyWDBo?= =?utf-8?B?azBoZlFXSk8xeGpZajFQcFF0aEhxVkdyeDJGQ2dkR3NwQVBzSkFUcjFVTzNu?= =?utf-8?B?Und3U29rZFdXWVBVWDI5TEJ5eXg0OThPMUd0dUZPM3kzUWIrQW8wcWF1aTNx?= =?utf-8?B?ejR4NEYzeXBvK3o4T1dzRWl1a1IvbTFCODd4WWVZZHUrL0wyNUNyL2VJN0J1?= =?utf-8?B?NGpnWkVsNklqVDlJaDVsWHF0OS9pd2s3U3JpUkJDeXRmWjVoVit1RlFEbDBp?= =?utf-8?B?ODVmdUlEaUhEZjNEVXRWeHlmcjdyRWU2TFpRYkJpcFpVTm5NR3lKcTAzU2dQ?= =?utf-8?B?bFoxUXBFOW1KNWw3dHRtMjh3U1djNnpnT0s2T3ZZalBIdnFiQ0RNM241M2pL?= =?utf-8?B?NWY1SmJXaWRBQlJ1dnhYaFkvcGdFQ25PNytrODZYTklEWWFwNVIwenFDQzZG?= =?utf-8?B?ZG5JYmVsVjV4RVJXNkEwT3VkMXdlVGpzL2UwaEQ4QThWYkhCOTVWTkZ5MElL?= =?utf-8?Q?a0Rq9M/5H4+AjKWo7D2K2VmJrE+FBNGuE8kQsfO?= X-Microsoft-Exchange-Diagnostics: 1; SN2PR03MB1951; 6:qWpOzZzmw9z7O2LxIQKg7yP14VbuAxN/Ei2pvBHbis5fxxGoK4ZQOVaWlfhBXgBc+5V3EFveZB759p+pleESxS8B0HvRULEfJb4WcDfd50NW7jUwlq7u3P9tzOutf7nVGXREvu4tJTgSqwvDEzlYzWxN5A9O19zXb7rgv5R65q361JYEuA7wF8HudBvKpT/7R4XKTf14G433+CYoB26BCngo0t0G6cOQZXsGjsOYon2hKFzVUpRNclCrGMGX30GSOGJZUfqMkwm0emtlAZmCqcX9QP324ksrTLYH0BMJtrLhhEh21mrJoyXfi2APmJRaPzZqwXZ/Egc0vu4SFwkqvffJwA4JssqB1Pg4YT2JypmsbuxwR/FnbUFzPxxNcr7epKSX1BfRHnoXJgQZROLesxr+lkuFYswnzpUBy7OM8xo=; 5:VIRsUbg6rJZfHq6Bss7dQ/uqaIL3VRFh3HteUdiRRjuK2/CFVV7OPm+bbrsk9WXDy8MsTjXF6LMoGyilCCeMsVfUrgVxQv8njs5TX0g/9YGcKqtlH9e3j3o6f6Vj+4/5wqOFyaBK+3RAFJ1Ea/6gdia8mfwgSpxarLxZ4v/hLA2E4EzDkTbI5cVVL2Gfgbms; 24:aK3ww6Iv5UWlCgAyHhhbQwxp2tYN1BFSEPMCVjDuf54IVlE5RRWVh+2zI3R6QTeSKAohpUdV6ql69hYHCLdjzcZS6Gwis0DDG4BhqRZYUdw= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; SN2PR03MB1951; 7:mNLZ9RDt75qkunJj43dutdNzmlb7MO2Gr/9YUSs2tXD652zGi6qpYe3u8UIBXU/OZY7IgIL1W4riSdUILsSY4QElRwnYnoeeTnzMrFHGfDi+tGRl/VWxpsa+LhGWFb9H7AnlW/jeV5KXBQeK4Sw8oyP8GPnhLTguVXs17JKFgLPEC4LTmnweW0N6qk6nmBpWTRlcuWDwhkTGsOaTK1KJKNqnJZiPrCK8ehvMoz/o9dtp7/HUEORHDwaKbVUFc1aDueobjUIEmat3mqvP+AtuyKknc4dmW5/JGgysMqhaLPCdzxtZbkiMffc06LEBySAhsI0N9B4uy/ZH+Zqvo5Vgow== X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Mar 2017 14:52:55.6350 (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.168.50]; Helo=[tx30smr01.am.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN2PR03MB1951 Sender: linux-crypto-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-crypto@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Add helper functions, macros, #defines for accessing / enabling qman functionality from caam/qi driver, such that this driver is not aware of the need for data conversion to big endian. qman is updated to use these helpers internally. Signed-off-by: Horia Geantă --- drivers/soc/fsl/qbman/qman.c | 16 +++++------ drivers/soc/fsl/qbman/qman_test_stash.c | 5 ++-- include/soc/fsl/qman.h | 47 +++++++++++++++++++++++++++++++++ 3 files changed, 56 insertions(+), 12 deletions(-) diff --git a/drivers/soc/fsl/qbman/qman.c b/drivers/soc/fsl/qbman/qman.c index 3d891db57ee6..7668ff53cd90 100644 --- a/drivers/soc/fsl/qbman/qman.c +++ b/drivers/soc/fsl/qbman/qman.c @@ -1764,16 +1764,15 @@ int qman_init_fq(struct qman_fq *fq, u32 flags, struct qm_mcc_initfq *opts) if (fq_isclear(fq, QMAN_FQ_FLAG_TO_DCPORTAL)) { dma_addr_t phys_fq; - mcc->initfq.we_mask |= cpu_to_be16(QM_INITFQ_WE_CONTEXTB); - mcc->initfq.fqd.context_b = cpu_to_be32(fq_to_tag(fq)); + qm_initfq_setbits(&mcc->initfq, QM_INITFQ_WE_CONTEXTB); + qm_fqd_set_contextb(&mcc->initfq.fqd, fq_to_tag(fq)); /* * and the physical address - NB, if the user wasn't trying to * set CONTEXTA, clear the stashing settings. */ if (!(be16_to_cpu(mcc->initfq.we_mask) & QM_INITFQ_WE_CONTEXTA)) { - mcc->initfq.we_mask |= - cpu_to_be16(QM_INITFQ_WE_CONTEXTA); + qm_initfq_setbits(&mcc->initfq, QM_INITFQ_WE_CONTEXTA); memset(&mcc->initfq.fqd.context_a, 0, sizeof(mcc->initfq.fqd.context_a)); } else { @@ -1795,8 +1794,7 @@ int qman_init_fq(struct qman_fq *fq, u32 flags, struct qm_mcc_initfq *opts) if (!(be16_to_cpu(mcc->initfq.we_mask) & QM_INITFQ_WE_DESTWQ)) { - mcc->initfq.we_mask |= - cpu_to_be16(QM_INITFQ_WE_DESTWQ); + qm_initfq_setbits(&mcc->initfq, QM_INITFQ_WE_DESTWQ); wq = 4; } qm_fqd_set_destwq(&mcc->initfq.fqd, p->config->channel, wq); @@ -1816,7 +1814,7 @@ int qman_init_fq(struct qman_fq *fq, u32 flags, struct qm_mcc_initfq *opts) } if (opts) { if (be16_to_cpu(opts->we_mask) & QM_INITFQ_WE_FQCTRL) { - if (be16_to_cpu(opts->fqd.fq_ctrl) & QM_FQCTRL_CGE) + if (qm_fqd_isset_fqctrl(&opts->fqd, QM_FQCTRL_CGE)) fq_set(fq, QMAN_FQ_STATE_CGR_EN); else fq_clear(fq, QMAN_FQ_STATE_CGR_EN); @@ -2321,7 +2319,7 @@ int qman_create_cgr(struct qman_cgr *cgr, u32 flags, qm_cgr_cscn_targ_set(&local_opts.cgr, PORTAL_IDX(p), be32_to_cpu(cgr_state.cgr.cscn_targ)); - local_opts.we_mask |= cpu_to_be16(QM_CGR_WE_CSCN_TARG); + qm_initcgr_setbits(&local_opts, QM_CGR_WE_CSCN_TARG); /* send init if flags indicate so */ if (flags & QMAN_CGR_FLAG_USE_INIT) @@ -2840,7 +2838,7 @@ static int cgr_cleanup(u32 cgrid) err = qman_query_fq(&fq, &fqd); if (WARN_ON(err)) return err; - if (be16_to_cpu(fqd.fq_ctrl) & QM_FQCTRL_CGE && + if (qm_fqd_isset_fqctrl(&fqd, QM_FQCTRL_CGE) && fqd.cgid == cgrid) { pr_err("CRGID 0x%x is being used by FQID 0x%x, CGR will be leaked\n", cgrid, fq.fqid); diff --git a/drivers/soc/fsl/qbman/qman_test_stash.c b/drivers/soc/fsl/qbman/qman_test_stash.c index e87b65403b67..d2bf453092d7 100644 --- a/drivers/soc/fsl/qbman/qman_test_stash.c +++ b/drivers/soc/fsl/qbman/qman_test_stash.c @@ -406,9 +406,8 @@ static int init_handler(void *h) goto failed; } memset(&opts, 0, sizeof(opts)); - opts.we_mask = cpu_to_be16(QM_INITFQ_WE_FQCTRL | - QM_INITFQ_WE_CONTEXTA); - opts.fqd.fq_ctrl = cpu_to_be16(QM_FQCTRL_CTXASTASHING); + qm_initfq_setbits(&opts, QM_INITFQ_WE_FQCTRL | QM_INITFQ_WE_CONTEXTA); + qm_fqd_set_fqctrl(&opts.fqd, QM_FQCTRL_CTXASTASHING); qm_fqd_set_stashing(&opts.fqd, 0, STASH_DATA_CL, STASH_CTX_CL); err = qman_init_fq(&handler->rx, QMAN_INITFQ_FLAG_SCHED | QMAN_INITFQ_FLAG_LOCAL, &opts); diff --git a/include/soc/fsl/qman.h b/include/soc/fsl/qman.h index 0252c32f7421..fc133c658385 100644 --- a/include/soc/fsl/qman.h +++ b/include/soc/fsl/qman.h @@ -168,6 +168,12 @@ static inline void qm_fd_set_param(struct qm_fd *fd, enum qm_fd_format fmt, #define qm_fd_set_contig_big(fd, len) \ qm_fd_set_param(fd, qm_fd_contig_big, 0, len) #define qm_fd_set_sg_big(fd, len) qm_fd_set_param(fd, qm_fd_sg_big, 0, len) +#define qm_fd_set_compound(fd, len) qm_fd_set_param(fd, qm_fd_compound, 0, len) + +static inline int qm_fd_get_status(const struct qm_fd *fd) +{ + return be32_to_cpu(fd->status); +} static inline void qm_fd_clear_fd(struct qm_fd *fd) { @@ -233,16 +239,31 @@ static inline void qm_sg_entry_set_len(struct qm_sg_entry *sg, int len) sg->cfg = cpu_to_be32(len & QM_SG_LEN_MASK); } +static inline void qm_sg_entry_set_e(struct qm_sg_entry *sg, int len) +{ + sg->cfg = cpu_to_be32(QM_SG_EXT | (len & QM_SG_LEN_MASK)); +} + static inline void qm_sg_entry_set_f(struct qm_sg_entry *sg, int len) { sg->cfg = cpu_to_be32(QM_SG_FIN | (len & QM_SG_LEN_MASK)); } +static inline void qm_sg_entry_set_ef(struct qm_sg_entry *sg, int len) +{ + sg->cfg = cpu_to_be32(QM_SG_EXT | QM_SG_FIN | (len & QM_SG_LEN_MASK)); +} + static inline int qm_sg_entry_get_off(const struct qm_sg_entry *sg) { return be32_to_cpu(sg->offset) & QM_SG_OFF_MASK; } +static inline void qm_sg_entry_set_off(struct qm_sg_entry *sg, int off) +{ + sg->offset = cpu_to_be16(off & QM_SG_OFF_MASK); +} + /* "Frame Dequeue Response" */ struct qm_dqrr_entry { u8 verb; @@ -494,6 +515,21 @@ static inline int qm_fqd_get_wq(const struct qm_fqd *fqd) return be16_to_cpu(fqd->dest_wq) & QM_FQD_WQ_MASK; } +static inline bool qm_fqd_isset_fqctrl(const struct qm_fqd *fqd, u16 mask) +{ + return be16_to_cpu(fqd->fq_ctrl) & mask; +} + +static inline void qm_fqd_set_fqctrl(struct qm_fqd *fqd, int val) +{ + fqd->fq_ctrl = cpu_to_be16(val); +} + +static inline void qm_fqd_set_contextb(struct qm_fqd *fqd, int val) +{ + fqd->context_b = cpu_to_be32(val); +} + /* See "Frame Queue Descriptor (FQD)" */ /* Frame Queue Descriptor (FQD) field 'fq_ctrl' uses these constants */ #define QM_FQCTRL_MASK 0x07ff /* 'fq_ctrl' flags; */ @@ -616,6 +652,16 @@ struct qm_mcc_initcgr { u8 __reserved3[32]; } __packed; +static inline void qm_initfq_setbits(struct qm_mcc_initfq *p, u16 we_mask) +{ + p->we_mask |= cpu_to_be16(we_mask); +} + +static inline void qm_initcgr_setbits(struct qm_mcc_initcgr *p, u16 we_mask) +{ + p->we_mask |= cpu_to_be16(we_mask); +} + /* INITFQ-specific flags */ #define QM_INITFQ_WE_MASK 0x01ff /* 'Write Enable' flags; */ #define QM_INITFQ_WE_OAC 0x0100 @@ -642,6 +688,7 @@ struct qm_mcc_initcgr { #define QM_CGR_WE_MODE 0x0001 #define QMAN_CGR_FLAG_USE_INIT 0x00000001 +#define QMAN_CGR_MODE_FRAME 0x00000001 /* Portal and Frame Queues */ /* Represents a managed portal */