From patchwork Tue Aug 2 15:56:20 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: tthayer@opensource.altera.com X-Patchwork-Id: 9258443 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 0DFA46077C for ; Tue, 2 Aug 2016 15:54:47 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id F071028519 for ; Tue, 2 Aug 2016 15:54:46 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id E48E128529; Tue, 2 Aug 2016 15:54:46 +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=-4.1 required=2.0 tests=BAD_ENC_HEADER,BAYES_00, DKIM_SIGNED, RCVD_IN_DNSWL_MED, T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.9]) (using TLSv1.2 with cipher AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 3BD0228519 for ; Tue, 2 Aug 2016 15:54:46 +0000 (UTC) Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.85_2 #1 (Red Hat Linux)) id 1bUc05-00081j-1r; Tue, 02 Aug 2016 15:53:01 +0000 Received: from mail-sn1nam02on0082.outbound.protection.outlook.com ([104.47.36.82] helo=NAM02-SN1-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.85_2 #1 (Red Hat Linux)) id 1bUbzL-0006xu-9T for linux-arm-kernel@lists.infradead.org; Tue, 02 Aug 2016 15:52:19 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=altera.onmicrosoft.com; s=selector1-opensource-altera-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=pPtWQNYE9Z5qj271x4bF/E8b81CRdeosv5ozf9yL2O4=; b=lSiOwna6aUTERBaFXEouW7R3uFWCnxzBiGtdpAs8xPLtORHW4a2+4vrYtl+BdunJ6HbxRhb1x5RcT14JCMDOxO9md4bFYNCXQ+0NMjmSOnjpyeSU2lIWeywrzwRzruStLao/Bip8O/Qh8FszE8gooQVwHGRVHIsS07zGRsc11bk= Received: from BLUPR0301CA0010.namprd03.prod.outlook.com (10.162.113.148) by BN1PR0301MB0692.namprd03.prod.outlook.com (10.160.78.11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.549.15; Tue, 2 Aug 2016 15:51:51 +0000 Received: from BN1AFFO11FD014.protection.gbl (2a01:111:f400:7c10::148) by BLUPR0301CA0010.outlook.office365.com (2a01:111:e400:5259::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.549.15 via Frontend Transport; Tue, 2 Aug 2016 15:51:51 +0000 Authentication-Results: spf=fail (sender IP is 66.35.236.236) smtp.mailfrom=opensource.altera.com; vger.kernel.org; dkim=pass (signature was verified) header.d=altera.onmicrosoft.com; vger.kernel.org; dmarc=none action=none header.from=opensource.altera.com; Received-SPF: Fail (protection.outlook.com: domain of opensource.altera.com does not designate 66.35.236.236 as permitted sender) receiver=protection.outlook.com; client-ip=66.35.236.236; helo=sj-itexedge04.altera.priv.altera.com; Received: from sj-itexedge04.altera.priv.altera.com (66.35.236.236) by BN1AFFO11FD014.mail.protection.outlook.com (10.58.52.74) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384) id 15.1.549.5 via Frontend Transport; Tue, 2 Aug 2016 15:51:52 +0000 Received: from NAM03-BY2-obe.outbound.protection.outlook.com (216.32.180.51) by webmail.altera.com (66.35.236.236) with Microsoft SMTP Server (TLS) id 14.3.174.1; Tue, 2 Aug 2016 08:51:19 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=altera.onmicrosoft.com; s=selector1-opensource-altera-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=pPtWQNYE9Z5qj271x4bF/E8b81CRdeosv5ozf9yL2O4=; b=lSiOwna6aUTERBaFXEouW7R3uFWCnxzBiGtdpAs8xPLtORHW4a2+4vrYtl+BdunJ6HbxRhb1x5RcT14JCMDOxO9md4bFYNCXQ+0NMjmSOnjpyeSU2lIWeywrzwRzruStLao/Bip8O/Qh8FszE8gooQVwHGRVHIsS07zGRsc11bk= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=tthayer@opensource.altera.com; Received: from tthayer-HP-Z620-Ubuntu.137.57.187.33 (64.129.157.38) by BN3PR03MB1478.namprd03.prod.outlook.com (10.163.35.141) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.549.15; Tue, 2 Aug 2016 15:51:31 +0000 From: To: , , , , , , , , , , Subject: [PATCH 2/3] EDAC, altera: Add Arria10 SD-MMC EDAC support Date: Tue, 2 Aug 2016 10:56:20 -0500 Message-ID: <1470153381-20517-3-git-send-email-tthayer@opensource.altera.com> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1470153381-20517-1-git-send-email-tthayer@opensource.altera.com> References: <1470153381-20517-1-git-send-email-tthayer@opensource.altera.com> MIME-Version: 1.0 X-Originating-IP: [64.129.157.38] X-ClientProxiedBy: BN3PR11CA0041.namprd11.prod.outlook.com (10.162.169.51) To BN3PR03MB1478.namprd03.prod.outlook.com (10.163.35.141) X-MS-Office365-Filtering-Correlation-Id: 388639e4-ac06-4c91-b2c3-08d3baecec04 X-Microsoft-Exchange-Diagnostics-untrusted: 1; BN3PR03MB1478; 2:FVoIXoaumsaLB5hbeCDhOzQHNxbmcNuy15JPHcI8zPEx7c+JBfyTvSYTNZX4kk2JqLW/OKwhYst4xk+vSlgYNQKfN3UCyET0aGSsLN7HWN9jzQstrg42vT5MzqeuTPANbIly7nWHh8cubs6L0+5TNUIXavamRuWKL/XvMF7z5armoFR6n9BWof8DjpJfQcD8; 3:4c9Xk/A38qj+liX93yUkQfpD6EwQ+m6yo9Agdsybgxx2o/LLMXw2dS7UZvO+pnNUwmTPHyI9Ay38LjsjJW+7Xv90L21WzFdMlVGHWfNI7woXhUWGAMRyLOiAhYEDV0li X-Microsoft-Antispam-Untrusted: UriScan:; BCL:0; PCL:0; RULEID:; SRVR:BN3PR03MB1478; X-Microsoft-Exchange-Diagnostics-untrusted: 1; BN3PR03MB1478; 25:uJjIjB8zXzSBawCrdUW9kTXhr7sAKEjA/IKXHMUuNdUETRotU63VAdUWr/SjyJwLQpkK34DcvISZItLlr46GPTA1IPH5kmtO+F/wMMBZtBr1O3wWQpdO2WKIJ5coaKT1aIhDPg7X6Enxskl+wDweZzf1hKDwvbPp91XjQOT43r12HCj87mFyEtSjJE/inXFpwj/t5eL9RZgpZ1tm7r7cNnRrHTVrIY22Fau+xE+JmB4abbHqv9rZ+hGjayUhm5rL35WryLRvCGKunnnDEceyJ8JyaJf3HYdJSKfg7xnK5kzPWh/eMSjTxMoT7uXQTwN6VFxS6Ulvelz2EFhwTM4oCB4yIXQh/VVP4JqttyNCwBbdOR19TrWkbpXOx/vSPzpLOlOGfl6VEeHTaQ5Fy7VZNVTsQJObf71RyT3MikAckTTxWJ3b+hyrbxaPZT+gOr8XWpMfzCRBBpuRQ67bWa5R2y07hxac5zobDEWzWmrKcubUB3jIwP6LP/NX1Hw1fWRfI3HDn0DjloQsiaySgSj1GKWQPx4E7RdT7IIGCkXj6T+FBgeefjVG13KTM3azxF5YWvqZBljJX0ZSznyh2//k7AzXk04sW/Yq0qbzGFCJo3nNFf/1x/J+SXFrSz1QJo3k8NPp2zhaXK+VzFfzfpnDfjl8tTRjQFelRxOa0IZE9IGYAHL2PulYAJ96WMnQ6QNjStIlmWDSlokoz7BDNIRjZPn8FutaL15zesJBCK3a5Vc= X-Microsoft-Exchange-Diagnostics-untrusted: 1; BN3PR03MB1478; 31:dVxXm5SFdHSWa0yO852DrKWsB4iCXwy2t7rHSU60KnuXaeNL9A9BGLuyR6+cxFTs3ycDhY8ukK5iXIQLDKN/9nyj+G/pw8PHaLhhj2uiSzMIyAxf37egWjRlOQaQ4JpNTQErJpTQe4mBjCpp41Imp4P6NP7nYBMHA2sl3IJXyMOH6eNYrDzhijrvyRe67SdmfrJIfa9rBzHjvaj8IRCOZ9xiaMwtg+N+hUTNWIRg3l4=; 20:iCdSyjBt+246swcSTUrBBXjeeQ49HEKW1FhKbZwVKbT1P9xWraBhJ4yvnxu+NVvvgjUqZxd6xVg3nsNZyINWd58wDY2rJiplM6ajXJvqFXYwcQZChKUqFfq4JYw1LjPmMO4kdzLZqJpecUgFKGO1FVGeE7AW4UgH8QLrW3V2aEE=; 4:nALwny+hiS9KBrtRNuqguD9qXR/YsTE/M+tiSJy4VAgkPOGed8buR7dhfRhrzR835vsL63I8SMC8W9s1WGvVXa2AHqAMHGZ7re1y7x3KVOlD6L5SY0oyOd64VutpZNF9G2gU0RBxbDr56DVwtXu7mTlVA+z0xfOLlvwv1NoEtSzR3uMcwZ3bZgNQmPNIYG/h9w6Rj046fWaaOFnvRY79SfiViKuOPTgL8Xy9ALLR3glmsSawL1CSv85ivt8LLfvhhsD5lrH4tgOwO/88XyoNjFnCtAcDuqE+TQwVnFktNjupEYXZmWhAG0+iA9DtxXyuCLeDlrKKUcXFey4h5io73pBonRP81L3KlabhlPfXWB6hMlxEu9ObLvz5ATvIKwYumjk3IF8aeo4XeCNmNvFzW9ZejIpuZMqmAtrVy/oxgNh6/42YvcYr59dBRYCiZ6rQ X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(80048183373757); UriScan:(80048183373757); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001)(6055026); SRVR:BN3PR03MB1478; BCL:0; PCL:0; RULEID:; SRVR:BN3PR03MB1478; BCL:0; PCL:0; RULEID:(601004)(2401047)(8121501046)(5005006)(13017025)(13023025)(13018025)(13015025)(13024025)(3002001)(10201501046)(6055026); SRVR:BN1PR0301MB0692; BCL:0; PCL:0; RULEID:; SRVR:BN1PR0301MB0692; X-Forefront-PRVS: 0022134A87 X-Forefront-Antispam-Report-Untrusted: SFV:NSPM; SFS:(10009020)(4630300001)(6009001)(6049001)(7916002)(189002)(199003)(586003)(86152002)(2201001)(189998001)(2906002)(5001770100001)(97736004)(107886002)(2876002)(50986999)(76176999)(101416001)(42186005)(105586002)(92566002)(7846002)(3846002)(6116002)(305945005)(7736002)(50466002)(4001430100002)(229853001)(4326007)(106356001)(33646002)(48376002)(86362001)(47776003)(8676002)(5003940100001)(66066001)(81166006)(2950100001)(68736007)(77096005)(50226002)(81156014)(19580395003)(19580405001)(7416002)(921003)(4720700001)(217873001)(1121003); DIR:OUT; SFP:1101; SCL:1; SRVR:BN3PR03MB1478; H:tthayer-HP-Z620-Ubuntu.137.57.187.33; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:0; LANG:en; Received-SPF: None (protection.outlook.com: opensource.altera.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics-untrusted: =?us-ascii?Q?1; BN3PR03MB1478; 23:IWFIXcaOEwGY0SNcx+/DhIH43JPYNrHaPI9K07Rlk?= =?us-ascii?Q?vhrzwxaDHQq2DlnpExpT5kIbu+lq1JJo8yljtF8Ixm27h9DBxCCf5p0P3TPM?= =?us-ascii?Q?fzm1f/5AfY4f6xNd3loDD18X9quPrz3f6IWAFdS5Y9Z7Q871pi73YYRuGvtR?= =?us-ascii?Q?cF92Go+fFtBwT4jybMuB9AX4cYMIqLghWh5WZaplz9+lRJQM1CFCGqMB7Bqy?= =?us-ascii?Q?DPbevB/1RejvzowrapI6n6Eh0T0xtZkZuWndA+b0ZYCKZaVXcCCmqY5nlF2z?= =?us-ascii?Q?msowxDqTictkcUsZj0tElTGN3j27V0/+qHDjygxmAZEx1vOaNDgj+FuHJFXf?= =?us-ascii?Q?EB/0g4d1DpBprfDy5OAuhD2s1mk81eX5UaHpR7m1KO/nKtPkJ6YesuwCBC42?= =?us-ascii?Q?FG7RSXPKaG0DUNsaR4gHQ/Cq5Qbt/dCYAl5NWzUcwpRKYM8aACjIUbbO7235?= =?us-ascii?Q?Beypp6X1+edOM+y2BFjmzmgH4IBFQ8NARSxUmB1FJL/TT32ZIZV2FTK/VgdH?= =?us-ascii?Q?eZ08FO3FFEQrbXNDcnMgLDSMyplnwh/lWK3xImVUUl5NmJZST6JZRtg20CIL?= =?us-ascii?Q?v6EQK0IsMlCvoPHhgk63XFfnXpbxc1HTFZbPvz5A7eXOaAz4UAQ92BO6GxdX?= =?us-ascii?Q?IU0LSXH3trM0S88UDgimdTtMNO8WqsBhbTPGIMQufkIKhn4ubR96mSbuIrbU?= =?us-ascii?Q?Yny9r2A1PZKrFY/e14Qq/OtF8/97gymVDsR3dxTtkx2YSE+hndZrwqX/7/bc?= =?us-ascii?Q?/4Z5BhTyq/PoXZPpyr96CGbyN4LVIVoTpmzXss3aC+CGoaJtZh9MMlQogB41?= =?us-ascii?Q?gPD8FxaZ4u0h7srkwPfPlrBfaEpW87KXtCYLgCVtpRq8dfq+8MghWMsbCtBB?= =?us-ascii?Q?48xVXxkBIeYGIBMqbSp6EhvtNZ/P8kLDzuLk41dlzQ1I6eCAzCf+tg190wVy?= =?us-ascii?Q?sLQ9+14SKe13jhGi+vuIExwgM8otEObzKG+kzVTQzOMp1VjQ2XP9i45hWLNA?= =?us-ascii?Q?S+4HCwCLVwoCTiE1jdMhOygr/4KjRNw6bLrdE14+ohiMXXg9CykP9pjBuHfM?= =?us-ascii?Q?Sk9xH1j1kBbS1+7P0Vi3AOsY+QWQX3hs16L5DGTB/7Zw/cMveT7GkZ5dTw1b?= =?us-ascii?Q?xVlHIZyF+q7PIE7rseYZNnbBzkN23lYWr71p2jkbTwHYnB0BfIOdrQ/yo3qU?= =?us-ascii?Q?dp1YPqWOV8VGvqgrqFsFG0fLd4/Ds4ZzCSI0MaoKoDHapNsI/hrOEux4Q=3D?= =?us-ascii?Q?=3D?= X-Microsoft-Exchange-Diagnostics-untrusted: 1; BN3PR03MB1478; 6:WhO0Ydithi+8DTOWodVIolZ5oRhLhLLkPA8tvSjfJeLZj5Q/gjc1uKw4924aSDfHdWr5CamaYAwWjjqA2LfefMUSKdqvt8XB8DH5pAxPLqvyOew+9g4TFOV69/NjUYm84y4TB+AUJe+XhG9a6bjUldULRyUw29qSWKwp3fsxKHb86YmfcK5QIM6th9HlNT8WLM766CHDEYQuXHQyF+soI198yI96RNLGfxTCgVRFRZTZGO+7ar3ZNplz+KlXEQUgop1ZYuEKtMm3Xva8VVl4CdE5j4YXFytrE0GcTVsVuvxSJfJHT/2BzicHP3WoacDDhnkNrx8TLTSw5SgRDuUvEQ==; 5:e94PhaYK3jpj5hdlSy0SSozI4sCnNB6HsMDP5XegAePs1i09RoUyxQqg4q9sSewRmG8XTu0C0gFKG6vRgmSRa+WE9SqrR50zSPHuei8zdbNVXOcbwM5Y/rSfhl8h3LGoPEvExDirhLiL+/D1dKwUEg==; 24:GVpCQuJen93zwgSjKEygnccL/Op8Or23Neh5Z8zywljejaDad2V6pYhlUWvYb+aF6bFL1vfzt8BmDDp3lX0/Cs2LJ4a3ERvZVjnav99e9y8=; 7:B5zchw0e2spOL/tgboyY7AHz4VEIZUoeNLYD0FD1eEAJLayl6AafVOvT8kpMkCtOw1wJ16QiD63mLE1W5G1jUITl9KK9WQL1yDWS9U7uR06xgzjwjrO+ae7VpZHYViNwOMeGYAA9XyBN6Ni/VAYKLpHsJs0PF7BEObd4DxcjASSCed389maOOw977wvu/q6gFaP+xjR0S5JkmEWoOE0qNXKWfIEFR66WTxE1h13gL+qoTqVQmzHxXnBY/F2kEZII SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN3PR03MB1478 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: BN1AFFO11FD014.protection.gbl X-MS-Office365-Filtering-HT: Tenant X-Forefront-Antispam-Report: CIP:66.35.236.236; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(7916002)(2980300002)(1110001)(1109001)(339900001)(199003)(189002)(50986999)(92566002)(4326007)(106466001)(85426001)(3846002)(6116002)(3720700001)(19580395003)(76176999)(189998001)(16796002)(229853001)(2876002)(2906002)(86152002)(2201001)(19580405001)(77096005)(48376002)(2950100001)(105606002)(68736007)(86362001)(6070500001)(97736004)(7736002)(11100500001)(8936002)(5001770100001)(81166006)(8676002)(81156014)(956001)(107886002)(50226002)(66066001)(7416002)(305945005)(5003940100001)(47776003)(356003)(87936001)(7846002)(586003)(4001430100002)(50466002)(33646002)(7099028)(921003)(1121003)(217873001)(4720700001); DIR:OUT; SFP:1101; SCL:1; SRVR:BN1PR0301MB0692; H:sj-itexedge04.altera.priv.altera.com; FPR:; SPF:Fail; PTR:InfoDomainNonexistent; A:0; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BN1AFFO11FD014; 1:ftj7f1zXaExbWO/nNCTLfh2TcAcUfYVqDm15SuMFZZ6rrmswYyXh1QksTV7APmjpkXfSwVt4omaDBp9yXssUMg3dB7I3SxgtLQODpgynM9EqFeewyZvAf91kqZ870mIyIJq4WC13Aqlx6cKb2iV3CZiPJDQAWyE0kZs8+CLq5QnJR1EYtGU5vEq0vO/oXdTNJHY+jCTGlyl4OkPXhr5eqLktqiFdkWp2kChLMJyPMsoJnwUEjgWCyqhZM5xC0g4OQ4WHTA5Unsc3bcN32VZxfOtbctadCK/05cwX19wjRvgiAohJBQgecutoo3tlfi9BtL+CWbOO6CQ5IRtai7yfZ//t3qiKpLzwVTlOvizCzGqYO0agNLYhWJCuIuMTf/bFIptnSxpHPVZOf2PXcNGOMmFTSn7c192wvSeF/go2FigXareDkTTjDHQS4V47ySX3hlMaVKo0MzX9aG/Ucj3GPGdbyV8QrIbhbNb8fue4HHI02aJELAq10p5Ugi+S8jr09sO0ZgZjZUSBHGGiAOcYKOSbLyRA7/a5ElRc3JgRkDaXmITmNHaPnxkqLNq9tm6WjOUH0VGbenScDRgjZzC7bQ== X-Microsoft-Exchange-Diagnostics: 1; BN1PR0301MB0692; 2:flKuL4AoJLZyXhiDzq8erwdV/33ax3nR3Yv0PqpoaVcss+m+/jRwQ3zCLBe66/MLEYG2FsYKQAG6NZSeGczcZMG/SsHI3aQZKUeHmItJaykZBoaeZzUcQMaK/A0z7qIg7iCIFlmH1d2TTQo2lBgVrPc+FG4wpeTBtSI2qQxuFfKRtvtXABpL/MoZe+d42LNA; 3:JFrI9/gYZzTwbDnuN4tA2k7Y9cRVNGmB5gn4bIuKCzLs00kzoZb6gOKKymhPgEnYZTp4Wdm5VU73qFeTVO766NF6LjFOr/3QoKn7SFoX458fAGZZ57mF+ckr8FllaIiymkOFIzaTezJS+oAik3BamUg7SG5VdWH3Y+2f0wMx9/61L2fqsHh6hnvhFnlp6R06GpC4uyvtQ8DoT0G2tKLKcHN9HLCxgSsyPpZD7eg+T7aO0pNYdQrMkovFofHcQHrx X-DkimResult-Test: Passed X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(3001016); SRVR:BN1PR0301MB0692; X-Microsoft-Exchange-Diagnostics: 1; BN1PR0301MB0692; 25:x0PqblBE1IMZ5qFoSK+Wf8sBElJ4DgP6RAHqT3HM0tz3KdXhryv3oDJaTYHlVIXa1kwEoKvgFa3Udn50nN7HL/iide5Xkehv7VMU8nKP35JAFQQnMzp/Y5bwxMywwICIbX1hqlRX0wECS2nrnRZR6XWNbOytrMX055+MqnQE1b93c4zVxR8nqo6IYukNlFFpCwnojDnsW60h3RQeN+Kwpm9t/oKTdLq7M90WUuZF/ANiqDZPaie6/xGV707DXvb1t5S5xi3TU8o9QEKl3uNV9h8J0y8QHWynMS1Lxg0rmk+30fXvkzg+YxnjiokN7SAr/3byWAomSjJ7KwHmAjZNlvHqqcCtp9pGKB/BtXa4uLME2IFWlOV+8eOXWVru6VNQ11MmNYJh7NbUPUdo4BwRTARwnbRPPY5bOsl54BmuZOy5kgfwmv4gSqRdMo4bhGCgMHA5G+x66298PhCC0opsnBA4CDlbIQ6WkrThJu64XsslRXXxPyROtXFJO67rcMjK0mS20vENFAtsYchzu79GVYGAI+vfPX0cgksxdmhDxcen05xemYi9lGaDgPxIv63W7JJuojjP6s7doBgEjhep4GuesNjf8aW7mjpA5yAy3RbIn1kUlF0szoE0OcHUgD0rQaFmvp2ku5q1wmuuoF7JfWGTSRbo+//ts+Wg5TiAh5zhe/qf2T+DykQ3nnOPytRk+kZPewqf3BCrapx6ujwMdIZqTdiVTS5T89o9MJwc8K8= X-Microsoft-Exchange-Diagnostics: 1; BN1PR0301MB0692; 31:RZljIbxqlhUKzacG+SwMExv6Kwg5e705daSf7zlcOJ8Ow5cwBigA+TQivGOGa4mDBuqt8kHlY4Fc2b/qyTVUbUJxZ/1QNW5lZhGeoR3/KsnEbFN46y2qp++Yr+sB8VixiCN94+MRxPq2W9ynhFKBRPpvogNqSwTESDYS5wlw0O2hYgEd8qQ6b5/OcqIBAjjTYYALFbdmtEPiLqF119hZ7I/7FYgmnLrel4t1hQO069k=; 20:J2QUx0KdtDylmJxnDKHgbIOMUm/27DXF6Xl+cy5uW3ZEhwRBcdRna3xcXnP0qIede3NbCpOgY65tjlVovT/nbvg57mXfDMpJRH5xJAvr+A1G1UX+9Bj12EViO/v1iTOpNQ0WIxwCntHh1jrn7bbvfiFHw8m4P956Y5zTHYz1JkE=; 4:dhmjPYY5c3G6pdmIDlVI6OuE8RSPT+a4XQwF2hYMMjABoT1GSMBnrZwCSNfHcn99Vhn1kpqvHiR9cZUoWxISYJU198LgSMpCr65F+8IBOme2FvtW51jBeQixVC1pwkBIAsv4F7TkjY+2VMqZDS8s8qqWB1yP3/BUJXBt0p8g84gmvSadUu6/eA5gpFr15kUFKQWQSWjItDTR1JfugdE+PqoyfLh4vghMV6ug1nMabKiF5dE5p/kaW9cjXj/GhwXRYvsRTAhhRukQGYrtQsW+knd/C4sv7C448gq012uD5O2KuWlk3sOnhMIuiDBiMFxDyGv2J5vPcmjD3TvAxc+iMMrmNi99n33qXyv9i/xbkDUyP7OewbkSdbOcY2gtktAa/oZN0kqgRrjuQVRiq2qYijBBFOHQR1cL0bNYF9cKcwi+wUQi9AcqZuo9uXWmOIjYjhESuR8Khm9yB2fndx78mvxR/H7jtZK7OZiPze5qNb0LRfieRkodm9HwQr/vt9u0+SEuk4wYdEXXfpzxiPuXmg== X-Forefront-PRVS: 0022134A87 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BN1PR0301MB0692; 23:XkTtwT0RBDw5rt9A8+agR/2WH7gw/sIJ2oogbaJ?= =?us-ascii?Q?SFEgMLBl1awqKaiDHadGI08ojEFz9py2lfQyjE1HYPl8v2PQxvOFsj0AgKFF?= =?us-ascii?Q?Otmi6nnaToQ4n6Ff1OamZetQdlO2t6PkbfUlTWWrHfa5lkrgO1Pf6xW04486?= =?us-ascii?Q?JZ8axZgI+vXHwQDWPHy54b47U66sfRibTbvHEFHpclwpqIz3Cf+Fe4/IXQZi?= =?us-ascii?Q?vhfA44mPacZpFQPaXnJkCEitKO2fkirqpUcp+4r76vmtNl3gnDlfIg8apaPd?= =?us-ascii?Q?ZbJP844yv6zXSATCPDe8QCFe31XAP45dmPvrROu8q/x1qWAiB7yFk8CcimMy?= =?us-ascii?Q?4Atg7Z0OkWp/FQWjEYARCiPF6vA4YoVFBFXc5RaR2tPoLm543VzKoZ+gSsll?= =?us-ascii?Q?2n9qy/9W8RRiDrQLPKGfkMGXP4gzxP/r5DLNwF/Zt9AWT6FBF59sqCxZu0EB?= =?us-ascii?Q?iPrtu0EYnVcn4s9dttf6FF/D1JXRY5BTmxjoDBWhZUko5ZxNTlSuo8AjxQRI?= =?us-ascii?Q?/jk926IVSQ58ZzOfWdhyFPcVkt82epgQYFpJQwlJzwO62uS2Kvd9bRA1fmK2?= =?us-ascii?Q?CZy2fagMXwb5DWZI/n2Z+ZPtTt11oo/31pNAjKuVWDHTw7gxhHGSj7MA2wx4?= =?us-ascii?Q?fHVMpuHmnI3D+CQ2MvkFQEDdQ2lhH0g0d3mrppE441+gWy76Hjca/PiGa5kc?= =?us-ascii?Q?qwUlXOJK4CIU7nIlTN8ePp0KKF1mPG06mb9a8ILoXXTBwzk5Dcz8QhpW39Yu?= =?us-ascii?Q?GIFkC0bsb9c1OQsOW4FiYCPkcFFpY6ZU5Ja7C5y726rYGNZNyPyHFW7scvD5?= =?us-ascii?Q?q4gq4jBz0uoZTTa+c7wEFhdnTpm5dy0wPci/6QbeO5C2hQmLCWFbGM9zMqpC?= =?us-ascii?Q?Tri3MZA+HNqa3RDEhBA0RGA773jsBPJ+heg7uAIfXuDTml5O9TYdyndAmTPy?= =?us-ascii?Q?0LqK5O9q/FEn3CyYoHtFotKidg+ojtqGU1ac8LJnDOuN4lIncOSX5UrwiEt9?= =?us-ascii?Q?BS+OSMmCl99vAMFkluTGqGR7ZMS6SXGYgxF8tYxksrM2ie3jLl2F/8v+rHgS?= =?us-ascii?Q?5HDe5FYMnNZSUk7vVZVUGlm8BGp0fIYvif9mJAW2/y+iGOkKi8u6DxjdwZmw?= =?us-ascii?Q?8JJ6ugBu6OKAhD/izUD2Vx+mGwAx40LtPJOhw7/2EjsHR2nsV4xsWbzo7uvu?= =?us-ascii?Q?lQj9WXpZlKfKYhLOW5G49f7wOe7Y16b75JXyfZK7h055TSN01wVC89hO3vRE?= =?us-ascii?Q?XequeNy1Pw76AJH2abdGMwc9gwxv76hwHlddABSmRK6rj1amK8/wYNiyg8/Q?= =?us-ascii?Q?2gZySoOjSbvhHZ0g9im1/qEIDtcaRToV15JR8wU5eolZD2+h6o3Vyjqf71IE?= =?us-ascii?Q?Y6MYoFMoDSTf2w0KACL+0aVWSbHEZVeknRWnQFh3rMoGVQlPXKOMWxiKybFL?= =?us-ascii?Q?It1sPTUoi1OjEzOynI+tuKWl7R2RrXZ4=3D?= X-Microsoft-Exchange-Diagnostics: 1; BN1PR0301MB0692; 6:Vw/bZVycyhxaXTKd3wX9KhmDlknr7tPJFkK1dbOoDrzYCQJkKo6d2MuCkOoMWQb4VOyk/gNGe2cJVAVogG0VQBrNn6w7UuEErICfM8OhrSXSPl7p5bvrW4P11g1zJXHgVYG/CTjOD1VjvUrFRVxa6FpPSNv1FDfJTT3Y/PW3rvXWIz5ILMoQZ7oX6ncReHSfBlyddiXi2j90uN3u7fKdLMFyz3smMwmWhwNdYlpqoTfdbMZmC++nUMt2rDKubV1BnBHZvObE2LbE7nHkhXvNQswbEU5IXTQKXqwpeJzdqMSXbm/juv4KO3wb4vjbKmWMUrVSdABHEOjfYQgknoiSrw==; 5:YMtNHRxx6gZd5WgwJE+7ryG0XlBBJ5EfPvM//dYcphpFiEkEvQMdADgkveX30paDLL9lAcRTDUF8i8En1L26CT7VMm6QpYE+Qa2vZkppcnauhrHDRKCnV5YGEfxszLXRnpvDUxw7R9DvbdldY4+Kjg==; 24:+JuiBNLY2n403qbXEGQPi2J9fIUNvwaXvRHcEVb/5scBvtUnBHoplcMz2ZO0gDOmiRf3uyu7afsTqWbAPduGJEy3HCIqnjtTqBkpprem3TI=; 7:hcX4uWzP+XocalpPOKe+fw90oIjD08NknNdaGtc7FyXtCL3BqK6aHndMzliKru+/VrAJFnUPP5PRHLoKxWSIp69Y9gWj1jQPiWYYRH6xh8E0Kz0Rd/U2awnktw3PVd+2GXNT2Ox05XgXnX2gYAPB/PuF1XkLO0CN2kW/5Qlj20OR+S89bJGMHG8xn8VU/GoGnx5Y3Dgi7VdiMUUB3SV6Pw== X-OriginatorOrg: opensource.altera.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Aug 2016 15:51:52.0563 (UTC) X-MS-Exchange-CrossTenant-Id: fbd72e03-d4a5-4110-adce-614d51f2077a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=fbd72e03-d4a5-4110-adce-614d51f2077a; Ip=[66.35.236.236]; Helo=[sj-itexedge04.altera.priv.altera.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN1PR0301MB0692 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20160802_085215_729468_1AE72413 X-CRM114-Status: UNSURE ( 4.36 ) X-CRM114-Notice: Please train this message. X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: devicetree@vger.kernel.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, tthayer.linux@gmail.com, tthayer@opensource.altera.com, linux-arm-kernel@lists.infradead.org, linux-edac@vger.kernel.org Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org X-Virus-Scanned: ClamAV using ClamSMTP From: Thor Thayer Add Altera Arria10 SD-MMC FIFO memory EDAC support. The SD-MMC is a dual port RAM implementation which is different than any of the other peripherals and therefore requires additional code. Signed-off-by: Thor Thayer --- drivers/edac/Kconfig | 7 ++ drivers/edac/altera_edac.c | 188 +++++++++++++++++++++++++++++++++++++++++++- drivers/edac/altera_edac.h | 5 ++ 3 files changed, 199 insertions(+), 1 deletion(-) diff --git a/drivers/edac/Kconfig b/drivers/edac/Kconfig index 72752f4..394cd16 100644 --- a/drivers/edac/Kconfig +++ b/drivers/edac/Kconfig @@ -426,6 +426,13 @@ config EDAC_ALTERA_QSPI Support for error detection and correction on the Altera QSPI FIFO Memory for Altera SoCs. +config EDAC_ALTERA_SDMMC + bool "Altera SDMMC FIFO ECC" + depends on EDAC_ALTERA=y && MMC_DW + help + Support for error detection and correction on the + Altera SDMMC FIFO Memory for Altera SoCs. + config EDAC_SYNOPSYS tristate "Synopsys DDR Memory Controller" depends on EDAC_MM_EDAC && ARCH_ZYNQ diff --git a/drivers/edac/altera_edac.c b/drivers/edac/altera_edac.c index 28247f8..8b5177e 100644 --- a/drivers/edac/altera_edac.c +++ b/drivers/edac/altera_edac.c @@ -1393,6 +1393,188 @@ early_initcall(socfpga_init_qspi_ecc); #endif /* CONFIG_EDAC_ALTERA_QSPI */ +/********************* SDMMC Device Functions **********************/ + +#ifdef CONFIG_EDAC_ALTERA_SDMMC + +static const struct edac_device_prv_data a10_sdmmceccb_data; +static int altr_portb_setup(struct altr_edac_device_dev *device) +{ + struct edac_device_ctl_info *dci; + struct altr_edac_device_dev *altdev; + char *ecc_name = "sdmmcb-ecc"; + int edac_idx, rc; + struct device_node *np; + const struct edac_device_prv_data *prv = &a10_sdmmceccb_data; + + rc = altr_check_ecc_deps(device); + if (rc) + return rc; + + /* Create the PortB EDAC device */ + edac_idx = edac_device_alloc_index(); + dci = edac_device_alloc_ctl_info(sizeof(*altdev), ecc_name, 1, + ecc_name, 1, 0, NULL, 0, edac_idx); + if (!dci) { + edac_printk(KERN_ERR, EDAC_DEVICE, + "%s: Unable to allocate PortB EDAC device\n", + ecc_name); + return -ENOMEM; + } + + /* Initialize the PortB EDAC device structure from PortA structure */ + altdev = dci->pvt_info; + *altdev = *device; + + if (!devres_open_group(&altdev->ddev, altr_portb_setup, GFP_KERNEL)) + return -ENOMEM; + + /* Update PortB specific values */ + altdev->edac_dev_name = ecc_name; + altdev->edac_idx = edac_idx; + altdev->edac_dev = dci; + altdev->data = prv; + dci->dev = &altdev->ddev; + dci->ctl_name = "Altera ECC Manager"; + dci->mod_name = ecc_name; + dci->dev_name = ecc_name; + + /* Find the SD/MMC device tree Node then update the IRQs for PortB */ + np = of_find_compatible_node(NULL, NULL, "altr,socfpga-sdmmc-ecc"); + if (!np) { + rc = -ENODEV; + goto err_release_group_1; + } + + altdev->sb_irq = irq_of_parse_and_map(np, 2); + if (!altdev->sb_irq) { + edac_printk(KERN_ERR, EDAC_DEVICE, "Error PortB SBIRQ alloc\n"); + rc = -ENODEV; + goto err_release_group_1; + } + rc = devm_request_irq(&altdev->ddev, altdev->sb_irq, + prv->ecc_irq_handler, + IRQF_SHARED, ecc_name, altdev); + if (rc) { + edac_printk(KERN_ERR, EDAC_DEVICE, "PortB SBERR IRQ error\n"); + goto err_release_group_1; + } + + altdev->db_irq = irq_of_parse_and_map(np, 3); + if (!altdev->db_irq) { + edac_printk(KERN_ERR, EDAC_DEVICE, "Error PortB DBIRQ alloc\n"); + rc = -ENODEV; + goto err_release_group_1; + } + rc = devm_request_irq(&altdev->ddev, altdev->db_irq, + prv->ecc_irq_handler, + IRQF_SHARED, ecc_name, altdev); + if (rc) { + edac_printk(KERN_ERR, EDAC_DEVICE, "PortB DBERR IRQ error\n"); + goto err_release_group_1; + } + + rc = edac_device_add_device(dci); + if (rc) { + edac_printk(KERN_ERR, EDAC_DEVICE, + "edac_device_add_device portB failed\n"); + rc = -ENOMEM; + goto err_release_group_1; + } + altr_create_edacdev_dbgfs(dci, prv); + + list_add(&altdev->next, &altdev->edac->a10_ecc_devices); + + devres_remove_group(&altdev->ddev, altr_portb_setup); + + return 0; + +err_release_group_1: + edac_device_free_ctl_info(dci); + devres_release_group(&altdev->ddev, altr_portb_setup); + edac_printk(KERN_ERR, EDAC_DEVICE, + "%s:Error setting up EDAC device: %d\n", ecc_name, rc); + return rc; +} + +static irqreturn_t altr_edac_a10_ecc_irq_portb(int irq, void *dev_id) +{ + struct altr_edac_device_dev *ad = dev_id; + void __iomem *base = ad->base; + const struct edac_device_prv_data *priv = ad->data; + + if (irq == ad->sb_irq) { + writel(priv->ce_clear_mask, + base + ALTR_A10_ECC_INTSTAT_OFST); + edac_device_handle_ce(ad->edac_dev, 0, 0, ad->edac_dev_name); + return IRQ_HANDLED; + } else if (irq == ad->db_irq) { + writel(priv->ue_clear_mask, + base + ALTR_A10_ECC_INTSTAT_OFST); + edac_device_handle_ue(ad->edac_dev, 0, 0, ad->edac_dev_name); + return IRQ_HANDLED; + } + + WARN_ON(1); + + return IRQ_NONE; +} + +static const struct edac_device_prv_data a10_sdmmcecca_data = { + .setup = altr_portb_setup, + .ce_clear_mask = ALTR_A10_ECC_SERRPENA, + .ue_clear_mask = ALTR_A10_ECC_DERRPENA, + .dbgfs_name = "altr_trigger", + .ecc_enable_mask = ALTR_A10_COMMON_ECC_EN_CTL, + .ecc_en_ofst = ALTR_A10_ECC_CTRL_OFST, + .ce_set_mask = ALTR_A10_ECC_SERRPENA, + .ue_set_mask = ALTR_A10_ECC_DERRPENA, + .set_err_ofst = ALTR_A10_ECC_INTTEST_OFST, + .ecc_irq_handler = altr_edac_a10_ecc_irq, + .inject_fops = &altr_edac_a10_device_inject_fops, +}; + +static const struct edac_device_prv_data a10_sdmmceccb_data = { + .setup = altr_portb_setup, + .ce_clear_mask = ALTR_A10_ECC_SERRPENB, + .ue_clear_mask = ALTR_A10_ECC_DERRPENB, + .dbgfs_name = "altr_trigger", + .ecc_enable_mask = ALTR_A10_COMMON_ECC_EN_CTL, + .ecc_en_ofst = ALTR_A10_ECC_CTRL_OFST, + .ce_set_mask = ALTR_A10_ECC_TSERRB, + .ue_set_mask = ALTR_A10_ECC_TDERRB, + .set_err_ofst = ALTR_A10_ECC_INTTEST_OFST, + .ecc_irq_handler = altr_edac_a10_ecc_irq_portb, + .inject_fops = &altr_edac_a10_device_inject_fops, +}; + +static int __init socfpga_init_sdmmc_ecc(void) +{ + int rc = -ENODEV; + struct device_node *child = of_find_compatible_node(NULL, NULL, + "altr,socfpga-sdmmc-ecc"); + if (!child) { + edac_printk(KERN_ERR, EDAC_DEVICE, "SDMMC node not found\n"); + return -ENODEV; + } + + if (!of_device_is_available(child)) + goto exit; + + if (validate_parent_available(child)) + goto exit; + + rc = altr_init_a10_ecc_block(child, ALTR_A10_SDMMC_IRQ_MASK, + a10_sdmmcecca_data.ecc_enable_mask, 1); +exit: + of_node_put(child); + return rc; +} + +early_initcall(socfpga_init_sdmmc_ecc); + +#endif /* CONFIG_EDAC_ALTERA_SDMMC */ + /********************* Arria10 EDAC Device Functions *************************/ static const struct of_device_id altr_edac_a10_device_of_match[] = { #ifdef CONFIG_EDAC_ALTERA_L2C @@ -1418,6 +1600,9 @@ static const struct of_device_id altr_edac_a10_device_of_match[] = { #ifdef CONFIG_EDAC_ALTERA_QSPI { .compatible = "altr,socfpga-qspi-ecc", .data = &a10_qspiecc_data }, #endif +#ifdef CONFIG_EDAC_ALTERA_SDMMC + { .compatible = "altr,socfpga-sdmmc-ecc", .data = &a10_sdmmcecca_data }, +#endif {}, }; MODULE_DEVICE_TABLE(of, altr_edac_a10_device_of_match); @@ -1711,7 +1896,8 @@ static int altr_edac_a10_probe(struct platform_device *pdev) of_device_is_compatible(child, "altr,socfpga-nand-ecc") || of_device_is_compatible(child, "altr,socfpga-dma-ecc") || of_device_is_compatible(child, "altr,socfpga-usb-ecc") || - of_device_is_compatible(child, "altr,socfpga-qspi-ecc")) + of_device_is_compatible(child, "altr,socfpga-qspi-ecc") || + of_device_is_compatible(child, "altr,socfpga-sdmmc-ecc")) altr_edac_a10_device_add(edac, child); diff --git a/drivers/edac/altera_edac.h b/drivers/edac/altera_edac.h index 687d8e7..cf3a68b 100644 --- a/drivers/edac/altera_edac.h +++ b/drivers/edac/altera_edac.h @@ -250,6 +250,8 @@ struct altr_sdram_mc_data { #define ALTR_A10_ECC_INTTEST_OFST 0x24 #define ALTR_A10_ECC_TSERRA BIT(0) #define ALTR_A10_ECC_TDERRA BIT(8) +#define ALTR_A10_ECC_TSERRB BIT(16) +#define ALTR_A10_ECC_TDERRB BIT(24) /* ECC Manager Defines */ #define A10_SYSMGR_ECC_INTMASK_SET_OFST 0x94 @@ -288,6 +290,9 @@ struct altr_sdram_mc_data { /* Arria 10 Ethernet ECC Management Group Defines */ #define ALTR_A10_COMMON_ECC_EN_CTL BIT(0) +/* Arria 10 SDMMC ECC Management Group Defines */ +#define ALTR_A10_SDMMC_IRQ_MASK (BIT(16) | BIT(15)) + /* A10 ECC Controller memory initialization timeout */ #define ALTR_A10_ECC_INIT_WATCHDOG_10US 10000