From patchwork Tue Mar 29 19:13:06 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: 603122 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3qZLKz5ZqHz9s9Z for ; Wed, 30 Mar 2016 06:23:51 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=altera.onmicrosoft.com header.i=@altera.onmicrosoft.com header.b=Hj10FJmJ6Uu42drEApAESTcH+zCYbVyaYugGMiZZe3grFOFSOmeEIZ/rthzPjow6eyIbCHxVqEcUsK82d0Nhne/FdhJuw71C/4poRnilnWkbbZwlaLLbqQALPHs/Uqs7n1GFoms2qP931kSltfEDzR0cskNPSObH0Ed9KnYLPWg=; dkim=fail reason="signature verification failed" (1024-bit key) header.d=altera.onmicrosoft.com header.i=@altera.onmicrosoft.com header.b=Hj10FJmJ6Uu42drEApAESTcH+zCYbVyaYugGMiZZe3grFOFSOmeEIZ/rthzPjow6eyIbCHxVqEcUsK82d0Nhne/FdhJuw71C/4poRnilnWkbbZwlaLLbqQALPHs/Uqs7n1GFoms2qP931kSltfEDzR0cskNPSObH0Ed9KnYLPWg=; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757961AbcC2TXg (ORCPT ); Tue, 29 Mar 2016 15:23:36 -0400 Received: from mail-by2on0063.outbound.protection.outlook.com ([207.46.100.63]:36736 "EHLO na01-by2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1757845AbcC2TXd (ORCPT ); Tue, 29 Mar 2016 15:23:33 -0400 X-Greylist: delayed 858 seconds by postgrey-1.27 at vger.kernel.org; Tue, 29 Mar 2016 15:23:32 EDT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=altera.onmicrosoft.com; s=selector1-opensource-altera-com; h=From:To:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=qDNherjZH9mNU4/CopIIJHbLDhQLxugtcw9jiij6o6k=; b=Hj10FJmJ6Uu42drEApAESTcH+zCYbVyaYugGMiZZe3grFOFSOmeEIZ/rthzPjow6eyIbCHxVqEcUsK82d0Nhne/FdhJuw71C/4poRnilnWkbbZwlaLLbqQALPHs/Uqs7n1GFoms2qP931kSltfEDzR0cskNPSObH0Ed9KnYLPWg= Received: from BN3PR0301CA0068.namprd03.prod.outlook.com (10.160.152.164) by BN3PR03MB2276.namprd03.prod.outlook.com (10.166.74.25) with Microsoft SMTP Server (TLS) id 15.1.447.15; Tue, 29 Mar 2016 19:09:11 +0000 Received: from BN1BFFO11FD056.protection.gbl (2a01:111:f400:7c10::1:176) by BN3PR0301CA0068.outlook.office365.com (2a01:111:e400:401e::36) with Microsoft SMTP Server (TLS) id 15.1.447.15 via Frontend Transport; Tue, 29 Mar 2016 19:09:11 +0000 Authentication-Results: spf=fail (sender IP is 66.35.236.236) smtp.mailfrom=opensource.altera.com; hellion.org.uk; dkim=pass (signature was verified) header.d=altera.onmicrosoft.com; hellion.org.uk; 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 BN1BFFO11FD056.mail.protection.outlook.com (10.58.145.11) with Microsoft SMTP Server (TLS) id 15.1.443.6 via Frontend Transport; Tue, 29 Mar 2016 19:09:10 +0000 Received: from na01-bn1-obe.outbound.protection.outlook.com (207.46.163.144) by webmail.altera.com (66.35.236.236) with Microsoft SMTP Server (TLS) id 14.3.174.1; Tue, 29 Mar 2016 12:07:44 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=altera.onmicrosoft.com; s=selector1-opensource-altera-com; h=From:To:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=qDNherjZH9mNU4/CopIIJHbLDhQLxugtcw9jiij6o6k=; b=Hj10FJmJ6Uu42drEApAESTcH+zCYbVyaYugGMiZZe3grFOFSOmeEIZ/rthzPjow6eyIbCHxVqEcUsK82d0Nhne/FdhJuw71C/4poRnilnWkbbZwlaLLbqQALPHs/Uqs7n1GFoms2qP931kSltfEDzR0cskNPSObH0Ed9KnYLPWg= Authentication-Results: linaro.org; dkim=none (message not signed) header.d=none;linaro.org; dmarc=none action=none header.from=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 (TLS) id 15.1.447.15; Tue, 29 Mar 2016 19:09:05 +0000 From: To: , , , , , , , , , CC: , , , Thor Thayer Subject: [RFC 3/8] mfd: altr_a10sr: Add Altera Arria10 DevKit System Resource Chip Date: Tue, 29 Mar 2016 14:13:06 -0500 Message-ID: <1459278791-3646-4-git-send-email-tthayer@opensource.altera.com> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1459278791-3646-1-git-send-email-tthayer@opensource.altera.com> References: <1459278791-3646-1-git-send-email-tthayer@opensource.altera.com> MIME-Version: 1.0 X-Originating-IP: [64.129.157.38] X-ClientProxiedBy: BY2PR05CA023.namprd05.prod.outlook.com (10.141.250.13) To BY1PR03MB1481.namprd03.prod.outlook.com (10.162.210.14) X-MS-Office365-Filtering-Correlation-Id: b928c851-d218-460b-885a-08d358059c21 X-Microsoft-Exchange-Diagnostics-untrusted: 1; BY1PR03MB1481; 2:IabCj17V8uPb3NnNluKgahRIiqPfHIMYd3npBfHzWkPizA90cstZUs3te5bNxdlz696ktSBZF2sUEiOw0KA/7+wakQ+QnEzZ2MrFLlroCgYijERcwdIa5E35Ajz+PRa8XT+HWbRnLobFkPzWu2yzaZ3MpRzku14uSlYwqHDPktJBCUiCsFY4taOeDwQJGgca; 3:1Gb9SK+M/SCHMYv/02ITGmoexTjSjLxuJEbnU5AUTMIm501pDmNz7TIlKurFWrqeTSlgvYmrKS+ZyWi47jxL59LaZpfywqVEK+O6OcIwiHRaRM1wDh1JmNe3f7V5lDW8 X-Microsoft-Antispam-Untrusted: UriScan:; BCL:0; PCL:0; RULEID:; SRVR:BY1PR03MB1481; X-Microsoft-Exchange-Diagnostics-untrusted: 1; BY1PR03MB1481; 25:YKLaGhnH/YQJiCnznu8UpqcTRQpJBhIKanTGENIbyUhCpZsdSo/OpQrLrehDhzk5yieeuA3fCig9FlzNDRsv8RPiBdmSrAMM4Ao6OXGJ/WPXKwWMeRSMo2d+x9We9ptXRrpcGHmyZQJ9qidjpWWMzs+VBQG9Tga0sW5761P6Y3f5n6qBYOW+TTxpIelz51dERaAwdO1SblkVzfe9ZjRKD6WHyox4+XxMlJGzc8Pmw0Cldx5XIrqfDU80clrcgGb228BJeUFz2nX9zDLZ5vM3m+LlnDHG9nPWStZTISFOMIQ1MLNo96PSz4EmO8co5QHVYTHXxSsjx/PQ+YUoAZJbbwUdMvePJkmdprHhR0kuLHUL+2xLmOPZiuhj9ahXiI1UScHnVZ2a6Ih4ZEnY5ZCtcrSOdLLa8UrCznt2vMgvT011pX4QDQQU2LUI29Qusz68bG7VhwN6voQLME2qsAlRh+eoyEkuk3Rad70FaE0G9NA6bAQCmWT4b3IfZT3iOnyB+RJYjQcVrZ1lrrDMZhXzE6o6WIKpmtAmImlTEAmNUbxCPGO/D3gxao+4X4Mb+U1Vcn+JcJCtYNuyOsbpTnwl39e4NQH443z092GsEHlvevQAnWGIv4cHE2mJqU6uGzUNmP2AiK/LCVg5otS1J754m86wd5PHmOoKNKUoM7/Ve+0=; 20:I509WRE8BKAQJ9wXic4UHPuypmk8Bq6VaKlth+V1WXBPyIpNS8yrjSO+TEIumuWRIQ7qNdf9ZtQJKi5ca8agwue0wwPCz2CQMr2DofByzWKQJrmY8T7c1DZvmNs5ZqjQ9hpTLihebzgsTzKg1L0URhfZ/feLZA6Jq6A2H5J9aFo= 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)(10201501046)(3002001); SRVR:BY1PR03MB1481; BCL:0; PCL:0; RULEID:; SRVR:BY1PR03MB1481; BCL:0; PCL:0; RULEID:(601004)(2401047)(13023025)(13017025)(5005006)(13015025)(8121501046)(13018025)(13024025)(3002001)(10201501046); SRVR:BN3PR03MB2276; BCL:0; PCL:0; RULEID:; SRVR:BN3PR03MB2276; X-Microsoft-Exchange-Diagnostics-untrusted: 1; BY1PR03MB1481; 4:VvcCTVIYajZjYu6NwShnpejLCoZvxBg0+uB6eg+8kPGLKlYCkwF+AYXwAz5XuTCVdHWrHIG4nsoDQRxHhi1np1VevhpxLs0pZyEtsj/u6Dgs26YvdZGXcecolNe6C7U04DKlMw4uP502i4n0FF0f1jtUFou8jTWHp/kf0w/UNjtphXQmVeGd05dQ+WQ2x8bX56tE8dHphVh01CSdgu6dCCGZdW8Oz0E6uM03wC1QlwYauzIw9WNtQEaOGBRVWuuKgdg9u0WB5MnajRwWDB2kafRKCnNjwm3W29i3YyzzAFixlgoyoVwaq4P8yVp9H6V79twl4yqrHhB3nr1E3BKcGOqUIJJULCVvLMvlwHvpVM249LVC9LJ0lhZ6BNtEYdVG X-Forefront-PRVS: 0896BFCE6C X-Forefront-Antispam-Report-Untrusted: SFV:NSPM; SFS:(10009020)(4630300001)(6049001)(6009001)(6116002)(1096002)(5001770100001)(586003)(4001450100002)(3846002)(107886002)(2876002)(229853001)(48376002)(5004730100002)(5003940100001)(5008740100001)(50466002)(50226001)(2950100001)(86362001)(76176999)(2906002)(4001430100002)(19580395003)(575784001)(189998001)(77096005)(19580405001)(15975445007)(50986999)(47776003)(4326007)(42186005)(33646002)(66066001)(2201001)(81166005)(86152002)(92566002)(921003)(1121003)(4720700001); DIR:OUT; SFP:1101; SCL:1; SRVR:BY1PR03MB1481; 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; BY1PR03MB1481; 23:e2vOXkeBtSXeam9kB8ZVatixznejhZp5bqG1CbgK1?= =?us-ascii?Q?ynTwqnDrgjFGVBk6mAxBfCgFuU1OWtKdfcIIBrhDlt+kZ/Kw1NhkkkrdDrQS?= =?us-ascii?Q?1ZAH578fVmU35GPRtAR55aiNkdYMz3yOMSPKNp5wOQ56Ob+4Dkf6Sg/8e1OB?= =?us-ascii?Q?/VTWcmeTO8+SMyei7IeGI+uKRVPxf4Z/keoWfevakxasquvgL9ibdiALyD9S?= =?us-ascii?Q?/l/K6DVKRLPZPii/1eu9jzpJtH6stLY6WkcRylajOrMpCJ06mfMXE3Gem7cY?= =?us-ascii?Q?mKg7bhqNUTdGOCh5kRHhH/p/v7wyUXlVnkXzn1GU4ybzjB6PcMdZINWEBMnD?= =?us-ascii?Q?6DhKD3PHTP5XqIIw10flNAuR+5Qv/yAbwzKVl5mBr3JaoCULcN0Rb60kceQw?= =?us-ascii?Q?ByGe/I8EnXRVgbpDkxSnQIvgIsy21SkmoTPQLqe1U9ZmjNV0VQi5OKDMCoZf?= =?us-ascii?Q?hDg7fwlakqLDGc8N991zp1xna4eEgw52CyLdHxw+DLe4KhWZMdGcEsU+8k/0?= =?us-ascii?Q?4DwtiwqU3RjAXbdK35XZ7ZMyeH7ZCFmqy8elWL3jsEtncEpvorIF3QXqxRgD?= =?us-ascii?Q?aTOwJ6smh6iuOH7jTxPFj6hwcj8pm5LIXPBTLQoljweihkhqBzf0u98DyHek?= =?us-ascii?Q?jf7IiyKAE6lwMr1Iuuek0MmysqGqcUhu9R1v9SuWtAClz8NPdcA+V3shxqNQ?= =?us-ascii?Q?rSuPXwdsr18ZI5zRgyfcCbA5o8V4+Wcj8y4mddb5Khn51Q4bVfSHqdc/1eP4?= =?us-ascii?Q?qHtxyY9GLm/sjnTpvu7ufxPjCh5j59uikGh31Z7nXsBwS4/XQEsNYD0U4/vz?= =?us-ascii?Q?y7MOiQsJ5SB3hR6xd6RHpkERpl33E0flcJNbHe6JANXj0qkBGf8V73TvClxL?= =?us-ascii?Q?aIN+lcfpy///7utoJUqc8dsPxWFk1UoVLjMEuzJa6mXtbniseyHhLmr5qeU/?= =?us-ascii?Q?uvG74zXcOn9uitDuBUEUxXorW6UaIsDiZdxlBPIG2C6ElDwF0kydHjMKD68B?= =?us-ascii?Q?L9aE5kPWb7Etr0c/FfCpKNtrYrZLYHCCNESX2bn7p/l/i+lM2gdrWhD4XK7a?= =?us-ascii?Q?lAns4+9UojS6t4g+vA9nzj//S3zVFupTDA4ikyWlmxE91969DFBPhTcrfV8t?= =?us-ascii?Q?PGP48sWRN4vU3EKoK9yIQby1x+o0ire?= X-Microsoft-Exchange-Diagnostics-untrusted: 1; BY1PR03MB1481; 5:ataNDwQeDhc33FmYfs1WfMbvLVJI3Q7gq6bm+4iOftdhmzuZz9bu+ZW/eqOlmOwvQC3aZMQz+hJYc7YXhaUAQ+8tzvP3MI9hoFiZEGjQXiyF8Q2bZdVt55iDJyKorLS78M+u1oSEHeKjWJSE2JBihw==; 24:0ktx0ZoNzYSVlfAPGxCtzHcaXBzUCoLvb6mObFj8xBvLx5GRTlamBMgAXPj1MJZ4ydpnSPWarE0PWm9IWF2nC0LssR0U7hIxWgH/E/hZXvU=; 20:2sbZBCx8BBH96/i6ch3Mx0ggwH9jNsaFuW6o94QHy3Ng215eOFggj93A+6v4oA8xLj53ZpxEZKAV/u5iUhnhTZkiNLszjDgqbIv49OdJAiFooiHydGwd5Z45BjXBenV3ZcC4Ll3J0s9ydFzMvGWNVW0jZLu0i3fEzdiA5Jwm4Lc= SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY1PR03MB1481 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: BN1BFFO11FD056.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)(3846002)(47776003)(6116002)(105606002)(586003)(106466001)(189998001)(6806005)(4001450100002)(76176999)(48376002)(1096002)(50226001)(5001770100001)(21840400001)(66066001)(107886002)(77096005)(1220700001)(81166005)(4326007)(16796002)(15975445007)(50466002)(33646002)(5003940100001)(2876002)(5008740100001)(19580395003)(50986999)(86152002)(19580405001)(3720700001)(92566002)(575784001)(229853001)(2201001)(956001)(11100500001)(5004730100002)(87936001)(2950100001)(86362001)(4001430100002)(85426001)(2906002)(7099028)(921003)(1121003)(4720700001); DIR:OUT; SFP:1101; SCL:1; SRVR:BN3PR03MB2276; H:sj-itexedge04.altera.priv.altera.com; FPR:; SPF:Fail; MLV:sfv; MX:1; A:0; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BN1BFFO11FD056; 1:i/UGya5K0TZkTBzvPl/N5QUyfMHWoQUj4Az5F/1sCnzHzFTEdND2DFgOrvgWFz+y9C9jxzDhzEyc9CVkW7kERhqOWxNSKGM44lI3+aYpv42rhweX/Y+z9B4vpyFBnioCzBpYrc1nJud9kzBHMOv6Tq/fDQysPBm+i/dZFjRkrPlbn7lt0skzN3F2qVcKUW6rEuYEjaKlwcBza+5ncMtW3iwnPSCsVElv8S27ECc3XM0OK7bIgQyXpPmCy0AqokbBN1uEvwGXnjAKpM366nyvaPCdLNcbf/fyOIJ0kPcVZ0IMwaWmGt8sOaEmJBAOLt0MRRkDzTak4SwXEg00vTzaD08i+bYIZC75pBI5WpCbnnGncMyqpndp9a0F+OAXZqHIS5s0rHXf1bvJDYaaiWmIzNWrrcqwdM4l2iOh68wFp2FtVCEZLLD5x+idzxYEw90PhkgZHhBuG50XH9Wti+oWRFUKUIckxz+GpiTV0r5IXdXDkKc0cc4tDUpLJKX/mnP9 X-Microsoft-Exchange-Diagnostics: 1; BN3PR03MB2276; 2:ABTJMs4foVoB1+0SDyetLWejhmtDZ+38J4/Gs+t7/Xo7GGHDJaiu4kwJ9EFyRLcoLQbLzNYM3Vr2jo5lX7rSnjhh/CrXMI7mHMet1eFJHLUN/XBBRt6FBBDjwbMHCY95fa62ymiVc/mXEbR1WYzl6Ji5pMEwXbjidUqKiAdoIzNo3U6YQAsflXD2u0YWgUKF; 3:K2RWUfafSWYSMJROWske65WmOdwUz8BH9VbpP0zJi6KPZf6852s2Hax2ZHUntbu9DwotP+rldfABMudSA4lJdlV3rTPIhTDekqj2vuPk+njSRNqbCjr57kTPabWpebVH1yk3XwTGpFVviNPXDDoGZ1PrKFs7aL97oSvcJi4E8R1WSk3bXQ59717+5H4MDmTKHf5vTXikUAZFVnnwmtyy9Pz8RiJys6hjFxbAiM7td1lvJ94/aIbGNHtbX7Ed3ehQ X-DkimResult-Test: Passed X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(3001016); SRVR:BN3PR03MB2276; X-Microsoft-Exchange-Diagnostics: 1; BN3PR03MB2276; 25:j3dyppmL3O5ZaaQNzP42Q34IKj8hqWBSCQzCxkHJP/m/Ye4KoiTXnYLVxOCfF8nsg37uyO4Fi/Zqrm2yqUeExUORU0OwzMQLA++TxJ1Kv9Si7ZW+UhHS5uMubfiDj2hkDvbtbaPI7yEOWlYT/924nEFPUYGpbMCxl/Dbdu2pkgrtN5+myYsExN4R5ed0DqUGLYbgaZBjoFGq72Ok2nUWt0Ap5M8vL8T1PEhB402HxxXed/c9XS0jjSYuD083T2yTH4sGKqPuxaFpRfWsFBUqnK9t/NHJV4I0y+Zv3KXPHnnWSfRFE7VRc0qTcjHwoSiN+6jXE5ptKCt0nA7MD6SO9ZsxmdMzCvrGCjPStIrigE8hyxAf7Nh9UXvZ17XTWYhn/yF/gCg+SDO3fccqxehrSDMeGcATpaSNTRby4YRf+NAjzop5ON7lrz/qZiRQ6e1HGNQgCcIBquKevwo6wniZg9cfpkDSQx9ij0PwXYdfcFlC0IrsatXBAn1T9Mmj8u4Jn1BPJqJeeB6z4sOr1W89Mc6E08My/py2QNOdKgDnmTlM1A/Aj0mJm0ZxU47EHpbzX4LFN+9jkdD1PXNGGS+3tk2ACUOMqaCMOuzwLmkxTvQDGMndemQMTMK2COwd1MiKJDtbQE6pssTScQsV0dLRCkfZKXEd8K8LM7chWxvWIYXhllp8KDRmfH4XimaUKUWp; 20:8hlBTRwjgQo2GNAP7oJADZNx/aHHDU0E6o8RIqotvP7GH8idiALuDTiWktKU5l3x6Bvbea87f36qsoPQnJsDsaVbIYFsfxpe+BzbvKuyHULMv8aQm406KrUNcWLaGkFs4K17iwRd5liyN+jmi2KenFR/Q5yYlC1EapgO8dT0lYs= X-Microsoft-Exchange-Diagnostics: 1; BN3PR03MB2276; 4:ER726WRaG834bVInB0AhHBT1fP0TO+pFjgxOfE6zhLhSyS1PuwTsmQTjGLWNTJrmO0SluJzm2fsnp327Nd8ti/IrYbLBr91bBnaTndFFc9h/8zGaODoe8nBkCm2KQL1Acingspr68Nmt70x8JOFszyBC/x65Dx8WfRHJX5mzPJYgLutJ7GbE7FUmv/G76nOCusC4UiEYeMUBSpyIvNGIgO0Taosv0h9xbjfdqJh4TPXIx/mN89qPSKnXPb9qwmE66sMKQR0jtFFWt4ihmoxPDk9kErYdDrzaLik1Gr9XQvHxNhMh14pAQTVFs7zucaJcuu7OtZ1Gl+FR6yfWZrW7BHfCgcJ808iW547oH19eI+eNlBeHFqnqOn1mMZ3o5Yb55u2yvJ8LdzFRtKH2De23LGS7C8Ges7NrvhJdTG4AfM2FQ9r7sEOxGFxkzcw6kh9X/wskDObKyPd/Kj7c2eRS/A== X-Forefront-PRVS: 0896BFCE6C X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BN3PR03MB2276; 23:aIqeXWg9tKd1DkYDfR794juyLHIjjnuKwVGPEGkpu?= =?us-ascii?Q?0rPx21CCPInO95VWiXVQ0HE5/I/nAyHpSyj1NL4NWwBjszTq44wQlPwYwpWq?= =?us-ascii?Q?+KWw1NUPxuwda8u+Gy538SP08nkcM69i+FAEdfxSq7G8F7cECCd9ndc16aJr?= =?us-ascii?Q?g++WH1o1HPQlf95rb9nGAEKju47w/nS+7NcLMfkOPcFdSEiq/+PEc7TxDN4M?= =?us-ascii?Q?dqTRDQT9D0Db+ZGFDmqlSf76/ccwgRpEq0Wva4FqOFBHS+3JpRcunZ1ZQYWL?= =?us-ascii?Q?wcwiSj257xEwa1PFYnhjEUl1sEghs9gmyONU+T1XV3rTFr3rLZaB7oEJPAHv?= =?us-ascii?Q?6uxyhpBUM4y23ylIn8gv699+Ocd8QCxGQjp7X6EQ2mtR8FfViExLmckTFj4Z?= =?us-ascii?Q?gdDxVw34C+Y4L2qhy3OSX/8MkFiRLY92Aw7G9BzD5z0nt+EgDKDm72a1R16d?= =?us-ascii?Q?D1u3++7oqE0OPjKs70D6eiC2SiIHFXlMvjkozpHO+scI+skj/K6CJQ2Vq4ZR?= =?us-ascii?Q?p5XswzCSuqiMBFHTI/vlug90aGkyxzD24uzOdFScbXnkpJeT3omx6iouuZLb?= =?us-ascii?Q?lWjfKL+a/BM3yPij0A6xoqpVJRXSZV7y5I9bvzDAje/w4Maf/P0GFvvL5BMe?= =?us-ascii?Q?5BYUgHhZ7EP0v54/N/i5mnQLGttcuz2Qsm8ajTKit3xlQ97BlcZ6Uj2itLTM?= =?us-ascii?Q?bJk1Onv5u6lfTvLJSxpwTsbc4EvnqKxJ4AKuVly7RrVUXOi0bQPeKiya1vOS?= =?us-ascii?Q?+QNAi2X6HHDko95m+Q6pFDuES/4P30Rpt/NowyajHqdLfVV7gZsrPfAMOMW1?= =?us-ascii?Q?oUSh4MeqR4R2CL51vn9gF8QDzNkWQcoFO7maCxg/c7PvKnLK3nK9S1BJXdEE?= =?us-ascii?Q?YvyIlJczMDjZKSmJ9i413EzAgxjZcomyo2e7wQq1UlniQU9h7KZ94Uxvyjri?= =?us-ascii?Q?utQuMot37HjBKWWzTZ+TlDId4nvXsr+HBFhwFceISkCr9PE1gRFXmYl85dit?= =?us-ascii?Q?rplrU87Qsf4kascQye/PlSTHh9L8ER0J7zGE/3cZ52ephg5fmTzf5MX/X0gr?= =?us-ascii?Q?0QvOjdvg0k1vnW5La3BuWNFD8XPN2qSikKVLpEE3QRX5kXD9deX8yB8tFaLs?= =?us-ascii?Q?r+up1DnbqglYgnwVAok8iQriLE48Z/MeWltXjzNN2aGDitSv+Dp9sroW4f6u?= =?us-ascii?Q?PJQnmWFkzYuSSslMyNL8ADEWxbIVr810essqnuMNZkJeVOIQtiVdoB+SNkwW?= =?us-ascii?Q?WklsyisfgGkRLCB242gk5a9txMy6F2V8lAqgWvOz7VwvCJtwtN817tBnxUJw?= =?us-ascii?Q?9U1eC4wxqprsDEOxhT3JHJgTQkqmH9ph+esiMJyg15R0ABGa1PhGJzYGM1eX?= =?us-ascii?Q?UsAmi6e4KyNhLYVIQ8oSukyI1GvZ9P0Dw6UPiV6CH8CP7UETNn2tRIMdcJ+K?= =?us-ascii?Q?pPZz/mgNo0Hfn6H4BdqOeYG2tIWD5c=3D?= X-Microsoft-Exchange-Diagnostics: 1; BN3PR03MB2276; 5:xcAz3ctzb19lD6/uKqkVfoXGFte2fyST49ftHTW11saQORBveEnfvgRDVYZcU3BUcHNhfCkqalmdZk9KkkWJGwVbc3fSnVhl7gqz5sO+9jcYafTHL9O3vD0SJSbDiqvfc3Ijfi5U8TgKhbFZcNhOIw==; 24:L0iO/fgd11TScVqL1/N085M3xiMi941kzVQiNjhX+AvAl0w20Bfj/RDfV2VsGdp/TKLI4+P2TDdcJ0i7QDvDgTEAEa35HpO0rNSCeFoohS8=; 20:ml1H9ywJBPkkC4XJDj8Cy6zGoVCuaoF9vDLNHvmTPVTwwvxVKldlcDYikzvxj/iB5cUcAGv7ZDvggbIYCkqajQouAkLzKpoOmWZk69EDuXQmnfMT5XOMH1DZVwnDe8LEvp+ga4u3z+GVRoEgUFY4vEOX64jyQi8x1MoGGUWWPA4= X-OriginatorOrg: opensource.altera.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Mar 2016 19:09:10.1748 (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: BN3PR03MB2276 Sender: linux-gpio-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-gpio@vger.kernel.org From: Thor Thayer Add support for the Altera Arria10 Development Kit System Resource chip which is implemented using a MAX5 as a external gpio extender, and hardware monitor with the regmap framework over a SPI bus. Signed-off-by: Thor Thayer --- drivers/mfd/Kconfig | 11 +++ drivers/mfd/Makefile | 2 + drivers/mfd/altera-a10sr.c | 177 ++++++++++++++++++++++++++++++++++++++ include/linux/mfd/altera-a10sr.h | 146 +++++++++++++++++++++++++++++++ 4 files changed, 336 insertions(+) create mode 100644 drivers/mfd/altera-a10sr.c create mode 100644 include/linux/mfd/altera-a10sr.h diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig index eea61e3..d1edf81 100644 --- a/drivers/mfd/Kconfig +++ b/drivers/mfd/Kconfig @@ -18,6 +18,17 @@ config MFD_CS5535 This is the core driver for CS5535/CS5536 MFD functions. This is necessary for using the board's GPIO and MFGPT functionality. +config MFD_ALTERA_A10SR + bool "Altera Arria10 DevKit System Resource chip" + depends on ARCH_SOCFPGA && SPI_MASTER=y + select REGMAP_SPI + select MFD_CORE + help + Support for the Altera Arria10 DevKit MAX5 System Resource chip + using the SPI interface. This driver provides common support for + accessing the external gpio extender (LEDs & buttons) and + hw monitor. + config MFD_ACT8945A tristate "Active-semi ACT8945A" select MFD_CORE diff --git a/drivers/mfd/Makefile b/drivers/mfd/Makefile index 5eaa6465d..4f1ff91 100644 --- a/drivers/mfd/Makefile +++ b/drivers/mfd/Makefile @@ -203,3 +203,5 @@ intel-soc-pmic-objs := intel_soc_pmic_core.o intel_soc_pmic_crc.o intel-soc-pmic-$(CONFIG_INTEL_PMC_IPC) += intel_soc_pmic_bxtwc.o obj-$(CONFIG_INTEL_SOC_PMIC) += intel-soc-pmic.o obj-$(CONFIG_MFD_MT6397) += mt6397-core.o + +obj-$(CONFIG_MFD_ALTERA_A10SR) += altera-a10sr.o diff --git a/drivers/mfd/altera-a10sr.c b/drivers/mfd/altera-a10sr.c new file mode 100644 index 0000000..13665d4 --- /dev/null +++ b/drivers/mfd/altera-a10sr.c @@ -0,0 +1,177 @@ +/* + * Copyright Altera Corporation (C) 2014-2016. All Rights Reserved + * + * This program is free software; you can redistribute it and/or modify it + * under the terms and conditions of the GNU General Public License, + * version 2, as published by the Free Software Foundation. + * + * This program is distributed in the hope it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + * + * SPI access for Altera Arria10 MAX5 System Resource Chip + * + * Adapted from DA9052 + * Copyright(c) 2011 Dialog Semiconductor Ltd. + * Author: David Dajun Chen + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +static const struct mfd_cell altr_a10sr_subdev_info[] = { +}; + +static bool altr_a10sr_reg_readable(struct device *dev, unsigned int reg) +{ + switch (reg) { + case ALTR_A10SR_VERSION_READ: + case ALTR_A10SR_LED_RD_REG: + case ALTR_A10SR_PBDSW_RD_REG: + case ALTR_A10SR_PBDSW_IRQ_CLR_REG: + case ALTR_A10SR_PBDSW_IRQ_RD_REG: + case ALTR_A10SR_PWR_GOOD1_RD_REG: + case ALTR_A10SR_PWR_GOOD2_RD_REG: + case ALTR_A10SR_PWR_GOOD3_RD_REG: + case ALTR_A10SR_FMCAB_RD_REG: + case ALTR_A10SR_HPS_RST_RD_REG: + case ALTR_A10SR_USB_QSPI_RD_REG: + case ALTR_A10SR_SFPA_RD_REG: + case ALTR_A10SR_SFPB_RD_REG: + case ALTR_A10SR_I2C_M_RD_REG: + case ALTR_A10SR_WARM_RST_RD_REG: + case ALTR_A10SR_WR_KEY_RD_REG: + case ALTR_A10SR_PMBUS_RD_REG: + return true; + default: + return false; + } +} + +static bool altr_a10sr_reg_writeable(struct device *dev, unsigned int reg) +{ + switch (reg) { + case ALTR_A10SR_LED_WR_REG: + case ALTR_A10SR_PBDSW_IRQ_CLR_REG: + case ALTR_A10SR_FMCAB_WR_REG: + case ALTR_A10SR_HPS_RST_WR_REG: + case ALTR_A10SR_USB_QSPI_WR_REG: + case ALTR_A10SR_SFPA_WR_REG: + case ALTR_A10SR_SFPB_WR_REG: + case ALTR_A10SR_WARM_RST_WR_REG: + case ALTR_A10SR_WR_KEY_WR_REG: + case ALTR_A10SR_PMBUS_WR_REG: + return true; + default: + return false; + } +} + +static bool altr_a10sr_reg_volatile(struct device *dev, unsigned int reg) +{ + switch (reg) { + case ALTR_A10SR_PBDSW_RD_REG: + case ALTR_A10SR_PBDSW_IRQ_RD_REG: + case ALTR_A10SR_PWR_GOOD1_RD_REG: + case ALTR_A10SR_PWR_GOOD2_RD_REG: + case ALTR_A10SR_PWR_GOOD3_RD_REG: + case ALTR_A10SR_HPS_RST_RD_REG: + case ALTR_A10SR_I2C_M_RD_REG: + case ALTR_A10SR_WARM_RST_RD_REG: + case ALTR_A10SR_WR_KEY_RD_REG: + case ALTR_A10SR_PMBUS_RD_REG: + return true; + default: + return false; + } +} + +const struct regmap_config altr_a10sr_regmap_config = { + .reg_bits = 8, + .val_bits = 8, + + .cache_type = REGCACHE_NONE, + + .use_single_rw = true, + .read_flag_mask = 1, + .write_flag_mask = 0, + + .max_register = ALTR_A10SR_WR_KEY_RD_REG, + .readable_reg = altr_a10sr_reg_readable, + .writeable_reg = altr_a10sr_reg_writeable, + .volatile_reg = altr_a10sr_reg_volatile, + +}; + +static int altr_a10sr_spi_probe(struct spi_device *spi) +{ + int ret; + struct altr_a10sr *a10sr; + + a10sr = devm_kzalloc(&spi->dev, sizeof(*a10sr), + GFP_KERNEL); + if (!a10sr) + return -ENOMEM; + + spi->mode = SPI_MODE_3; + spi->bits_per_word = 8; + spi_setup(spi); + + a10sr->dev = &spi->dev; + + spi_set_drvdata(spi, a10sr); + + a10sr->regmap = devm_regmap_init_spi(spi, &altr_a10sr_regmap_config); + if (IS_ERR(a10sr->regmap)) { + ret = PTR_ERR(a10sr->regmap); + dev_err(&spi->dev, "Allocate register map Failed: %d\n", ret); + return ret; + } + + ret = mfd_add_devices(a10sr->dev, PLATFORM_DEVID_AUTO, + altr_a10sr_subdev_info, + ARRAY_SIZE(altr_a10sr_subdev_info), + NULL, 0, NULL); + if (ret) + dev_err(a10sr->dev, "mfd_add_devices failed: %d\n", ret); + + return ret; +} + +static int altr_a10sr_spi_remove(struct spi_device *spi) +{ + mfd_remove_devices(&spi->dev); + + return 0; +} + +static const struct of_device_id altr_a10sr_spi_of_match[] = { + { .compatible = "altr,altr-a10sr" }, + { }, +}; +MODULE_DEVICE_TABLE(of, altr_a10sr_spi_of_match); + +static struct spi_driver altr_a10sr_spi_driver = { + .probe = altr_a10sr_spi_probe, + .remove = altr_a10sr_spi_remove, + .driver = { + .name = "altr_a10sr", + .of_match_table = altr_a10sr_spi_of_match, + }, +}; + +module_spi_driver(altr_a10sr_spi_driver); + +MODULE_LICENSE("GPL v2"); +MODULE_AUTHOR("Thor Thayer"); +MODULE_DESCRIPTION("Altera Arria10 DevKit System Resource MFD Driver"); diff --git a/include/linux/mfd/altera-a10sr.h b/include/linux/mfd/altera-a10sr.h new file mode 100644 index 0000000..7087afc --- /dev/null +++ b/include/linux/mfd/altera-a10sr.h @@ -0,0 +1,146 @@ +/* + * Copyright Altera Corporation (C) 2014-2016. All Rights Reserved + * + * This program is free software; you can redistribute it and/or modify it + * under the terms and conditions of the GNU General Public License, + * version 2, as published by the Free Software Foundation. + * + * This program is distributed in the hope it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + * + * Declarations for Altera Arria10 MAX5 System Resource Chip + * + * Adapted from DA9052 + * Copyright(c) 2011 Dialog Semiconductor Ltd. + * Author: David Dajun Chen + */ + +#ifndef __MFD_ALTERA_A10SR_H +#define __MFD_ALTERA_A10SR_H + +#include +#include +#include +#include +#include + +/* Write registers are always on even addresses */ +#define WRITE_REG_MASK 0xFE +/* Odd registers are always on odd addresses */ +#define READ_REG_MASK 0x01 + +#define ALTR_A10SR_BITS_PER_REGISTER 8 +/* + * To find the correct register, we divide the input GPIO by + * the number of GPIO in each register. We then need to multiply + * by 2 because the reads are at odd addresses. + */ +#define ALTR_A10SR_REG_OFFSET(X) (((X) / ALTR_A10SR_BITS_PER_REGISTER) << 1) +#define ALTR_A10SR_REG_BIT(X) ((X) % ALTR_A10SR_BITS_PER_REGISTER) +#define ALTR_A10SR_REG_BIT_CHG(X, Y) ((X) << ALTR_A10SR_REG_BIT(Y)) +#define ALTR_A10SR_REG_BIT_MASK(X) (1 << ALTR_A10SR_REG_BIT(X)) + +/* Arria10 System Controller Register Defines */ +#define ALTR_A10SR_NOP 0x00 /* No Change */ +#define ALTR_A10SR_VERSION_READ 0x01 /* MAX5 Version Read */ +#define ALTR_A10SR_LED_WR_REG 0x02 /* LED - Upper 4 bits */ +#define ALTR_A10SR_LED_RD_REG 0x03 /* LED - Upper 4 bits */ +#define ALTR_A10SR_PBDSW_RD_REG 0x05 /* PB & DIP SW - Input only */ +#define ALTR_A10SR_PBDSW_IRQ_CLR_REG 0x06 /* PB & DIP SW Flag Clear */ +#define ALTR_A10SR_PBDSW_IRQ_RD_REG 0x07 /* PB & DIP SW Flag Read */ +#define ALTR_A10SR_PWR_GOOD1_RD_REG 0x09 /* Power Good1 Read */ +#define ALTR_A10SR_PWR_GOOD2_RD_REG 0x0B /* Power Good2 Read */ +#define ALTR_A10SR_PWR_GOOD3_RD_REG 0x0D /* Power Good3 Read */ +#define ALTR_A10SR_FMCAB_WR_REG 0x0E /* FMCA/B & PCIe Pwr Enable */ +#define ALTR_A10SR_FMCAB_RD_REG 0x0F /* FMCA/B & PCIe Pwr Enable */ +#define ALTR_A10SR_HPS_RST_WR_REG 0x10 /* HPS Reset */ +#define ALTR_A10SR_HPS_RST_RD_REG 0x11 /* HPS Reset */ +#define ALTR_A10SR_USB_QSPI_WR_REG 0x12 /* USB, BQSPI, FILE Reset */ +#define ALTR_A10SR_USB_QSPI_RD_REG 0x13 /* USB, BQSPI, FILE Reset */ +#define ALTR_A10SR_SFPA_WR_REG 0x14 /* SFPA Control Reg */ +#define ALTR_A10SR_SFPA_RD_REG 0x15 /* SFPA Control Reg */ +#define ALTR_A10SR_SFPB_WR_REG 0x16 /* SFPB Control Reg */ +#define ALTR_A10SR_SFPB_RD_REG 0x17 /* SFPB Control Reg */ +#define ALTR_A10SR_I2C_M_RD_REG 0x19 /* I2C Master Select */ +#define ALTR_A10SR_WARM_RST_WR_REG 0x1A /* HPS Warm Reset */ +#define ALTR_A10SR_WARM_RST_RD_REG 0x1B /* HPS Warm Reset */ +#define ALTR_A10SR_WR_KEY_WR_REG 0x1C /* HPS Warm Reset Key */ +#define ALTR_A10SR_WR_KEY_RD_REG 0x1D /* HPS Warm Reset Key */ +#define ALTR_A10SR_PMBUS_WR_REG 0x1E /* HPS PM Bus */ +#define ALTR_A10SR_PMBUS_RD_REG 0x1F /* HPS PM Bus */ + +struct altr_a10sr { + struct device *dev; + struct regmap *regmap; +}; + +/* Device I/O API */ +static inline int altr_a10sr_reg_read(struct altr_a10sr *a10sr, + unsigned char reg) +{ + int val, ret; + + ret = regmap_read(a10sr->regmap, (reg | READ_REG_MASK), &val); + if (ret < 0) + return ret; + + return val; +} + +static inline int altr_a10sr_reg_write(struct altr_a10sr *a10sr, + unsigned char reg, unsigned char val) +{ + int ret; + + ret = regmap_write(a10sr->regmap, (reg & WRITE_REG_MASK), val); + if (ret < 0) + return ret; + + return ret; +} + +static inline int altr_a10sr_group_read(struct altr_a10sr *a10sr, + unsigned char reg, + unsigned int reg_cnt, + unsigned char *val) +{ + return regmap_bulk_read(a10sr->regmap, reg, val, reg_cnt); +} + +static inline int altr_a10sr_group_write(struct altr_a10sr *a10sr, + unsigned char reg, + unsigned int reg_cnt, + unsigned char *val) +{ + return regmap_bulk_write(a10sr->regmap, reg, val, reg_cnt); +} + +static inline int altr_a10sr_reg_update(struct altr_a10sr *a10sr, + unsigned char reg, + unsigned char bit_mask, + unsigned char reg_val) +{ + int rval, ret; + + /* + * We can't use the standard regmap_update_bits function because + * the read register has a different address than the write register. + * Therefore, just do a read, modify, write operation here. + */ + ret = regmap_read(a10sr->regmap, (reg | READ_REG_MASK), &rval); + if (ret < 0) + return ret; + + rval = ((rval & ~bit_mask) | (reg_val & bit_mask)); + + ret = regmap_write(a10sr->regmap, (reg & WRITE_REG_MASK), rval); + + return ret; +} + +#endif /* __MFD_ALTERA_A10SR_H */