From patchwork Tue Feb 21 11:52:47 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Madalin Bucur X-Patchwork-Id: 730453 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 3vSJrn4hYWz9s03 for ; Tue, 21 Feb 2017 22:57:13 +1100 (AEDT) Received: from lists.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3]) by lists.ozlabs.org (Postfix) with ESMTP id 3vSJrn3x1szDqHB for ; Tue, 21 Feb 2017 22:57:13 +1100 (AEDT) X-Original-To: linuxppc-dev@lists.ozlabs.org Delivered-To: linuxppc-dev@lists.ozlabs.org Received: from NAM03-BY2-obe.outbound.protection.outlook.com (mail-by2nam03on0079.outbound.protection.outlook.com [104.47.42.79]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 3vSJmQ2z3xzDqHN for ; Tue, 21 Feb 2017 22:53:26 +1100 (AEDT) Received: from DM5PR03CA0009.namprd03.prod.outlook.com (10.175.104.19) by CY1PR0301MB0729.namprd03.prod.outlook.com (10.160.159.147) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.919.13; Tue, 21 Feb 2017 11:53:21 +0000 Received: from BN1BFFO11FD025.protection.gbl (2a01:111:f400:7c10::1:186) by DM5PR03CA0009.outlook.office365.com (2603:10b6:3:118::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.919.13 via Frontend Transport; Tue, 21 Feb 2017 11:53:21 +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; nxp.com; dkim=none (message not signed) header.d=none; 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 BN1BFFO11FD025.mail.protection.outlook.com (10.58.144.88) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.919.10 via Frontend Transport; Tue, 21 Feb 2017 11:53:21 +0000 Received: from fsr-fed2164-101.ea.freescale.net (fsr-fed2164-101.ea.freescale.net [10.171.73.197]) by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id v1LBr3uf009568; Tue, 21 Feb 2017 04:53:19 -0700 From: Madalin Bucur To: Subject: [PATCH 2/9] fsl/fman: set HW parser as BMI next engine Date: Tue, 21 Feb 2017 13:52:47 +0200 Message-ID: <1487677974-13678-3-git-send-email-madalin.bucur@nxp.com> X-Mailer: git-send-email 2.1.0 In-Reply-To: <1487677974-13678-1-git-send-email-madalin.bucur@nxp.com> References: <1487677974-13678-1-git-send-email-madalin.bucur@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131321516012439984; (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)(336005)(7916002)(39450400003)(39410400002)(39400400002)(39380400002)(39860400002)(39850400002)(39840400002)(2980300002)(1109001)(1110001)(339900001)(199003)(189002)(48376002)(53936002)(38730400002)(97736004)(110136004)(50466002)(68736007)(189998001)(6666003)(2950100002)(85426001)(6916009)(5003940100001)(5660300001)(36756003)(47776003)(77096006)(5890100001)(54906002)(50226002)(33646002)(106466001)(104016004)(8676002)(81156014)(43066003)(8656002)(8936002)(2351001)(81166006)(86362001)(356003)(305945005)(626004)(3450700001)(4326007)(2906002)(105606002)(50986999)(76176999); DIR:OUT; SFP:1101; SCL:1; SRVR:CY1PR0301MB0729; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; PTR:InfoDomainNonexistent; A:1; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BN1BFFO11FD025; 1:IOkr57tqUvto1IgxW45KdxpNNU5248obHnjhCNdE6gNjxajASXim3ImDBAzdN+eJd8qnqc//A87HWG1MHk1isR+3SjLlL4JIeck4uUiEJlSt5xMKdgNDK3xHF6vLttVFa2gQMcRrKktI5U015bnLMAbWq3C9zmwDSPOSYCu+LDSkPtenZQAMPlhn+jywT0qF9fUB9PdC5uNpx/7ZD/Hs2CAqgQPFfsqhlrBBL0UGyidE0CmJjIwLZjUyG56lfolrgG+aRFg3M20KAvGVg9vaJe7tUyEkM4iOBpDMVzwIUJUP8skfaixfySEFtzmivyUaXhpFUI6wX2b2dd0utxzhHhUy8qpdsUUv27df/51u2+JYGnpoDUNqgqT8RdcENcGgP4JNWMRctTgXrkv5+/W5z7fEa1NNd5oyYReIeFll+R6+PNtfzgEYAYprmTWdUNhuUwXN9M+VJ0vGhn8rlvbuGKNJhxW52cneYHk5tvCUVqJO1Y/FHL//pinsrWzDzKg4hUnM0bIPZFb85DT7/h7KmwckWAIcbbWzV8YBlf0zMTn0O0l8QlmMG3RTdWS39JTEZPpCRzcrjB0UYeL9z07/PQZwrrKsXJv5rhLlBjRPVCUi8pVm3QsU7Oujy2DYCD5fKq30tJxuO3JCOw2eTTrcLvELNXDdQkpu/Q4eUt7+JCYffK/sBigJTlqNGGEFtghhS4wnbgbkZLg6TuNdfOigJg== MIME-Version: 1.0 X-MS-Office365-Filtering-Correlation-Id: 56bfa235-6ec2-492b-2852-08d45a503bbe X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001); SRVR:CY1PR0301MB0729; X-Microsoft-Exchange-Diagnostics: 1; CY1PR0301MB0729; 3:F9eKkxKHuKzLKrrw38ZTPoXz2siuTGdEBZFqV5w65scqwLlir717JJjAB33T/x4x3zaKy5QH9Gihrr5onRm5hide3s9mtNbYydOFLAtWyiV743W2NRLjEMGQiBOuip11uU5YuIQvAavTVY9OC5IsuFpb+0IR6X0Zf4yEv+mcuDheiYbIMcq/mRVO38ag3VH8+mOy2Iz+wUhYnCbmNr8cr2mlWnKGHWC52anpQx6ZwGBVo8gP9jQsPT3zNHbPJh59qgLsddUutQnX+EC+OLWnoqNI1tXHjnU8UPPxEoaG24PAuJbKIXXrtHRrclyEkwAX57nl4g+Z7UWKTP6DjRsLXsp0uofnFBlQSvdLK9ad2jVyD3v9MvuUx3ZrQqA7Otoa; 25:rsFqgEWTgaqLaOvlQ/yR6Wo797JpxPkL0/+tdgNwH4sqyNX2hYaXxIaqtlb/kavvXRGOKScq6jSho2FsYgwya7cDHGN+p2FvN6ql/28+pIy0oMzalN9BdsuYDBH+g5Q33c4/IDQxqlmC36OL7TscIY3nsKklap5TA4cVZ18fiwhrls0VTaOwYzgwF948WhgN/G+h2Uj8opC87taCFiHTdWYUHFAdQLxquEP/Eh6IQZvxzzSUIkp7AoMGafDHZyM8irPGaaAFg/lD1kLnizdfpF6k+m3iM3cefjE0oLWjElXXeHwLOCbVB+0Sh7iM1B+b5S6520uOJY6zWT2mwHvtI0mdXO1aBOrg9NS9FIsac0bOzy37b2Nff5y4I2HuMz4aeGE4MmKI4bvj3Rs2wU3vtjT1C9RQEMEKVYP9xsAqQCPvkLvYpcsN3NzRmAV6vhjl+nJCsReH5wAvR5CTUjHzKA== X-Microsoft-Exchange-Diagnostics: 1; CY1PR0301MB0729; 31:ki8R3ExTRfY+VQdScm0G+ioN2AIGYsQuDJ3sdRdkRaJJJElCA9otaWv7KQH5j6Md7GZI2TlmM76d1Lc3QbhAcpBAZBBKMLnQt7MoQc5g7bHcKzeyenyAc7H6lA7ULjbdDj7i5Hb+1dUl0vI8Mu0aLAJN1MkBoSGb3vH6LJsqyI/NZxdyf4kT/iOYaFoSA/Qpovfr3R7uLX6AYDo1f//y/f34blws1C8znznWe3yrwILGTagvNYfJZh+OeoPCCQuE 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)(13015025)(13017025)(13024025)(13023025)(8121501046)(5005006)(13018025)(10201501046)(3002001)(6055026)(6096035)(20161123565025)(20161123563025)(20161123556025)(20161123559025)(20161123561025); SRVR:CY1PR0301MB0729; BCL:0; PCL:0; RULEID:(400006); SRVR:CY1PR0301MB0729; X-Microsoft-Exchange-Diagnostics: 1; CY1PR0301MB0729; 4:1VW6ggqIwcDfM1l94r7P2guRK6LijxmzJwtydFKOzk+wBXjRBu1KNZ32GOJDbJNl4mXYT7MCduftawkLw+BE+0saoqC1C4nIH5+HkdFsYOUcYanpBK9pmWlNuFfsg0//CIytzZVyNM2ujLsShnPxDcblqvLlxNuSn7W9dbogOquA93mPU60WDGuusl9IAdjGKXXEZwhUQzbOSBLM5t4cz8/LE8TcQjNZQBzWGqtjjgxDuXbaYj9o063vJQyxM6sQ8Tiegv6nj1XCmxRKfout+g7p36c7fjVxGbHrfBLqDfOytrkwgaTP4mTm0W1PQQo62CuscsQRkvTkqQ4/kLn3CT+wZlmYSz5WLGKOkOAkJ8E0lh5UdSgv6qwo/D+CibvD2hP88BdU1MURc/cmDv8V3yu/G0YWOI3T4w8C0cf3hSfxOlGnEHifjyCgzfyvMijwtnLqohPQafhPcKvEyDPFPN4abPuV0+JBvHs7XB4ONgPb+5TPZaAoZn99g7XXfXOhc1HBY7pMtewsPMNnG/UbQFjl9YjLxuc/2gKalEjMsjlHUA68jY1JgS9GvF5oMv4C55RgwcMIGW0UtMTC3+tY2ByMqpLATzqeUtk8GsG5rBGHmfEqTvGKper6TzQt3twdm5WXz9CPGdMjBeYIjVkbvXRytItL87xyog1QuYj27f6ppUSj9IH/VwcxB2iSZEQhOi56eXz0VqAZObQi9kh66IZjVu3SaB6TKVEv7KC7v2P4KlGNsj1W01pbB0mLbundEHrW0hVttyf5vssWnHs/yg== X-Forefront-PRVS: 0225B0D5BC X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY1PR0301MB0729; 23:qPd25PM2c1xT0nRUaHJpzKzgSOkHkO6vzv+47NW?= =?us-ascii?Q?mZ47qwTECt2P2tIrqlE91e8SJAsOP9XfvkWXrwFqC/1xyvqg88TX2QXlzQsI?= =?us-ascii?Q?eKgkkfDsVm36K3/YVSZhPca3ZuhnFsXpUqXxr3AO2i5gdAXETylIs+v938O6?= =?us-ascii?Q?eTyj4mN6Qo+8cQHiD+MHQ+VCfW+DRbd2RWVAWGS6JpiMZ1r3smkUOKlgJaq/?= =?us-ascii?Q?1FZWEOhggaixXIgnWu/pM+ZBSYwPoh7oi7iAPKwGd+aLTfCOLB+16DYyYPqj?= =?us-ascii?Q?5jfy4DLJRiM1+6IfEfB/dL4fv3hXezoHPbhrBqgbi9nBoYe8GzS/MMHF+2gQ?= =?us-ascii?Q?LIOv//+U71SoXMw3HjlWZ67ZlfTll4bItFdGxWDli0tOPEpqvKhsgpHLSKjw?= =?us-ascii?Q?PnP56MLRY3G6jUUZz3MW32Gxls5dAZXvwI2QynCgt+zRX1lfROiGeV6cE+zG?= =?us-ascii?Q?Vk++8GfVCCC14oMSoVk80VAzsExiUKJEWhNOR8UIkyIaNM5by3tH/8Fothe/?= =?us-ascii?Q?5kOs0NfrXO3siaI9Z3w0yFkPlTKJJkDaA5g8B/1oYXF6+Ejt+8cM/fVxosso?= =?us-ascii?Q?yhm+iSUmovhgGcAwpYjbjwpi+xc3MgYi9f6IfkXvE2S12FYCuoyrrhcCfLCa?= =?us-ascii?Q?MougumAUQ/poRUEdCRo7lOMF/DQwnhK1KB7kaTzf/8ALfUKx7U73YOG+BYQF?= =?us-ascii?Q?uzgWf0VILTRaw1AbqeW2x7pF4UrJHCNWWPDl8vaH+6JvA9jVki3lkyf8q9kC?= =?us-ascii?Q?XOZb5RzVzyRKIylSpDc3oroCubi3SobSWTZ5wfYRhLtnHgmd05SW7hRLk4WE?= =?us-ascii?Q?yJVZn16Hc3mVTHIBRL5FJUhfJJ7XSoxIwXRGO04e6lUQFbSGwtuOgOq5JFEn?= =?us-ascii?Q?UErg3cBptdobhmih53jea3vq15HbfGihcSjtloi8oDWKlhrGeb7801n2zCMH?= =?us-ascii?Q?5kkrEtF6twTzJtf+oRITPp7n8nkIpzUWAJFH7M6dDeMDYKCYRU74kUDRW3D3?= =?us-ascii?Q?rUqMelqgYoydpjq1lUHXDgGIVIL1ssczDlqU97Btugq2dgWKY6ppV6DTLxCk?= =?us-ascii?Q?ivjFHMZSesZQttlvOwwBCpBJJf/RLJkDHXzi0di+RhLWFu4yvEMNO5KJuMl1?= =?us-ascii?Q?HzMo86M6+ZviWb7XeWowAodMWxB7lUfH4avPLQ8pChppf6Kq9uZtAoF7BRN9?= =?us-ascii?Q?zm11jDuUb6eogazWDcE5eRZwTu7ltbuug//2MmwGFij+NiDMLwalG++/Mk51?= =?us-ascii?Q?j3/fEVLGrgM5yq/XkOo0ir5GOrglKwf7ISo2txyaJ/K/CjH3cV/9C/sOMP4j?= =?us-ascii?Q?z0hngg2xgUtDeE7XD0AmtyJ+Ohwlb9cIn9oui7hHZhYvnd17jDlCZ4Oork/Y?= =?us-ascii?Q?I4XO5rg=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1; CY1PR0301MB0729; 6:VxBXU2371q3OeJ6TehtMeWRc2h207Jz1Xowy3Sm2IW9jCJAy3Cn/itPp6UivtZIUZ5ou52GDoLp5hZNDbibvwFfUj2vC8GitkdbzC4QvGG+M2x8ZE4LRvCg7bxVc8n9V1hNpWLjNvtqvOuTbWPtmdgNdVAZMLo2KnJwvfzPidcYc9eHE7OyN8+feY1ADi5Gs3jANHw9GpTVVAT4XNfFytA7jgQ2xAs+crZc0nvAM9gFZNb/K0505604xpV+qQXexWfVJndbS7LiBTcKHZ/PtQMvWhm7AYSPNsElTsosmQhqo/8ALXYXgXEJD55H3UBEqdRmudKpytlKVShgKWB+yavnVTA2ereE4n2b8obH+WsSRtrzPEzoPZJ6Jx3rN6phBbYv9f/N7GFLneELjsZzx3aAKXSuv8w1DkZNNDLgwvz8=; 5:ZWawqabjCtrnvXoORSCW4mk19e1MXKV8XbD5claYy+OSHA6PFGQ7rd9XP0qkQMj4U5LCqw5HN4dmhVTeVzKICnh7HKXEv+jyNgNtc2xM7fkLDmEUEq6vj0orJJjM/ZFa5oxNqjqbVJy+AZTzP5GN0XF89kL9XeZtBV6Ii4HXq+HZLAHFF3Xlj2DV+Q7sNLRG; 24:vJiAeAN074Z6VDep8j4HAGylcgtDxhPxjjRKyd/aMmmal8ew73NJJVGzOnz0SKGdNctYVoEAY9KWBFMER1n72L5NHp/aJMKeIoqHAxSsJo4= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; CY1PR0301MB0729; 7:Y4ZScD7KKAjQsjepq1DJOtpLZdHRXBTKtQpKk9+24ynSvXpQ3n27INydwMXJGN+TzdH4O4l2zmiM3GyvZZViibGLu/DVBNKQ5SgtI9xRFz4XlfQbr6zyjhZtF2TFLNvUtko30j2VBZPQB8S4TEwz6TzzNwMewTtC+3W1oXVBJR28dKubN1lKI8ohjF9+tDRwP0am1ugN6moS/kiLNnatQ/fdNPnJ+hArZgYHc3xFiqY5Ca4DcuWC0nSrng71wQtrBBFEWfVcMNp4TbnmcnrZ4gqcWkUjvN4FtTBbQn/Q19nshibdEDnTI4gNB6NTSmfyoSez73aNWysoR+/nMB+l/g== X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Feb 2017 11:53:21.0412 (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: CY1PR0301MB0729 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: camelia.groza@nxp.com, Madalin Bucur , linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org, davem@davemloft.net 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. */