From patchwork Tue Aug 9 14:40:52 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: 9271387 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 6AF456075A for ; Tue, 9 Aug 2016 14:39:09 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 5902E28375 for ; Tue, 9 Aug 2016 14:39:09 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 4CCF2283F2; Tue, 9 Aug 2016 14:39:09 +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 9828227DCD for ; Tue, 9 Aug 2016 14:39:08 +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 1bX89X-0008Hf-UK; Tue, 09 Aug 2016 14:37:11 +0000 Received: from mail-by2nam03on0073.outbound.protection.outlook.com ([104.47.42.73] helo=NAM03-BY2-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.85_2 #1 (Red Hat Linux)) id 1bX899-0008Cm-8Q for linux-arm-kernel@lists.infradead.org; Tue, 09 Aug 2016 14:36:51 +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=/1ikIZkt0VJqeEN6mTbWIy3av/RSD+2DVpq75NQ9zP0=; b=UppjJLKTXmll2rNR0Afy1n9vDqgFzZ6judSgvBcws+hha4iHjjTprMsh7idXCkjsL9f7sBhYLogZRrxOzn0xY8X0rX1n8QXgQiulOECcRSbDfxTgV/g5wfgVePmizN/M4Us4fcEwnvAaWTovqnMfkTNybJUmxqD91Q6dhvrD2yQ= Received: from DM2PR03CA0029.namprd03.prod.outlook.com (10.141.96.28) by DM2PR0301MB0703.namprd03.prod.outlook.com (10.160.97.11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.549.15; Tue, 9 Aug 2016 14:36:23 +0000 Received: from BL2FFO11FD044.protection.gbl (2a01:111:f400:7c09::143) by DM2PR03CA0029.outlook.office365.com (2a01:111:e400:2428::28) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384) id 15.1.549.15 via Frontend Transport; Tue, 9 Aug 2016 14:36:23 +0000 Authentication-Results: spf=fail (sender IP is 66.35.236.227) 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.227 as permitted sender) receiver=protection.outlook.com; client-ip=66.35.236.227; helo=sj-itexedge03.altera.priv.altera.com; Received: from sj-itexedge03.altera.priv.altera.com (66.35.236.227) by BL2FFO11FD044.mail.protection.outlook.com (10.173.161.140) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384) id 15.1.557.8 via Frontend Transport; Tue, 9 Aug 2016 14:36:23 +0000 Received: from NAM01-BN3-obe.outbound.protection.outlook.com (216.32.180.175) by webmail.altera.com (66.35.236.227) with Microsoft SMTP Server (TLS) id 14.3.174.1; Tue, 9 Aug 2016 07:35:36 -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=/1ikIZkt0VJqeEN6mTbWIy3av/RSD+2DVpq75NQ9zP0=; b=UppjJLKTXmll2rNR0Afy1n9vDqgFzZ6judSgvBcws+hha4iHjjTprMsh7idXCkjsL9f7sBhYLogZRrxOzn0xY8X0rX1n8QXgQiulOECcRSbDfxTgV/g5wfgVePmizN/M4Us4fcEwnvAaWTovqnMfkTNybJUmxqD91Q6dhvrD2yQ= 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 BY1PR03MB1481.namprd03.prod.outlook.com (10.162.210.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.549.15; Tue, 9 Aug 2016 14:36:14 +0000 From: To: , , , , , , , , , , Subject: [PATCHv2 2/3] EDAC, altera: Add Arria10 SD-MMC EDAC support Date: Tue, 9 Aug 2016 09:40:52 -0500 Message-ID: <1470753653-23465-3-git-send-email-tthayer@opensource.altera.com> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1470753653-23465-1-git-send-email-tthayer@opensource.altera.com> References: <1470753653-23465-1-git-send-email-tthayer@opensource.altera.com> MIME-Version: 1.0 X-Originating-IP: [64.129.157.38] X-ClientProxiedBy: BLUPR0301CA0007.namprd03.prod.outlook.com (10.162.113.145) To BY1PR03MB1481.namprd03.prod.outlook.com (10.162.210.14) X-MS-Office365-Filtering-Correlation-Id: 827de582-971a-46cb-acab-08d3c062898b X-Microsoft-Exchange-Diagnostics-untrusted: 1; BY1PR03MB1481; 2:hXVF0gwYgSB2fqtRo8y9FfAhAZogOk+inOqm9daHteaGIf1beLGCiP+z9LZ56/8l/70CpS4SoYaDPhf6lFDMzeyGyT/h6xaliftTyjMWWBydPCr0R7kaitWV3qNnTy/tLY4bgCI79RQ+yZ6aqzw6vp55DUx1JlXVYkp1iw9pzoJjfxRo38OY8Xi78/IraecP; 3:NHtkIA6gf/9TsqqC/HKg8SxPXYEoibe0ni/3Wo5oKja3LoKEbLkHobV60XHCFpHF8+LzgkS766IqsX8degFxaVl8zW6f9RNcJ2FH/c/Ut72oVJ9gCISBgsJikgpCivO8; 25:dqwIYfYQXZs4NfXoR5sfJQO7erb2sA64YsuwXXV9JhRnsJZod1pve/kuM9J7d3weFvBC54IytdJ1T/TfZ2I2KyGZw/OKrMGR2o/VVlirbmsFN+f2Qcrl57asui1Cpqsdx/ZmdOKriihogNGY+XdLJE5L3UNj1/kkYFHDG8dwWRCFxfJm293JccGKzYkI3Pvio0+UY5jCKPldmEGs+Sw3Y1X7HYyXVpAUNMkrfpW9TR0fRLYIvEFMUcUg0HE33t26MNvStT6mgF3QxDyFHplTQQ/eVGCRNZiIsURAjXN16hj9B06tDJDqtVxpy2qX++hdmspX6iDvcTKA6kJz6fu1SUeGLR2REYN0GV1tp0E7heosCC+0bLWGhNDTS6P2l37d21f/vMI84Kk7H0gzvqe52qFq4Q98wl5BxKV43wrnucY= X-Microsoft-Antispam-Untrusted: UriScan:; BCL:0; PCL:0; RULEID:; SRVR:BY1PR03MB1481; X-Microsoft-Exchange-Diagnostics-untrusted: 1; BY1PR03MB1481; 31:bNXdYKELDutfxZiEymY1uZ6CBs0aFyiEPo9EcRclMxQRBt6yAywRF589ob1cnW1xN870hlECf44hsQeLNiJGiuciAw8XANh9oGlR/lbmc4frCBVGqmJr+fbBkmle85znFm1LSrYCRLptAEuM64cc83Y+9W/Hd2O3QzuPSrKxqk2M+ZpWu+9GVVVKwg3MI2UxGSqTzjB8xUZ5PvknMQI+7cAY23V5fChaKjl9bk0n1GE=; 20:JLvv187BE8r0OIWZJW4Bb85swQ3gg22T+9i9UISLrhbBt11XyMhqLuuqmuuz2xUJCFUKp3d6SQjo/0+iGt58cofKpphfZui2yVqaYNenuHXEvYn2O6tOoUTTG1KEr2GRIGzSjWhVTBmN4vAB/pgfjMncstwVkNxCuuHFKh/eGTE=; 4:jfJcz33EN08u1oosZAjWpxMTv8yT4bl5iQlK30U+MDRHUNC49KxnT1AUVouhBPzMGtW2fdydbUliGAofDGPalPk9uhUMU4RhLBW0TQMtinwn0ZmJMAqy/RHgoYaH62Jl99nMPNous0NNVuN69Y2smOGUnHi3moROnFY78EFhyjwqpJOlGuTtcMX7cbS3Lo881nQiW+6GlQFYq31s849JNLEBs8Yr2UvSmE6mGG1QHlFXV6TJ4myt71Rb6+iJfChh0GpBTPxwyos3UIS/Y/96OK7Gu6JV9d37++DXU3tYMg6bjigVM1QASpzR7wKfqicIqdWMPmDVSmI7Qb2Van4DZq9/KAIQ8JUmZHUPmnBtqQv3jlW0ijjnx77NZT1irixSEFr8WIYwXZkvpMOSHvs5m2Pfsvp8f2Yct6DOY/ndWtEs25//KutbmuunQz7hDDLt 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:BY1PR03MB1481; BCL:0; PCL:0; RULEID:; SRVR:BY1PR03MB1481; BCL:0; PCL:0; RULEID:(601004)(2401047)(13023025)(13024025)(13015025)(13018025)(13017025)(5005006)(8121501046)(3002001)(10201501046)(6055026); SRVR:DM2PR0301MB0703; BCL:0; PCL:0; RULEID:; SRVR:DM2PR0301MB0703; X-Forefront-PRVS: 0029F17A3F X-Forefront-Antispam-Report-Untrusted: SFV:NSPM; SFS:(10009020)(4630300001)(6049001)(6009001)(7916002)(189002)(199003)(305945005)(105586002)(586003)(19580405001)(47776003)(2950100001)(5003940100001)(7736002)(4001430100002)(2876002)(86152002)(2201001)(92566002)(42186005)(19580395003)(66066001)(101416001)(7846002)(86362001)(3846002)(4326007)(50466002)(107886002)(48376002)(6116002)(81166006)(81156014)(68736007)(229853001)(77096005)(8676002)(50226002)(106356001)(189998001)(50986999)(7416002)(76176999)(2906002)(5001770100001)(97736004)(33646002)(921003)(217873001)(1121003)(4720700001); DIR:OUT; SFP:1101; SCL:1; SRVR:BY1PR03MB1481; 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; BY1PR03MB1481; 23:uUCiKx8wj+IkzdEB2b9EH5OTKdcPaAy1DOzoGG4Mn?= =?us-ascii?Q?4hdJRcqHj9T3VE8GHSj6wUCVBSl3biczllkBrwlf5GvparV8MQij5BOGgeAs?= =?us-ascii?Q?I6vbikaAvtfXTPGJSA929hv4THDQe4yNcfLZzJM+SfEgH8zp32/7qrnAR9XC?= =?us-ascii?Q?rtI+hxLAL8KkK7CLQAOsgrEMz8xr2xaDGqYPOq7RmnySeVOMtlD0zGYs1hxr?= =?us-ascii?Q?DtqVU1zq9ogifhNmV/pYzKN9S5qgo3TMmO+zwpSocQctJ8zynC2I0Un5Wwtq?= =?us-ascii?Q?5ZXDDUE6ZauMKgoytgINgEWILU00kWchGRt/aZoc7QLaUMGeoLC4uree4nxr?= =?us-ascii?Q?NX4yfar57ialpZIsAcPJoKNtOhhrVj+Yw059JnJ/p8P9JipJlxnhuDKTtsp3?= =?us-ascii?Q?dVMewy+I5CtyZaJSC6Y4Gn8wQvpVjCoXoO6mUhrx26xW3j4Z0TwlrBRN0UEZ?= =?us-ascii?Q?Y2aeNcoGBrUtQJM2cE1c6oB15Q0gEmnL5PuQy7IvyccBcF9FRpEme2jhfK5i?= =?us-ascii?Q?rHrmlJCMnjiw8qSDQmfK5NGhmXcSvRBAK9QYRp7LQCm+/k69O8waIf6mwIeb?= =?us-ascii?Q?rPBRnkLIRc53HHp+aE0J1h+gfaix95IWRN50JSObAWQLRAtv1cTArYNaAbcA?= =?us-ascii?Q?L/lcAy2GaLAq1qZhbwwjE/cTJ4LCTeiI04uGw1kq6n+x0erL/TDBhiLnv4et?= =?us-ascii?Q?i+BZtzrpNmIN+k0ODioHltA1sge6/xoxocfBmBcZgbPul6QiFhLxnp6TrxG4?= =?us-ascii?Q?r9IvtxaCU41Aa1edPfe92ZNcHAyiO7RF0hFYJw+bLb1o2ZBluKdvu8o7E7AL?= =?us-ascii?Q?lGThp0e7eNIwHtCyV7hCTY95YWC35ul/pJEcFUuSo0yMhlykxEDcCkqFDdJR?= =?us-ascii?Q?uzLzcxauyDVJ6e9OL9kUkRfXzIKsblla/8txBTVoGV0fbK9Uk+HiVb69oDHd?= =?us-ascii?Q?bWGL9x9NqtVpxvF7ddzxDt32DUmAZ5UoUN8muESj4XsVN0gilDTZqBitKL+n?= =?us-ascii?Q?vCq4fHiymZPOWRDQkEdDT1VX8pVJXNDQeYFXcs3hhLHSWnxC8vtzY7PmatCw?= =?us-ascii?Q?dj+ZGyLV7qICZg/ei5nVox2BGELyXbrms23YDnF+khQXJ5pjiyB5d+m38V9v?= =?us-ascii?Q?/SA/pYw9r0nPKIoQyeSi5uGlYdYrwaOoD4nSauFDLsk4NGEUQi0wX67xcQYE?= =?us-ascii?Q?urMwAMYFG7hsXRYhybuKpaHY3Bg8BNP3wf04P8c/r2Kbm7O4K5iFQMnkg=3D?= =?us-ascii?Q?=3D?= X-Microsoft-Exchange-Diagnostics-untrusted: 1; BY1PR03MB1481; 6:sNTdyc1yVHhvkli/wcFkJCVjcYkvMJCLsBl50o/pNhKuqMDL41DrW+7vS9fu56gmlpRI04aEJxVfnZ+Y1JWOA9tZ2EuN8iFM/Gh/2DPSNZj7TGfBY3c6LGmE+JfpoSOPfVkqDMXiKx6UWSHswil+hIA18N0LIAqB5vEgvzKJPh2u3mIWLm6Mp1OIeUctS7jxvG+NYRm3epAYGXZV3dMl18ST8lskg7EjLI3qNbIdBIDngzPQJr9r9yp9BchU+kLqPOG5KU0mHaj97EgflcojLY63DgL/14zTy+ntUcFIK8W32Bvcdc/E9TcUBNuI0oxxGWCgldSeqsoAv64NnxxVkQ==; 5:xovpjmBIn9U8PEwH6H1PLV+z8em+sPywcz/K/2UYw3KEr9IGv/cctpeQS/kq1JKlYna5O/fLids7eXOIm2btLD5wnVboxBLbPQSsqz0uKUBeF+h0B0GxOlZjKb6dfj06WcmSVj7sq0G3Jz6Q9TSyeA==; 24:j8Ri+x9Nw5KHLkVFFnd3vkb6WILVXW0RiRFIfYvN60BUz3szTxXVbUuU2g4wIScQRG+leE/bd2iv1UJW/CQbNKNprNRFh+fl2crlJU+KPUs=; 7:EbvKXYukgYugxWEM+87E64s4+pftTj4yFczErQb6zvFAGKWOGipTb7K4Xef/sX5pdvBK9fXBzRHS99Udh6x3FaD7y/hLvpxhR7Wo/lI4cyg0Fj6+NmqUj439PAOB0tlHhD3e6i0ofX7VvwnoLayukzmM118XTI17p+NKpM3HeiAzpsW3YelBw36nmunMnYUH6xFdLL8oVkvFP3jPK3qoYIt4snX8dcEWrQUenQvYIPR66I2XEThR4ieczmiowcJ7 SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY1PR03MB1481 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: BL2FFO11FD044.protection.gbl X-MS-Office365-Filtering-HT: Tenant X-Forefront-Antispam-Report: CIP:66.35.236.227; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(7916002)(2980300002)(1109001)(1110001)(339900001)(199003)(189002)(97736004)(6070500001)(5001770100001)(189998001)(107886002)(4326007)(106466001)(3720700001)(7736002)(305945005)(7846002)(33646002)(4001430100002)(2950100001)(229853001)(48376002)(50466002)(2201001)(86152002)(356003)(86362001)(2906002)(586003)(2876002)(6116002)(3846002)(956001)(50986999)(76176999)(77096005)(11100500001)(8936002)(85426001)(50226002)(19580395003)(19580405001)(5003940100001)(47776003)(66066001)(8676002)(92566002)(7416002)(105606002)(16796002)(81156014)(81166006)(68736007)(87936001)(7099028)(921003)(1121003)(4720700001)(217873001); DIR:OUT; SFP:1101; SCL:1; SRVR:DM2PR0301MB0703; H:sj-itexedge03.altera.priv.altera.com; FPR:; SPF:Fail; PTR:InfoDomainNonexistent; A:0; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BL2FFO11FD044; 1:mMQv5jcas79ztTFGLxn3L7TB1Nj9vJaMa1LmX/fNE9YWWBAgNxmSQQR9nXO1x1AYedckxKrL4MljPI7CQRfmwflfK71hvRpAqXc+yW/szj/jPXVjUPK9SaKVk8nbl34+SSvAb1ImTtk7zc6e7mP/4ge95hAaQ4FcdfiQ3YqlnQXHmrnk/N9j6kQEB+1YqLde75B1Iit9JXJLW4fb5dGyCYcAtZ1eG/qrvOPknYou23ZemLTEx9n3RfDAUPXX94PwSmPAyIiqdhXK3rUJz2Uf1AQ/tit6IwUhDZw0uOrLRILteo7paWNkQQmILkTIKEUrf1isEVwenB00Uus3UVpRlWhyq0hWsUwjwEkSOrxlAbZ0AgrLDhNUGkcsdYrhvPznSQdHmhld0zt9eP4rE5WqBs0rlV6b39+gszRpWi/AGbR23CfX6MPdADP2yQVcAf76IcIxNFlab0XVedfFcDnNVGavanuLzz4tR3dt72iYrxZ2NLK3OWx9mNdzPVYFWJf2S+H4XtNacIGrrSeSjZ+v6MxPsUUATfdISJyGAiLtg8hFBMyNS3paTW3+dKatvKKl9qZ5pEtUA17tHgawpCBEfw== X-Microsoft-Exchange-Diagnostics: 1; DM2PR0301MB0703; 2:hoMvwRzoWS02GsWHw5/yoQtQOSxXjwHSOmDd/NXZ3kMTaqxYwrbOFR7LGb4RG1VCqQ+ICLrJKreyEStZa8UF3ma3VKtPqTqoJcXf2b24KTaHlDovE6M932cFjzWoygow6I/q2BSWzieYtfDHq2xZ9nB981BKdcRwsnBO4FxP0I9vAxZsPailXEy5ss8uzJ5j; 3:To9RPTiJm3yWlwy4rOj3Ux8/XkK1yaCz77aaraHwgWcuzq6pHnEDgdmKk5e7yZl/Yf3bkTcMJhUftQOsHeyJDM7QCCi46MGHMzYNtUVY5fIA020qpZlIzRAd5IBObVQmHDP9nZyKYCh8ZXgCf8F6L5O6Dt44byjpvfa80BNS9pJxe6AvxUAJYJbm0T98d8/kYBqNYO3dR+k/z3w/33vTMyTiuVmSjAsl4rxWT36vkWWX9m3dWO9nn0awyWhIKrh3 X-DkimResult-Test: Passed X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(3001016); SRVR:DM2PR0301MB0703; X-Microsoft-Exchange-Diagnostics: 1; DM2PR0301MB0703; 25:a84o3cBvY+UUVs/CDhn8jfViq6RN0kTjX+rGlN6Nr4lfUCRhtjlgtFQosunK8bQgcymKRHbDEjRt7LfDPDBcJ9FY1MXZaoqobEnkED36kHNr3UH+4jObgGISmTrsAs1ozckEn3NI7pgPq7FKf/V5X1duNIVYz2HB1iZn499we9iFF0k4vhZERaz2cG4DtvZJWCFqg0xYs9V6X4ErKN3yaJ+Mnqs0g4o1rDnxVo5wi7RupZA6qvI17aIsicRyhiPF0I8yT6/ZLbmYYyvv/LqA4qTXi2EdLEjFR1yZGnB0PKbNtoq2uU//Ny6RTG7BxbqP++hSHOb/mYaNR2Sy5vUKqnx50QdlpW7we3YGpvunR1gdt3dEilW80agXD7K212jNwc0wkMifveC/HlAPfarxUEf5GzmnVrNHqo+n0f1wUh2BEhILK8cZms2dPsZQ5XO0AqUjBEePhmA4B6CFAtOhOBcM6S5gycGih2h/WpQ33slUFvza/LPBMzI3+lf0IVoSreylSEk8ov45o7fso/Y3k0iHfGSiVKZYnKBUHULt0WlRReG1IskUcu7tCW5yO8mfgqi5xglBlePWuMKgTwVJqSBLiTJL6wSI53OSefEnGjLuOEzGWVme2gxCsz7q/+kKNdzUIVnouJsUeS853uCB254E1X8ec3NzY0xdpFLu5aZsEAuwq3pRhek5j+fc1VrpFY+LhZPkM/dwj8ny9nOepPPrPyHEU1qxDB6thbSafmE= X-Microsoft-Exchange-Diagnostics: 1; DM2PR0301MB0703; 31:+4M2jgjdBM6FmWmBlRFKX5mgjffa8lJsZyiPV1WKDI8Qwqwu4JUgUxWMvIwfuwt6eVLrRA8DAZp0EtNDwky5y6g96xQ7siOikNgWkohr2MWXrYbEGuAQgwz7Ny1vRJhRNJT+/G3KHtxUltqS++nOwh2PzwfiqbcPUSD/kPoZHU5ROKL2ecVBvfxaUZA8YIbZQPW09GIzCRn2PpCV22OG/jQXRNkXIITHuXcnUu+w+VI=; 20:+fc6uufzkGvlyhQVhIWeHeIPF9thAejT+yNWFfcBdTuViGdaHYEYlvH2p49vOwVZRCpoDLs2QnQZkUHRms91EiX8OSY6TgMu8ILT+47LDHeU7q4EFdjbWt61kGBEdZHie7g6s2JwSYyV+hsfREEWMbcmvhzGKIaWs2F1iipQvtw=; 4:eGbL/jqdzWh3kmVn1Wy3aS1xQBCsNvVNdlyI0svLnBjlvu8JWnxjAQf17X9MrIogsJoe5/wGR8GNmEojB5uBqxN+HtxCOZdsczhBDmRB0Srz2PeQvh6lvQjRypis8vrPKeL9akapdUuMwlnPltX/oVC2TK9QMGVHfMp8WkAY9OSO3v3qHNNZFS7D5Npfcsta/WfKzONTxKnrZvkZRdr+4LB7LfQtTuAfdXgKziLkgEvZHKljxrobzsvi2Ta1qHCrq8ykwe6g3JaRgRc45U5nK0r1EP1VAaFcOrw16Jb5amPM2VUIAhD3nGXhH5/9oy2z1RB921IC+LAYxUftkQtDewTuf3135743W9Dfm/pZaNR7gkQFEUSYxmyqckx35AgZh2/qnxg2Lvo64iBaOZWRUAJj6wVr4p0/CJN3gd3JmAJsKpZ1ztc/pY0NH9S2h7WIdh2+Y1dd3MxHK7cBWR+I1Wa2BYeL4toLdxH2atkpkHaWlOiXu+zwb0j3JbnjIKJm5MaKOEz3XZRprBNK8n62iw== X-Forefront-PRVS: 0029F17A3F X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DM2PR0301MB0703; 23:Egzie0kj5THn6d2MlL8httKjKTjClfQg9dasFCS?= =?us-ascii?Q?YEVEBQ5ZDUhJTrbCVLUkmQcP6NDTk2zmMSfVMjYbeld52CUf0+b2elWnLA6m?= =?us-ascii?Q?y5GwroOfTveELkGR65k6TpuPQTLIRQf1GMQMPEVSCAZ3xaeS/+MGSzRDAYii?= =?us-ascii?Q?cnxB8sUteZq1slbvZE3S3cuMVYxeY7892UaegDhz8ImcLgS3HewsQOXmB7x1?= =?us-ascii?Q?nbz2xUYQzZksMqNE5LccCKdEwvUdqBIYQTA/f6N+qyFk+fA7LxYlee2OkM4O?= =?us-ascii?Q?f57g52rlFsNjzygWmGKRomX/YbpPuw7OSmXJukjIWYAStfL/YA2GmJLp0ahF?= =?us-ascii?Q?tTAcNsqB62/Cv3w77yj100Lr1clLwLUo+xtfPSgqxan81eraQ6FZh3auRUuz?= =?us-ascii?Q?/FeMxXroY/4k0ZC+hwzsgy6/WYUUxSugnPvkPNsmjQ+smEO8l9VmXGlqHRFN?= =?us-ascii?Q?q/g6aoCttnkVqpWNiMkpNrxkldN0Y+LkZOgDOpF9qqfD8gEC3VuY5+onrJBZ?= =?us-ascii?Q?6n1xYLTsr2f05fQEVT0jFspToMnCe900g26fkG6Kf02Hto8zhpquCxlrepkW?= =?us-ascii?Q?bucq/tAUMOKUrOZVlQVn0FnE010WeASVEVwM0GAtQwZKnKOAu/uyoSEE+/rS?= =?us-ascii?Q?ZEfXfx09ehXqP7YQRSLsIUPIKiDMdX+yQzoDLV9MtuHpOapLtBPp2BALJlZz?= =?us-ascii?Q?Pwsno9qbkh9Nk8/HGB7uRIdPt47Z+nyl05AdoMnobjrproKsmSwMDLvZgSMK?= =?us-ascii?Q?KMVosKHfsOI2ofxIkun/FkV/vjKOcUK2WTRtYV5NFPixKxVlJIWcqGs1GZtf?= =?us-ascii?Q?U+sTE0F5fHMv4xByCCBAM0UfDrcZ+WAVcgJA365n7T6JdVGc5HfRCxltk/p9?= =?us-ascii?Q?XQC4EpoWIfWdOaNrMlK2JJDPa4GakpsDta35eHsJ4xlivVMEXCGns7sWLtmu?= =?us-ascii?Q?K/Ox32j5c+iW5iGcq1jIxoJ0MGawlrfQqfWSGsZMBcs0GqEzf/jV5Y7QcJWo?= =?us-ascii?Q?aYxDXZl1s9c4qHHCE/itf9gClEYxWalBYGgli7FA/7TAZU4nPbaWGD5E8Bqc?= =?us-ascii?Q?K1rCj5cDeEVs3NaUj+aOKc388N2TiQE52EJKVMiDtGYymNktmf/x/GSdcpft?= =?us-ascii?Q?0dTzH0mbf6u1uDKBHn+jAefT9QhIc0IlYAr7PHv4Ol1v4cbBpogBiRj/uIvG?= =?us-ascii?Q?TmeG6DybI//xbPSHtcM3bpcQrISmbS8usykhpQk1Ju3vnRIEP36l7vePe7tW?= =?us-ascii?Q?UVev2PepR9Fz8nbVWnsWdpvMRC8xa5QaApwtofPxSZGaI0hDmSf37pWsc39/?= =?us-ascii?Q?9S69luyoTdFC4us1CX+/QBdWuEqRLGwQAYVllH0uYGl2Z1OETqxXAS3umMHZ?= =?us-ascii?Q?InO+5c5f6upBtQRKlfSOd/GxWEzs+qxn+RHcGtAkraVyOjXhEUmKLtsCTgZi?= =?us-ascii?Q?T6MxD10yYu/Lcg/VgcNT3GRatAxmJ0FA=3D?= X-Microsoft-Exchange-Diagnostics: 1; DM2PR0301MB0703; 6:K4z13We3z/1V5llr4x6VxJgrpYTySyJ3xDo/B19SONAFI1JJnTjENLzr6LijNNM5q6x5ti9FeXgu3UveNkT7ZBbFEugYuClmnPEN/qFC109RYFdyFjZZza6ypDC8aDcoWZHXVhuam9OATAKMHxMIZZTeckmvY/Zj0hmqMzuwPY4xgb9UsfaFhb1ud/osJC1J9KVDqY/qIVroOYU5NMnPbICoqIgQlrDQ+r/zuFWOrVjJQyifiUk4SWjPfKtm+zT4yITl/kqLSt4/g+g1i7E8gPZOcZOPpQn+tshmxdsTQwNnbFesAE6+gpa7/deYrILZdpXbBIpL5gRvmSph7W2/5w==; 5:e4PnSeF81W9uD+VGJJMe9Sv/NXKEfpH+DiVRodFhMm5eoxwMqD+i9wW8BaJovIJag9wYLdLb8/rVOTul5jARZZ6XHtNkGN9veu0HRK2hR7AwY6twXvcEmNiN3/Xk8Y4hSluzG8l0QRgUjvrvW0/pBw==; 24:gR+FvCfOasGI6hGU1SvZXAgAYp9kv+twLHlD4R//gf8F8cYj3MjwxIwe+M3Txra5CqBvLItYlRjNXm2sMp+eFARIPMmRfm0PKhKlr4/Mllk=; 7:KuoQ0DtRBgvsWMPsA7Fa0URjSIigjRl1UGdeAPHZgy5LWhgM/VSdxkzzW+sQy+js5XCG8FDa2syo6rMvv3K9drBGQ0dPxrbi5S4OPsQW2EUZjgGHazI+/mnbCkBlb+EZEJM+uvc8Jf3qs2j9VO2OIXC2Mk7/qsvrowmVLHakLPwILqSXwYiYwBFUR+YakXyqbxFRny7IwfGmVIHkh+rm1w== X-OriginatorOrg: opensource.altera.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Aug 2016 14:36:23.1652 (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.227]; Helo=[sj-itexedge03.altera.priv.altera.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM2PR0301MB0703 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20160809_073647_663646_D9DC2E30 X-CRM114-Status: UNSURE ( 4.67 ) 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 --- v2 Cleanup PortB initialization by moving device tree search to top of function. Improve unhandled IRQ message using WARN_ONCE() with IRQ#. Change KERN_ERR on device tree not found to KERN_WARNING. --- 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..289fd81 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; + + np = of_find_compatible_node(NULL, NULL, "altr,socfpga-sdmmc-ecc"); + if (!np) { + edac_printk(KERN_WARNING, EDAC_DEVICE, "SDMMC node not found\n"); + return -ENODEV; + } + + /* 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; + + /* Update the IRQs for PortB */ + 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_ONCE(1, "Unhandled IRQ%d on Port B.", irq); + + 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_WARNING, 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