Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1758163AbcCaSpa (ORCPT ); Thu, 31 Mar 2016 14:45:30 -0400 Received: from mail-bn1on0090.outbound.protection.outlook.com ([157.56.110.90]:6942 "EHLO na01-bn1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1758044AbcCaSoQ (ORCPT ); Thu, 31 Mar 2016 14:44:16 -0400 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; Authentication-Results: alien8.de; dkim=none (message not signed) header.d=none;alien8.de; dmarc=none action=none header.from=opensource.altera.com; From: To: , , , , , , , , , , CC: , , , , , Subject: [PATCHv2 6/7] ARM: socfpga: Enable Arria10 OCRAM ECC on startup Date: Thu, 31 Mar 2016 13:48:06 -0500 Message-ID: <1459450087-24792-7-git-send-email-tthayer@opensource.altera.com> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1459450087-24792-1-git-send-email-tthayer@opensource.altera.com> References: <1459450087-24792-1-git-send-email-tthayer@opensource.altera.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [64.129.157.38] X-ClientProxiedBy: CY1PR0601CA0035.namprd06.prod.outlook.com (10.160.162.45) To BY1PR03MB1483.namprd03.prod.outlook.com (10.162.210.141) X-MS-Office365-Filtering-Correlation-Id: 6f9d5d9e-be2a-4edb-ea39-08d3599473ca X-Microsoft-Exchange-Diagnostics-untrusted: 1;BY1PR03MB1483;2:hWbKyB7Ni7n8KHHuyEXZPVYR786kkpOaISJEcHs7yka4U/ivHrPabpCtgY++OlYfffSItVpMSX+foDALCFSvAa1bAwTNnY6t5+am7eVKP+oKthR3ZchKRy1VgavLKqUs/3K+oPzUOxutCGIEQKibMrC414OsIhGXvLIUWhjSA0iJFR6khoAi3dXFxPI25YbX;3:6dKLQHuneexciTpmVm5vlFszeesau6qsXAjO14pN9SHqRZpBtlhAAH3p5faugEm2+olHewtr/yUNAGOhq/knABgVtDuG4wiGlrFCJu6RNzA2LWKAuFXk4d7GE6/HHmJZ;25:oE6gZC1puOO4bsoTde6SDLSUTasi506eO5O1hdtTBuNfCRTO0GVXVrpfKkBfm/xpM1V4m0swKyWio3Nm9VoYxeaGWKVyhseKkKy7eN+gx0ymHQQM9MYYGsqawTjik1ME4RW/l017Uiw5dFE6O1L0WWgIruBjwpY10j+FUtuR1kbwDBjBBGE4x7vOMYTbsg3ZYO0EOdl49qvIhrA4Ag4njRUFVTXSeKyNwIjBefVwDO420DbeHhYH7RAGGHU4v1ZFCAsmTkYea7gAUDMFjTOOxNmSf8diEU+89kmEuzgLfLFWYOypjm0friZaU9ALJDiXO6R0wfiBjKSHP7ILr6A7X+MpZ5TtJbhn5c5iuNNwJ9s=;20:MDgR+HEEbtdQL74r9hGU8x+kUf87NZpIg64KUd0ePCo9+3r/JjRRxDoRfSdUiQSTHSoN+TCVVfv3FgJBIVGxFSOjXkMGhMi8TMfCsFDItF6555PJeYGKg8vHBR7wo4B+PSOm+MDwXVG3kfI+q+GBs/ea96wktqqavDfezrLNda8= X-Microsoft-Antispam-Untrusted: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BY1PR03MB1483; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:;UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(2401047)(5005006)(8121501046)(10201501046)(3002001);SRVR:BY1PR03MB1483;BCL:0;PCL:0;RULEID:;SRVR:BY1PR03MB1483;BCL:0;PCL:0;RULEID:(601004)(2401047)(13023025)(13018025)(13017025)(8121501046)(5005006)(13015025)(13024025)(3002001)(10201501046);SRVR:CY1PR0301MB1290;BCL:0;PCL:0;RULEID:;SRVR:CY1PR0301MB1290; X-Microsoft-Exchange-Diagnostics-untrusted: 1;BY1PR03MB1483;4:B0jePC1wZkqojdFn48IrpU84FFYs6eowgwwZD5jTe35fiXrRbpzPY1QHv5AQZFAUFXFg1YdIyPUbQ0MZZW7gaWsaFdzZmIX4Egji8jYRsCGGMr5+JaHbNVI+qGFlri6Oce+w+wiY24VoYYeJ9+1GZ6BERm6SImYEvyK7LPNvEnfiKd+J7aYeOp71oJTs1cN7/1CEe5YFK60KdTFtc/B23E1gVLu1aBDeUYMVfMr7LbN3WJEtqcMyoNPH9Kxxx4n6WH1ds/BEy+vf5bKPspwp7upIsKo9vL2E7tgISYcJTslNRn+RdjzvVfV8SbQOLELEN0y8Y0Ve9V5fIKFBJHiby693kza/sklPAIicRva3PGSdYp/fet+eQkFhybtspIY1 X-Forefront-PRVS: 0898A6E028 X-Forefront-Antispam-Report-Untrusted: SFV:NSPM;SFS:(10009020)(4630300001)(6049001)(6009001)(66066001)(19580405001)(19580395003)(15975445007)(5003940100001)(575784001)(5004730100002)(189998001)(2950100001)(33646002)(107886002)(48376002)(42186005)(47776003)(86152002)(229853001)(5001770100001)(50466002)(2201001)(4326007)(92566002)(2906002)(50986999)(81166005)(1096002)(76176999)(50226001)(586003)(3846002)(6116002)(77096005)(86362001)(4001430100002)(2876002)(5008740100001)(921003)(1121003)(4720700001)(217873001);DIR:OUT;SFP:1101;SCL:1;SRVR:BY1PR03MB1483;H:tthayer-HP-Z620-Ubuntu.137.57.187.33;FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics-untrusted: =?us-ascii?Q?1;BY1PR03MB1483;23:XckKKT/9VYr2yzhalD51l1qkMBJN6wTO9Ujsc9jFx?= =?us-ascii?Q?rV/1C8osrmiJ+ODEv2/WfxPkedWX0W0FMtXB2RNpWfI4eVAsmVEXWGiVdhLy?= =?us-ascii?Q?0GNgAZlGOhg/0Atdgr2u9aXv1846f6HRS2HT6F1U3eDxPeByBefmtPabg6F2?= =?us-ascii?Q?TWEgwLbpRWqFRzxL0BF6jZK/HwqI49zKbje9vIheAF2QaxHgV4Jl5DjqFdPH?= =?us-ascii?Q?3eG6YJ6tLGq0ZuPCtVa95iIn3RN6KxsjCxBrccj1oSHTl84K+mRh3explPqn?= =?us-ascii?Q?qMruNdW6IYnchkAqU1NyeZui7ZlDlAV0Qs+S3sYqq/fDtsQd3OhJDOnBQMIi?= =?us-ascii?Q?MxNP22mnVUOW6LDjBfOht+TN28tK9yXKoAEiJPjfX5oMnVfbTc6FmoRGNwwV?= =?us-ascii?Q?RWW+au97FUy30xfoOVIuLAWnc1/LDw/F2ovQQsoEROpGW4X1OMCWUGZ2TxTa?= =?us-ascii?Q?eDkxbKrzmkEXx6peB8OLxffEoDf3s3G9wp1Q1WXOSuEOdQFjyQYfH/YlgYbC?= =?us-ascii?Q?x9P8FUQaRciP6TW1b+6hbprqoN67FEnzesDuptwlJO5dMP67KnCF3OpMyedm?= =?us-ascii?Q?0+jgPhL9p7d5ah+x/XJagVJg5IlwsEDtRyYQW8EXrXzsgL1J98WFLU/KUJow?= =?us-ascii?Q?y8+OCAIlnK3UFEu7c08UgIWVoUFf0ALonQl0pauvib7z8Re8RDmGED9yoPaJ?= =?us-ascii?Q?pBA9T9tdoprX+dVc4BHgBZBFd2NurY3WNYMocP2ue1NIRh0np7guWvMbFMPg?= =?us-ascii?Q?p9LU+wxP7sYM+HinbVCOPSKF0Q5GTr7ZO3l02dAii2KeE68JNZaGN94iqSZo?= =?us-ascii?Q?0vY3Z9Xlm7q37DF3fiPnacYLI0mNTxArIpTZFlJvPbSOP0NEIOPdfcQri5ng?= =?us-ascii?Q?z+FkEIQ4gSfzgXIVY+Zhb40aqFf6jzk+LOgoEBIs0ajYMJpS+dT0SOAeQsSy?= =?us-ascii?Q?7SUwJRm5bBTDb1eIQ+CIoxhiiGrGWpCT6GhftY6UYSYc1LwXuUn7uooimWE2?= =?us-ascii?Q?O3o5w9eUFKy80UTKdY7iDT799UcobxVKAJmZVaKEAj7jwWuQGeru8GMumBz/?= =?us-ascii?Q?Uy3i5M0KQZ564xEcRGcTgOz+VofCw2c4y24QhKqNiAFoPO9gYjN4B1z4B3O6?= =?us-ascii?Q?HfanwNl5kc=3D?= X-Microsoft-Exchange-Diagnostics-untrusted: 1;BY1PR03MB1483;5:LAYOFdgul0nAmN9oOPiUumC8ztVHQLaYKZYNteqbx2TjQAaZg4jyyFiEbe5qtrpBJER2HihY9U2ZbN4b70EhU3OjV2tyJBDzcvko82RelouNSOE1abmSF+vb2b4rkpjucM74rBVgpan8K/Iqh72C+A==;24:KI9xidxmBZjHRfLQLAODMj+VKacF5Ui78rLgHYRpKsWTR1RUwWRgmBhKblChcQSQ0IndagcXy0Ljj9UVsqQT3sKw7nyuAScgOdneF4lGAh8=;20:VWElaFErA8msGcPCS4WTZ/tzvmBtybPx12irT6wnVQqWxHSzMOFPYN8J13I4Z3NMlsxNlUne6Fd+GPpYfRUry8vtzmV/VO1ipnGGWUEwyO6jWSpgL9LKK0Lz62MYjU8BbtHHaXexsAp04t3356YHW0M+iWD4X0hm00sr2Sazqfc= SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY1PR03MB1483 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: BN1BFFO11FD042.protection.gbl X-Forefront-Antispam-Report: CIP:66.35.236.227;IPV:NLI;CTRY:US;EFV:NLI;SFV:NSPM;SFS:(10009020)(6009001)(2980300002)(1109001)(1110001)(339900001)(199003)(189002)(81166005)(66066001)(47776003)(105606002)(5003940100001)(50226001)(5008740100001)(2950100001)(16796002)(4326007)(107886002)(956001)(3720700001)(2906002)(33646002)(48376002)(85426001)(189998001)(50466002)(2876002)(6806005)(86362001)(229853001)(15975445007)(6116002)(4001430100002)(92566002)(1220700001)(5001770100001)(5004730100002)(19580405001)(50986999)(76176999)(77096005)(1096002)(87936001)(19580395003)(86152002)(575784001)(2201001)(21840400001)(586003)(106466001)(3846002)(7099028)(921003)(217873001)(4720700001)(1121003);DIR:OUT;SFP:1101;SCL:1;SRVR:CY1PR0301MB1290;H:sj-itexedge03.altera.priv.altera.com;FPR:;SPF:Fail;MLV:sfv;A:0;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;BN1BFFO11FD042;1:G+jPtT9uO471GFzJTVSX5HjQoqgtHfpgDOdq5IYtp88alS+R/v/GzfpIj6nRFyHuIrkL1z3c860mGeOZ0GnVfrBa/VKnVZesfucj6SAOeZApHT96CCx2owpOjnN2bP++pNGfWRMY+yDo8/G3UvaWNxVPYtiHLr+3kwv3B0gBkPFjrkJbiLSFrxTP9wf17ond+0aqpp+Tw8Xz+baHrsp0YVA858AXaeI8mOmws9FxJ0HSvVSSAmDgIO51AdafkV9j0mmySPbLP0nRF07nrh/dnFZbddHoDaALlGl5D25X+KAMbaHf9A9MpCOJdYsngIioPu+6l21ppZIjlpkymzpYDKmUGmxnHIQefh2n/hPB2OrMlcenpngu2nFpq9Jo60ZkIKDARmgJ98GiHullIjznvqEjiUf6hWNcgaOjv4Psi0Cm5K5p9L6IlePgw3T0+J/tT2T52x96Q2oAVOIDDYZa5KXnJuaAE0QBeXkx3F+dl3YFDtm7Xd8xdHWUTynGOSfd5e33VDrbWlXpr1Az7T0uyw== X-Microsoft-Exchange-Diagnostics: 1;CY1PR0301MB1290;2:vw7qCjoAkTi/CMAuIgUPNr0OEjdRwfurjf0VFP9zi47YyAgAXlyI4WrtGylovCW3hgjGtX4NKqtu0vIliTcNTyQbARDE5X3DCOO2lKAaqSb4Cg9m/oDKpZDrMT1vJfsBRleJms2bFXrVBHV899O+3AHMVFwavrny5ANw/5RrGuK/1RHHf5OOq/zN2+FwoCaU;3:zUmqLmL+m9j3WIrjs3QdCz87BTbWOIWIKykhXzePefH/KYd4NyVzPenAq5wBPLzVeLCkfapycFfHAYi/Ce6JRQp0tqjHOwt2ZN73AcU36lRTS1IeKlzuHaUzHaIEgPgAgauz0zWVrNVskhrmulWhuylFvQZs/Yy8d4Zcw+v2RQHS0eN1E6iMsqEszt1743v7mSkIPJfMKU2H+LFzSEomHP088+0nZqNx/UcRZKEUisGB1nikqVhLM4KZH8+ZIiZH X-DkimResult-Test: Passed X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(3001016);SRVR:CY1PR0301MB1290; X-Microsoft-Exchange-Diagnostics: 1;CY1PR0301MB1290;25:FkmEDqPi84W9InMqpn2fFSxTlC51PC1d/tBkXiTQ63CqCUtxjtSC+dYQujiQ45xIfg3uq9Om0NMYA2IKMM9FGnMgkC9H3u+eBTdqVX3irS/0soQw8XM3TfXIgKXeO66u3ncztUYUhVBCSNqrldLJifGkl2+5oo9xevWdMWEpDftm3sHrf3H56srGOMfTicCxUt53+Yg2t6TuURT/ANMkWza0SXyu3QRRfvPoUKDPBkj+T6+vnv0Q9FQHOZWPZwCqxzi4laJeTmUege7DfSnfWpkSMh7Y3QDrwtRCSy1uCWI50Annic+vliwN4u9axf6HGfxrV4LYbmi20rhNG/7Aw+5NBG3batVZZ6WnzSTzvczu8I6t1bNKyA3l9G1jcEH8liGOx7VuNCF7rgX2AIN3sS0oqiKPYbN9WiW0ECjuVEctQB5DlA4uRCT2AhmjSIAXYfFAuaENzeRa+aGiMWzhl9neFjBluInFjzXW8RQLJu8+vGcLa/blwJuf6AWEATwnXGhRBWVgceJys4ETwlQLvA9qUP42vBXXJX6+Q0VIRyoQPZSD/oA5AzVUZrcAsY9G6lYYYwJbvU16mzybpEM5uH1pRxfMHxECkXwA6ZBSPH+jpYhCVFyQRyIqybfeSorjSKQBs5iVLYFIYQN0tWE5iNfIRXmeZKpvIYQmot9i3prv1mSvm3OM5BIOukrkVdDmMM7n1CzLVi0eEsAW/saIAQ3J0ykp2jSZlkVuLIG93/U=;20:E+nyaGtACGr06CyLitbSWziwYUfzIdCCvJXRj3x/k89tLcvuPogO/aX1AsSAv8JY41YDstEs/+ZiegIdQZOE4hNM5LK9lE6ewklXOCo7a65uf261OkbZa7J1KgqVOcdxpSTlM9W7Nlqis+pbSbsin+PDAVh1YyivinfLp/hhDKE= X-Microsoft-Exchange-Diagnostics: 1;CY1PR0301MB1290;4:OLWCLSCwjbNCr+ZFMeKOKp/Uj3rlqYKZIE2gEk0zsrZp24Z5wwSLFJV+wdi1oiUdeycHVhXu3NV3ZHUT7AX02c6jed13UWrpBPs4GhXBxGmF3VZQUpZcs35cLhNTm+BvmIKatqv5VbXa7TcvnLJdhIBbRT17vVfz71x1pYSxoKyzI6jwgBnHrAGrAleZsTSUPuOLVjNFlbx1I90F1WmJX0qPvdGpPciIBevOXeqXj2WqfDz6dx8iRL8NfDhWTibRST0lTlP3ZAPZaenCfM9aLJ87rYp/O5LP7L2NwVRFUvqdLFvbHV1G+DmFiVX7Z/mSMLJDNXXRZlg0m0j3PDPOQXM8cycVsmS5fiq6M1v6x7EWBDa2W+P4eYBCvqEwLCu+/Fh4hcWIR4EpX15u3oCPIEfwDsyiEqCp+PiN2UKKqFHAECSlPkaFW/WDHYBQrklgwdDUJC8X4b04ILja+7pnbw== X-Forefront-PRVS: 0898A6E028 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;CY1PR0301MB1290;23:LLuJFXt9u7lrQRKl+UqyOAs15LPsPTisH2dFqJ4?= =?us-ascii?Q?1GyuxlOHhh6Zizot1TMOr7NPLBbE7wpsJu9779QPugQN4lgqz4zit3IZA6Jr?= =?us-ascii?Q?t3vxDYqy69duW0NnongA1Uqs+u6bPspvnlV1VUgirKFYr4zqxWZq3LSrWrhS?= =?us-ascii?Q?iyDg3BHEM2gukDmLNZLT55ef07+mPCwrrgaFjprotSgALFdlOu77TmjKyGvx?= =?us-ascii?Q?WHPC1HSTN8niec0Hu1h0av7GIfazalJW3LVsz2fYUu381Wq17mwHn0YDAQU4?= =?us-ascii?Q?pdoMd0CnAQKKBVaQF+1yeOa3x4mUxd0AhBDrCj4L4nbV4GoOyB3O2shcpU9v?= =?us-ascii?Q?oTtYTtryQQjgAu9xVHtGpxMZzxxu9aUgV1oU7tIEXd9bVVvEcqUX2AWVxlAb?= =?us-ascii?Q?743fIWv697KroO46iZLeOukA66A6ls3xFGjavrqNx97aGOaGIiT7qI+m4NGB?= =?us-ascii?Q?sdXiqVgEiEJLi+HnRONuqCjNPs4Yv26ntf8YcW/7YGA1lMt2sirtMb310yyl?= =?us-ascii?Q?w70YnVX5bFDXl7mA4f1jGLDvMz78KOW2A+KXa5DlGLeDWCKE7gI/9FzLxiOz?= =?us-ascii?Q?cO+DNN/wG1bFFfbGCLprt0Oc4stGMcMa3HsUN9VzAiopsZ1RfyWXhBda5GtO?= =?us-ascii?Q?sarH2JcFn5raBeHpQggR4MlGpCyzTLxc6LhSU+qPBcZHvqhjeLxy+Up0zR3x?= =?us-ascii?Q?haRz+tibt+rjhmKSNPHXAARU6BbFVqZe8y2Twgpbd9eDP5gQXll7RWyTcB+R?= =?us-ascii?Q?DDR1k/EmNfGdV0aYLX3OlV04Zt0jeD4zehGLVW/7sVMd0e0PJ3lQwdgrXpr3?= =?us-ascii?Q?AjBBcMVqQCI38LqadXFGDnwRyEFAlLyHPrKAH2ufspdeH3fYCoP0j1KaJ+w/?= =?us-ascii?Q?XBjbiuewgoZXn6f0ftmLoH41WmwxqJgGnVZvLBaNJ6iSDBtTF753QWklVRYd?= =?us-ascii?Q?ubQiBjoI/iZoWcg8W2HijApqCntuWwO61vEQLWVCWvQE6sa3RZh0eVcTADS+?= =?us-ascii?Q?3oz7plsJ94pO5/T97AnYFicWZN+EhgyefhKSEWlYpMjVGYYfUKzMmWkcmoZn?= =?us-ascii?Q?jp9rN4J7akrvGyz1xUXkM0OFCXpQqhQZhnth411AzdoC55RnME98KungvHPq?= =?us-ascii?Q?K91Qar0qVFHoBWEnXC3VzCN0FWipHaGU+fOz5WNW/cStA0MA6acn4niebaKY?= =?us-ascii?Q?i4Uvrwe3uqoqGQ6psT0YPlcFsMVoa3FqnGLC7CZYoK6rbDYbyy6LKHo/9J5P?= =?us-ascii?Q?BFgO6jZLWA7ySBvMMueVNvIphJ6IUwxe8a1mU/cAyEUZbPycNsNVXrtm2lDh?= =?us-ascii?Q?xCGUkrxQ8gB6vRhRvRT5eKPDbfjjQ8fAYlDerpSDMVfresMjo1Xe0zf4pMOv?= =?us-ascii?Q?qu2dN7eYtPnyrMgUESkkDwTXt53Rv2cYfq75KuconrjHrNv0hUmlwqNImpgN?= =?us-ascii?Q?fX9DpWkhujg=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1;CY1PR0301MB1290;5:2Tg8QOJcjsvJZtxoExQUCF9bhMTcgxO1SsE4c1uNyfTX/D9m6lMtwjSepRygMMIm2KEF1KXw84qR39xODeRRLCXbxorDTG+WbIEzyPApueVXN//rfH4C25n1ISO58fh1tZTsgrnV/oUsQbvP7a3QZw==;24:JvGsx3eX0k3m0c89h3qHBHw7oOJzsjX8SkgE6vPuymkiYBnPDPsi7aguLHyQxOsQhH0+WI0FMfvL5Tv3MS36hSU6kGrRlg3bPTaVtensJpw=;20:4BkkoI4EwVSLNAnVbO+d2y5T6yvW1DM+Jn+2yLeYvdxVtgfQknBsD9hr0CCd95YK7q/MXx5F8Jc1Z5N1PfOTFG5sPibmz0pCW0UhOkPPkp4R+aJhIwtseC5xh6AQq7wegBEV3hm93af7euoDNRouhURKwrFOKVNbJ9J48P0ZZt4= X-OriginatorOrg: opensource.altera.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Mar 2016 18:44:11.7869 (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: CY1PR0301MB1290 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 4659 Lines: 164 From: Thor Thayer Enable ECC for Arria10 On-Chip RAM on machine startup. The ECC has to be enabled and memory initialized before data is stored in memory otherwise the ECC will fail on reads. Signed-off-by: Thor Thayer --- v2: Add Arria10 ECC block initialization locally. --- arch/arm/mach-socfpga/ocram.c | 128 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 128 insertions(+) diff --git a/arch/arm/mach-socfpga/ocram.c b/arch/arm/mach-socfpga/ocram.c index 60ec643..d4a524c 100644 --- a/arch/arm/mach-socfpga/ocram.c +++ b/arch/arm/mach-socfpga/ocram.c @@ -13,12 +13,15 @@ * You should have received a copy of the GNU General Public License along with * this program. If not, see . */ +#include #include #include #include #include #include +#include "core.h" + #define ALTR_OCRAM_CLEAR_ECC 0x00000018 #define ALTR_OCRAM_ECC_EN 0x00000019 @@ -47,3 +50,128 @@ void socfpga_init_ocram_ecc(void) iounmap(mapped_ocr_edac_addr); } + +/* Arria10 OCRAM Section */ +#define ALTR_A10_ECC_CTRL_OFST 0x08 +#define ALTR_A10_OCRAM_ECC_EN_CTL (BIT(1) | BIT(0)) +#define ALTR_A10_ECC_INITA BIT(16) + +#define ALTR_A10_ECC_INITSTAT_OFST 0x0C +#define ALTR_A10_ECC_INITCOMPLETEA BIT(0) +#define ALTR_A10_ECC_INITCOMPLETEB BIT(8) + +#define ALTR_A10_ECC_ERRINTEN_OFST 0x10 +#define ALTR_A10_ECC_SERRINTEN BIT(0) + +#define ALTR_A10_ECC_INTSTAT_OFST 0x20 +#define ALTR_A10_ECC_SERRPENA BIT(0) +#define ALTR_A10_ECC_DERRPENA BIT(8) +#define ALTR_A10_ECC_ERRPENA_MASK (ALTR_A10_ECC_SERRPENA | \ + ALTR_A10_ECC_DERRPENA) +/* ECC Manager Defines */ +#define A10_SYSMGR_ECC_INTMASK_SET_OFST 0x94 +#define A10_SYSMGR_ECC_INTMASK_CLR_OFST 0x98 +#define A10_SYSMGR_ECC_INTMASK_OCRAM BIT(1) + +#define ALTR_A10_ECC_INIT_WATCHDOG_10US 10000 + +static void ecc_set_bits(u32 bit_mask, void __iomem *ioaddr) +{ + u32 value = readl(ioaddr); + + value |= bit_mask; + writel(value, ioaddr); +} + +static void ecc_clear_bits(u32 bit_mask, void __iomem *ioaddr) +{ + u32 value = readl(ioaddr); + + value &= ~bit_mask; + writel(value, ioaddr); +} + +static int ecc_test_bits(u32 bit_mask, void __iomem *ioaddr) +{ + u32 value = readl(ioaddr); + + return (value & bit_mask) ? 1 : 0; +} + +/* + * This function uses the memory initialization block in the Arria10 ECC + * controller to initialize/clear the entire memory data and ECC data. + */ +static int altr_init_memory_port(void __iomem *ioaddr) +{ + int limit = ALTR_A10_ECC_INIT_WATCHDOG_10US; + + ecc_set_bits(ALTR_A10_ECC_INITA, (ioaddr + ALTR_A10_ECC_CTRL_OFST)); + while (limit--) { + if (ecc_test_bits(ALTR_A10_ECC_INITCOMPLETEA, + (ioaddr + ALTR_A10_ECC_INITSTAT_OFST))) + break; + udelay(1); + } + if (limit < 0) + return -EBUSY; + + /* Clear any pending ECC interrupts */ + writel(ALTR_A10_ECC_ERRPENA_MASK, + (ioaddr + ALTR_A10_ECC_INTSTAT_OFST)); + + return 0; +} + +void socfpga_init_arria10_ocram_ecc(void) +{ + struct device_node *np; + int ret = 0; + void __iomem *ecc_block_base; + + if (!sys_manager_base_addr) { + pr_err("SOCFPGA: sys-mgr is not initialized\n"); + return; + } + + /* Find the OCRAM EDAC device tree node */ + np = of_find_compatible_node(NULL, NULL, "altr,socfpga-a10-ocram-ecc"); + if (!np) { + pr_err("Unable to find socfpga-a10-ocram-ecc\n"); + return; + } + + /* Map the ECC Block */ + ecc_block_base = of_iomap(np, 0); + of_node_put(np); + if (!ecc_block_base) { + pr_err("Unable to map OCRAM ECC block\n"); + return; + } + + /* Disable ECC */ + writel(ALTR_A10_OCRAM_ECC_EN_CTL, + sys_manager_base_addr + A10_SYSMGR_ECC_INTMASK_SET_OFST); + ecc_clear_bits(ALTR_A10_ECC_SERRINTEN, + (ecc_block_base + ALTR_A10_ECC_ERRINTEN_OFST)); + ecc_clear_bits(ALTR_A10_OCRAM_ECC_EN_CTL, + (ecc_block_base + ALTR_A10_ECC_CTRL_OFST)); + + /* Use HW initialization block to initialize memory for ECC */ + ret = altr_init_memory_port(ecc_block_base); + if (ret) { + pr_err("ECC: cannot init OCRAM PORTA memory\n"); + return; + } + + /* Enable ECC */ + ecc_set_bits(ALTR_A10_OCRAM_ECC_EN_CTL, + (ecc_block_base + ALTR_A10_ECC_CTRL_OFST)); + ecc_set_bits(ALTR_A10_ECC_SERRINTEN, + (ecc_block_base + ALTR_A10_ECC_ERRINTEN_OFST)); + writel(ALTR_A10_OCRAM_ECC_EN_CTL, + sys_manager_base_addr + A10_SYSMGR_ECC_INTMASK_CLR_OFST); + + /* Ensure all writes complete */ + wmb(); +} -- 1.7.9.5