Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S966346AbcDLWJL (ORCPT ); Tue, 12 Apr 2016 18:09:11 -0400 Received: from mail-bl2on0084.outbound.protection.outlook.com ([65.55.169.84]:50825 "EHLO na01-bl2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S965945AbcDLWI7 (ORCPT ); Tue, 12 Apr 2016 18:08:59 -0400 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; 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: [PATCH 5/6] EDAC, altera: Add Arria10 Ethernet EDAC support Date: Tue, 12 Apr 2016 17:13:00 -0500 Message-ID: <1460499181-23080-6-git-send-email-tthayer@opensource.altera.com> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1460499181-23080-1-git-send-email-tthayer@opensource.altera.com> References: <1460499181-23080-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: BLUPR11CA0038.namprd11.prod.outlook.com (10.141.240.48) To CY1PR03MB1485.namprd03.prod.outlook.com (10.163.17.158) X-MS-Office365-Filtering-Correlation-Id: 62aca72b-65b1-434e-5729-08d3631f03cd X-Microsoft-Exchange-Diagnostics-untrusted: 1;CY1PR03MB1485;2:W95fsJ2jY8agpXnO4PxjCHQv9/d78UQrw8tIXywQtC5++94xP6vB/iOhyhfTDaxQAN5EvNyd9HdVtVT3lcwox2oY6aQxJP9/wOaZUsmTzfk/EmcHZuYOqMzg2balQfG3yVr6+YdwpD9OvQfvwDIuprOdsKvnerOSZrCNUEtoA+ZCusFfiXLR7qeMZ4GXFdfm;3:ieJd5RP0A/eK2diAF0zr4E3jo6a9kA+66cd375kBdIdCNORLMwkbN5aLk/HOUSsmPbF0rS/Msvfl2naXqvnJC9gg2wECG8FdMLVc58zcxkkGAOWo3/SK/15nSvKu1HHK X-Microsoft-Antispam-Untrusted: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:CY1PR03MB1485; X-Microsoft-Exchange-Diagnostics-untrusted: 1;CY1PR03MB1485;25:dhh6JhrQSEAfxgGRnW7rfdLaO9/0BnBRnveMZSOMExxQ+GS5hZwVTZjNXTz/2ia1gTdYDwR8FIqfNqrFRvUFpTNiojqCKW3PEtdXpSsl/geqAnQoV7jSI0AkCw4lPkb8S4ryfK857pn4QCUszbw+6/jnK+u7VQhrAEFbyrXMEyhVoVLKSP1gRjRHfvff5tf796hwQqe6flIV/IvRt2ZMUXMu96zK113iDm46UbSNAECF1kqpruHGSU7G6DjOdl+vtMcmkJNNT494MSNN9kKbaAOLVsevws0rc3VuPT8z4hpVBFnfsRzEo7rOy/7dNWYJYEgh7mgJptfRTiIKROh05x2O2m7C6M8NMTeLGXuwQIdkRBzwrnkyhutyxqnIY5d6iXiErInA7LVmk4wvR8Cd58CnuAXwTTI1m7229IBRTYxhj3B/31t8Ek8/7RjyW8WYQdB8+pS3eF8HoA10EDtKGLTm9yxCOkhQtKmvH6Hdc47Rs7NcNT7bJgL1IUg8cRaG+qZfPlGnrsI/OZk2yy3w0veffBN7G6mzofmQxk2dVKiks1FSmiPe85Q5ZfTcx0MDX/snE4cP4fKq8cuyWWSDUcv7puALFH1VcqZmwMXi0FE60SqvgiAMiRQgQ80SxZdcHhoAGZlectarF+7Ru8HVHQ==;20:AG6h7YxZaTCer9oHz934RXpTXs+oJTZzJiIEgDB2Ps79XRrMdoAK/qO7BQ86QsnkG4BNUiBme2Z4IHV35zyjSUrQfqP3INSOCKLXh0fNPwJ3So7GKTnDSJjeQI+FYcgrMHJwh2ppNoE5g2NfOUbRiYaPOspVowmUp56yZCnAOMM= 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:CY1PR03MB1485;BCL:0;PCL:0;RULEID:;SRVR:CY1PR03MB1485;BCL:0;PCL:0;RULEID:(601004)(2401047)(5005006)(13018025)(13017025)(13015025)(13024025)(13023025)(8121501046)(10201501046)(3002001);SRVR:BN3PR0301MB1284;BCL:0;PCL:0;RULEID:;SRVR:BN3PR0301MB1284; X-Microsoft-Exchange-Diagnostics-untrusted: 1;CY1PR03MB1485;4:IIFk/fdeUg6tCI2Qie/NINJF0lKdFSEalDZ/eUWM8j/qM2EuOxR8vXNCjd0QxqkJORijO0DaTXaBdBqDz4+0qRW85tAMJCHU2X3JyxmVOvMkpBvmNIb8QbSGYl+UzvrVEz8UZSRhKRbts0t9hsBRdHETldiimfdOB6ctDVQyvCpbRMWfkP2d9E+X/wpjEgEox8jx9vIJwCXGUmfyHRTpiyfl9BBPCnYX9s2Q7i39aWNtqA/0TQj3y9D6rEowsyIz52QsCyLhl77o92+3LHDaFWH4VnBjjy8GpYrEl3qTMgAKp0oX501JWHDjK8Xr/jjjRSgPpr1Gmc0+rqZcj+Y2lWisbJo15pvDSqsczO5IARBNXY8rpRS4fgZfJ9KNbKNV X-Forefront-PRVS: 0910AAF391 X-Forefront-Antispam-Report-Untrusted: SFV:NSPM;SFS:(10009020)(4630300001)(6009001)(6049001)(5008740100001)(48376002)(189998001)(5001770100001)(50466002)(92566002)(107886002)(2906002)(4001430100002)(42186005)(4326007)(5003940100001)(33646002)(2876002)(229853001)(50986999)(76176999)(50226001)(2950100001)(47776003)(19580395003)(575784001)(1096002)(19580405001)(586003)(77096005)(6116002)(3846002)(2201001)(5004730100002)(86362001)(86152002)(81166005)(921003)(4720700001)(1121003);DIR:OUT;SFP:1101;SCL:1;SRVR:CY1PR03MB1485;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;CY1PR03MB1485;23:UzakFptqE5DYvyK18HfB2qgH/uuVuCdRmuRaMCqYk?= =?us-ascii?Q?QI+zo8/hs0ylb474o1fSzL+vB7cnH43PY4mM3rInL+gl7aa5okil3Nim/LxI?= =?us-ascii?Q?GrYWOGuqyCGUbPNTVpfsAbppF4RoyuIn1FSkIu38UVozSFU3M5o5wlVAobes?= =?us-ascii?Q?aR1UzMli2dsQDskYXMONqoL7b1AzbqtRAU53m+45L3juJGZzflP/wxoSp1LC?= =?us-ascii?Q?0POoc0FDSKNmLQdOm98+wSimuJwoj2SPsSVULGuEaIFDQVN+Trm+T2oCG78Y?= =?us-ascii?Q?yGEW9D35mpEHkJdd/prYwH74HiFKLSrcgqkbcVhDcoUqgomIl0TFTd5XHq7L?= =?us-ascii?Q?hsOofoBxHFPRBgJAKZomGMzeRFXFxXHZuNPM4wCh4ESAsJJZpPI0saBi4Akg?= =?us-ascii?Q?j9k5P2C+cn/YRi3TQWqC2PVC6ZuIhOrX4EWxr2/Eqjm6hgbj6s03euEG04DZ?= =?us-ascii?Q?+byCH5H9GxYqj4nKAdxRJM7Wgp1k+3lanSGd0GWCPK9K2SUJGuO+E28OmbI1?= =?us-ascii?Q?14EhsTZvZvvh1T2pA7BaKsWLZUhdxWoocypDxG/j6fVCnzhWHBU3W/iZp6U/?= =?us-ascii?Q?f2epTgQ0LW8SLDuEpGO31+BG+QKEyAafVMO3V26NPWD8z5L/1ZfqYQ2aoxI/?= =?us-ascii?Q?wpd5s/1fRxcou9BVLrvd/vpCt88rQMlnatZ7/GiOwVMhm6y+2B26IyRuFFtT?= =?us-ascii?Q?Mn/wum3lxQXvVdAi4sarbliThOw7yOYguXwpMQDT5i2bDEGj2GPloZeHemMn?= =?us-ascii?Q?UDTeXzILi1t0Qms0icI4W8XVoSxysjC/nk6pEqBlJpcxRuR4IvDLargRAu2b?= =?us-ascii?Q?nVEclqB7Cqm6OPYuY4VDJDc01apM7ScHqOXnZ8i5PJG7iPBPYii9gkj/4+dh?= =?us-ascii?Q?MXMoCu0Zk6CY6Dgy6xRHEdsQE6y7X5NwfKP7XWaj9j/gAUpnSHiFiNmjG7I1?= =?us-ascii?Q?BTpdKwUVO2sXB11lLWTtF8ViB1RKuYt58YHVwf533d/ppL3ZH10cUoDYwMXb?= =?us-ascii?Q?BMoE17cKSHm4isIjqWQpRnYFdAzUYFR8/0V//RaMclsWsU3vsBWVxh3+hGyd?= =?us-ascii?Q?fwcftM=3D?= X-Microsoft-Exchange-Diagnostics-untrusted: 1;CY1PR03MB1485;5:oFIaitx4QAufotZtMy1PFwZ3ws+TUKErpM3aF7aGV4iUW08RJoJlHHUUNAArBUEMcCTVAM/Po5Te59p5Tqk+r4icKC/T8wOKzj9cWal/hGTC6qJIoIRZ1lRV4Dju5ksrmupQktJhdN6oFa8CxtATeA==;24:WyFPQx3rSEtHZYrlT8jQ8MBWwKsDjFeKfmrlDq6pUZh0wLmHMUGIRKtQRdraVVsSwhnJ8J+BrJTM3PJsmx/FGOrfbMqFPTJBS3UyDep7+1M=;20:mSyMGzvbhrRiYvVOl/78if/rvnxP4WY9Ceg/xIFtHz0f4q9SkHGc2FQC5TjzmLvHnVg59rz6mtYvroDsbrBrnd1ZVup+k5R9+5+EPJq0mB6DQv0gXrtIuPycuhwD2ODLdDvTJRcyHlQD3PLQ7FJepx0KZgDWnhVWWjY3ELqUQUU= SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR03MB1485 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: BY2FFO11OLC001.protection.gbl X-Forefront-Antispam-Report: CIP:66.35.236.236;IPV:NLI;CTRY:US;EFV:NLI;SFV:NSPM;SFS:(10009020)(6009001)(2980300002)(1109001)(1110001)(339900001)(189002)(199003)(3720700001)(81166005)(6806005)(2201001)(92566002)(4326007)(50986999)(50226001)(86152002)(956001)(2906002)(1220700001)(76176999)(87936001)(586003)(6116002)(3846002)(50466002)(48376002)(2876002)(4001430100002)(33646002)(21840400001)(189998001)(1096002)(5004730100002)(106466001)(2950100001)(85426001)(16796002)(229853001)(5003940100001)(5008740100001)(19580395003)(105606002)(47776003)(86362001)(19580405001)(5001770100001)(107886002)(77096005)(575784001)(7099028)(921003)(4720700001)(1121003);DIR:OUT;SFP:1101;SCL:1;SRVR:BN3PR0301MB1284;H:sj-itexedge04.altera.priv.altera.com;FPR:;SPF:Fail;MLV:sfv;MX:1;A:0;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;BY2FFO11OLC001;1:rVxrSdmdZqGed6DK6Q+AInoS/kpmG33YGnNmWKyL8nQtZprxJ59FowQ24E4DBmwyjAScAxsIMLNo7r5tU6L4G4DBzF0rhe5iNJBQjapY1R57LNzJrKoZN2rO1Dk+yqKeBiMyPG492FcfIvS9CZQCJmOXTBw1NZMmcWb0kST6retnNgIE7MUFvjrzNNSVVLTbTfij2pvr897qdDhFdEj6Z7JrPaF7a+edU1AEhD0WiRvNLcGXvFhLos3BQcN8mmUTArS24euMIWwcF83Pqs2P2wBXuJsFXSJYW7yricqQrV4YSnSMnB/BhTXMB/Kp8HvR4KqnAMHW956FhBUUdH3KbVKLAjgQd71KNd59gcL+Rf7kpg+oUkDalflfmKXEY3uAM6/SD5OK0+TWbm4BzPP/swgBLP5uCHB4gwA6nVzMrf84TXhWqcRwdi6TNKvmVCRhPPdA7B+SBu23tj7+IuPSiBtOA00Y2Yi0DfoUAr+T/ulY4S7pRyivUQfPkZupLE3GHh7RSr8xV42jznhYoEC9SUXjizAFHJN+s2BNqAdQs2JAnR0DJtWiSwoULhIE50Jo X-Microsoft-Exchange-Diagnostics: 1;BN3PR0301MB1284;2:k/5MUfBJrwIdyuPlrWEYFJac2XBbxY4UMnCixqDlmJ5DMG3uJ30sTsFtwgigdQlTwqLAQ7LvpQdstXrTrbgXPj8S8BQNC/sQnMjBvYS7akDh91oY3/SW1qGHE/GQpxcFEypda4eha1HR7ph5Z+eYHyLoYiDRP9tvFDOXQl+iZjYNkCxlqgZW+8gzSNTajHNl;3:r1sgPMPHdQdWVTd1ZKw/RwP5UCB5lMUl3wE0iFMREKwIJ7v9dFhMHpURKHK9YUO6qwREXp6P2f2izc3lmoZ3vEQBCOY2hI244I2opz0rMYAP4guklOdUzunmW5QiYv4gPleiaZVxgksIqrZWbsXcbOsKSY61hKFBB19Nb2HB6tZp/z0Tmhk6paBK69frVd+OyzpP5fyli+diK5J4eABYzTWy1NZZy3HtpfWYnicA+aZaPhd/Xo8ZIE9SmVhx+Nmn;25:0LOY77JMv91856B1ZXPwkxbPCpFyXlTpBWH1UNRsmucUBxh8g4ALcGePRAV9LOrLOudi+D2xPUvjyhFAaI1nQSdCkwThyRRrriYzi3Gb6pMzFa3nGaRWrLb3l/T9fsiN+6MAYcfiwVYmZONLdd08L4gDFIFpAUk1nAjhPkG1VkUaSoiexW/g4lmuWHNeOh231a3anq0v+cQsUSPRuZzHegknA0WuDy3PPE+UZDNyRM8ojkrLCJvlXREwIIvvyzJW6KLKhnA/EtdZjb8vqmT37yqrggBvMFmK2800GpJzp+QkFOcV/X60PjkKpOx1qdT4V5duzeIyg/F0W9XJI4Jgyg== X-DkimResult-Test: Passed X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(3001016);SRVR:BN3PR0301MB1284; X-Microsoft-Exchange-Diagnostics: 1;BN3PR0301MB1284;20:1aVsqH7gTRfjizucAhckX2ZoTTLaPVgPzlWMXUEqtXYK18VTokMpWTE0u8DkZu6H9eJGwn4Uz8x8v37746H8hQ01RVTwdLw/PnJ3tLhfEtPbnqfTwJC7qTUlfXYo1akETJsCsu1krlCGYeL1Hx29k0WrzUuPDEMldOnY3pG7yys=;4:sW1XwEboN4xtMgUAnTRbbIF08eoVBfWFUOcah5VXLVjkJVI1QrHx2NKP9gq10p+FmTyDMfeMoaUfVBk5z75Gl0NlnjXlc0x/2QnUxVzwdVlQ9pD+UCZ7zsc/I7uHBTYbbcFR9ZL//zlSrOAb5qO2YqBenxHa+0miLIsjDMycB2IietGzJeGH06/G8WZYMXFl9xzSaKuTa8mpcqTQlBBqycB+VhrQAYPZSm0aSPpdxQ2Z6QYZsv9dXQHx3nbKVSDqWO2/cAzGLTVgDVCHlWEPDaM4PRTZcCbi4Zc4BFCAfycWrbF5F3J8P+JAnaNvjRjObT3jXsCBrQJ+eJQQPp/+aNge/+tvggMCpz9UpEvp4fq992zapIj8KkpZvjc6oHRgpStfOQArOg321q4u1rLfA5f3/xZc0Lqn/DUChWP0gD6xERaKD1dh7I7WXZqJx8yylKoOlqdb/T8zF54tji4pyA== X-Forefront-PRVS: 0910AAF391 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;BN3PR0301MB1284;23:rVDcZ8tkJ/TpdUXUUVIOigJ1kP29wFWEfwVRVYq?= =?us-ascii?Q?RYp0NIOlbde1ggQcru32WyEYgInrrKC+YUr6OovofRxmLiiaawLVmhjexYpH?= =?us-ascii?Q?aYmSndapjilZobxfmBaDRFKMcgu9qqkXoLBSGxNKpOn01jaZ6OH4tjjqrOBs?= =?us-ascii?Q?JQEhl8cO4T7vY9E9C3gtiip3wABJ89d5r0o72o+3qPoebWyNIfcWTkQt+gYN?= =?us-ascii?Q?M54utjd7CLOcdl17TrLoAohAdOVqjBy8Uztsv5U3yG/+/aRT372SByAHls8O?= =?us-ascii?Q?d7IYbKSSlYBWDf0C/RRGl3TY/2jGQfneynGgjB5uvL2hFzB3UZO44Be0XqGj?= =?us-ascii?Q?kFAQMDh0c7RkGvdvW5LGOw9lG2Fiyzb5VziJMovnT9/YOwIV/DfWzz0IlueA?= =?us-ascii?Q?LrQFjLlfTJz/fMsotZODf34PviKrmaPOatDJOiI7j9iPn1ytXzu6zgH/oVaf?= =?us-ascii?Q?pSvOG6rLdHg1d90PXYBy2VSRC/HrSt+S4YUXHoDBW6Xh9SwKV8fY2Qkdx74F?= =?us-ascii?Q?8xS61R+Xad/cjyKV+WevmWCEfgmvWKaJsJAUPRY7hFGDmeqx+yT5yPOh1jQh?= =?us-ascii?Q?xvuLv5tvZZ52NErYnUO5Z6SnyLkQDob6kipNxSdvLi/l57BpP0aUVZmsUsPM?= =?us-ascii?Q?ubPbx1m3f7pLuhaYROlkIV6JH2gwX1lzFGtqmzEhRYkWdmdZI9k84SySc82D?= =?us-ascii?Q?HtOoVukOChF3LmAlFbMPvx+zI9CaZzTuI/Ov1V7HUtFvVKPlqtRwNUhnefkS?= =?us-ascii?Q?AeaxJZfET6dLXLtuDnGvhj6gmJRrZuK7g8oR2IuBsOwBLEoLWvFzgqRBWK4c?= =?us-ascii?Q?r7mte6cDGomSHnT0YluPvJ0lZ8FQI8T3JX8BC3hE4g6SHCEqV7tADwWv3BqM?= =?us-ascii?Q?MA/hYvoP3Y82EOImkoYWiIfq6LPoDZ2VPxCrNDjtEm7GDr2nOy2qUnjvYVwJ?= =?us-ascii?Q?1ENcqTsjAAFJZtluoF0cFFdnAJqU0w3tTF8p/CWETmRNa3yeubvUDGGTDaGs?= =?us-ascii?Q?u7ItODaNCVZe/L6z7rtxpAZ2EDd/92fHTEwXRI3hlPDFsshOFiMyETkhIcda?= =?us-ascii?Q?LO+HAD9JBt2uGARIswP2a4IJ9FW90AxgkXrkUn1KBSRWhB82OMehhzS9ZZfk?= =?us-ascii?Q?8ILMRBD2ERkrPSlvrmMWcqg2rOJ7gnOKVDMJu3EpW86uC7WlHZJkL/Ld1jEW?= =?us-ascii?Q?kEc6TIuxxqfWd6mjuOcCb1szQuvRjtDnLQ4Ld6hXPFls7prJJimmj6t9VRG7?= =?us-ascii?Q?9OSGG+Hfwrszg/NeQHun50TdEsN/KKXXhCofL/+XTE+xe/NFwr1vnQiWJ6Q4?= =?us-ascii?Q?9jRVtr75w6vaXFBX1FmU4I7bL+z19wtxr7M+93WDCMy2w?= X-Microsoft-Exchange-Diagnostics: 1;BN3PR0301MB1284;5:Rgq3nGwBViA9kOhVuiEcHc2Aw/1jRwCfP+sfb+6CJy9/p1wCa2D8fVBqLDiVrC5qHtWl10qDqCb0QepAEIK3m9W9FkQCcQBq+37FO8jVQJeCEmJGwhbl0WwHLVWexJ9bMf/CSr3uCTV3hNgTZdzmsA==;24:oBmEXnxjImzsxiouphZhyV/u4ym+MbrKMVJVLEIagNYKRu5gY35DTShxmdUAVrQzzpeNInXhAOmGJPxzHdDs6ysaDv+NbGpoT8h/aPCi9sA=;20:/SAcJHb5wmQ6Lbfd15YP1MeZnHt/S5VKtOoFc+CEr3SENwO6TsELnJVEh/f7Dzl8rZWQXAWBD/3gubhE0NThqNhlbwBU+PF7aiAf5pXiGRzuNCptwHGUW6+Oq4PMvMwcDsXuIQwkY9jJ/Rik2D9ogiuMuH9Cj418Mu7geStr2TA= X-OriginatorOrg: opensource.altera.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Apr 2016 22:08:44.6112 (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: BN3PR0301MB1284 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 9382 Lines: 253 From: Thor Thayer Add Altera Arria10 Ethernet FIFO memory EDAC support. Signed-off-by: Thor Thayer --- drivers/edac/Kconfig | 7 ++ drivers/edac/altera_edac.c | 153 ++++++++++++++++++++++++++++++++++++++++++++ drivers/edac/altera_edac.h | 14 ++++ 3 files changed, 174 insertions(+) diff --git a/drivers/edac/Kconfig b/drivers/edac/Kconfig index 6ca7474..d0c1dab 100644 --- a/drivers/edac/Kconfig +++ b/drivers/edac/Kconfig @@ -391,6 +391,13 @@ config EDAC_ALTERA_OCRAM Support for error detection and correction on the Altera On-Chip RAM Memory for Altera SoCs. +config EDAC_ALTERA_ETHERNET + bool "Altera Ethernet FIFO ECC" + depends on EDAC_ALTERA=y + help + Support for error detection and correction on the + Altera Ethernet 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 0955ab0..43b6f36 100644 --- a/drivers/edac/altera_edac.c +++ b/drivers/edac/altera_edac.c @@ -553,6 +553,12 @@ const struct edac_device_prv_data ocramecc_data; const struct edac_device_prv_data l2ecc_data; const struct edac_device_prv_data a10_ocramecc_data; const struct edac_device_prv_data a10_l2ecc_data; +const struct edac_device_prv_data a10_enet0rxecc_data; +const struct edac_device_prv_data a10_enet0txecc_data; +const struct edac_device_prv_data a10_enet1rxecc_data; +const struct edac_device_prv_data a10_enet1txecc_data; +const struct edac_device_prv_data a10_enet2rxecc_data; +const struct edac_device_prv_data a10_enet2txecc_data; static irqreturn_t altr_edac_device_handler(int irq, void *dev_id) { @@ -716,6 +722,20 @@ static const struct of_device_id altr_edac_device_of_match[] = { { .compatible = "altr,socfpga-a10-ocram-ecc", .data = (void *)&a10_ocramecc_data }, #endif +#ifdef CONFIG_EDAC_ALTERA_ETHERNET + { .compatible = "altr,socfpga-a10-emac0-rx-ecc", + .data = (void *)&a10_enet0rxecc_data }, + { .compatible = "altr,socfpga-a10-emac0-tx-ecc", + .data = (void *)&a10_enet0txecc_data }, + { .compatible = "altr,socfpga-a10-emac1-rx-ecc", + .data = (void *)&a10_enet1rxecc_data }, + { .compatible = "altr,socfpga-a10-emac1-tx-ecc", + .data = (void *)&a10_enet1txecc_data }, + { .compatible = "altr,socfpga-a10-emac2-rx-ecc", + .data = (void *)&a10_enet2rxecc_data }, + { .compatible = "altr,socfpga-a10-emac2-tx-ecc", + .data = (void *)&a10_enet2txecc_data }, +#endif {}, }; MODULE_DEVICE_TABLE(of, altr_edac_device_of_match); @@ -1033,6 +1053,126 @@ const struct edac_device_prv_data a10_l2ecc_data = { #endif /* CONFIG_EDAC_ALTERA_L2C */ +/********************* Ethernet Device Functions ********************/ + +#ifdef CONFIG_EDAC_ALTERA_ETHERNET + +const struct edac_device_prv_data a10_enet0rxecc_data = { + .setup = altr_check_ecc_deps, + .ce_clear_mask = ALTR_A10_ECC_SERRPENA, + .ue_clear_mask = ALTR_A10_ECC_DERRPENA, + .irq_status_mask = A10_SYSMGR_ECC_INTSTAT_EMAC0RX, + .dbgfs_name = "altr_emac0rx_trigger", + .ecc_enable_mask = ALTR_A10_ETHERNET_ECC_EN_CTL, + .ecc_en_ofst = ALTR_A10_ECC_CTRL_OFST, + .ce_set_mask = ALTR_A10_ECC_TSERRA, + .ue_set_mask = ALTR_A10_ECC_TDERRA, + .set_err_ofst = ALTR_A10_ECC_INTTEST_OFST, + .ecc_irq_handler = altr_edac_a10_ecc_irq, + .inject_fops = &altr_edac_a10_device_inject_fops, +}; + +const struct edac_device_prv_data a10_enet0txecc_data = { + .setup = altr_check_ecc_deps, + .ce_clear_mask = ALTR_A10_ECC_SERRPENA, + .ue_clear_mask = ALTR_A10_ECC_DERRPENA, + .irq_status_mask = A10_SYSMGR_ECC_INTSTAT_EMAC0TX, + .dbgfs_name = "altr_emac0tx_trigger", + .ecc_enable_mask = ALTR_A10_ETHERNET_ECC_EN_CTL, + .ecc_en_ofst = ALTR_A10_ECC_CTRL_OFST, + .ce_set_mask = ALTR_A10_ECC_TSERRA, + .ue_set_mask = ALTR_A10_ECC_TDERRA, + .set_err_ofst = ALTR_A10_ECC_INTTEST_OFST, + .ecc_irq_handler = altr_edac_a10_ecc_irq, + .inject_fops = &altr_edac_a10_device_inject_fops, +}; + +const struct edac_device_prv_data a10_enet1rxecc_data = { + .setup = altr_check_ecc_deps, + .ce_clear_mask = ALTR_A10_ECC_SERRPENA, + .ue_clear_mask = ALTR_A10_ECC_DERRPENA, + .irq_status_mask = A10_SYSMGR_ECC_INTSTAT_EMAC1RX, + .dbgfs_name = "altr_emac1rx_trigger", + .ecc_enable_mask = ALTR_A10_ETHERNET_ECC_EN_CTL, + .ecc_en_ofst = ALTR_A10_ECC_CTRL_OFST, + .ce_set_mask = ALTR_A10_ECC_TSERRA, + .ue_set_mask = ALTR_A10_ECC_TDERRA, + .set_err_ofst = ALTR_A10_ECC_INTTEST_OFST, + .ecc_irq_handler = altr_edac_a10_ecc_irq, + .inject_fops = &altr_edac_a10_device_inject_fops, +}; + +const struct edac_device_prv_data a10_enet1txecc_data = { + .setup = altr_check_ecc_deps, + .ce_clear_mask = ALTR_A10_ECC_SERRPENA, + .ue_clear_mask = ALTR_A10_ECC_DERRPENA, + .irq_status_mask = A10_SYSMGR_ECC_INTSTAT_EMAC1TX, + .dbgfs_name = "altr_emac1tx_trigger", + .ecc_enable_mask = ALTR_A10_ETHERNET_ECC_EN_CTL, + .ecc_en_ofst = ALTR_A10_ECC_CTRL_OFST, + .ce_set_mask = ALTR_A10_ECC_TSERRA, + .ue_set_mask = ALTR_A10_ECC_TDERRA, + .set_err_ofst = ALTR_A10_ECC_INTTEST_OFST, + .ecc_irq_handler = altr_edac_a10_ecc_irq, + .inject_fops = &altr_edac_a10_device_inject_fops, +}; + +const struct edac_device_prv_data a10_enet2rxecc_data = { + .setup = altr_check_ecc_deps, + .ce_clear_mask = ALTR_A10_ECC_SERRPENA, + .ue_clear_mask = ALTR_A10_ECC_DERRPENA, + .irq_status_mask = A10_SYSMGR_ECC_INTSTAT_EMAC2RX, + .dbgfs_name = "altr_emac2rx_trigger", + .ecc_enable_mask = ALTR_A10_ETHERNET_ECC_EN_CTL, + .ecc_en_ofst = ALTR_A10_ECC_CTRL_OFST, + .ce_set_mask = ALTR_A10_ECC_TSERRA, + .ue_set_mask = ALTR_A10_ECC_TDERRA, + .set_err_ofst = ALTR_A10_ECC_INTTEST_OFST, + .ecc_irq_handler = altr_edac_a10_ecc_irq, + .inject_fops = &altr_edac_a10_device_inject_fops, +}; + +const struct edac_device_prv_data a10_enet2txecc_data = { + .setup = altr_check_ecc_deps, + .ce_clear_mask = ALTR_A10_ECC_SERRPENA, + .ue_clear_mask = ALTR_A10_ECC_DERRPENA, + .irq_status_mask = A10_SYSMGR_ECC_INTSTAT_EMAC2TX, + .dbgfs_name = "altr_emac2tx_trigger", + .ecc_enable_mask = ALTR_A10_ETHERNET_ECC_EN_CTL, + .ecc_en_ofst = ALTR_A10_ECC_CTRL_OFST, + .ce_set_mask = ALTR_A10_ECC_TSERRA, + .ue_set_mask = ALTR_A10_ECC_TDERRA, + .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 a10_ecc_init_vars a10_enet_ecc_init[] = { + {"altr,socfpga-a10-emac0-rx-ecc", A10_SYSMGR_ECC_INTSTAT_EMAC0RX}, + {"altr,socfpga-a10-emac0-tx-ecc", A10_SYSMGR_ECC_INTSTAT_EMAC0TX}, + {"altr,socfpga-a10-emac1-rx-ecc", A10_SYSMGR_ECC_INTSTAT_EMAC1RX}, + {"altr,socfpga-a10-emac1-tx-ecc", A10_SYSMGR_ECC_INTSTAT_EMAC1TX}, + {"altr,socfpga-a10-emac2-rx-ecc", A10_SYSMGR_ECC_INTSTAT_EMAC2RX}, + {"altr,socfpga-a10-emac2-tx-ecc", A10_SYSMGR_ECC_INTSTAT_EMAC2TX}, +}; + +static int __init socfpga_init_ethernet_ecc(void) +{ + int i; + + for (i = 0; i < ARRAY_SIZE(a10_enet_ecc_init); i++) { + altr_init_a10_ecc_block(a10_enet_ecc_init[i].ecc_str, + a10_enet_ecc_init[i].irq_mask, + ALTR_A10_ETHERNET_ECC_EN_CTL, 0); + } + + return 0; +} + +early_initcall(socfpga_init_ethernet_ecc); + +#endif /* CONFIG_EDAC_ALTERA_ETHERNET */ + /********************* Arria10 EDAC Device Functions *************************/ /* @@ -1411,6 +1551,19 @@ static int altr_edac_a10_probe(struct platform_device *pdev) else if (of_device_is_compatible(child, "altr,socfpga-a10-ocram-ecc")) altr_edac_a10_device_add(edac, child); + else if ((of_device_is_compatible(child, + "altr,socfpga-a10-emac0-rx-ecc")) || + (of_device_is_compatible(child, + "altr,socfpga-a10-emac0-tx-ecc")) || + (of_device_is_compatible(child, + "altr,socfpga-a10-emac1-rx-ecc")) || + (of_device_is_compatible(child, + "altr,socfpga-a10-emac1-tx-ecc")) || + (of_device_is_compatible(child, + "altr,socfpga-a10-emac2-rx-ecc")) || + (of_device_is_compatible(child, + "altr,socfpga-a10-emac2-tx-ecc"))) + altr_edac_a10_device_add(edac, child); } return 0; diff --git a/drivers/edac/altera_edac.h b/drivers/edac/altera_edac.h index 7e66015..d2275b4 100644 --- a/drivers/edac/altera_edac.h +++ b/drivers/edac/altera_edac.h @@ -255,6 +255,12 @@ struct altr_sdram_mc_data { #define A10_SYSMGR_ECC_INTSTAT_DERR_OFST 0xA0 #define A10_SYSMGR_ECC_INTSTAT_L2 BIT(0) #define A10_SYSMGR_ECC_INTSTAT_OCRAM BIT(1) +#define A10_SYSMGR_ECC_INTSTAT_EMAC0RX BIT(4) +#define A10_SYSMGR_ECC_INTSTAT_EMAC0TX BIT(5) +#define A10_SYSMGR_ECC_INTSTAT_EMAC1RX BIT(6) +#define A10_SYSMGR_ECC_INTSTAT_EMAC1TX BIT(7) +#define A10_SYSMGR_ECC_INTSTAT_EMAC2RX BIT(8) +#define A10_SYSMGR_ECC_INTSTAT_EMAC2TX BIT(9) #define A10_SYSGMR_MPU_CLEAR_L2_ECC_OFST 0xA8 #define A10_SYSGMR_MPU_CLEAR_L2_ECC_SB BIT(15) @@ -280,6 +286,9 @@ struct altr_sdram_mc_data { /* Arria 10 OCRAM ECC Management Group Defines */ #define ALTR_A10_OCRAM_ECC_EN_CTL (BIT(1) | BIT(0)) +/* Arria 10 Ethernet ECC Management Group Defines */ +#define ALTR_A10_ETHERNET_ECC_EN_CTL BIT(0) + /* A10 ECC Controller memory initialization timeout */ #define ALTR_A10_ECC_INIT_WATCHDOG_10US 10000 @@ -326,4 +335,9 @@ struct altr_arria10_edac { struct list_head a10_ecc_devices; }; +struct a10_ecc_init_vars { + u8 ecc_str[32]; + u32 irq_mask; +}; + #endif /* #ifndef _ALTERA_EDAC_H */ -- 1.7.9.5