From patchwork Thu Mar 9 14:36:57 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Madalin Bucur X-Patchwork-Id: 737004 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 3vfCk10rrlz9s76 for ; Fri, 10 Mar 2017 01:40:41 +1100 (AEDT) Received: from lists.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3]) by lists.ozlabs.org (Postfix) with ESMTP id 3vfCk06glTzDqZY for ; Fri, 10 Mar 2017 01:40:40 +1100 (AEDT) X-Original-To: linuxppc-dev@lists.ozlabs.org Delivered-To: linuxppc-dev@lists.ozlabs.org Received: from NAM03-DM3-obe.outbound.protection.outlook.com (mail-dm3nam03on0068.outbound.protection.outlook.com [104.47.41.68]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 3vfCfN0twczDqY9 for ; Fri, 10 Mar 2017 01:37:31 +1100 (AEDT) Received: from BN3PR0301CA0046.namprd03.prod.outlook.com (10.160.152.142) by BN6PR03MB2945.namprd03.prod.outlook.com (10.175.126.11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.947.12; Thu, 9 Mar 2017 14:37:27 +0000 Received: from BY2FFO11FD001.protection.gbl (2a01:111:f400:7c0c::187) by BN3PR0301CA0046.outlook.office365.com (2a01:111:e400:401e::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.961.14 via Frontend Transport; Thu, 9 Mar 2017 14:37:27 +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 BY2FFO11FD001.mail.protection.outlook.com (10.1.14.123) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.947.7 via Frontend Transport; Thu, 9 Mar 2017 14:37:26 +0000 Received: from fsr-fed2164-101.ea.freescale.net (fsr-fed2164-101.ea.freescale.net [10.171.73.197]) by az84smr01.freescale.net (8.14.3/8.14.0) with ESMTP id v29EbC5i031838; Thu, 9 Mar 2017 07:37:25 -0700 From: Madalin Bucur To: Subject: [net-next v2 02/10] fsl/fman: set HW parser as BMI next engine Date: Thu, 9 Mar 2017 16:36:57 +0200 Message-ID: <1489070225-7891-3-git-send-email-madalin.bucur@nxp.com> X-Mailer: git-send-email 2.1.0 In-Reply-To: <1489070225-7891-1-git-send-email-madalin.bucur@nxp.com> References: <1489070225-7891-1-git-send-email-madalin.bucur@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131335438470859104; (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)(39450400003)(39410400002)(39380400002)(39850400002)(39400400002)(39840400002)(39860400002)(2980300002)(1109001)(1110001)(339900001)(199003)(189002)(9170700003)(47776003)(189998001)(6916009)(4326008)(3450700001)(8936002)(33646002)(50226002)(5890100001)(106466001)(8676002)(85426001)(5003940100001)(81166006)(105606002)(305945005)(356003)(2351001)(104016004)(50986999)(2906002)(2950100002)(76176999)(77096006)(8656002)(53936002)(54906002)(48376002)(6666003)(38730400002)(5660300001)(36756003)(110136004)(69596002)(86362001)(50466002)(43066003); DIR:OUT; SFP:1101; SCL:1; SRVR:BN6PR03MB2945; H:az84smr01.freescale.net; FPR:; SPF:Fail; MLV:ovrnspm; A:1; MX:1; PTR:InfoDomainNonexistent; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BY2FFO11FD001; 1:D2E3rxIMVR6oUEPdsATudoBsNY+xm2p+ZD+qBTLK9+z2Z/OREiIqMnwEuxllxBQhNUynJL2En4oXcfXANBUMMWkv0K5J5CPRzk7v/QxhU1OXxlfDkYJinQc+YDvNpBoWYYnS9ugOLeC1b7tZ5qej98LP/62RQGEWYndf90y8n6IVymDeEC2tkhzE3n/VbOMawcacLjvY5EOoyIVDDeGjVpj89fDshf8Dy3b8p6BehWmFnPd/cpm2SWMykgllVxx6yR6q36PkLGo5iJpXLrgcoVKZdnceg7PramzSQaXKAPNzZwN6btojsJ5QGYQuo6Dix8Uq24jvc7U937nn9FVbBq5oFYLGd2iRnqFIqrWRwBCG1n1fTOSDBj726Jl+gn7xCgO8verPqYW8GM/KBpK+DgUuSvSrpU+7OinbiBPz1gfuzHyA49+z5vQ4RSsV8/K4cIEvx/GExy8EeCiTp5wXetZaWO8AqJN+G+rO3sFOc9N9Ws7qjzZGoFROTRuxagx82MfWPt80Dnyqmha8ZfhNQsMxg4+/6h0WX1w9fbFs9ey0SM0vdMZQek306CdD0SNj9Tn+sXT5YLkmA8Fw7OwxjvNlLlmvkLe9LUMfJVcX48JewQaeQ6afzDkX23BfK/6/RAO3eHgFuGN7Ez1bvaSOxmzF3P+FnlOKXvKrVX17wQHn8vb9ndbUGYvz7aj6lrIwLQYoxS74nOjNOBv8NsNujw== MIME-Version: 1.0 X-MS-Office365-Filtering-Correlation-Id: 43e6ba40-0a97-4c85-c960-08d466f9cef0 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001); SRVR:BN6PR03MB2945; X-Microsoft-Exchange-Diagnostics: 1; BN6PR03MB2945; 3:0edGIifv4QhbKQsEacmMD7gcD/DexfOYTIADhmedZLDwj+9qUb7GPf/Dm9lyvULTdE/dTe+ujgn0N8skVbQvtocPW3SM9oHab7DmWtRXJsENklysV/hheqH+aeihCjFmhdFTCQWxEYZV94/vFzQpGgVeuXQyEPS2xsvsQjoOAEtFlvyQGuN/q4HnSt4s8gJauXiGB/dAVvP4dG/Gc2/B2UgXyT8frTrF0PXmnIdx5ieMPBRCyEUqK91zNz32f2aDfdoX0QiELomyMc6ArIcEfO28YDD9Bpc3nI4hgqTjkvFE5X9Zr2HS8F9e8pTdLYa2Kx6Iu4fKRsK37i68/76Vq6aglqVsnMiZJj6DS+LiwhfNnpMpKDaWTKkF5aFQUHGz; 25:nc3p9B3DjhtpyKVYB8QA+xZxLTuTHO3QXYgauhRbSP61tRda1fLWVpUL4Izt5SMF0reGYniDt8UrUnNTgd/Nobvl/KoZS5kBS3epnIeyzQqp5nmwwMGMV9F5U13U+SQAHh+EDok0iu934JXnhdkTFscTqWMZJSu7popYjM8YFimtAnLyGXjXq5P0gwrzzFVWgWdch1+QSVpiOgK1stQJcL7IwJkXg4WpoTOsuMxcxk92n1mi2ks/oMx4fKWp+p+OjVkbx7YMMLnM9GT7UHAELUk/GYLBaT88dJwaZCyRBuosXbiM5OYlGEYZtkVvYWRCjT5k8eQFp5q5qcHFRGHdUu03qeU6l5Pa3YnkssqB1+XUrjyqeqwCLW4VBNJaffj5sN0ieNv3VOelvZn1NyiToYvRzD+4V7OdF72zFc0fT2m2puygqV4DJNROCMxvMbZI X-Microsoft-Exchange-Diagnostics: 1; BN6PR03MB2945; 31:YUUGLQImUW83puNrpXAS0SRdTUsacHxtZuCwjYYBPq38kBVyNulzm8MF1WiEWgv14x2cPAFMKEd29FS3bp6g6FtM3LZD5HSpnw+Mwtq20xbPrxJSGtJ4rerRSmpZ7rwy7dFzprNjcoGYqcJl7+I+39xtKJtKEFuGGt5jp/4/vwPOyDyiWjbaRpscUX/FEUyS00P/APEXYb3eaMXZbX3j4Dry27GYjU/EI9Fi/Vx7+nrELggomGqsorH3PVTVoPK5 X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197)(211171220733660); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6095060)(601004)(2401047)(13017025)(13015025)(8121501046)(5005006)(13023025)(13024025)(13018025)(3002001)(10201501046)(6055026)(6096035)(20161123561025)(20161123563025)(20161123559025)(20161123556025)(20161123565025); SRVR:BN6PR03MB2945; BCL:0; PCL:0; RULEID:(400006); SRVR:BN6PR03MB2945; X-Microsoft-Exchange-Diagnostics: 1; BN6PR03MB2945; 4:prYxbPC22Blr4qg1ObmwAjlcc3anKqOIxi7+jRvfd/1YmL0vBk2+e/kB4HaQX1v34D//WgERUW8/W1R5xhq4k5XDEq7NzmTgLIoWrE7WYAEiZFm4MNYQYiq+ZW7PBF2pVrdvaMZtCerG5/PoTzfR6cExosoYRImZ0VFb/wrwl8xjg0ubKgaIxVXm1ch5ztc+WyUqTqkl+jaAz+RGp0P7iByBTuY/nSH3yXk22mkORxpvpOBbCX630/oZDUKVF7Z1Fec1yLeJQgsm/n2l7aWh6kyWifteLYTRiqU55Q3dJ+d4D3a4TdkndOzKaXJC4aupLQV+uqusW36bRP9rp3fb9mmKyha7DqGYKEiTNqycT9j5D8xC6otwi/J4hhmJz2i9cF0XgbnqLI7+hYKjWtjIpVZG30D6RMsmtbUYxOwd5g5/dPzE8XD8c+ZxNEopDZYx3VuKq2+8aRQWEFL5GTMN50mCfGlO6gtzHRnV0g/Rb99tk9TmJcOwxNi+S4DHPRg3UNVD3XYy7qPy23nYk5YrSS69YgeonITiiPuxxXYC4/v2jSDpn+H6mXKWVOgCBKLn0gSepTUEzhR3Q9fIAOG4We/LTWcVqeMIXmuQIblvge8iRcw4SMjYwWNeFrYh2IkmAZwZOjdNiaJRQOBExR/0gRPtjSoIqnE9kNz1lk7fV+geE5EzqKVT3DDrsDHD61pm4QNUFOIUPo5jQ7ZrLB3vmhai9u2ei2JsRx8s8Djh7rlsUSEl3kCKs4sLNNQIwerQFF/q0U4z932BPNy4T6xhng== X-Forefront-PRVS: 0241D5F98C X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BN6PR03MB2945; 23:xfkuK+zsQVdSUsuWRy9NbKV2bCa2994DurKnArL/G?= =?us-ascii?Q?V3NAt1+Rge7UtbB9FI9NmDDo4t6pfmbXn0jumUbSpq7z3Ibg2zgJ3QgGj32w?= =?us-ascii?Q?PleMdt5qnzOLeTp6C/pYymYGDcTywUSt4l8y1AJXzGWOxauu4K19iAWn11Jo?= =?us-ascii?Q?WFHZRjAPG+ys9AtwwF3TB7QHp2ZaZUUUfsIGdpSfYGSF3hFH267UlafX1jc3?= =?us-ascii?Q?aVNADTwqf74HAUs4R8fnxOloWL1HWt0lmqUUyhSWvxdx620lzDZVjt0pmYCD?= =?us-ascii?Q?BbMAZZXGnOVVQWB6jzs8DqkmuxGAZYjz9aLlCluKiKPHl5b09UNQ7YzlLAjV?= =?us-ascii?Q?Vo8yhHbahURwuB40Tn7EI4FRilSfpPRanjIIFwswJ/GHCFWSsLfMk9OBDhUl?= =?us-ascii?Q?OBD2J3vADiCAnpr7iNfXwrmbobeAbvuNvTXkD0WoHUPjh6MGaNY8hJLqEe2t?= =?us-ascii?Q?xiqtRhPmi69h3HC+uLBPyowfpT1bnSOOj4S1xSJDP+bv2QDYJ4D1Z2BgDAqY?= =?us-ascii?Q?/124/7I09WMixSIUGfy3yso2DQ/J/nz3245un8rCf/6p/1jrEJ1BJl9jAoGf?= =?us-ascii?Q?m57Et3qlhYr/nxYXI4j8OWrWK1tHSMekfEjh/WANlxdXpveqICD7r2Hj5wyQ?= =?us-ascii?Q?xSXRdNn6Bsu4I6ooZCV8tC6xO4VSH4xDdM3IwZJ5E2eHtdcQH1lvP20HDNCL?= =?us-ascii?Q?sutNVun1DFlXaNd5amNUI9S8h+eMpaK3ntwFkyurBk2VkzT4RsKkeCZRuTdU?= =?us-ascii?Q?TXhNdRE8tn+Tnvq27olWx45mvRoOaKGhvRRAVIuKQ3gxrl1zKNnaYLiDzyH5?= =?us-ascii?Q?mLexXfcu1ER/xLBOgq3quV+kaZAeWWYP2m9EdWost8D6PE2E8aunlM2b4a9F?= =?us-ascii?Q?ccXHM6cnHxf/gRGyys02wzlxEX3Loyq8nkrvuIXDbvBL9/HWfePrEDQjd+qG?= =?us-ascii?Q?4yLguJyKmZbfRvg3cGYG0/mk2e/mFnPzMdVqO2Cb2gCapQ/WqvPlqfXMg0ji?= =?us-ascii?Q?A2xoTm02v0G7g4nf5h45ATE0t75tofPrjnmGBxi5qg0oJxxQdNyPzO7VZU/K?= =?us-ascii?Q?kBnfW89D4ggNQH7HjUfkSRRypkBl/s/FAY0xvd/Ks/dl0uPo9KuMgK1qzgqz?= =?us-ascii?Q?J5DyNEUFr+qOEisAC6/t655SJulFPpUCJ59fXCJcNcTkU7zL41zlwLy9Ytyu?= =?us-ascii?Q?05yuiQcp+HB2VJc9tYUfuTpboUc03+GZa2A3VicRHA1HFPcc3oDrJkZ8AhXE?= =?us-ascii?Q?0NYI8984JV/6785I4wNxMVWHfdmXD/pbYLs+5MvyY9ndRwksGf8HLzHFVFkT?= =?us-ascii?Q?EBMvjAeHv07ahsDkT/q8gg=3D?= X-Microsoft-Exchange-Diagnostics: 1; BN6PR03MB2945; 6:/r5MQnToV3GeR1rSshjGOmIodr9TE/wodfdszpthzcg6a9n5HZk6ZjJOBP8VBTNO+CqtK9JnLxUymVf4SqWkB47bk1YrMBoaeBVEGfkjYGE9+MFeOmRMiVHQXbH0Yb2NNmKOEgGUt/4gNatPD1ZytQ6qC29Xup9lA0j5BAifo+V6xXDpG09Q4T/joZl9FRhkWbAfNo76AmkrtJHNfCJptwdhQhm5FtfLZET/ggFjSqtRifXIjRXL/m45YrTUy1KYUz/ItlxVMMX4Oe8D4K+eilTGrtReR6sybd65qYv7XHGgTkEzY2DaUQluxpzSGlKhKYhu2z7qRtSCYYOvS0zKKJq7ikY3E36fwCNv5nESdzJV0K3AAFn8uVt3YkiLF5QqhyKRL9zDNf8HbNvu5LhC0PcZ8Cog6TrJ53LhnIXUNEE=; 5:lOuPZdySVzPBy+nQDBRqc0DjiYwXjwNiecLo81gLNk3AgIn/6pjHlDMb2LOi9TJvFReg2+zXDBEu17key4Nk08SA4Eb6m1Zr3auolQDPbVA63Eh7VUTotYC9IqtYwvX+MyHFuK/n7xCt/st9XfTjM1wnLNVzmPGUl4fH0bTJz4o1V9V6KDdTs6lgh/XuxLuv; 24:Ikgw8XKb/Tl8V35gwA/BDPpZB02Mcw6MtED1pCTZuSNfBYIdWgxrSVVqxiLa9426yszKlNAWPJj1j82Rd+cVKDE8ygAQio78fiOxxEvI5uw= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BN6PR03MB2945; 7:BhFj0ESSbqKe0nleQEoymo63hZOjWoW0+lolFQ3KMGMzbbUcMiSItHzNAC/dNWIAeZ/h74KjeWSYFBsP94u9AKOPGqK5fAl0szPNp5WPBqC8IeEN6p0HYUOyCFG9btNda3/3CIFThtnROeBDusiO1uoLuzRAgEYc0mKCePpt2xiV20XjGZD7ttJSFP17kdHmb9h69K8IFuBTiXotHoZSFGr6vM2IStgGnioyNUAbq/9XZPrVGjv5jjylf6cwi0iTZEgyQuOceIDNlBmw4ZJK7XV9Oh3RA+k4Qv/UXboR2yhifY5jwNZZzLwE23BLGj28Nd9wKUMNMIqKseszoG9Mww== X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Mar 2017 14:37:26.9767 (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: BN6PR03MB2945 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: madalin.bucur@nxp.com Cc: Madalin Bucur , linux-kernel@vger.kernel.org, camelia.groza@nxp.com, linuxppc-dev@lists.ozlabs.org, davem@davemloft.net, dan.carpenter@oracle.com Errors-To: linuxppc-dev-bounces+patchwork-incoming=ozlabs.org@lists.ozlabs.org Sender: "Linuxppc-dev" Enable the HW parser for all DPAA interfaces. Signed-off-by: Madalin Bucur --- drivers/net/ethernet/freescale/fman/fman.c | 21 ++++++++ drivers/net/ethernet/freescale/fman/fman_port.c | 72 +++++++++++++++++++++++-- 2 files changed, 90 insertions(+), 3 deletions(-) diff --git a/drivers/net/ethernet/freescale/fman/fman.c b/drivers/net/ethernet/freescale/fman/fman.c index f60845f..d755930 100644 --- a/drivers/net/ethernet/freescale/fman/fman.c +++ b/drivers/net/ethernet/freescale/fman/fman.c @@ -59,6 +59,7 @@ #define DMA_OFFSET 0x000C2000 #define FPM_OFFSET 0x000C3000 #define IMEM_OFFSET 0x000C4000 +#define HWP_OFFSET 0x000C7000 #define CGP_OFFSET 0x000DB000 /* Exceptions bit map */ @@ -218,6 +219,9 @@ #define QMI_GS_HALT_NOT_BUSY 0x00000002 +/* HWP defines */ +#define HWP_RPIMAC_PEN 0x00000001 + /* IRAM defines */ #define IRAM_IADD_AIE 0x80000000 #define IRAM_READY 0x80000000 @@ -475,6 +479,12 @@ struct fman_dma_regs { u32 res00e0[0x400 - 56]; }; +struct fman_hwp_regs { + u32 res0000[0x844 / 4]; /* 0x000..0x843 */ + u32 fmprrpimac; /* FM Parser Internal memory access control */ + u32 res[(0x1000 - 0x848) / 4]; /* 0x848..0xFFF */ +}; + /* Structure that holds current FMan state. * Used for saving run time information. */ @@ -606,6 +616,7 @@ struct fman { struct fman_bmi_regs __iomem *bmi_regs; struct fman_qmi_regs __iomem *qmi_regs; struct fman_dma_regs __iomem *dma_regs; + struct fman_hwp_regs __iomem *hwp_regs; fman_exceptions_cb *exception_cb; fman_bus_error_cb *bus_error_cb; /* Spinlock for FMan use */ @@ -999,6 +1010,12 @@ static void qmi_init(struct fman_qmi_regs __iomem *qmi_rg, iowrite32be(tmp_reg, &qmi_rg->fmqm_ien); } +static void hwp_init(struct fman_hwp_regs __iomem *hwp_rg) +{ + /* enable HW Parser */ + iowrite32be(HWP_RPIMAC_PEN, &hwp_rg->fmprrpimac); +} + static int enable(struct fman *fman, struct fman_cfg *cfg) { u32 cfg_reg = 0; @@ -1793,6 +1810,7 @@ static int fman_config(struct fman *fman) fman->bmi_regs = base_addr + BMI_OFFSET; fman->qmi_regs = base_addr + QMI_OFFSET; fman->dma_regs = base_addr + DMA_OFFSET; + fman->hwp_regs = base_addr + HWP_OFFSET; fman->base_addr = base_addr; spin_lock_init(&fman->spinlock); @@ -2062,6 +2080,9 @@ static int fman_init(struct fman *fman) /* Init QMI Registers */ qmi_init(fman->qmi_regs, fman->cfg); + /* Init HW Parser */ + hwp_init(fman->hwp_regs); + err = enable(fman, cfg); if (err != 0) return err; diff --git a/drivers/net/ethernet/freescale/fman/fman_port.c b/drivers/net/ethernet/freescale/fman/fman_port.c index 9f3bb50..f314348 100644 --- a/drivers/net/ethernet/freescale/fman/fman_port.c +++ b/drivers/net/ethernet/freescale/fman/fman_port.c @@ -62,6 +62,7 @@ #define BMI_PORT_REGS_OFFSET 0 #define QMI_PORT_REGS_OFFSET 0x400 +#define HWP_PORT_REGS_OFFSET 0x800 /* Default values */ #define DFLT_PORT_BUFFER_PREFIX_CONTEXT_DATA_ALIGN \ @@ -182,7 +183,7 @@ #define NIA_ENG_BMI 0x00500000 #define NIA_ENG_QMI_ENQ 0x00540000 #define NIA_ENG_QMI_DEQ 0x00580000 - +#define NIA_ENG_HWP 0x00440000 #define NIA_BMI_AC_ENQ_FRAME 0x00000002 #define NIA_BMI_AC_TX_RELEASE 0x000002C0 #define NIA_BMI_AC_RELEASE 0x000000C0 @@ -317,6 +318,19 @@ struct fman_port_qmi_regs { u32 fmqm_pndcc; /* PortID n Dequeue Confirm Counter */ }; +#define HWP_HXS_COUNT 16 +#define HWP_HXS_PHE_REPORT 0x00000800 +#define HWP_HXS_PCAC_PSTAT 0x00000100 +#define HWP_HXS_PCAC_PSTOP 0x00000001 +struct fman_port_hwp_regs { + struct { + u32 ssa; /* Soft Sequence Attachment */ + u32 lcv; /* Line-up Enable Confirmation Mask */ + } pmda[HWP_HXS_COUNT]; /* Parse Memory Direct Access Registers */ + u32 reserved080[(0x3f8 - 0x080) / 4]; /* (0x080-0x3f7) */ + u32 fmpr_pcac; /* Configuration Access Control */ +}; + /* QMI dequeue prefetch modes */ enum fman_port_deq_prefetch { FMAN_PORT_DEQ_NO_PREFETCH, /* No prefetch mode */ @@ -436,6 +450,7 @@ struct fman_port { union fman_port_bmi_regs __iomem *bmi_regs; struct fman_port_qmi_regs __iomem *qmi_regs; + struct fman_port_hwp_regs __iomem *hwp_regs; struct fman_sp_buffer_offsets buffer_offsets; @@ -521,9 +536,12 @@ static int init_bmi_rx(struct fman_port *port) /* NIA */ tmp = (u32)cfg->rx_fd_bits << BMI_NEXT_ENG_FD_BITS_SHIFT; - tmp |= NIA_ENG_BMI | NIA_BMI_AC_ENQ_FRAME; + tmp |= NIA_ENG_HWP; iowrite32be(tmp, ®s->fmbm_rfne); + /* Parser Next Engine NIA */ + iowrite32be(NIA_ENG_BMI | NIA_BMI_AC_ENQ_FRAME, ®s->fmbm_rfpne); + /* Enqueue NIA */ iowrite32be(NIA_ENG_QMI_ENQ | NIA_ORDER_RESTOR, ®s->fmbm_rfene); @@ -665,6 +683,50 @@ static int init_qmi(struct fman_port *port) return 0; } +static void stop_port_hwp(struct fman_port *port) +{ + struct fman_port_hwp_regs __iomem *regs = port->hwp_regs; + int cnt = 100; + + iowrite32be(HWP_HXS_PCAC_PSTOP, ®s->fmpr_pcac); + + while (cnt-- > 0 && + (ioread32be(®s->fmpr_pcac) & HWP_HXS_PCAC_PSTAT)) + udelay(10); + if (!cnt) + pr_err("Timeout stopping HW Parser\n"); +} + +static void start_port_hwp(struct fman_port *port) +{ + struct fman_port_hwp_regs __iomem *regs = port->hwp_regs; + int cnt = 100; + + iowrite32be(0, ®s->fmpr_pcac); + + while (cnt-- > 0 && + !(ioread32be(®s->fmpr_pcac) & HWP_HXS_PCAC_PSTAT)) + udelay(10); + if (!cnt) + pr_err("Timeout starting HW Parser\n"); +} + +static void init_hwp(struct fman_port *port) +{ + struct fman_port_hwp_regs __iomem *regs = port->hwp_regs; + int i; + + stop_port_hwp(port); + + for (i = 0; i < HWP_HXS_COUNT; i++) { + /* enable HXS error reporting into FD[STATUS] PHE */ + iowrite32be(0x00000000, ®s->pmda[i].ssa); + iowrite32be(0xffffffff, ®s->pmda[i].lcv); + } + + start_port_hwp(port); +} + static int init(struct fman_port *port) { int err; @@ -673,6 +735,8 @@ static int init(struct fman_port *port) switch (port->port_type) { case FMAN_PORT_TYPE_RX: err = init_bmi_rx(port); + if (!err) + init_hwp(port); break; case FMAN_PORT_TYPE_TX: err = init_bmi_tx(port); @@ -686,7 +750,8 @@ static int init(struct fman_port *port) /* Init QMI registers */ err = init_qmi(port); - return err; + if (err) + return err; return 0; } @@ -1276,6 +1341,7 @@ int fman_port_config(struct fman_port *port, struct fman_port_params *params) /* set memory map pointers */ port->bmi_regs = base_addr + BMI_PORT_REGS_OFFSET; port->qmi_regs = base_addr + QMI_PORT_REGS_OFFSET; + port->hwp_regs = base_addr + HWP_PORT_REGS_OFFSET; port->max_frame_length = DFLT_PORT_MAX_FRAME_LENGTH; /* resource distribution. */