Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756682AbcDEFVG (ORCPT ); Tue, 5 Apr 2016 01:21:06 -0400 Received: from mail-bn1on0091.outbound.protection.outlook.com ([157.56.110.91]:44096 "EHLO na01-bn1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1755115AbcDEFVA (ORCPT ); Tue, 5 Apr 2016 01:21:00 -0400 Authentication-Results: spf=fail (sender IP is 66.35.236.227) smtp.mailfrom=opensource.altera.com; arm.com; dkim=pass (signature was verified) header.d=altera.onmicrosoft.com;arm.com; dmarc=none action=none header.from=opensource.altera.com; Authentication-Results: lists.infradead.org; dkim=none (message not signed) header.d=none;lists.infradead.org; dmarc=none action=none header.from=opensource.altera.com; Reply-To: Subject: Re: [PATCHv2 6/7] ARM: socfpga: Enable Arria10 OCRAM ECC on startup References: <1459450087-24792-1-git-send-email-tthayer@opensource.altera.com> <1459450087-24792-7-git-send-email-tthayer@opensource.altera.com> To: , , , , , , , , , , CC: , , , , From: Thor Thayer Message-ID: <57034C4D.9010204@opensource.altera.com> Date: Tue, 5 Apr 2016 00:25:33 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.6.0 MIME-Version: 1.0 In-Reply-To: <1459450087-24792-7-git-send-email-tthayer@opensource.altera.com> Content-Type: text/plain; charset="windows-1252"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [64.129.157.38] X-ClientProxiedBy: BLUPR0401CA0031.namprd04.prod.outlook.com (10.162.114.169) To CY1PR03MB1487.namprd03.prod.outlook.com (10.163.17.17) X-MS-Office365-Filtering-Correlation-Id: 7cc9d86d-528d-421e-732d-08d35d120ff4 X-Microsoft-Exchange-Diagnostics-untrusted: 1;CY1PR03MB1487;2:hk3irq60099Y0DR+2k8oQuZ42scmnxli8OrwIIBsM8cy1IU7BcVRzMK78mdyWMIVmzY+hgwbapHDt0tqVktMDcPo8DxYcfo//23Vh+sWIwYy0aRYOYTFQ5To/yHnJM2PbCogd2gRGsD0E7FJ2wSFpWz1C5bV5WGvZl+nvDFjM5hPcPyJr3tfXYEr3pnCwxMp;3:oV1DM7kZUq7V6gsvdYe1ygFKvrrazyi+kAegzEiL8BkA/1cGlR6J+Yd13Qh/xdFCUVMjCTfV3nWhcQhldB3QQPXd3tPT+rilshD8Nx8z5aq3AEpd7QZjfT0Nxb9B7Yeq X-Microsoft-Antispam-Untrusted: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:CY1PR03MB1487; X-Microsoft-Exchange-Diagnostics-untrusted: 1;CY1PR03MB1487;25:neAxMyV1SgpAGUzPFbBIufoQXpHcPlfZ7+HwhUt7MglYf2khuhEJjhlfJXZb6bv7IHp8jFBoHacowgnhgZzrjt/qadDG0qumrqjzDsied2liT4bphoQWfH4EEP32NpUOzWJGYT7eXmEEpr27MYSNVYg0JAJNPNQPp8JXL0MfYZuM2RFKQFtthu8942J11vgxbUrIPuTaweEChONHi6aM0pFIfBNVed1eSyJReil0UvnBGeUCN8jndBWe5tZy3BW67mMlcxahcAqO7JYEkb1J8BD3PbJWaFXZoUqn4Qp58w5RNi0AtD7qF5sYfcKO5meJFyGjV2IOXZ0q4+wJeCwf3TreoW8cQrO1Olj3Lw1sPdVe5Af1k4ECAWYv27LDgTqxdsJKO367YHiFoKLF1d4ekxdYO1y4fcAJePTZwpGm4iyQ+UgrjYHIqWwPO8Mv2CvV9VIqN2y+/slm7dLzccU213KZMEFHKTgENAWhGBKKQ87Jlda44D1+fJHJxJTq7DrqFuh43Bw2HwwHxKY/3vsf8v7lix4YGOAd2P0fjO49Qx8xEnJnlOGlZReB0hnlBaSWBx0cpmI83N2qsC4gK7zgo5vDBLHG5nCgwNAE8aBBHNTAdUkeEGDz4X84U7FD7AWiwQJk221MqcUHJlWnWZL3Pg7mLh++lcJRoqYWEPcavGOR3ZsW34NB37VdmHRfPCHMOs8U+Rjt2JbBYnlNvuOFOg==;20:MIANXf9YW2ofsByBnzU3ygz0zUJfTl5g+gmGswWSy57vldXA3Aqi1Lwevp3lUb8RcuxP/nPeCft+ddev+N0NECqWkeJIuvWCwwpKhvDwKN1S7ounAOpgx4ZYy1Zbjrmg6WaTQ0osbjdWO7olVQmIf7EeqJS3sVgjLKiNjRftTcc= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:;UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(2401047)(8121501046)(5005006)(3002001)(10201501046);SRVR:CY1PR03MB1487;BCL:0;PCL:0;RULEID:;SRVR:CY1PR03MB1487;BCL:0;PCL:0;RULEID:(601004)(2401047)(13023025)(13024025)(13017025)(13015025)(8121501046)(13018025)(5005006)(3002001)(10201501046);SRVR:CO2PR03MB2278;BCL:0;PCL:0;RULEID:;SRVR:CO2PR03MB2278; X-Microsoft-Exchange-Diagnostics-untrusted: 1;CY1PR03MB1487;4:qyH6QnpxXTvvQBSqvx31s6rmsAPxJOkyYzzRJ1QLRyzTMDnouDl/iyh50Dg/WU7pw8rwINQOtetCyM/HrBj/lOG1jEkJ1J8PvJ5zsBt2BaYuYm1Mrjy9OqEK/DIC1Dz00cXhrnU/55qapGHPyx2CiASt6JHkK12m7dXw5lP2lF30rZQYzBRIEni+qrJd8gJkC9pygvFh2GXTxxbcMxL+xzso1lvMcruubXTxrOIws72N3f4FGYNjj40uDOjXr/RNDbZZk4TWA2NkTFkvRbbcOFqzuZvCJNHGo+loDdX2UEA9PhZniZ9M/VIOTeTXwvcZb5c1TkTNYL/trydtcFrzNFs6OewXD4mksZ47jsdnrX5PiWHGqw+EEWyGJf4tIvfr X-Forefront-PRVS: 0903DD1D85 X-Forefront-Antispam-Report-Untrusted: SFV:NSPM;SFS:(10009020)(4630300001)(6049001)(6009001)(52604005)(377454003)(24454002)(99136001)(42186005)(47776003)(66066001)(23746002)(65806001)(65956001)(43066003)(575784001)(33656002)(3450700001)(5008740100001)(230700001)(83506001)(81166005)(2906002)(4326007)(59896002)(3846002)(80316001)(19580405001)(19580395003)(6116002)(5004730100002)(586003)(1096002)(2950100001)(50466002)(77096005)(64126003)(65816999)(53806999)(54356999)(76176999)(87266999)(50986999)(15975445007)(189998001)(5001770100001)(4001350100001)(2201001)(86362001)(921003)(217873001)(1121003);DIR:OUT;SFP:1101;SCL:1;SRVR:CY1PR03MB1487;H:[137.57.160.203];FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics-untrusted: =?Windows-1252?Q?1;CY1PR03MB1487;23:OXCNF2xYhj7m2VpDGdYjkGPDcDkRwF/yNldco?= =?Windows-1252?Q?XvajuMdrK1wF6RX7CnLaz3YopdmcR0D+0AQSqNg2cx8wvQPs7KDrfwau?= =?Windows-1252?Q?3kkOWbZ3NhsYsePT9UAtCLHJX6v7H/Mk+fo/2qwmMCyNGs2LOKZW8K5J?= =?Windows-1252?Q?POXoMl8dGKG/lp6a/+VGr8uncUGcQvX/1Ld5T9ahuHYGUyd2QpLoeX1e?= =?Windows-1252?Q?vVcVSpB8bEIatI/jsLuk/OMmKTJkHf8kEvnWvcG+KHMI7dAqJeLn3Xf2?= =?Windows-1252?Q?070FmYdKAW/s1P1V4j7bWWznRsW/60oMB7R4I9LHX47RVVnTavNfvskL?= =?Windows-1252?Q?S1sWCkT2k7oWdgyr0dYfh0b9rFsch6U42OPq3UgLpfbV01zVWIBseHaV?= =?Windows-1252?Q?9fCzGb6BvRxMfN7aFy0sg8A/Y5vTgHYaxzH5ZxUSwSFuS8UWXuBn6M+H?= =?Windows-1252?Q?GmRWbCMo8nxehYHdSB0zqttKhPbX2gHMovrOLrhMHOwbuPulyxZGxFFT?= =?Windows-1252?Q?tWoKrFju54gEC5/Yc8I2a4PJrdJY4takGQEHNA5KrTaQRJrMUt7O6fJ7?= =?Windows-1252?Q?nUYntayhmZK2yW32GvLhbVnGaWpUGBCetG1/aAsvwLXCmeo6FnI45TMQ?= =?Windows-1252?Q?BcKmigXYVC0v0ItBIbP64dm9viBFnd5b8OddeHMd86ThRPAVNFLpTW/C?= =?Windows-1252?Q?S5qM75l7p5mhfUhRSUcOr/LlPf1huElHGl9XXNPEGYbCgrGMRnSTscko?= =?Windows-1252?Q?FTTK2oXLhSPDr+I/4KjvEzfCwMQG0p2KLyr8rBwwE7C44v+jV7CVxyWO?= =?Windows-1252?Q?Rfc4SwxPrJ+YcmrnB3X5rZM7MomkrV1nj5Xo9KdLMCZO6+o2ZVlL0avX?= =?Windows-1252?Q?jVUrZd2G92X0cktaI6zBpN4WZvlZ3YisGX3W6WECPueomI7yiGiSsqdz?= =?Windows-1252?Q?mfCS73NzeHWDm0UkWlIF8zWD4p2bIwBLBACF7bxW0yOK8ObF4bqIe7PJ?= =?Windows-1252?Q?f28mZvoj7D2qZ7tt4u0Cyj0ryP4rXaJf7MHKgM2nkbjCu8ErDgTqXo1Z?= =?Windows-1252?Q?esfTH283uCYAz3jtToIG7ENvqeYnwL/xl336+jfIwvqBDygVxfFcqEPy?= =?Windows-1252?Q?B7znCgJ/jp+//HYjiahOqd0XpQZizgjhf7kAAB6SkViyI15nIw5VvOTI?= =?Windows-1252?Q?J01aKqX7nOsbNXXD2Oetl/PyM3cHyDl6MFf1EYLRolzMG4p6TjviZYKr?= =?Windows-1252?Q?n1FXT7RhLm8TBPf8/yo5flYMuUvZrp4y/cpgHfN1m4j9LPWiY7KH8lgi?= =?Windows-1252?Q?cQTmOl8u9t1SaZFUr7dDbi1E4c4EtCKvI9vC8S+/f8ptcgP4fXHzyZoJ?= =?Windows-1252?Q?oE78g3lDwgYoYlXgrouD6RM+8IvuJsOlBRae1W9y+8qp6at+a7SmQU?= =?Windows-1252?Q?=3D?= X-Microsoft-Exchange-Diagnostics-untrusted: 1;CY1PR03MB1487;5:fnEjylVIJFn1AqRGfU/H0JiPAUkEXDpbJve33Flc+IUB7djTZWtUTXIhMxWW1Rj0xaVdO5X6xpdwAJcBtmtU5xSE+gJ2NHrUawf0JtiR+tsoHwpUjdL1M5mHR4nqoI1R3JEpBTiFJ3ts9YSG4RyQmw==;24:QqozTAMtXLY4Djz6AqgCC0mg3CdFP64OF1H2uUuvI551BGAx1SYHqTTKQonnQKg3LFPS957m5wQJYZ8sVFl0NHwnmWbsArWwEprgrYO31n0=;20:g+8ecC5t8Kuozv/JeskS20Mf4O1gQ0u2rS0Xg/1dcNfk+XJy+nCVIHTqt6B5neOHK9uAK3UVGa8Hs3HH6MzrYIzcTcyLavcsjWk+cZf9tw/pB4PjHiTR5GOiu4aiy+UvC+zWesQApt7zaeXjLxJHwuvrVVLEi5qXVJ306B6L55w= SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR03MB1487 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: BN1AFFO11FD054.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)(3190300001)(339900001)(199003)(377454003)(52604005)(24454002)(189002)(54356999)(230700001)(87266999)(65816999)(5008740100001)(53806999)(19580395003)(65956001)(47776003)(6806005)(76176999)(15975445007)(2950100001)(77096005)(16796002)(105606002)(99136001)(106466001)(80316001)(90366008)(5001770100001)(4001350100001)(66066001)(11100500001)(5004730100002)(19580405001)(956001)(23746002)(21840400001)(86362001)(4326007)(65806001)(83506001)(87936001)(586003)(3846002)(6116002)(1220700001)(81166005)(189998001)(33656002)(2906002)(85426001)(3450700001)(50466002)(64126003)(1096002)(43066003)(575784001)(50986999)(59896002)(3720700001)(2201001)(7099028)(921003)(217873001)(1121003);DIR:OUT;SFP:1101;SCL:1;SRVR:CO2PR03MB2278;H:sj-itexedge03.altera.priv.altera.com;FPR:;SPF:Fail;MLV:sfv;A:0;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;BN1AFFO11FD054;1:YOyfi+iampte1tOHpOFVTngMy3zYSf2Ei0TJPQD3IkT2yDUpmUgcgEAW7r3fZpAVj9hQWs1r8RN86WBA40HeJRk7bz+OW/kMOvK9hAvAW3V1kAOeICPgwRNuzNtERc1A4BsCothBzVcJ9asK8Kbk1vAjYreV/wt7MkJ9RhOc8D/P+6eZiRkEOse9Ebia7mQImyXe5RQbc9g5Dba7OZ6VBU4lPGP8/pOlzoR2mwQLhp916gbog4+VVVMBr6MDmu79TwMt3Mmlq50x1kEDAWiPkFBWGLK+Ha4+6K/JopA+NkIS8RCz8Uwobsov1BB0CTn3m0jjViLVf85SD1FmkQDYJOyNZXhv2SDUobj7Pv978YDUWeU9VX/uLmIlQUy5V/+QD8/MSC2nAPevB63IcitKSR/HDFsiNcPFrCgLxlitJAiqALkULFQnTogjAVihXmOYO8DLRqk4xT6/UN7uq5TH/MUN2Pz+8DfQdI4FH2j0KmcfNFUgXP5/XO4M4dprsFH1ttHz60hKjq3eG+bzgHBJ230I0GQd50hmW7MHQKt/TPBEEi6gMhTckoU1GyJD4AQCKQylUqTBDP21Ms+u3W1big== X-Microsoft-Exchange-Diagnostics: 1;CO2PR03MB2278;2:s9GJAYWQWvmp47Nfkv3yE/CAAfJLoGxORxHJVZ8Z8/Zscp5Ud31/9tW7dtWyfiIJjYDUa2ta4OFM2udC1O2qGfAr+TzhBF4d5BkBBeZdG56tYJ2igLNXgQStezxniRD497Hclp5AhD+qU+UvAeu637Tvc/mzq6CzD0pelRFdMBdng1sjOarqP+fQGBMVIbco;3:XevmE5MwjsYmYjUmE5FrLmE1zkbVKXG4PafVWsqBWD+OLHF+3KrOg5HzykCPBroS5IySRKJrqUHeJVbjinjRJWplx14JS+NDgtYlqCKEZb1d4unOdLM7NGzIwv4vTq+1fi9SU8c0j7YRQl6/V1QTu91Bj+CxBwp0WX1/eIwqxetfeYnStgm/SsiDS93vM1knWKycCIanaaomlx8fktI+DRr0s9vnTdLboyfruHqo/6GmHCTkooyX/d2TnsNa1g69;25:vFDPKBzcSn8Kuhe0Ucm895mJRtsr5z1lZnFLHvvbHTTk89ZCjY7nalpzOGPfNT9kqDFZxXSkeCSxGS/auP6jS91agkMVkeVYJGcAtNcrWKHmWqdM+DMZ+0d9pcHyi/QK7/VcT0KuJKs2OtixBgXoBvOgabhpBQiSxCUDaeP+/ShX16HSL6t7Q/lxN8gpr4SpKFj8KLYOxJSN/5he3P29fO6KY0DmZJfo44mLStIvWfGkZUoaMtNyaaAYYXvSeAt0Xq04VebB4im3/zt4b5uNprh6sP0HIZubSMVYYXx2bgg8sTcJ8zLegi+m4j4xWTIjHmBV+eQ40H3l2V+Gs9/C8RtWHDLGX8va37bVUPEXlYA= X-DkimResult-Test: Passed X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(3001016);SRVR:CO2PR03MB2278; X-Microsoft-Exchange-Diagnostics: 1;CO2PR03MB2278;20:Th9m8NxbfuiFp39lQrr1naBsREQ8tdXDTRHxsWovPOTNNsiWTOOyMs7NYqahv02XttbKdXpUnczxinRDtHS1btlUEokIsuCyWz69wJzWZ3fOY87Q48JlsdjQwGrfpTLgjWCtxULIeXDD5QFwTT8r4JE67cJClqyxyrKIDw5PMlE=;4:mZDCm9kJYFYJPbb+smvN68e6BUUUuXmlitoU9zxTe6LQbMHPLL27pxmzob58WbyHaDyvoat8RpLjSNAr0Hk3Fm6cDNM02MgT40DD1LDSamHFdhuazpTDfhvJpms5WH6WZ3pLTeMzIlLZr+I9pcTYNXLMe41dD2NnDtORdZmNkBRzBGyAn6NFYgxLW5i4H+uziq2e2+7KQPZedq5n5JdgfiMcmsd/+1C3bJVGLUlvib7CFjhdqrGIWMgkNrjlpb/VNXfl6DXjiUfyad4/3LCcIsJWPjmpl0S5IBVaUGAhKCsA/rhK8WLakDXYQ5HbkHoMhnnEBapFl/SSCHFwvt3kXKBS8pdQL4EMaefxgRirbHyFgOCsOHrPQRUFLq/2fPeADTwDVnN0kv0YovWbHMXb7OPK7xhjh1v61m0we5ymt2xJ8fL3/jAcWLJqNsiiXaQufcm4wEXXuGKjN6Oyie6evg== X-Forefront-PRVS: 0903DD1D85 X-Microsoft-Exchange-Diagnostics: =?Windows-1252?Q?1;CO2PR03MB2278;23:CgtSshn0j72k2341DxccLUCsewv6hlOHa/4r3?= =?Windows-1252?Q?RiD/rUMJruC1zK9pzi+2Rye/5a9tHIMNPbR7+2lNLW7iHqENImceAqJT?= =?Windows-1252?Q?35b11vID61gc72NioHLRL2Mi9RChLG4cIJLNBo83xYMuAYn+OCBSycmp?= =?Windows-1252?Q?2zRSXNzqGraoczGTOQHe1VsST2RbGaJvNYIhmKcoYaqmlTGjJdIlnjVB?= =?Windows-1252?Q?IVtugXJe5YVoBN+6GNf4UwtqelTxOxXZn+R47TTCQG0aRFyEQCrYtSSk?= =?Windows-1252?Q?G0e9yezOKtkX715XERLbpiS/R391uY+oeZK4QDnHSTUfql5Rewtjwtcj?= =?Windows-1252?Q?qGQGX6fE5ACqwadWDgsMmeABh9ZEE9Mm+sgaOqYkXhMQYIwjMnCtRoBl?= =?Windows-1252?Q?/DKZe3b4nxmZ0D4yc84KO9V2QaQI88N/D0CkkcA6tPZMhlpqhrNdtRN3?= =?Windows-1252?Q?xrOEdMlIt0gHE7xyDt/CJVFQPlstazBy58+fXxix4Vz/lYtheL6oK7HW?= =?Windows-1252?Q?OdOnDjY6kHqnO3bzVM60xVzXStDUrP8wA9e1geOkSf2MDIrUOeerBa6n?= =?Windows-1252?Q?NKD869paoEfeUSqtjxgxhdYFYSHavQ4OUW7A5HOxHUnZf3HUpWckhiTo?= =?Windows-1252?Q?fo1n5ib7kZJO1tJGBumytfqgEKiY3iXuv2ATmmna1UwdTO6jL3qj9x6l?= =?Windows-1252?Q?kreLjepaL5xIfvfq3OEx9hHV78Ojytju2OqeFiWUomWt4n0bBcEEP+rj?= =?Windows-1252?Q?3gXB1padP6wNDK51iN6NEjFLlOgCn9GxlqfpI+bbP2U3UuT2yXiuZv4o?= =?Windows-1252?Q?vpsBrmAAZfuHSUMARw0z+6I9Fnu3fEYye/tSX9YaUdBwUV9M/CS9Ot3N?= =?Windows-1252?Q?kOusYTVzU60W+73aDtzZLbGRhvkEPG5S2DgvQeUmZlGekabD44fTUttH?= =?Windows-1252?Q?nEeBv1RYlAum9VN/MYbFTtP9xqhZyH8XAcBM7o5XsuoTLFL6AmbYlqgi?= =?Windows-1252?Q?nBbd8V6+Ig3q+ApYNK/z66/73cNGRJzRehQoLW+3z3nLg7tmAMDx67hG?= =?Windows-1252?Q?9saPGvgT2fm5lUHbDnwbikcDcRegbElS84nz+FNu4jpM4tu/n7BfLIuU?= =?Windows-1252?Q?YXh4SmP6F4AC3V/Rn7CwhLry8jfWqbMf1NQTt6Pa2L7jm5TK1MgNSQO1?= =?Windows-1252?Q?pebiUr3YEVKcpi9ulW/55zC130ILjuKxgP89VijK1pG9rvEf2KJeC1A6?= =?Windows-1252?Q?ZUqE1//kXerbm5hCiFd5cHSw3svHw8KB/CpHgGqdb76+JqOBky7gTExq?= =?Windows-1252?Q?Sp/el8wQpOqIN6EF55Jp1vgvpge1ZIWTPgk3fx4DQFNtATSwS4Mufown?= =?Windows-1252?Q?V+7lfNR/82q/5Hs4yLAuVzpCzGgBfdwQwGCjdGENLDcUa3cVayrPtoCk?= =?Windows-1252?Q?S9B/jybeXHnTx93+TEJc6HaxYlxXrvD31pwuo9xokestaV5OW13yGHLy?= =?Windows-1252?Q?eZ5D63Tziz6vtgc2wXrw9i9jz6L74TLkTnnipQgr/xkGex6clH6X0FSw?= =?Windows-1252?Q?Uf5WaZ/9ea4vX84NjubpeIK+BP+AGQdJU5DofUdVnvn42Ju/2xokJBJp?= =?Windows-1252?Q?EAl7TgLc5E1Ld06smLZ6eB/BbfDSgpLgVcztvdxGRY42vKYUr0mJlM6s?= =?Windows-1252?Q?1nttrgc1wTSgidquua+kA7FiMi5WfwMpUYVvuHJBtRMZuurDIVvlucQc?= =?Windows-1252?Q?Vh7nsOdI8xioL6Z7t4CrJXWBXDv+vop5q5x+fPyTU4Tm6fw15qygjviv?= =?Windows-1252?Q?6Oc0YBxZxqcHhcX+5SigDt4EQ=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1;CO2PR03MB2278;5:Xfdvjs/Etdt+dIL1jv1dQRGXyia3LWEMojsiLC6B5ynywkXM2R4tCZ4E5hv59mlpz500cZlpEXX5sIiB4XXKw70xpnNN8LlbP+daGgEUZHu8G8eB9UoNjiYaN54LGvm2FdO+SxFe5Nf4n6klGCe6FA==;24:+w3b5v/h1dUwaa+VUbo9i464zqu+dprthXIZmDN8LZTooF53vYHGAhsrpHeVX2nKm61HHm5JhC/evUdjqZ2/C/+AoT/FIAMtvOXYTHUn8wg=;20:c5DeFJ06iBmtV+9p25tWd/+mEThE8a1voEaP9nLB4Ub8eHVJVOQK/EhanCSIIKRQiOw7k+smjIe4zySVagzMhXfEK9/i7kSS0op3dCE45hq1/M1GAs6LwAmDr4WoaotpxHj1VeqIl/lJnRVFKi3GtSF7C0uA1twNAX35sXt2pgM= X-OriginatorOrg: opensource.altera.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Apr 2016 05:20:54.2852 (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: CO2PR03MB2278 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 5261 Lines: 176 Hi, On 03/31/2016 01:48 PM, tthayer@opensource.altera.com wrote: > 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; I realize that I'm not calling iounmap(ecc_block_base) and I'll fix that in the next revision with a goto. > + } > + > + /* 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); > + The iounmap() will go here. I'd still like to hear review comments for the rest. Thanks for reviewing. > + /* Ensure all writes complete */ > + wmb(); > +} >