From patchwork Wed Dec 7 06:34:05 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Priyanka Jain X-Patchwork-Id: 703458 X-Patchwork-Delegate: yorksun@freescale.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from theia.denx.de (theia.denx.de [85.214.87.163]) by ozlabs.org (Postfix) with ESMTP id 3tYTST6MFfz9t0G for ; Wed, 7 Dec 2016 17:42:16 +1100 (AEDT) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 0C43D4BA35; Wed, 7 Dec 2016 07:42:12 +0100 (CET) Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id huQvLB-6tdmH; Wed, 7 Dec 2016 07:42:11 +0100 (CET) Received: from theia.denx.de (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 44F74A7576; Wed, 7 Dec 2016 07:42:11 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 0E09CA7576 for ; Wed, 7 Dec 2016 07:42:07 +0100 (CET) Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 4udhskfwO0wR for ; Wed, 7 Dec 2016 07:42:06 +0100 (CET) X-policyd-weight: NOT_IN_SBL_XBL_SPAMHAUS=-1.5 NOT_IN_SPAMCOP=-1.5 NOT_IN_BL_NJABL=-1.5 (only DNSBL check requested) Received: from NAM02-CY1-obe.outbound.protection.outlook.com (mail-cys01nam02on0069.outbound.protection.outlook.com [104.47.37.69]) by theia.denx.de (Postfix) with ESMTPS id 34B624B656 for ; Wed, 7 Dec 2016 07:42:02 +0100 (CET) Received: from DM2PR03CA0038.namprd03.prod.outlook.com (10.141.96.37) by BY2PR0301MB0741.namprd03.prod.outlook.com (10.160.63.19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.747.13; Wed, 7 Dec 2016 06:42:00 +0000 Received: from BN1BFFO11FD044.protection.gbl (2a01:111:f400:7c10::1:174) by DM2PR03CA0038.outlook.office365.com (2a01:111:e400:2428::37) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.721.10 via Frontend Transport; Wed, 7 Dec 2016 06:41:59 +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 BN1BFFO11FD044.mail.protection.outlook.com (10.58.144.107) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.734.4 via Frontend Transport; Wed, 7 Dec 2016 06:41:59 +0000 X-IncomingTopHeaderMarker: OriginalChecksum:; UpperCasedChecksum:; SizeAsReceived:579; Count:8 Received: from b32167-VirtualBox.ap.freescale.net ([10.232.133.91]) by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id uB76ftvq007874; Tue, 6 Dec 2016 23:41:56 -0700 From: Priyanka Jain To: , Date: Wed, 7 Dec 2016 12:04:05 +0530 Message-ID: <1481092445-15004-1-git-send-email-priyanka.jain@nxp.com> X-Mailer: git-send-email 1.7.4.1 X-IncomingHeaderCount: 8 X-EOPAttributedMessage: 0 X-Matching-Connectors: 131255665194747089; (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)(2980300002)(1109001)(1110001)(336004)(339900001)(199003)(189002)(5001770100001)(50226002)(104016004)(5003940100001)(39410400001)(39380400001)(50986999)(38730400001)(626004)(86362001)(189998001)(36756003)(105606002)(39400400001)(81166006)(81156014)(7846002)(356003)(8936002)(8676002)(47776003)(6636002)(4720700003)(106466001)(305945005)(33646002)(6666003)(68736007)(8666005)(97736004)(85426001)(2906002)(4326007)(5660300001)(39450400002)(77096006)(48376002)(92566002)(50466002)(39850400001)(39860400001)(39840400001)(7059030); DIR:OUT; SFP:1101; SCL:1; SRVR:BY2PR0301MB0741; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; PTR:InfoDomainNonexistent; A:1; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BN1BFFO11FD044; 1:s8shqJsXgHHLvMO0j4YgjoJ4v4KgFLvZJ6iid7OxQPu4BtzRtjt40sJ+NqyS5OxJNWaomO3uc6bQX6iQsmXW3c4D2X2dFFOA+/YXXjkag0b+0bXH6HuNX2VONAa1HSEDGXzc0rwoGfd4bBOgHTc5xGiKGh2QaA2JUDNtafoSlbDY5lsQR9K4dzL9Ga8oKVfcPeCbV7VaES8Z+MGGQmBMzFwy8g4FIuUoyapy+IXfJrnlwsK8Cjup/V6eaMZEmdegcF0wTRbkKXPTgBVqx8k32A6teZtqOFQCHhQpfMxvomelAlNWlmWkMBo++HKILKPx0AIBMQo9p9pBWjzzf9IiUSaIo1jSau3RKJ/AjQctOJk5CSH3eWPiR/Cnmih6ZRLozdAkDbfkZ+nNm1MV+ST6Udxt41d8wSdd0eur2Lw1LQa/55mNdLRSNmNGIEkPUwvE7Lcy7+R7O8Ftib0qfNTwqfxha57S26/z9zyw7LwkhLmsN8L2w9IPJuLBwx0HnDi5B8138t5oTA9f5lKrKu1248GJEnN9OQoCDMlTjRjs0iB86LSbzMZZaQdK5Ooj59hN/Q45gbM4ksMeZw0skYfn1ipqHuJVt5A2Uz0pCX+ehVW6Iq86Xv535mjP/l4ZhftjZqEdFAxhByEisAm1LWlaysoHqTgpQara9XRcFWgfTc0uLgo/9KrHE/cJfJJ7iTQJQr8UGCYuSlb0buChEevgWap2EVISrlQqQ1sbpM7trCU= MIME-Version: 1.0 X-MS-Office365-Filtering-Correlation-Id: 4f476e68-93fb-40e7-020d-08d41e6c2523 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001); SRVR:BY2PR0301MB0741; X-Microsoft-Exchange-Diagnostics: 1; BY2PR0301MB0741; 3:WTJZjOKGXjbbHRKp8UyK7hIi5EPUrBdIt140mo4H3m6vLJXSobSms+rJU0vD1hQFkfTw6+HAbQJ01Z0nOKuvW/qvclcPo72WZK7YC1s6xF7gk8BwlOpVjnG+3IRz1w5CocUvoshJrynSUoFK4E6cbqgVag6XbIG/ddDewPEyiakeCAjVQep177iyFcyub8oUyPOVxX3+wla2OASsiUxJuXgOEkK1sq7Mxtw+JWchlH8GX/LOYBj9nY9feWO0188Dmq1wyum+TbiEhVGC6RXksx54BX+kpjkaopouLV02+k/V+eK2Re9UzTYMElPwyri40aYtSyx+vmWk/DtS6kB0/2US0YKuwUgv6jiIsqXy4gOmqD2Gl1LnNrlg6L/cBj5Q; 25:WJT/BrKXmwtcd64C55otB4E+pzpH+ja/hrWjpRwkt+0MMuaYBb+CDiw3lpEwOc35s+/CDOHGbgD1q0K/ANFfwCTCsN9SDBbkx6WciQkHLDhBf/0XOmFea0yXnyH/Ls8E0zLbn5ytlqia+FJGF3nRg5yfUZgx070vN6AHO9zB/5s8X0Y1eWwZ2wfCdM9n9Nw/v+7unKraZ+nDgizkzTOyng1bAt5tTlO/3ckIZy0iRi5sGX6LPP++1Qu5Bp84F/Yd6Ky1EVaQX3Zi+pjEX7DEyTi4gUHItqUD4X/0nFFrlF+G1gh23Ei3G46zAqCAiR+pLJ0QKHhtjIJAMwzsfCzRU2+GuH7B0wHFaB2F9f3MI4YR8Vs9SQLpS7IYjboOqtnhRTxxbEMm9GJWmP+qJuqxvwX6UT4xTvtjX6TEYJVGfokpkzjn7ZNeElX2uLIbeALTjJvqOTB866gfS65ga5Ue5A== X-Microsoft-Exchange-Diagnostics: 1; BY2PR0301MB0741; 31:BinMVXaA0tNzRkvBQecXXAxwwRyE+HLR+dWVNuIEwk/JMw9QZDvFA92YsHcQl/98e/yW/WETMEsgSWYpy1C73vwy+16bC2BJwGicSfbtDTBXyewlCTczoltvydY83UCAECCwY5qEMJd1N42xCG7h203W92Mb/l8aAH+qgQ6YVNub+HmVK0lBgY/LBKozOk/gt+Uzwg8d78C6MrJIGeaPoP7jenyuU2kM/e2/dtRHinnlM+23QYtUNLcQj8mk0KJbxNKzp865MuLZsMa5T5rmSA== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6095060)(601004)(2401047)(13018025)(5005006)(8121501046)(13017025)(13015025)(13023025)(13024025)(10201501046)(3002001)(6055026)(6096035)(20161123565025)(20161123563025)(20161123556025)(20161123559025)(20161123561025); SRVR:BY2PR0301MB0741; BCL:0; PCL:0; RULEID:(400006); SRVR:BY2PR0301MB0741; X-Microsoft-Exchange-Diagnostics: 1; BY2PR0301MB0741; 4:AZlijFZIjyofJpmfxDLGjh5xxXoNwZYwK5FvXXp3eSju9mWWIyA9af97aXA/mibmQCsI1k7DmAyemv9eIVl5Jvg/mfwJTwcguwlc4Q84q5XCl/EPG1b0pHqlMiETYYlrVBba/99CwJDCxxkznYiYTouKOxG4fCosRA7vqwsy2qWCqfkTLDR4s+4dO+ay520M8IsqC4NgwrL7k0Go5FL73Usp2YHd3T243e7fwS64WOYKOiVCmOWsgG8x56XbFBy+NQu+fE5Qrk9v4fpW2YSWxTZZKdS5VvCQ09BoSHFxYzluXaxzPr7k7zcvEI03dsko/E05wK6SJKlPLWLbCavb/zVljvN43r8QGljIzcMgdmrZ/u38mSd+UAyvxRDORRZ+AsVIVE9EVBXlXrONR5A6CAxcYtBKIhstrXdOHR09oa4mywdmKlVmCLRpOOTs1tkt7yKtYYDy+tqJE+AA5mK0dG1x4RJTiJL0u59WUNEJOeC7vTf/98RFbnn7w2cBFe+ZwAlGzatX8EvMN6knkfcpPo4cx8qdbNYDhhnKDrHzIFh3OuB1JsDAFZu05xGFPRmt+RPrGQtWFr5pHry3pGIEQRChlR3bUWJdAQpPwOJdbfP8pLR88eRpM11Rmzr/ZnlCxXE9japdi2XhcCLF3yToSt0ImOKMowmoZoMI7bRFSgXaTc2iMxgxz3b/97Oi9MTpm8LwzbxVAbSW+E9M8f9K83L28lz138eNMPjgPgYM2cLzT7p5iuLs4J1vstISFunY X-Forefront-PRVS: 01494FA7F7 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BY2PR0301MB0741; 23:4CIOaJxnOVuFLzno+9Zk29G3COB8SMmynivAmdi?= =?us-ascii?Q?Ba2c+VH8APzvs9n334vGcRzgjdoaNFnvZzh3LbpMh1jKzg+j5oFifoaj9LP0?= =?us-ascii?Q?JtN8IfqTaMkk46wrpyms6G+zy9XUuZs2am6MOkmTkASr7OjORgcKuaK0enXg?= =?us-ascii?Q?CLkbyjLVZmxejX1K446VGFn2bqZPRWuLRE/w/4DUFdL3z3S16qwxDCnFZxZJ?= =?us-ascii?Q?VY1Jvpq/wNTmOnQmEb3qdzus1ySUOiKQaScLRZ9+Me7Lx2mJs0jNGEzso9VR?= =?us-ascii?Q?4KeSUhUVtDd3s7KMCZt34Wamkb64e0YPuouVAdE0620XFj4JaqoLLe/X0LVG?= =?us-ascii?Q?8M3W6cOG4tsdkBwviIoH13p7pEvySmSxgN8tWBXGmQh56DP5uFWJAt6hGlwL?= =?us-ascii?Q?jXNTnc6pSZFVGr3xuEUay1Zj4evlgj0dQxbx3hn928wJ9jOS2dCAA4aK63Gy?= =?us-ascii?Q?8oKWyLlPNTKMbgvBHNYnPwT+9p3+39PyILujuC9ZHn7YdqdHdjCzgiBkSZes?= =?us-ascii?Q?MUrNMW+cTsBL6UrUpuZCmH7PnDyhd1ft0Xa9v/CrjdVIA08Vh+KgEetqZawB?= =?us-ascii?Q?yVW9Svg3qQQ/K/gqXbOjo8hck1cjmJv+u8kEvUYD0CG3kzjVtlRftVkiQuHi?= =?us-ascii?Q?rjNUSYlUfOkvoTAuYwMSLo7cVBwEzbCZgUOOBjq9GNH8rWNGD7QjE+uvb2Ec?= =?us-ascii?Q?AP35ZQuFd610iY1PRXJ2/n/pkCS6XL/opkQMFxe6gZf0qb32ifOaPL2L18gh?= =?us-ascii?Q?0+bGWV9eN7HyJDo2p+ylzH6jUBo5L9qpCUh3X0T99NR4s62oc+a6/N7qeufl?= =?us-ascii?Q?xeeM6bgg84p2ZqW1VXyQ20LV7sGLYw8wLZrrPitjzdarHqb8z0j7V1f4g20Q?= =?us-ascii?Q?I2TKJnPFo0Z1qIoAOwyQ/pGQALRl6s43kH+L8rbEZibm6xvXCoeQcDvuBIau?= =?us-ascii?Q?NbOW2RLzQDQ+ZzPWTxQC7a+8PXY2NmKvo55TV54EppxXXBpkeud2ITYME0C5?= =?us-ascii?Q?lzebzxR7MVl/Lu7Vx+dsNCtwDupk5Sl89fdi4hQJ8rMTI5ty+wEUa+LRMpvM?= =?us-ascii?Q?zIOLyVGSeTy69v9kNPlOyQz8R38ww2XC8t6s9DJDjBnD34tydiNq82KJGTiX?= =?us-ascii?Q?WvMmWdISwAhC24a9RUoOGMdSsqAW46Hw0VGDcoJfqpgPO9SpXhfmA+qgrKfA?= =?us-ascii?Q?AygXier2DU/6KkZt3o+qsp25rL5TdrLV8X2IjlrYoAcrDG89zrZQ6atnaD+Z?= =?us-ascii?Q?QsoxCLubWZoYrwKTb3MjFvjwpVe2A9lfvvOAMUcw/?= X-Microsoft-Exchange-Diagnostics: 1; BY2PR0301MB0741; 6:UYvFzn/5yPc6ZdERW8V98uZMN2ZdUoWsrBATM0TrMEoRkitutnGT5L5LpFsvXQDAbW8fTAbv0gcHY2FRHNMjvrPeC2drBhGuQs7vED3DNJQcvW3RCpj89E5CGk83ApCGKRmip0430Mt5mCt6EaTGOqS7dkeIhmY/a5MeoDuY4NezYDi+nBxQ5WXpK23Qgkc32uWVHAUVI9s6I5RTIxwUJz6cvHQ0OwXetuUWRltGbCrykPGncjiudX5haDxHw/tRY3fDCo3iF1qnA64U2FXbwcDur8aMRuAUAGSf0evMi8EcmcIpESGeNGg3Y8jB9T7NYBzdkSS1l8V28U8uKW4kzlfPypnVGwqcNuX/U7IjuMavLPtYPoVc8O8d05MKA8YmdABclMZ0U9weP8L9CsMiYAen4gwzgv6yBU7i9ljmswGcfk21Zo4gEyO5QiCRF1Ed; 5:aC/14GrF9QorBTzkMWZxTZydxHSd+lXWYreaBzUbIDabm1ieoqorr8AJFaZggAtBsYhvA3hoIZ7sP8Wy5487TU8UtuZCQ93INGayUMOU/O8F0PGfwefS4HMkZd9Q2J3w+iJZOCOzIt0ypcY3pHW41cClPU9BJklse1iEX8EJilNw1AXU27RJzH/fPKGzNCoa; 24:yALmtyoUTRjKf8BdfRbqSFTO0AqDObeFual/7BBKkNATAHV3eZ9hYhEh8SN4UeAsqk9o82zl0TqHhtLcvte8CxLqQRLqUixLosKVV/kG4VQ= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BY2PR0301MB0741; 7:j+P0xWbpe86gfs1O4MjAsaWI7y3nDNhFyo8Xv1uEoVvjwywZwpNP6E0+w5VM2YwM5D+oeH/bUUziJJ+ryJUcTmlE8sWMtYuslULOMeRWZX2/sXLJqEHB1DD7DhSnI3AtSgGA+o1VtELJagLa4oiZIzDp0iFggjz0K0o3cQlqFxvOgRGTBHJIFZS5OUnxh+brgxC9d6TdWVKI+aX/UHm6Ug7jrQmjCg0bPzM8K70ajYS4LHi0MKfOHEPQztcI3HNIAgA0xosVjRMBFVzi9RyEV3egJBJaOkryj9DeDQZrpT65kMLABdCZh/xol4yv6YQNPgIMtJKgbcI/txVfh2uanjiPc8BQ6CN//eI9nbOQjJ4u7C2SjZJ8Kj0khpT3qqlKh4bEKZfyzNeEoq2qh1PF+1M/I62UxVelAEAEahRJ6ZQVNdpLy/BIdrM87VNrpxXTQLnmLkPMLc4jrgwsZIySNA== X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Dec 2016 06:41:59.2563 (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: BY2PR0301MB0741 Cc: Priyanka Jain Subject: [U-Boot] [PATCH] driver: fsl-mc: qbman: Add QBMAN 4.1 support X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.15 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" LS2080A SoC family has QBMAN ver 4.0 whereas newer SoCs like LS2088A, LS1088A has QBMAN ver 4.1 QBMAN ver 4.0 and ver 4.1 supports dqrr size as 4 and 8 respectively. Add support of to check QBMAN version based on SoC SVR update dqrr_size accordingly update code to support larger dqrr_size Signed-off-by: Priyanka Jain Signed-off-by: Prabhakar Kushwaha --- drivers/net/fsl-mc/dpio/qbman_portal.c | 19 ++++++++++++++++--- drivers/net/fsl-mc/dpio/qbman_portal.h | 5 +++-- drivers/net/fsl-mc/dpio/qbman_private.h | 19 +++++++++++++++++++ drivers/net/fsl-mc/dpio/qbman_sys.h | 18 ++++++++++-------- 4 files changed, 48 insertions(+), 13 deletions(-) diff --git a/drivers/net/fsl-mc/dpio/qbman_portal.c b/drivers/net/fsl-mc/dpio/qbman_portal.c index 4b64c8a..86dc13d 100644 --- a/drivers/net/fsl-mc/dpio/qbman_portal.c +++ b/drivers/net/fsl-mc/dpio/qbman_portal.c @@ -25,7 +25,7 @@ #define QBMAN_CENA_SWP_VDQCR 0x780 /* Reverse mapping of QBMAN_CENA_SWP_DQRR() */ -#define QBMAN_IDX_FROM_DQRR(p) (((unsigned long)p & 0xff) >> 6) +#define QBMAN_IDX_FROM_DQRR(p) (((unsigned long)p & 0x1ff) >> 6) /*******************************/ /* Pre-defined attribute codes */ @@ -65,6 +65,7 @@ struct qbman_swp *qbman_swp_init(const struct qbman_swp_desc *d) { int ret; struct qbman_swp *p = malloc(sizeof(struct qbman_swp)); + u32 major = 0, minor = 0; if (!p) return NULL; @@ -80,8 +81,20 @@ struct qbman_swp *qbman_swp_init(const struct qbman_swp_desc *d) atomic_set(&p->vdq.busy, 1); p->vdq.valid_bit = QB_VALID_BIT; p->dqrr.next_idx = 0; + + qbman_version(&major, &minor); + if (!major) { + printf("invalid qbman version\n"); + return NULL; + } + + if (major >= 4 && minor >= 1) + p->dqrr.dqrr_size = QBMAN_VER_4_1_DQRR_SIZE; + else + p->dqrr.dqrr_size = QBMAN_VER_4_0_DQRR_SIZE; + p->dqrr.valid_bit = QB_VALID_BIT; - ret = qbman_swp_sys_init(&p->sys, d); + ret = qbman_swp_sys_init(&p->sys, d, p->dqrr.dqrr_size); if (ret) { free(p); printf("qbman_swp_sys_init() failed %d\n", ret); @@ -380,7 +393,7 @@ const struct ldpaa_dq *qbman_swp_dqrr_next(struct qbman_swp *s) /* There's something there. Move "next_idx" attention to the next ring * entry (and prefetch it) before returning what we found. */ s->dqrr.next_idx++; - s->dqrr.next_idx &= QBMAN_DQRR_SIZE - 1; /* Wrap around at 4 */ + s->dqrr.next_idx &= s->dqrr.dqrr_size - 1;/* Wrap around at dqrr_size */ /* TODO: it's possible to do all this without conditionals, optimise it * later. */ if (!s->dqrr.next_idx) diff --git a/drivers/net/fsl-mc/dpio/qbman_portal.h b/drivers/net/fsl-mc/dpio/qbman_portal.h index 86e2c3a..97a47aa 100644 --- a/drivers/net/fsl-mc/dpio/qbman_portal.h +++ b/drivers/net/fsl-mc/dpio/qbman_portal.h @@ -14,8 +14,8 @@ /* Management command result codes */ #define QBMAN_MC_RSLT_OK 0xf0 -/* TBD: as of QBMan 4.1, DQRR will be 8 rather than 4! */ -#define QBMAN_DQRR_SIZE 4 +#define QBMAN_VER_4_0_DQRR_SIZE 4 +#define QBMAN_VER_4_1_DQRR_SIZE 8 /* --------------------- */ @@ -71,6 +71,7 @@ struct qbman_swp { struct { uint32_t next_idx; uint32_t valid_bit; + uint8_t dqrr_size; } dqrr; }; diff --git a/drivers/net/fsl-mc/dpio/qbman_private.h b/drivers/net/fsl-mc/dpio/qbman_private.h index f1f16b8..73bbae3 100644 --- a/drivers/net/fsl-mc/dpio/qbman_private.h +++ b/drivers/net/fsl-mc/dpio/qbman_private.h @@ -11,6 +11,7 @@ #include #include #include +#include #include #define QBMAN_CHECKING @@ -166,4 +167,22 @@ static inline void dcbz(void *ptr) #define lwsync() +void qbman_version(u32 *major, u32 *minor) +{ + u32 svr_dev_id; + + /* + * LS2080A SoC and its personalities has qbman cotroller version 4.0 + * New SoCs like LS2088A, LS1088A has qbman conroller version 4.1 + */ + svr_dev_id = get_svr() >> 16; + if (svr_dev_id == SVR_DEV_LS2080A) { + *major = 4; + *minor = 0; + } else { + *major = 4; + *minor = 1; + } +} + #include "qbman_sys.h" diff --git a/drivers/net/fsl-mc/dpio/qbman_sys.h b/drivers/net/fsl-mc/dpio/qbman_sys.h index 7a537fb..72d74c5 100644 --- a/drivers/net/fsl-mc/dpio/qbman_sys.h +++ b/drivers/net/fsl-mc/dpio/qbman_sys.h @@ -239,16 +239,18 @@ static inline uint32_t qbman_set_swp_cfg(uint8_t max_fill, uint8_t wn, { uint32_t reg; - reg = e32_uint8_t(20, 3, max_fill) | e32_uint8_t(16, 3, est) | - e32_uint8_t(12, 2, rpm) | e32_uint8_t(10, 2, dcm) | - e32_uint8_t(8, 2, epm) | e32_int(5, 1, sd) | - e32_int(4, 1, sp) | e32_int(3, 1, se) | e32_int(2, 1, dp) | - e32_int(1, 1, de) | e32_int(0, 1, ep) | e32_uint8_t(14, 1, wn); + reg = e32_uint8_t(20, (uint32_t)(3 + (max_fill >> 3)), max_fill) | + e32_uint8_t(16, 3, est) | e32_uint8_t(12, 2, rpm) | + e32_uint8_t(10, 2, dcm) | e32_uint8_t(8, 2, epm) | + e32_int(5, 1, sd) | e32_int(4, 1, sp) | e32_int(3, 1, se) | + e32_int(2, 1, dp) | e32_int(1, 1, de) | e32_int(0, 1, ep) | + e32_uint8_t(14, 1, wn); return reg; } static inline int qbman_swp_sys_init(struct qbman_swp_sys *s, - const struct qbman_swp_desc *d) + const struct qbman_swp_desc *d, + uint8_t dqrr_size) { uint32_t reg; @@ -270,9 +272,9 @@ static inline int qbman_swp_sys_init(struct qbman_swp_sys *s, BUG_ON(reg); #endif #ifdef QBMAN_CINH_ONLY - reg = qbman_set_swp_cfg(4, 1, 0, 3, 2, 3, 0, 1, 0, 1, 0, 0); + reg = qbman_set_swp_cfg(dqrr_size, 1, 0, 3, 2, 3, 0, 1, 0, 1, 0, 0); #else - reg = qbman_set_swp_cfg(4, 0, 0, 3, 2, 3, 0, 1, 0, 1, 0, 0); + reg = qbman_set_swp_cfg(dqrr_size, 0, 0, 3, 2, 3, 0, 1, 0, 1, 0, 0); #endif qbman_cinh_write(s, QBMAN_CINH_SWP_CFG, reg); reg = qbman_cinh_read(s, QBMAN_CINH_SWP_CFG);