From patchwork Tue Jul 12 19:36:40 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alan Tull X-Patchwork-Id: 9226101 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 06E0660868 for ; Tue, 12 Jul 2016 19:43:39 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id E759F1FF0B for ; Tue, 12 Jul 2016 19:43:38 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id DB8DE27D85; Tue, 12 Jul 2016 19:43:38 +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=unavailable 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 BC8701FF0B for ; Tue, 12 Jul 2016 19:43:37 +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 1bN3Z9-0005BL-FW; Tue, 12 Jul 2016 19:41:59 +0000 Received: from mail-bl2nam02on0041.outbound.protection.outlook.com ([104.47.38.41] helo=NAM02-BL2-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.85_2 #1 (Red Hat Linux)) id 1bN3Ys-00056g-QO for linux-arm-kernel@lists.infradead.org; Tue, 12 Jul 2016 19:41:47 +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=+eOgYQITEoc0Ee12tnNzMdxrdEwhFvlFtKFKlZs87BA=; b=R4ekiAGalPqlyEQMHX8Xt9nI1v+bWfA1FvyLGQtL8qKzqC7k4qr9paUXjs/yvRWA7bd58hHX/d3F1AiolufcTMuyOYZFdCWO4tqPXhcTaHGN1v0a3Sxx5fOak5nUWi9FdnGOz/b/KaZAiZJfopHe/A+Uz9CCTbvKOae2IMaoiWY= Received: from BN3PR0301CA0019.namprd03.prod.outlook.com (10.160.180.157) by BN3PR0301MB0899.namprd03.prod.outlook.com (10.160.156.141) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.539.14; Tue, 12 Jul 2016 19:41:19 +0000 Received: from BL2FFO11FD005.protection.gbl (2a01:111:f400:7c09::110) by BN3PR0301CA0019.outlook.office365.com (2a01:111:e400:4000::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.539.14 via Frontend Transport; Tue, 12 Jul 2016 19:41:19 +0000 Authentication-Results: spf=fail (sender IP is 66.35.236.227) smtp.mailfrom=opensource.altera.com; lists.infradead.org; dkim=pass (signature was verified) header.d=altera.onmicrosoft.com; lists.infradead.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 BL2FFO11FD005.mail.protection.outlook.com (10.173.161.1) with Microsoft SMTP Server (TLS) id 15.1.534.7 via Frontend Transport; Tue, 12 Jul 2016 19:41:18 +0000 Received: from NAM02-SN1-obe.outbound.protection.outlook.com (216.32.180.16) by webmail.altera.com (66.35.236.227) with Microsoft SMTP Server (TLS) id 14.3.174.1; Tue, 12 Jul 2016 12:40:21 -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=+eOgYQITEoc0Ee12tnNzMdxrdEwhFvlFtKFKlZs87BA=; b=R4ekiAGalPqlyEQMHX8Xt9nI1v+bWfA1FvyLGQtL8qKzqC7k4qr9paUXjs/yvRWA7bd58hHX/d3F1AiolufcTMuyOYZFdCWO4tqPXhcTaHGN1v0a3Sxx5fOak5nUWi9FdnGOz/b/KaZAiZJfopHe/A+Uz9CCTbvKOae2IMaoiWY= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=atull@opensource.altera.com; Received: from linuxheads99.altera.com (64.129.157.38) by BN3PR03MB1509.namprd03.prod.outlook.com (10.163.35.148) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.534.14; Tue, 12 Jul 2016 19:41:14 +0000 From: Alan Tull To: Rob Herring Subject: [PATCH v18 1/6] fpga: add bindings document for fpga region Date: Tue, 12 Jul 2016 14:36:40 -0500 Message-ID: <20160712193645.9098-2-atull@opensource.altera.com> X-Mailer: git-send-email 2.9.1 In-Reply-To: <20160712193645.9098-1-atull@opensource.altera.com> References: <20160712193645.9098-1-atull@opensource.altera.com> MIME-Version: 1.0 X-Originating-IP: [64.129.157.38] X-ClientProxiedBy: BY2PR11CA0004.namprd11.prod.outlook.com (10.163.150.14) To BN3PR03MB1509.namprd03.prod.outlook.com (10.163.35.148) X-MS-Office365-Filtering-Correlation-Id: d705f05e-0e7b-4572-608a-08d3aa8c7ee3 X-Microsoft-Exchange-Diagnostics-untrusted: 1; BN3PR03MB1509; 2:/7aVQBtMtGjSw9CJckFEGt3IAqvKSMrwaOOmwT8spNFVQ7QvZQoEUPeWSk3vBcnx6DmoVYUDRB7spHdY8J/qfORFc7J3ufwDYojEcIaFvEVs47t4y0OO/vUF4UHDn5g0/no+BYE7q/DKJoroHQXYlWhmbEzgZbnr/rUIxfPiyhLvABSNtEqoafheHCy01YSM; 3:nv6TQCV2phmp5Q7Yiup4cnYHaUKJF+U6dTftHHZBqGhjIrlYSn0DHKpCh/ntIIxPmi8nGfLrCvmrkkY1OpiNprjHmPo4e0PRpA74ffp1E18c8YqiY6uZaMqftQBW/Gfw; 25:joqdNme3W7IfwvFloMF494TBOC83z8iPMWWgoUKnfTY6cIiv70DzPEDZONhvRC/D24k8pMrPnT8Aofflzy09LobTfDguB9HyzRHp6tUQBCCT69uisnB8BUnfeKStDUv8ZXX9vJi1sXPa0UI7DLzyieWWH9v/H28TXn3+LK8sRrBVfxO6t35XD+94ii4cphY7d9y7ehsggb6XP77zRfDGufWLtFMwwW7vnee0sMMxTc0+gHiS18Yf7e9VjapGb08t2NixdCZBug1qjHvPxjCbDRJV8IZTs+DVuVA9pIC7SajA9euFG0HHoNuEevFWgZAZYg/eeW+rzN+GyHegI1M4wDv8qHjZqyKe/apHob+KCVoOB+0v15VQIvclQfIhDNaV/maOhm3AHM8rES9jXmLUdMc1RLOnBeELxUx5nJownH8=; 31:BFRsDOHMpeGa2/CUHhrAuQu43O7i8Z6PwkDu7R+XojhqQkKH6PpNCZJlnZbJLdjeV2cOjwdQxPCcp/2urR4piweQHXY8TO25AY7RqF88yBlhw2i7egVsUwJqiwhl+uzEXYYSYJfh/drhz/aSU53u8cTVma+aMk3Z+ySqCSgKH6PzpvqdXRHEpdWPh80iSxXzF126lfEIKZzUAUFiTm3Qiw== X-Microsoft-Antispam-Untrusted: UriScan:; BCL:0; PCL:0; RULEID:; SRVR:BN3PR03MB1509; X-Microsoft-Exchange-Diagnostics-untrusted: 1; BN3PR03MB1509; 20:FH0AuLc4aUeO6LP2NKcHCQuoPB+R3ll5Xrh3AnSVOqHPSCfT96w6/5fQgKHvTcdDRxSSrNE1HVWNzWJX1LzeDucE/HHtMZYEboPjvlgM25hwgIEqYAubJ0uVBqtY1dVgs8YRSMfEs3epABnZgUoEhgBWFZ9MNu1uw2JGP48xfZE=; 4:bUC+ywSxrjZhOZKcHA9LQgi2QflPDaVtx8UkZcJHCnTzX9BjRUof0d/tKOCIjLfGbaUxSKd7HAJcXY6+ldnFUZUWbj6sFuCNHrHg+ZMoqtsyIr0NOvcyGcmC4O2vcO1qTh6MTOpD8dXoRodOdON1QJUt3TTaTVYdKmEqOZ/5FDMuNMpiFZezljFm/HZbM2LV93ST97tEu42Y+W1jjy1zWYaSiR9yDV0IrH8r7lS2BhtEHKiQ/MhV+5GK2zM0oY/DN6GdZ6tvkrhm1azt/bdjhTxSWJ/UBGCL47UIdy7hI73QJm3DNjJXYtAlCwxYtRcw0d+yTZyhEpcnt/v5K0Eyg+m5cT5tvOsKwNiA6ZR5pUjEwwkBYgAB+zRcS/zTtw7bMFBnCKKAf/NN7qRYUNf/zrzTNGPGnlnea2SNUBQzeBpW2PcN9IEXzGavF9MS+c0jUoWdfXiHl8pNYtVeNw9xm9NSMN1d986Am+nrqivGGbXLhA2nKsfQda3MTRsMRYja8RS11KnAMSyN4mgenc/69EjIzCffSmEpNdxYK9Ggx+QGFFPBrbFdaJeGqg9aB5GvkRpV4KggV++GRE5cU4SKoCARmjXLkH5nuMbjp5ZNu0JX2Dp5hbf4kQ+GvbmVCQUX X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(34691856369561)(52743740316358)(131327999870524)(80048183373757)(788757137089)(192813158149592)(189271028609987); UriScan:(34691856369561)(52743740316358)(131327999870524)(80048183373757)(788757137089)(192813158149592)(189271028609987); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001)(6055026); SRVR:BN3PR03MB1509; BCL:0; PCL:0; RULEID:; SRVR:BN3PR03MB1509; BCL:0; PCL:0; RULEID:(601004)(2401047)(13015025)(13018025)(5005006)(8121501046)(13024025)(13023025)(13017025)(3002001)(10201501046)(6055026); SRVR:BN3PR0301MB0899; BCL:0; PCL:0; RULEID:; SRVR:BN3PR0301MB0899; X-Forefront-PRVS: 0001227049 X-Forefront-Antispam-Report-Untrusted: SFV:NSPM; SFS:(10009020)(4630300001)(6009001)(7916002)(189002)(199003)(42186005)(15974865002)(53416004)(47776003)(86362001)(4001430100002)(106356001)(50226002)(76176999)(50986999)(66066001)(68736007)(7520500002)(92566002)(97736004)(5003940100001)(48376002)(4326007)(69596002)(229853001)(107886002)(110136002)(19580395003)(50466002)(19580405001)(2950100001)(2906002)(8676002)(7736002)(15975445007)(189998001)(105586002)(33646002)(77096005)(81156014)(81166006)(7846002)(6116002)(305945005)(1076002)(586003)(101416001)(3846002); DIR:OUT; SFP:1101; SCL:1; SRVR:BN3PR03MB1509; H:linuxheads99.altera.com; 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; BN3PR03MB1509; 23:k0uyVqYkRh/4sLwEZclMcvWLWy/5yHGQ5av0bq/hK?= =?us-ascii?Q?81JjDMTAntwwLBjSVUSutcHSBNV4zd5JgZTm/9IRU/TN902QJTTOFeA9OqlI?= =?us-ascii?Q?IaxsHmOsTCwon2GUkLje/IZpg6NqR8rLrIrfH1pHN8vcOA0VhgcFxmC2VXgg?= =?us-ascii?Q?32pmXYJbtIvLeIzWNF06uJWQvRSbZ0Ryjf631TIflPKa5jezY4wGyoa/tVQn?= =?us-ascii?Q?NW0DgmvX7hF29If6Pfxw6k6AoRLDYUs1weRdxTjqSQLMLcsdbPJfm1tskPys?= =?us-ascii?Q?AppINThV0c+0f79iJ47CWL0AoLWRnVuLmcytXevCeU+k2RjvPnfU1q1pxhE/?= =?us-ascii?Q?zmt2CYGYuV2JCOr9ELTQqrKeCOlDDxPjb+abfPZB38nudfzBL0Nv/dib4kID?= =?us-ascii?Q?IGztJiVyNoJlbkO5ehISW2BAApPku+qMRYb5nJdOk0Ddm76X1kgLvh0hQcw+?= =?us-ascii?Q?iI+w1N/orFTE/8wRgBYwTpJc7A/Tf5JmNk/6m+JyUavy91FYuBSCVVBOMftl?= =?us-ascii?Q?TKkxhuW/wyClZIU/I+7gON9LURuWCj2lUKTW4B5GgfZmx+R5Lg+7GgD0wBo3?= =?us-ascii?Q?zg5CG3u4e3GJnEI3rVNqE398T0SkfngdOBydRQghhNXUXH9ymMEli6JJW99q?= =?us-ascii?Q?s3+p8vvf+/BktrW+5SMebcEGW9skkZexiL5rSNkCaWiUIQZ99aG9fteZH3ox?= =?us-ascii?Q?mrwY7ui6ch3aJkTUKhvU6nDZ3nvtEa9ZS7W3lvX+nOroLxcIfZVS4KtqW1YD?= =?us-ascii?Q?Q5u+Gm+APMZj/ZSJc7OSDgBrEdP2+C+AYFIadUeZWyvq7TuR1xIziaGQj4eX?= =?us-ascii?Q?ocESBr4HiFUCBwJjyqSI2PH5fw2caUdOSTkDqhANCeYgmN6AMHZ5W9rrO+Eg?= =?us-ascii?Q?RMgIea2VGSwJsiwQxnOXAXLhxODU9a2HN76Mp8cmjkNgKs+1VQT4WThY7uIg?= =?us-ascii?Q?dMNaqU6eQd/zI9mYmju9u7ocNA+0oeAqebKduxZITgKZCsLSkqbzj5c5ttdM?= =?us-ascii?Q?n8f0Uoj0FJR3OKurs5k3ksnGOmzePyO3vfSmuTgu1Pn0Dn4bWtqd0pefuYua?= =?us-ascii?Q?j49tBPaLDYM9rUKdb3vY/zIt0pjERCiYoEDQbSpKT9L/QVOx1EB4avifvJVf?= =?us-ascii?Q?sp076ptXznqLhZYk7fVP1H2rNRvr9/p+cX+oogBmNMppqKkqHNDRh4X26zvI?= =?us-ascii?Q?Eo47kLGMRAFxzU=3D?= X-Microsoft-Exchange-Diagnostics-untrusted: 1; BN3PR03MB1509; 6:Y6LJNh25aWfOlujuKI+c42TsXrgQIQBOoBRjVFmV4CHS6C8ziXcwDVvY57ej9TVrTXttEKzs2BBG+8KloAaUA1iOd0wyjOhXqzrzK4s5tntwHNCKke0BbVwZ6ItdBmTkh8RySMgZNjTTPDV2KyWqUANGTbKXgBzXxsxo2Gtd6WoaX2zCIouPb9Sx9GJvACYhcX+emR+Dn31UQ4C+vPwDu+VwGmTDizre1BX9nscI8IINS2DTiy91OXrXMTE6+s5cyifjOuxpJUaW+Fv+amnRQmvz5xrNqTi7K8cnFOlIJnnU8NUGWOv/CvnzqT5yKPE4aRkOySRixeP35yQ2uOR0FQ==; 5:uKQWxRteHgBnP0FVKzM8RGGkX7jdPkUt8mRxhW0r7rcjA4WYv7DZEmKdEBxfbcx0Mb8DQ4Z0ZCKQZhLDrDHcybBLtB91EixbWq+nJ0A1DeUsIrl8HMYZs91/pKw3GPsm+5uz1zgY9hoP6sUxJYsOmg==; 24:+CQBvKi2MH086l+1Y3fqyy16vuYL4UhH+JGnhOuU51l/UD6h6FFLfEvRNzREFQeDT2Xe3pRUWFO20EMhb/LgNPEY7rTTc8eosGqBmp5tGP4=; 7:pH5+8/0jUJ/Nwcv1yPS9hozEETUQUg7QW7I4V4oZIA5OejeZjpuenutqE8tKhdMOc4LSnp0PIH9njMPQSqix70sJEBgDcvaTILl3vzaVSpHfHro3ekwUozXlfLqg/4EKEWkx0NyqDVb/lExuqzOqK5jGvIX404M2wXsab4rsk1GkvezKRKJieuS+GfaBur7EDhjTGJnUymMckAAbg2JdN0bDKvypxhN1NPFJ28aUqGT9Q6ITlsR8BMB0iCvrrteA SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics-untrusted: 1; BN3PR03MB1509; 20:vPh5aPyJBculUCnNkm7ZcRMiI2URUjaoeX85Z1jGvl30ts8lH2f6k1SyI1MNQY5CLeqT4nsw2kbuQo7IUThg7MQtE4woTUCtBOJYbRcxUe0geVREji4XGZBefmoQ9vXboTuXdpnmk3r16quEHXGos49Kp8qvUl8vD/G6Q2NDa8w= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN3PR03MB1509 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: BL2FFO11FD005.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)(81166006)(81156014)(4001430100002)(8936002)(8676002)(50226002)(3720700001)(50466002)(86362001)(53416004)(356003)(229853001)(15974865002)(87936001)(7846002)(11100500001)(106466001)(2906002)(6806005)(76176999)(50986999)(4326007)(48376002)(92566002)(305945005)(77096005)(16796002)(7736002)(105606002)(47776003)(2950100001)(15975445007)(5003940100001)(7520500002)(68736007)(6070500001)(97736004)(586003)(33646002)(3846002)(19580405001)(956001)(107886002)(110136002)(6116002)(85426001)(1076002)(66066001)(189998001)(19580395003)(7099028); DIR:OUT; SFP:1101; SCL:1; SRVR:BN3PR0301MB0899; H:sj-itexedge03.altera.priv.altera.com; FPR:; SPF:Fail; PTR:InfoDomainNonexistent; A:0; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BL2FFO11FD005; 1:RHxjy9XMEEjpAXWLt2yEeI4ypJOWgaXg0SuozjS1ndgSk2IuXTVjvqzbEJ8OxsFcVGbnwjhW38JedODSpO9fDK4BFVMLYiYGuCX8ChAs7vZ3WDmjbz11ABMc81BJAqtuyHJJzKVdOnaRGnn1xoKDaSuejy5fTM04yWPd/Pc1yJrzOYWFxoQslX4KR+JWE14zH6I6gvbzq+k8FZtkRq3jeDQS8ZSvrT1uG4Uw3b55aYeOEd4H/Qfv/2ZSe8ddsy37pxE3TdqC34HAJWinsCjMprXoktofEcfpxR6k+NGp3zSQ1fs2fqC9MrOZdBCuj8a1cF6Xgd0GlhBlPcQ8GfGGwcNFYfmc26udPi1CTQDZH7EtBQFbYVkqPUWvHKj9Es+p+cywaZuueQEb6RNV48OrKMyTF3ImA9DLwBvCv5SuauclWD6fKkfhcSi38/9y3v8vP3ShsYQh8GJvtZmltVssop5Ju5eGx8/dE5XqfiGs6V00bzF3hJhjG6lfOpO6n9iUFox9N5G6VrCjPSiI69UdLykE+Q1Dl2R/lFzlhVyY6hyYzLQThJqNji9dGBY7Mq0psVWE9O5gzKkL2YcE3FXQD1PAw5TIq6vZwxoH8v6vSWU= X-Microsoft-Exchange-Diagnostics: 1; BN3PR0301MB0899; 2:cYtqj4ItDy3WwFrC+EzYrUzvcVbpLs5iUrm5nw6+DNYD/VxcHYFP6MH3y03WYlrPZZBG8dW4c96jshSy9k+200Iv/DVH5Q/cReaGSR8vX4XzeMMHALmKo18VC3xeKTs7G4f01zkmLP9b/FJShVGc09GFA+t+obTk1LX6pVqWBDDao9dQJ9+X0MAU69d2gPkw; 3:AQDtq8mUkY55UhA9JYYWmSYHyl0I3i3NAXhYp2SgAAGOZq31hpew3Q7TEFHrjOwB9KrVUZ0xbfbtuPRqnXcs9MAmiPAncN5LG7R6Ua5inFz/zdgerol+T4X6oHIYyOtFwDdhmAGOU6O47G8tQJRa+jUFlPjesm7HNpS0ZAEzAOMrWWs92hhEBiM/U7kpZkW3Cn6oiK8ZOR7ZYOpRG5inn2Aqf7dJ+WiuwNW55hJ5kidLAwvUGHd4UybfyHblLtnS X-DkimResult-Test: Passed X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(3001016); SRVR:BN3PR0301MB0899; X-Microsoft-Exchange-Diagnostics: 1; BN3PR0301MB0899; 25:vuKvg4NBgetwFT3jAzglEp2fLAQi9+s8TWDmDIK6nt0skRaL+Whj8lAhz4Ztvj1bAZ7tAHbsJXBk/ikRtH+GaPQCJU6EAMUhjwL54jXVg844o0NjQZXPhkfns4yu/MUDvhTgMOHExkWspTm/uoxxD0NuIwQ6YydZg+HtWey61zL5U7Ql8tw2kXzcchpiGOGxWNkbCFD6JSR6WsHX3Qjm9J/wli3S5FX0p16OnqOUuaMTQ0LhoAH8FRNE18uNhpgB6X6StGOkPLYLUKG4r6BRUh3ElTjn6zxVRazgVz3QqrC1gaOEDqkL8NEIJ3T7TnDtoVltK96T7LYnlXX1jrqkchh4l71kuS5QkLqhXVDnKleAMWkhbjOE0T9EWViTRIn/yUdtUEgHJt4wPE8BGm5dTQVBcSEoB2vPkEwTrohMHEd1EKCvDzDawp9Y6yyLRSRE23jkXTnke46LxXZxVEYsCkezBJ71MXKTnTPlyFjr0TJ0cTbvPOUNYQ4xLCyxFL/lH6AKklnFTcuZGX33TRMxw6wmw0y2ip/mOkFgJBLwBWr5YO/rJIpD1v+HXOwLy+I8D7cAsSjdk7kkLTm1g+GoMfb6L1PaQF8d5NB5ZW87xXzDNLQFWc8NE0polmFvgiju6OS5GVNgFut8fQqadcloKAZIzZOscoRcrVh3ppifgPg8+mN6eXnF4qewVO2IxAKwG9mc+fWlBr4QO5sm70JVsX/AYmib8P2BgUIVpoQBFUnM/xCTTqYHW1PUTY/KCyk05v/bXChLG647PkSojwWf/TtDpiho25+wvdjATYTQaabN9d7HR2vobDOjaA/EdrS4a41omnTbWMQP5vg2Ji+VNStK/YH+N0oaRfvyuPP7oAlj8kRTCC2mNDPaCDpdPNs/ X-Microsoft-Exchange-Diagnostics: 1; BN3PR0301MB0899; 31:7LzvYgzV5SvuaiRwQQmKlFIjLiVNTosxSh44pgqYP6w+0uP2uRAhZJMYf8G8u+TQaWQ3sHC1rUHP/YNFWWZ+KNBQLHTIsq+nFUa+ZthB9FOMiHXOqHNJbF9tiwovP9ZVFs11FKdOmQsbw2rXOmQdCz9d44a0s+jZBOq/BY/UhHdgnReID/tOZU0adFzDM9kqHy4axrlor1yAMg+N+JSWBQ==; 20:6LTQFfzdS42Bpny6LdFGBGm9IroAISZjBk9t3b5/6BF6/FFmrNDLW/jh2LmUlcNib+K985PD+x3lgXz8mmQ7WuALN0Iwqh5/mfwxOdQtqobm6Rex5zWsL9xxMp7FcPmx7kdRim4zv6N1fHXy8LKCeAiswo3w/+yGL34BrbKri5c= X-Microsoft-Exchange-Diagnostics: 1; BN3PR0301MB0899; 4:d0E3PUR4xe/QjDiu73iATNsIPyUzoMfN2VkmnByhtISLu/5RHCMdPJVS5Iy7NPu4R5d6WuW4PRlqpoZ9pDRgOLq9Pn2Iu/TM0puOJh8ZOOnqPnld6y0NN0RvNT5k32AbHe4+vfwXBC6hxyqmDx7PrYZ+PCvMakHLx/BWaZ5V7ntSG+ovUK9xgv6/Z32YZEf2lPO+1u70XzRM/wRhCoe2aatXpmSZFPDPbPy1G8//OCnhBffZT56vDbhDqqzgUUKFbDJYxmlcG1olurOeHeSlWFqPTbO+3ZfrXr5kDkArZCR2/OGmM9Ax8UPZpccvRf08eL5HqfmQlEMFBMUx64JhEPccl9pB3IwFcz6ZgNJBaJiTDi71IUuFpGfkpvktgSq0phc41bmRSZ9j8z1ALdW2JB2DPtUGoE4RC54EHvPMO6NJApxySlWEaZDM8FQ2BAVoIXa5F/DkNFaiC5+2slmZvEmyysf/dSYKTHT83aVi69F8uONy9ezBDKyoWAdzgA02ff3aQ1iEf3xpwE28kiqdLlEnyRQ8N8e9EBlbK4T6nfWBZgPvvFzoNF7jLiIotJEvlqnbiBBuAOhxI+bTeZC04a0a0u5dzhT8614Ym2wRy4Yh6FZTh3xibhfE23hC74MQlyufTAOexEjs6vVstJwkvkFVCoG8HsF60nEdr47yGCffUkrSxKYj2wJh1KfsEQqiCyPh9A4hQNmO0a2dSSUpryuRwotjkOsG2tVhOJ9pkNE= X-Forefront-PRVS: 0001227049 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BN3PR0301MB0899; 23:i2Ry7geEB8BSeHDbZCTl7s5Tbdux4n0GvqkA8t1?= =?us-ascii?Q?3lEQnk+DMfYVsJi+lspYMQXmW275UyoXYKdEQj4W4yLpx/wHTmmYup44X4uD?= =?us-ascii?Q?XY9qLQuMTnbX//Up7I21rxeTdsh58X7jTNc6KH0EMTLggf7zBs9u5EFbe+6l?= =?us-ascii?Q?C4yE9gEWlnm/rwi3Jb9YbRqeA4wStTnVrjeL1jMQNzfdUcOI5TYf4ggjtYhI?= =?us-ascii?Q?pC38xm9tAuX4bNYymZba2Bp2YB4+9jzA1/UuPuTJGekGOKVRnLQ7+Hmr7m9i?= =?us-ascii?Q?irUoTsqhGRbLqmy7QOICRU4B7MH42d8B+vUmmz/lo4hhLMnuIDLvkpd1wwzO?= =?us-ascii?Q?37ZEJ+LgSpDKDGRZ9aMI9lgx4bq5k/G5wTzbFDk8+ku6CyesYJkib374Fnmh?= =?us-ascii?Q?HOqcMofyF6vkDyYqAvahOv+La5EEx1FpXUlDJyLJDYGSc09nLiXoSgQHj8N+?= =?us-ascii?Q?+9jPVBlOHlID1w1D4qEuWdK/k1kgknuxfer9irHiJPi1Igb51OzeTjVXtkd+?= =?us-ascii?Q?GWoFovrbY5hv19c6IRFm8cvhPhE6TUD1SVML6qqQqfxLsYih+0lltaXfBgRd?= =?us-ascii?Q?wiFqBLXE9RBfu/Qy+TwdXCajRpR5sAns1r40cnr411/Gx0IBN1qBKBWiB4Mt?= =?us-ascii?Q?vsFYotPJ3W+bNySb4B2W+PhFKAeKTZ/c9WVKa5/+IwEzslxaxKa7VCITmcis?= =?us-ascii?Q?wNqy6PDvp/m+/dUEqAelM/9uU2bIlsQYPydDMPFCSQgZUD6CVG9SFFiZZ6w0?= =?us-ascii?Q?bOzvrNCynXoDs9ikcv/FWc+5pst40f/OWhumYKQcCHO1f8gM1XXod+YcnGc2?= =?us-ascii?Q?/LDOxygDGInCBGt0ZVraYn1m60YHMOIn1hq9YtVIUvoicgHW40/aA43iTeCq?= =?us-ascii?Q?kAZleWKAs9KXWPa210ROqmeF/ldYu1LGMQ5QLAWWszSu/Q8yZ9UNtUvYnIYr?= =?us-ascii?Q?FoJl7blzxCLQ5XvH0uR30lMm/JbCjH0HRXTVlNJcpT54laBmZswt5wlwWCzN?= =?us-ascii?Q?wsNWgRKOHOfOkccY8TLos1D7G8Q49unu6iuKkdOxIgQn3K0rsWPLgIqc58Ar?= =?us-ascii?Q?5vBUId3o7ujGs+nSvJ7m/oszAMCrYmcYn7xoCSJ2/SFQ4XF9D+h8xKesccI2?= =?us-ascii?Q?tDycczv3cQY9elA2mpyStbOcIWvWCNVdu3Kyr9w5FDKHJjIuM8Yg5XybPTSr?= =?us-ascii?Q?bqew0YjbpBGrwKPMe+1H8RnL696jJuSaeBRV2bId63QAzlieUEzxFSnQMUzu?= =?us-ascii?Q?6hn0EFjW8t7hJkmMEL/0efYvI1JLDty5sLcdWPDgk9gsDbaEjfHHSScXp//B?= =?us-ascii?Q?bfSi0M+H9l8wKE5/SJN5lBvWTVJCzEvCQyCWmkdIZjf1FqapA3ElKIc55+KW?= =?us-ascii?Q?iw9ThZpd9+YVIfqyPGt7JYIwnD4rHObK4sg7KQBoSojgYbaAQf9jtK+TNYu+?= =?us-ascii?Q?46ZfP7WUylg=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1; BN3PR0301MB0899; 6:MZKn2KwQDvc9wFtu1cW9yLIRl/DhClylXFBS0MCpwSybFHSc4g9/KYzCIBx9CAC8m3ksWJ/ckCclJkWUdcNCzoJsMu8ManvjVvUZfwv0lM5YpkokjzYkg/yBwnOORvYaZK0GkHyEU8DGtaEx/BSjuYiMlyHV/46Qob1yKx8BW600VtLL4Mcz6FILcFdee8MryK/QiXMTc2Oit3F72kN++rMAnAGhp49EjPoZHseGxckoFcIcdHRqn37apQt9LB6qKKhtSXufMucS6odtQqtleUjQ4AEHM80tWNw2yBJxi2m2j8Zh4LZp2B809eyXc+ZieVUuzcEeo+B4Y63eptcVNg==; 5:f9tti9XUrWirzSlQx+Z7biX1YtK9OIIaHsyYp81ptEpj5qqWktTVkogOD0p8bF2/jtF7210NdN4pw512hP7lQrQKwOlerrrsrmD7FIOJNxpyPN6/4R7rPdqLIqWxlexCAiz3oTroBUIMyYsy1B8ZZg==; 24:E1NxesPSwILFKA0OD1ebxUpijceAftoVxxSC8AoEzFFlQpRZRBxHFJUZyhM6WfzBE9rWP1sYO3oOG/7/xZjOUT22UhJmtz2+pEPh40ustOI=; 7:wK4CXlqPHZje7DHxPuOXjT4p4tExGLAy5DadQJUUow+sblDHIPLaLQRpeFzY9QCAP25bf2cw3/Wjotccyhx2mvLpnOsyHc/JN1jgma18K+4ym3qIkQO44I1qOHLmqDBvDr23cNBEvkDmDcYvhsFyYM7PsPrkr7geVRImn1MvEuVQeYXN5lMwZnDGKjT+fMugHL1J5HQ2wrkspTo3bf8AJQ== X-Microsoft-Exchange-Diagnostics: 1; BN3PR0301MB0899; 20:KVSa4T0BhPpPilEXG5IzD7tJ1WFM4mikSlV+S4Hk6ZWm7AfcSuSyC7+JSqU6M8JBt4t3NxhkWIZmLBeES+UJls0j+kIfCtDDUlPahSfFXC2N7cdLUfMC0GNDpCB1Ml0qtK6/K3knOMBmk8w47l0n5LHfRkdlblfPRmBXilUQqZs= X-OriginatorOrg: opensource.altera.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Jul 2016 19:41:18.5353 (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: BN3PR0301MB0899 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20160712_124143_215176_92EA1CD2 X-CRM114-Status: UNSURE ( 5.37 ) 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: Mark Rutland , devicetree@vger.kernel.org, Moritz Fischer , Ian Campbell , Alan Tull , Greg Kroah-Hartman , linux-kernel@vger.kernel.org, Dinh Nguyen , delicious.quinoa@gmail.com, linux-arm-kernel@lists.infradead.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 New bindings document for FPGA Region to support programming FPGA's under Device Tree control Signed-off-by: Alan Tull Signed-off-by: Moritz Fischer --- v9: initial version added to this patchset v10: s/fpga/FPGA/g replace DT overlay example with slightly more complicated example move to staging/simple-fpga-bus v11: No change in this patch for v11 of the patch set v12: Moved out of staging. Changed to use FPGA bridges framework instead of resets for bridges. v13: bridge@0xff20000 -> bridge@ff200000, etc Leave out directly talking about overlays Remove regs and clocks directly under simple-fpga-bus in example Use common "firmware-name" binding instead of "fpga-firmware" v14: Use firmware-name in bindings description Call it FPGA Area Remove bindings that specify FPGA Manager and FPGA Bridges v15: Cleanup as per Rob's comments Combine usage doc with bindings document Document as being Altera specific Additions and changes to add FPGA Bus v16: Reworked to document FPGA Regions rename altera-fpga-bus-fpga-area.txt -> fpga-region.txt Remove references that made it sound exclusive to Altera Remove altr, prefix from fpga-bus and fpga-area compatible strings Added Moritz' usage example with Xilinx Cleaned up unit addresses v17: Lots of rewrites to try to make things clearer Clarify that overlay can be rejected if FPGA isn't programmed Add external-fpga-config binding already used in u-boot Change partial-reconfig binding to partial-fpga-config to align with existing u-boot binding format *-fpga-config Add a document from Xilinx' website v18: Fix node names underscores to be hyphens Fix copy/pasted duplicate nodes in diagram --- .../devicetree/bindings/fpga/fpga-region.txt | 491 +++++++++++++++++++++ 1 file changed, 491 insertions(+) create mode 100644 Documentation/devicetree/bindings/fpga/fpga-region.txt diff --git a/Documentation/devicetree/bindings/fpga/fpga-region.txt b/Documentation/devicetree/bindings/fpga/fpga-region.txt new file mode 100644 index 0000000..cfac8c2 --- /dev/null +++ b/Documentation/devicetree/bindings/fpga/fpga-region.txt @@ -0,0 +1,491 @@ +FPGA Region Device Tree Binding + +Alan Tull 2016 + + CONTENTS + - Introduction + - Terminology + - Overview + - Constraints + - FPGA Region + - Supported Use Models + - Sequence + - Device Tree Examples + + +Introduction +============ + +FPGA Regions are introduced as a way to solve the problem of how to program an +FPGA under an operating system and have the new hardware show up in the device +tree. By adding these bindings to the Device Tree, a system can have the +information needed to program the FPGA and add the desired hardware, and also +the information about the devices to be added to the Device Tree once the +programming has succeeded. + +This device tree binding document hits some of the high points of FPGA usage and +attempts to include terminology used by both major FPGA manufacturers. This +document isn't a replacement for any manufacturers white papers and +specifications for FPGA usage. + + +Terminology +=========== + +Full Reconfiguration + * The entire FPGA is programmed. + +Partial Reconfiguration (PR) + * A section of the FPGA is reprogrammed while the rest of the FPGA is not + affected. Not all FPGA's support this. + +Partial Reconfiguration Region (PRR) + * Also called a "reconfigurable partition" + * A PRR is a specific section of a FPGA reserved for reconfiguration. + * A base (or static) FPGA image may create a set of PRR's that later may + be independently reprogrammed many times. + * The size and specific location of each PRR is fixed. + * The connections at the edge of each PRR are fixed. The image that is loaded + into a PRR must fit and must use a subset of the region's connections. + * The busses within the FPGA are split such that each region gets its own + branch that may be gated independently. + +Persona + * Also called a "partial bit stream" + * An FPGA image that is designed to be loaded into a PRR. There may be + any number of personas designed to fit into a PRR, but only one at at time + may be loaded. + * A persona may create more regions. + +FPGA Manager + * An FPGA Manager is a hardware block that programs an FPGA under the control + of a host processor. + + + ---------------- ------------------------------ + | Host CPU | | FPGA | + | | | | + | ----| | ------- -------- | + | | H | | |==>| FB0 |<==>| PRR0 | | + | | W | | | ------- -------- | + | | | | | | + | | B |<=====>|<==| ------- -------- | + | | R | | |==>| FB1 |<==>| PRR1 | | + | | I | | | ------- -------- | + | | D | | | | + | | G | | | ------- -------- | + | | E | | |==>| FB2 |<==>| PRR2 | | + | ----| | ------- -------- | + | | | | + ---------------- ------------------------------ + +Figure 1: An FPGA set up with a base image that created three regions. Each +region gets its own split of the busses that can be independently gated by an +soft logic bridge in the FPGA. The contents of each PRR can be reprogrammed +independently while the rest of the system continues to function. + +FPGA Bridge + * FPGA Bridges gate bus signals between a host and FPGA. + * FPGA Bridges should be disabled while the FPGA is being programmed to + prevent spurious signals on the cpu bus. + * FPGA bridges may be actual hardware or soft logic on the FPGA. + * During Full Reconfiguration, hardware bridges between the host and FPGA + will be disabled to prevent spurious data on the bus. + * These hardware FPGA Bridges may not be needed in implementations where the + FPGA Manager transparantly handles gating the buses. + * A base FPGA image may create a set of reprogrammable regions, each having + its own split of the busses that is gated by its own bridge in the FPGA. + * During Partial Reconfiguration of a specific region, the region's bridge + will be used to gate the busses. Traffic to other regions is not affected. + +Base Image + * Also called the "static image" + * An FPGA image that is designed to do full reconfiguration of the FPGA. + * A base image may set up a set of partial reconfiguration regions that may + later be reprogrammed. + + +Overview +======== + +This binding introduces the FPGA Region which supports full or partial +reconfiguration of a FPGA under device tree control. + +In the device tree, an FPGA Region brings together the devices (FPGA Managers +and FPGA Bridges) needed to be able to program an FPGA device. The FPGA Region +also includes child nodes that are the devices that exist in the FPGA. + +The base FPGA Region in the device tree is required to include a phandle to an +FPGA Manager. This region also contains a list of phandles to the hardware FPGA +Bridges, if any. This base FPGA Region corresponds to the whole FPGA and is +used for full reconfiguration. + +FPGA Regions that are children of the base FPGA region inherit the parent's FPGA +Manager but specify their own bridges. These child regions correspond to +partial reconfiguration regions in the FPGA. The bridges they specify will be +FPGA Bridges within the static image of the FPGA. + +The intended use is that device tree overlays can be used to reprogram an FPGA +while an operating system is running. In that case, the live device tree will +contain an FPGA Manager, FPGA Bridges, and the base FPGA Region. The device +tree overlays contain the name of the FPGA image file to be programmed and the +child devices that will be contained in the FPGA after programming. + +When such a device tree overlay is applied, it is targeted to one of the +existing FPGA regions. A few things must happen in the OS's implementation +before the overlay can be accepted into the live tree. The OS will attempt to +program the FPGA using the firmware that the overlay specifies. That +reprogramming sequence is detailed below (see the Sequence section). If +programming fails, the overlay is rejected. If programming succeeds, the +overlay is added into the live tree and correctly shows what firmware the FPGA +has been programmed with. Child nodes in the overlay are added and those +devices are populated. + +The base FPGA Region supports full reconfiguration of the FPGA device. If the +FPGA image loaded contains the logic that creates a set of Partial +Reconfiguration Regions, then the overlay that programs the FPGA should also add +a set of FPGA Regions as children of the original FPGA Region. The child FPGA +Regions do not need to specify an FPGA Manager as they will use the ancestor +region's FPGA Manager. + + +Constraints +=========== + +It is beyond the scope of this document to fully describe all the FPGA design +constraints required to make partial reconfiguration work[1] [2] [3], but a few +deserve quick mention. + +A persona must have boundary connections that line up with those of the partion +or region it is designed to go into. + +During programming, transactions through those connections must be stopped and +the connections must be held at a fixed logic level. This can be achieved by +FPGA Bridges that exist on the FPGA fabric prior to the partial reconfiguration. + +FPGA Region +=========== + +An FPGA Region specifies the devices (FPGA Manager and FPGA Bridges ) needed to +reconfigure a FPGA device. + +In the live Device Tree, an FPGA Region reflects the current configuration of +the device. If the live tree shows a "firmware-name" property under a FPGA +Region, the FPGA already has been programmed with that firmware. + +A device tree overlay that targets a FPGA Region and adds the "firmware-name" +property and child nodes is a request to reprogram the FPGA and, if successful, +add the child nodes. If reprogramming is not successful, the overlay must be +rejected and not added to the live tree. + +Required properties: +- compatible : should contain "fpga-region" +- fpga-mgr : should contain a phandle to an FPGA Manager. Child FPGA + Regions inherit this property from the parent, so it + should be left out for any child FPGA Regions. +- fpga-bridges : should contain a list of phandles to FPGA Bridges. This + property is optional if the FPGA Manager controls the + bridges during reprogramming. +- #address-cells, #size-cells, ranges: must be present to handle address space + mapping for children. + +Properties added in an overlay: +- firmware-name : should contain the name of an FPGA image file located on the + firmware search path. If this property shows up in a live device tree it + can only mean that the FPGA has already been programmed with this image. +- partial-fpga-config : boolean property should be defined if partial + reconfiguration of the FPGA is to be done, otherwise full reconfiguration + is done. +- external-fpga-config : boolean property should be defined if the FPGA + has already been configured. Then the FPGA Region can be used to add + child nodes for the devices that are in the FPGA. +- child nodes : devices in the FPGA after programming. + +In the example below, when an overlay is applied targeting base_fpga_region, +fpgamgr@ff706000 is used to program the FPGA and the bridge specified is +controlled during the programming. During programming, the bridges listed in +that region are disabled, the firmware specified in the overlay is loaded to the +FPGA using the FPGA manager specified in the region. If FPGA programming +succeeds, the bridges are reenabled and the overlay makes it into the live +device tree. The jtag_uart and led_pio child devices are then populated. If +FPGA programming fails, the bridges are left disabled and the overlay is +rejected. + +Example: +Base tree contains: + + fpga_mgr0: fpgamgr@ff706000 { + compatible = "altr,socfpga-fpga-mgr"; + reg = <0xff706000 0x1000 + 0xffb90000 0x4>; + interrupts = <0 175 4>; + }; + + fpga_bridge0: fpga-bridge@ff400000 { + compatible = "altr,socfpga-lwhps2fpga-bridge"; + reg = <0xff400000 0x100000>; + resets = <&rst LWHPS2FPGA_RESET>; + reset-names = "lwhps2fpga"; + clocks = <&l4_main_clk>; + }; + + base_fpga_region { + compatible = "fpga-region"; + fpga-mgr = <&fpga_mgr0>; + fpga-bridges = <&fpga_bridge0>; + + #address-cells = <0x1>; + #size-cells = <0x1>; + ranges = <0 0xff200000 0x100000>; + }; + +/dts-v1/ /plugin/; +/ { + fragment@0 { + target-path = "/soc/base_fpga_region"; + #address-cells = <1>; + #size-cells = <1>; + __overlay__ { + #address-cells = <1>; + #size-cells = <1>; + + firmware-name = "soc_system.rbf"; + + jtag_uart: serial@20000 { + compatible = "altr,juart-1.0"; + reg = <0x20000 0x8>; + interrupt-parent = <&intc>; + interrupts = <0 42 4>; + }; + + led_pio: gpio@10040 { + compatible = "altr,pio-1.0"; + reg = <0x10040 0x20>; + altr,gpio-bank-width = <4>; + #gpio-cells = <2>; + gpio-controller; + }; + }; + }; +}; + +Supported Use Models +==================== + +Here's a list of supported use models. We may need to add more. Some uses are +specific to one FPGA device or another. + +In all cases the live DT must specify the FPGA Manager, FPGA Bridges (if any), +and a FPGA Region. The target of the Device Tree Overlay is the FPGA Region. + + * No FPGA Bridges + In this case, the FPGA Manager which programs the FPGA also handles the + bridges. No FPGA Bridge devices are needed for full reconfiguration. + + * Full reconfiguration with bridges + In this case, there are hardware bridges between the processor and FPGA that + need to be disabled during full reconfiguration. Before the overlay is + applied, the live DT must include the FPGA Manager, FPGA Bridges, and a + base FPGA Region which contains phandles to the FPGA Manager and Bridges. + + * Partial reconfiguration with bridges in the FPGA + In this case, the FPGA will have more than one PRR that will be programmed + separately. While one PRR is being programmed, other PRR's may be active + on the bus. To manage this, FPGA Bridges need to exist in the FPGA + that can gate the buses going to one FPGA region while the buses are + enabled for other sections. Before any partial reconfiguration can be + done, a base FPGA image must be loaded which includes PRR's with FPGA + bridges. This can be done by doing full reconfiguration using an overlay + that contains the FPGA image that sets up the regions in the FPGA fabric. + The overlay would also contain FPGA Regions that will become children of + the original base FPGA Region. + +Sequence +======== + +When a DT overlay is loaded, the FPGA Region will be notified and will do the +following: + 1. Disable the FPGA Bridges. + 2. Use the the FPGA manager core to program the FPGA. + 3. Enable the FPGA Bridges. + 4. Call of_platform_populate resulting in device drivers getting probed. + +When the overlay is removed, the FPGA Region will be notified and will disable +the bridges and the child nodes will be removed. + +Device Tree Examples +==================== + +The intention of this section is to give some simple examples, focusing on +the placement of the elements detailed above, especially: + * FPGA Manager + * FPGA Bridges + * FPGA Region + * ranges + * target-path or target + +For the purposes of this section, I'm dividing the Device Tree into two parts, +each with its own requirements. The two parts are: + * The live DT prior to the overlay being added + * The DT overlay + +The live Device Tree must contain an FPGA Region, an FPGA Manager, and any FPGA +Bridges. The FPGA Region's "fpga-mgr" property specifies the manager by phandle +to handle programming the FPGA. If the FPGA Region is the child of another FPGA +Region, the parent's FPGA Manager is used. If FPGA Bridges need to be involved, +they are specified in the FPGA Region by the "fpga-bridges" property. During +FPGA programming, the FPGA Region will disable the bridges that are in its +"fpga-bridges" list and will re-enable them after FPGA programming has +succeeded. + +The Device Tree Overlay will contain: + * "target-path" or "target" + The insertion point where the the contents of the overlay will go into the + live tree. target-path is a full path, while target is a phandle. + * "ranges" + The address space mapping from processor to FPGA bus(ses). + * "firmware-name" + Specifies the name of the FPGA image file on the firmware search + path. The search path is described in the firmware class documentation. + * "partial-fpga-config" + This binding is a boolean and should be present if partial reconfiguration + is to be done. + * child nodes corresponding to hardware that will be loaded in this region of + the FPGA. + +Device Tree Example: Full Reconfiguration without Bridges +========================================================= + +Live Device Tree contains: + fpga_mgr0: fpgamgr@f8007000 { + compatible = "xlnx,zynq-devcfg-1.0"; + reg = <0xf8007000 0x100>; + interrupt-parent = <&intc>; + interrupts = <0 8 4>; + clocks = <&clkc 12>; + clock-names = "ref_clk"; + syscon = <&slcr>; + }; + + base_fpga_region { + compatible = "fpga-region"; + fpga-mgr = <&fpga_mgr0>; + #address-cells = <0x1>; + #size-cells = <0x1>; + ranges; + }; + +DT Overlay contains: +/dts-v1/ /plugin/; +/ { +fragment@0 { + target = <&base_fpga_region>; + #address-cells = <1>; + #size-cells = <1>; + __overlay__ { + #address-cells = <1>; + #size-cells = <1>; + + firmware-name = "zynq-gpio.bin"; + + gpio1: gpio@40000000 { + compatible = "xlnx,xps-gpio-1.00.a"; + reg = <0x40000000 0x10000>; + gpio-controller; + #gpio-cells = <0x2>; + xlnx,gpio-width= <0x6>; + }; + }; +}; + +Device Tree Example: Full Reconfiguration to add PRR's +====================================================== + +The Base FPGA Region is specified similar to the first example above. + +This example programs the FPGA to have two regions that can later be partially +configured. Each region has its own bridge in the FPGA fabric. + +DT Overlay contains: +/dts-v1/ /plugin/; +/ { + fragment@0 { + target-path = "/soc/base_fpga_region"; + #address-cells = <1>; + #size-cells = <1>; + __overlay__ { + #address-cells = <1>; + #size-cells = <1>; + + firmware-name = "base.rbf"; + + fpga_bridge1_0: fpga-bridge@4400 { + compatible = "altr,freeze-bridge"; + reg = <0x4400 0x10>; + }; + + fpga_bridge2_0: fpga-bridge@4420 { + compatible = "altr,freeze-bridge"; + reg = <0x4420 0x10>; + }; + + fpga_region1 { + compatible = "fpga-region"; + fpga-bridges = <&fpga_bridge1_0>; + #address-cells = <0x1>; + #size-cells = <0x1>; + ranges; + }; + + fpga_region2 { + compatible = "fpga-region"; + fpga-bridges = <&fpga_bridge2_0>; + #address-cells = <0x1>; + #size-cells = <0x1>; + ranges; + }; + }; + }; +}; + +Device Tree Example: Partial Reconfiguration +============================================ + +This example reprograms one of the PRR's set up in the previous example. + +The sequence that occurs when this overlay is similar to the above, the only +differences are that the FPGA is partially reconfigured due to the +"partial-fpga-config" boolean and the only bridge that is controlled during +programming is the FPGA based bridge of fpga_region1. + +/dts-v1/ /plugin/; +/ { + fragment@0 { + target-path = "/soc/base_fpga_region/fpga_region1"; + #address-cells = <1>; + #size-cells = <1>; + __overlay__ { + #address-cells = <1>; + #size-cells = <1>; + + firmware-name = "soc_image2.rbf"; + partial-fpga-config; + + gpio@10040 { + compatible = "altr,pio-1.0"; + reg = <0x10040 0x20>; + clocks = <0x2>; + altr,gpio-bank-width = <0x4>; + resetvalue = <0x0>; + #gpio-cells = <0x2>; + gpio-controller; + }; + }; + }; +}; + + +-- +[1] www.altera.com/content/dam/altera-www/global/en_US/pdfs/literature/ug/ug_partrecon.pdf +[2] tspace.library.utoronto.ca/bitstream/1807/67932/1/Byma_Stuart_A_201411_MAS_thesis.pdf +[3] http://www.xilinx.com/support/documentation/sw_manuals/xilinx14_1/ug702.pdf