From patchwork Tue Oct 25 14:55:32 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alan Tull X-Patchwork-Id: 9394659 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 060896077F for ; Tue, 25 Oct 2016 14:58:45 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id EA414293F8 for ; Tue, 25 Oct 2016 14:58:44 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id DCC1D2940E; Tue, 25 Oct 2016 14:58:44 +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=ham 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 7A27F293F8 for ; Tue, 25 Oct 2016 14:58:43 +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 1bz39U-0000np-St; Tue, 25 Oct 2016 14:56:32 +0000 Received: from mail-co1nam03on0046.outbound.protection.outlook.com ([104.47.40.46] helo=NAM03-CO1-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.85_2 #1 (Red Hat Linux)) id 1bz39L-0000mk-Uh for linux-arm-kernel@lists.infradead.org; Tue, 25 Oct 2016 14:56:28 +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=uZP+nagsXXcqdeLD66F+5p8Y1zhkCaWhYzIJtwNSJD8=; b=YFc/UxVB8qryo1HwziOI4FcG2ntFsAnWsLLFY3AXOEX5nyF+sTv/mkG4UzUZHO1uoz0AXM6GV83v9PvG5w4YAfMNnhlEx5TIBNTmh0erv32ZOE5sL24MFcVAkMiZKx8p3nue1QuDsmjK6HTu8CBKUOMYgrwSeM36XTrsKQgXBuU= Received: from BN6PR03CA0027.namprd03.prod.outlook.com (10.175.124.13) by CY1PR03MB2299.namprd03.prod.outlook.com (10.166.207.134) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.649.16; Tue, 25 Oct 2016 14:56:00 +0000 Received: from BL2FFO11OLC016.protection.gbl (2a01:111:f400:7c09::114) by BN6PR03CA0027.outlook.office365.com (2603:10b6:404:10c::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.639.5 via Frontend Transport; Tue, 25 Oct 2016 14:56:00 +0000 Authentication-Results: spf=fail (sender IP is 66.35.236.227) smtp.mailfrom=opensource.altera.com; ettus.com; dkim=pass (signature was verified) header.d=altera.onmicrosoft.com; ettus.com; 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 BL2FFO11OLC016.mail.protection.outlook.com (10.173.160.82) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384) id 15.1.669.7 via Frontend Transport; Tue, 25 Oct 2016 14:55:59 +0000 Received: from NAM02-BL2-obe.outbound.protection.outlook.com (207.46.163.83) by webmail.altera.com (66.35.236.227) with Microsoft SMTP Server (TLS) id 14.3.174.1; Tue, 25 Oct 2016 07:54:56 -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=uZP+nagsXXcqdeLD66F+5p8Y1zhkCaWhYzIJtwNSJD8=; b=YFc/UxVB8qryo1HwziOI4FcG2ntFsAnWsLLFY3AXOEX5nyF+sTv/mkG4UzUZHO1uoz0AXM6GV83v9PvG5w4YAfMNnhlEx5TIBNTmh0erv32ZOE5sL24MFcVAkMiZKx8p3nue1QuDsmjK6HTu8CBKUOMYgrwSeM36XTrsKQgXBuU= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=atull@opensource.altera.com; Received: from linuxheads99.altera.com (64.129.157.38) by CY1PR03MB1518.namprd03.prod.outlook.com (10.163.17.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.669.16; Tue, 25 Oct 2016 14:55:53 +0000 From: Alan Tull To: Rob Herring Subject: [PATCH v21 1/9] fpga: add bindings document for fpga region Date: Tue, 25 Oct 2016 09:55:32 -0500 Message-ID: <20161025145540.3722-2-atull@opensource.altera.com> X-Mailer: git-send-email 2.10.1 In-Reply-To: <20161025145540.3722-1-atull@opensource.altera.com> References: <20161025145540.3722-1-atull@opensource.altera.com> MIME-Version: 1.0 X-Originating-IP: [64.129.157.38] X-ClientProxiedBy: BY2PR11CA0017.namprd11.prod.outlook.com (10.163.150.27) To CY1PR03MB1518.namprd03.prod.outlook.com (10.163.17.24) X-MS-Office365-Filtering-Correlation-Id: a1b39601-bb0c-4cc4-3d71-08d3fce708aa X-Microsoft-Exchange-Diagnostics-untrusted: 1; CY1PR03MB1518; 2:qT6OivaKKmG867pCoQxZpuBcv5zBRG6TMqXg3HJsZXlYjRcVD7dPP+L2FeWlF+6mJSrsDcWUGKXx0v0w00czZsk6xvPv5sUW/Pup6tV42H92BQT25w+t53QAUWyV1y5mpwdGvFMP0Lor5idIrcdlFpM27qA1OG4JjsFKCaYHVLD9fGVM62+1CCEJngRDNppBRy/WMu56zN/IOLT/DSmxjg==; 3:V72mn3AQPEZUCQo1OrNoS0AVrkj1Z2JNkDauIzd3VDMQnUl99BeuMFy5KDkX8sQ3SQPLLTlZtOIgcqsuTMLbfQmXVWbQmDW7q9kOBJ/MV/yhSIE89hYuOxWnuVCUx3rwhHZggEnrOePdshgKtAwAeA==; 25:A0D0muh1erpfnOJZPjOg78n+cPUQSNgyRpvQ0+uu/w6DuBngR2YV3dCl0B4zkSFPUh7VJb7ehnqtedGeDaOLfH1sp5dlg1Oya5hx+ZHS6TAiXQsVnFFrnaIHIaJjJn/6TlHNkJa348oqwS9yNmggJwtiABDZqWhPH2H5Q6n1ZXUL3pAuSYUgEmPMLmCu58UBIvbzvQxOIbBk41xwmaH+4NStEhYhnSpmkA2FZKH6bjueCWiTInHg6uTxtsK09/daWFq9mUvaMQ8oX9acR5OW3AIh0U5DXFZNxpEFgydURtSdEP8i5x0SL/cS9Y61ytdYDkobEF0qymHpB6QaBl/cfJVeXmrRxDw1F7jvFH5TAkyGPJE919UW39/kcWWW1j6R/pUHbSIubr4rf7YjxbNWAq1vJfHS32Je/Jxz146K9/OUpQKCD+1W6y+ywB+86Z2QICu2NRVPDmbWabYxV5nxYQ== X-Microsoft-Antispam-Untrusted: UriScan:; BCL:0; PCL:0; RULEID:; SRVR:CY1PR03MB1518; X-Microsoft-Exchange-Diagnostics-untrusted: 1; CY1PR03MB1518; 31:i6hdbauDgHx13ahZanu0QSd/Z40TLq/lCRVBDBaj1JdiY1brevOpmT9lzeB5GiGpiP/gaMHCjNqMmXLdMCdcdBZcxitG1vBHSEj/RUYXdySQeMecVafCr4Y2lncbACsKV9xXXrn4ND4jib7GFE+HmS4nyYsCizkJrCxy5s7r4iNh/MREVfEkPMnlFIwo9AnrofZZFlD2QQJNhgoxw6AtrKgYW6foEw21ymOdvKtzGKOJk7XaPu/EVLWTq/5lMp/pz4b8hjr0r/vwzsAXmrXs+2sPBYgP31Qil7Y4t/Er+vE=; 20:j5cdqlWjY1x7MTWxmz04diXY8jA6hwjkPVeS2elGVzptPdvSFeQMWu6o7JDaN3PRTpfFCiq0UdpCowWDMnMpNWvNF0bU0JxlrJjWEhyWKkjYCt0zPP8Pwr0P/J5VHb1QuhrNugNYehYCdf3qAEgI2qGUIrkR0z03q1lV+Q3miSg= 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:(6040176)(601004)(2401047)(5005006)(8121501046)(3002001)(10201501046)(6055026); SRVR:CY1PR03MB1518; BCL:0; PCL:0; RULEID:; SRVR:CY1PR03MB1518; BCL:0; PCL:0; RULEID:(6040176)(601004)(2401047)(8121501046)(13018025)(13015025)(13024025)(13017025)(13023025)(5005006)(10201501046)(3002001)(6055026); SRVR:CY1PR03MB2299; BCL:0; PCL:0; RULEID:; SRVR:CY1PR03MB2299; X-Microsoft-Exchange-Diagnostics-untrusted: 1; CY1PR03MB1518; 4:rU87SYtJYLDiXFdR4Rbv3XOxa6aGuzk+CtzpmXxRuqpyuscLavFjWPvSIVr1wHdtTVr/H+ng9gXs6JPtqdDgE4Za6M7MeXBlW1dLjV1eGXuWsCDbAaLfbMS4HZ9aPsvMfHlPRlAyYWCLc5ZRELiVMUeWAD2GRp8vSzzlLeoHcWmNoFNKdst8D8dzrKKu9EX9yL+OU1pKdtRcI0kU388UTqXZHwjYavO5Y3wnnXwFojpZx1L75qPRDOOk8+DTuvBXoDo2+CjiKtxKG5VHfMZa9Wsn+55P4wmucgNoJ4+MAgrzhuYihRcZjiBiFhGPtLPjs2nrg+OacxtQjUpNNWe7LVgJ/Wn9pIKqsdHEWsvB9n77DOWYiaedOxNfXqCfjXgvhmZys9iAwAxQB5PqLzXl3BXJ1c/f/8OuDAdmAHovsavMhEWR/vMts6+B9H8arveY/8Au1lCxMuPo59NhEl3qp2OuXDHdZEckbkIrY1ZvJ1v7yjhnsiRg3hfCfevMGA0Ro7BJY58JonZObDxf7vxqCHTD1xtHjc2XHcdjftB8qzvZBdSZtWv3JyS7Qqi6DvtOmiuEWpkGCRyBC4FEkKvrUrkM8Zmzt2g8P+nN+zE5q0JVgjOudRYUPiAtFG7JZZws2MWIwm9n86xS0AE7qHwBU6sUa1lJT4vR1JFge9LZbVQ= X-Forefront-PRVS: 01068D0A20 X-Forefront-Antispam-Report-Untrusted: SFV:NSPM; SFS:(10009020)(4630300001)(6009001)(7916002)(189002)(199003)(189998001)(4001430100002)(42186005)(7846002)(81166006)(7520500002)(8676002)(229853001)(106356001)(50226002)(69596002)(5660300001)(2950100002)(7416002)(1076002)(586003)(6666003)(107886002)(7736002)(68736007)(97736004)(42882006)(3846002)(81156014)(6116002)(15974865002)(305945005)(53416004)(2906002)(86362001)(77096005)(66066001)(33646002)(19580395003)(19580405001)(50466002)(15975445007)(76176999)(110136003)(47776003)(5003940100001)(48376002)(50986999)(92566002)(4326007)(105586002)(101416001)(8666005)(7059030); DIR:OUT; SFP:1101; SCL:1; SRVR:CY1PR03MB1518; 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; CY1PR03MB1518; 23:4srgdaSDJ3RdgTwMjkvxhrVWZhq+9lxqy1CZbwZvw?= =?us-ascii?Q?UwDFvbfdCEOuRo7drdPGhzsXqQIzYSwCKdhUf+jhe7YbdAO7tozIcGCAIZW0?= =?us-ascii?Q?Us1ycLhe44vHu4tcLqK2ohOJepOQwwasCXLqxjYqcAp88Qs6YcmBChxJ4gWY?= =?us-ascii?Q?HurS7/GyVHJHV+VCwiSqc4RY3hBW2cmiDiUzy5abOlsCIWCtAD8lwExDxGDH?= =?us-ascii?Q?WuLkRJaMy6606e9ZoAUaGKiBOSW8fEhFfz9wH3nj58YImBH0bo0M1L1U49XB?= =?us-ascii?Q?NZv/ooK3S1a1BRTx6Z08oVZ1QZcl7AMZJsgZuv6so3jd62mN9j4BRrymYicz?= =?us-ascii?Q?9UGMt8VQxNe85thhQZoqCDQ5XlYkVUT5sZog59kLJdQYaY97Fo3NCQjFI5SQ?= =?us-ascii?Q?SNUYpay8DTr58GCZoBl5KpFgzfWezYzME+63zeLkAqHUwxatk6UMM7PB9xyc?= =?us-ascii?Q?zkZO7Sf/qrPTOtniA2yegBXjDyNdbUteC3/l11owGzUcYEZxEddAGAofHuQE?= =?us-ascii?Q?pkAraU4QnYgMibsW0Tl5vLX0JS/1/JNnemt9w/gMF1p3GdwfE2gYhh0Y4dun?= =?us-ascii?Q?5KnlGsh9adPr5CAarUvtDOJAPUhGH8UKnHrQbZxwqOLkBC4Qqdr3FZNapkI0?= =?us-ascii?Q?cB1v4SOVBvYsgrZnHbfqiJD51trFerRjKe9+22EMeoYYutw7SBRSg2hHOaME?= =?us-ascii?Q?AB6pZd7MavtB6kulKC9ich08hbJ0lhGqQTJV3PaPDOx9BrDXw4csxlX1OBvh?= =?us-ascii?Q?2Zh7sYKhpwdZFeZLOKakZwDWpBSkY2YgjXQFWpEccqMuETbQHNH0inPFXZ66?= =?us-ascii?Q?XvV7PoXbCGH5L77uZ7NEX2Mvk1hrCA9Uudpe+SigHteiBoCZKUg7MzkixvQL?= =?us-ascii?Q?UF81zxyAs54dxaGTNsuxh+PgeKFBT/sVWq3qLSp7sDO0e8C4qu+0k5Xyr1+/?= =?us-ascii?Q?kjySWPv1iaUE2Re0nZM+FdEweEyz8Wn8gTYadiRbcyda/+OOFYIJ47ihowwJ?= =?us-ascii?Q?bragBzgsMvlQ6TgRe3lS+aYK50mIId171/dUnK1bHhf6SBDy1b8SHzGC7aw+?= =?us-ascii?Q?WD8KXp2nq4fy32h+IKs5Moqk7/8E2kp8qBZQzvqiwaIBYXXHDYVzmq/fWcSF?= =?us-ascii?Q?YS5nSuYUJO4EC7KNg2LUFV6LdoPn2TLIr4wmiiRPJAIcROK3eR9F3eRcjueu?= =?us-ascii?Q?JyhJdHcyrczPXs+dDLi0W/FS39kZW0NCP4cucnueTfy2yu0Ec1UQGnYNfjfD?= =?us-ascii?Q?y5XbXuvuz2zks69x1qczkgY8/QAdSJpNtQngfmWp2Va6qrPnbdt931n1zjs3?= =?us-ascii?Q?lSWz2IomH2Xdo/8y9mfuPk=3D?= X-Microsoft-Exchange-Diagnostics-untrusted: 1; CY1PR03MB1518; 6:avTJqjYUVMrwWLx5lWzctG65+UYcl+xI4yPCvu96s3M2rGrc6vyGJSYEIbUaO8+sLVz95N34RMK3OTVrZbYZMqL31l1UBzzIki5n0zgUmxe37NIoJ0xerJ+6df4e7DSwuZ0vgV2DV0VGmWPL4VrDFaZ8Yiyiu5NdIJMZrVa1evj+DHSzZ5g1KiLV/d732pzmrm1/1czK38arim2jUi76K98LRdT0uuBEi7dMp3/PoRqYS9pASAHxAiiSr7x686kIyGSF6Xcem3d2D/Gg1Yr2ykdnptk2GdfKojT49jRkXCWIYqT+1sMK0wCE4Ad7so0QvM/doD82nXLDMMcZFANFCKcDBDQ6hZjBHbUyqYytwLE=; 5:rHyeQi6DviyFEnL56IQ5veB2p2oQmY/yTiBkQtMclNLuYdTKGPuwmeW4TtBPlFrLBN+6Wt+9Ey+sdE4NPmSBzBf92QZsnwNDZvS3TWyChxA51zDE57BZLFc8mZm5+YWS+Ck5p40I6qGp60MvbnvzRkkuDPjZlo3N2D1Q37x56QQ=; 24:gmbl65AVLuAx1+XD6R5Dy5u3snd4oKocyVgrTD0CLh4WuS76CdqhLdVKuMWRjU69V5bumWF7icORsOW4rSLgJ2D+VEDUtFdcCr+aTZzeWHI= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics-untrusted: 1; CY1PR03MB1518; 7:Hr9Mcbk/bGV+TYVSg4xjCEDM9NmUsoZW/ylxqLDonh6pjCwQ3Dw861+wkZSG3WCt6ZZTnO/muG6IV4s9lJWP9j9grfhZnrj7A4ppWR4ogr/twPVy14csU121Fh0qV0Wk9M8i8kZk7d5noXB0Ag3DGY1p48nVRxUC87Dlt45P7IIoUXchveR9Q2EBib6UvkBKi+EEb+1jB0JMNnE8UiFeEtJuutt/XC9CvltL/NAfEC65SsX9EYWAEWJdGuw9e85YgQN9pxXXCLa3UoeETpzm7KTVfNvzjbvbh9ai1xNPts0TI5RgRyZKQdXi16O3vAvsM/6FKHdcQl+IMm9s51bDmz+ydU1+dRNg9X2ad9+bq40= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR03MB1518 X-EOPAttributedMessage: 0 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)(85426001)(15974865002)(2906002)(15975445007)(4326007)(92566002)(97736004)(68736007)(48376002)(8936002)(86362001)(76176999)(50226002)(586003)(229853001)(53416004)(33646002)(106466001)(47776003)(3720700001)(1076002)(77096005)(11100500001)(6116002)(3846002)(626004)(50466002)(356003)(19580405001)(110136003)(956001)(19580395003)(8676002)(7520500002)(66066001)(6666003)(50986999)(5660300001)(7846002)(105606002)(7416002)(42882006)(4001430100002)(7736002)(305945005)(81156014)(81166006)(6070500001)(5003940100001)(107886002)(189998001)(87936001)(336002)(8666005)(2950100002)(7099028)(7059030); DIR:OUT; SFP:1101; SCL:1; SRVR:CY1PR03MB2299; H:sj-itexedge03.altera.priv.altera.com; FPR:; SPF:Fail; PTR:InfoDomainNonexistent; A:0; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BL2FFO11OLC016; 1:+TJHPK8R2MFe7Cy/3Q35FA+FxgDpWYlz/OrzlzDSAVnekRbZkIfaEf09A14tCOFts4sA+1mBUpXpBHwK23IUjCbiUbgd+7tdyc+siHx5rE1CjaLow8eQGXR5x/Zj7QJgRrEjNZKsS0ZAgIB103q783zuEYx8l+i/HGop8yEj1lL9NwJkOmuerSL/gxvh30wMhpcM6CT+wGSyogwUUSG24JuS5CljVaeL6A1Mm7VgeGs+DjEhZ3QohNVhA6bg9PjHy9EQE0W8u5ien4hOiiNyM3GQSfpDQyvptZP5bxCFCRUat2yxnGXEJnloh+RUuWtZDt65ROOfSZLy2KaG41hr6trb79JfDx+37atePNp0bjlstuubq9L4hYspTkkh2SonufVnZUI4mfBLeVxB6Eft24gyOBHju79JsL7N97SAib30koinXAjk7C8igdwEahRTQFEyECt4zfaDX4a3KOjuQKDAjSliZ5DKZBcz7Z4nF6EdZwgdqWG0BIoqcMhSrtNB2HCCK0B9Iyi/ykPGQGtCVmAqQ/YzrJkj2jr32dOypLu2ctsZa/zNRjm+XxBIunTt8c3HDgxJdHQ0nGwdwUoqE+0oWZp3x0B+oM8iX6zlqHYRRMMMxN/oGmv+8S14NB/W X-MS-Exchange-Transport-CrossTenantHeadersStripped: BL2FFO11OLC016.protection.gbl X-Microsoft-Exchange-Diagnostics: 1; CY1PR03MB2299; 2:+1414YnUYaCzODRp177aW6UAEUbvFF3+7XCtTkRoVLTHeA7Rwh7EM28Pe3pSeCUnq3YtE39MzSVQ4ZcYHPTdcJGEqc4Jjxfusm22ptZn0yLsJ/2athqYmDVQD/K8QTuPE+iGwlhANtcuWfhQJGg9y0PbfNgszBX6VixKp7eysUMnvks5vkBjTtUE2xP312wQxyS4hP7b1DOEte+4c+wg5w==; 3:0yS5e5tdn61x47280rV6NK5l3mmT3trG8AAp5LoWk6KiT/iZ5wjvalXDOPHVFIQL3eqmLrWxAggIFMn2W9UtIQCADU5KpridCOmPczOWrXPBtYyJIPHSKvnFfi1wsUQlFGbfP2pXVhwCFQwgkD4H+vIqc9MqrKNQqHeAvoYLzp+5nJcidrMWXiLBaleb/mA8RyEDdjMB0X9dRsJuuEtPQYvCLmfqWbXeW3Mdmj5KXuIqd0EBiVcOuLcP86ovNj7QVmWd+fc6IgUTnnk8XHD5og== X-DkimResult-Test: Passed X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(3001016); SRVR:CY1PR03MB2299; X-Microsoft-Exchange-Diagnostics: 1; CY1PR03MB2299; 25:cSxAEDzBQ7NwSEdEuLcG9gvRJ7pL4hOjtDyrFnx6IiUrh0C6GxakkvjVPNasUdCColz7x1FIqI3ovo//MIr7ia0S4Qvomlcc7q037mxeSgFdMrYgte3Ye91x6bhYu5TUSFT5PnGU+encjWm1x5E/I/5ZV31lgeQgrSWJIcx4jNZlt89/HNtWhod8Fz6s7P/4whWq+5MoJ6VHVG4ylAWOo6bad37dvJlu2Hr7OGgBsZ4g5BHxSZFmZUrgxj0SH3ryBQvAlAjYheLTn8B9wAClsVI1auUTXP+h8ekwZrFJ4fcpIw6AqlBYIRzIGNs76f7elgbZ7SQKhQcsd8yn6XAWLn60ojlzBiocLRuHM075PIOhquuKTZwGExw7DQ4f/wuXxDWXK1ApTFrQDfnzwvRpY6lDpAZ+1Q893qXK+PxnHirY8Do8tG8rPIaeh4Gg0KW23NK5JDiI234W00/PXq02wCMK0Sxu/pXK7Jd+1heOfsbkRXm/xCQnpYoKBC7AwNIHOkxBoKWVBDz42Iah/QdAp+RrlTdo+99rkzQLMBjm93fnGLr9NOlpxTD2AfMCq4d+khJifXRo5C/hZHquW3VbLf4FJxXTHvmXROz1yzXxWrKVqtkOV07Fw6iJyrV0oGXx5tzqujq7QiPA/15+NFTT+ZT/zAXiObx9EEkTcRvGOrenXUbjp7XSc14aGNkZxrZ+pJWCetk+kCqQ0GuUtrI/J1jvyNZdnNlWkF5d/y0zgQeoeK7wsXJ7CNnFoEw/949dsNNHaUvkgZEuom/jAdilCMS2QFENAuTJM2B+DJjJWEEzUxCvJPoNl8+qyI9MIC7mBhY0NsN3ha0gBYXBaru5f33W5CZfBVA46kQGGAZiSOOv/nGOZ4F1kZF3HFGZNEz5 X-Microsoft-Exchange-Diagnostics: 1; CY1PR03MB2299; 31:9pMglq7tsMJbJDBZoBOxE3FEvy2H78N9AzCNcgnGJ9P6VdbJPI8Zi78sJwig4rFvwSqanklKlKdkVDl+ObBa+NeRBz+hOIsanNEzis4Vz8fHfoyRLRxFKKw+zIoa9YrwiAREdqVpjwsdfocSvyUGNPbGUK5rsX/WQsbK3imrqNbaOeLQO0yOASsDr/D6mpK1pFUwxpX085/18BzVD4xwYF12hsdr9hjPyP7+sUw1Jxp8gwg3Pn4w9HQ6Ni/o/AFP; 20:rrc45DdSZCQpnbz/WbFLtkLy97VMxV1ddN4ywHFk2QcQ/bxi1O3kq0x0rjTthQrcmSXC57p45/RtKx8lqzh98r6FdPj5m+HkpW08Kh4L8sn3/m5sBR3i1h85WmoN/3lI5MUn/Lrr111FyLxffUhDgDq5FCPDw+p4D36kD7dgdQw= X-Microsoft-Exchange-Diagnostics: 1; CY1PR03MB2299; 4:bvfSG9zJE51XcNruedrpTwK4zp2XP4bFepbJ2IAa7HsACcOFczuVj6Vlwu+HA/wb4b66h9FnGlDs7yqbVaUF2sAD0XLHXT6Y3eeYUMKVt6yksWME+T1JmAVGq4lzIHK3blOxpztluxUI41KhpuA3qaieZfjRwUkXPNitXITI0OdBw/NYiZwgWuqSPdmZDaQq20NxpiMeDdMSnzZWkHsr8T7VyKX27QQ/MzxM7XcREWXQBQtoV4cBdr5uq4blL8ZJ2dh0cnuWXxtA6fBOpS4WoUMduyANzVSAEAwETVu7pAR3lqbvCOujXIri+7VMTSSVvidGkemrmQYYXrUhImcFgL0S/QUPrlmVFw/1MPhE1yzajLRqbKicM+OKFx5/CkvQiU2pn1vliT77WEyZ9rd1dJgKLnSp0o27VOblAg4iygn/2lQM1suqDsA4lrVO3TxNBygWENrtLWxZnpTX2dTkhCax6xC+kpMGhb3qN+7J3wfPvvRN65dYh9Tz3dpnq9DN4UYv7ee8GhMZ5HvnmGUB/zb3epU9Cd0rrVbCmPMC00IS4Bq9BzMngPNn2WQ8z+Sd3kxsIKxVNKbsQKxCeAljjgyzm/VLbZcowJCvZBH9UbjfGzME2j8Ozm6QBA54Mm7E2+TL3IFsv2fl8ddgpqpwyYaGjB/9lo7ZVNL85ifyfuk1sjtaPbWnrqiG/Zmyec5mODAhReOI99wU/Biph7VBHcd1Lm2DlLxARobO3oK4vqLvNaP1XT/GR3/OxFTwcABc X-Forefront-PRVS: 01068D0A20 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY1PR03MB2299; 23:LoY8+l1OhborloufzCwEmvSCstBhcDdz/YYGx2DN1?= =?us-ascii?Q?CY88TGIOTmMhtVSCtNtmsgTmG1Jk0MNpEMIgKvfUbXyrNk/1Bouow9eSOPK7?= =?us-ascii?Q?i4UCLdT8NTBoKA7RCR/Soxj/8hlTTKw24DGfqhCuLJf6KwpbOpYoAY9aiEWc?= =?us-ascii?Q?gX/+irfFWZ2Tku+dyFUnogF0+uKv6eS/G1NUSUMiMcGhavLwOWHTI5djnanW?= =?us-ascii?Q?Gqb9kFsk9wMRhuBFkU9K6hj5Ms3fQIE3Ol5TPHm+1fCd5PBg/Wx6aUuanpIs?= =?us-ascii?Q?5sPG9yvoZa6QODzkaWJsd1rZ8o+NLMxUbCrS2ZxvYuSBDHT6AxcYCHNCBwKF?= =?us-ascii?Q?HAW5J1ow8NnYat+zIaXIpMVVMfY1SumjmFLlTed16QhzlS7YWdGtuLcH5CvM?= =?us-ascii?Q?vO/aZh/hfwJcSCJW/IYUmABIiuLJOUeAtvRLl78nqQL2RlPhrUvP/B944JRC?= =?us-ascii?Q?wN9MMpDltHefbFMUj36M7/4EtvYH6eGe4er1CnDUnunC9GZwhbJGqROiiVAp?= =?us-ascii?Q?Pcu5UMIL25x3S8UdSB0VSIQGaQBlfbRv2ibyejG4Xi9Fl+eWj5WewGGJMz3J?= =?us-ascii?Q?tq6l8PqdOHT2pXx0LLV8Cvs0o0YLij9dZ4x184VbnLmbp3RkdwNU86nOjT6Y?= =?us-ascii?Q?kNX2Ars/VJdrPd4ThUgRibXattIRMC7d1KD4qTCyQMIBPR/3C5ahmbOX1y92?= =?us-ascii?Q?KLcBwJBxTWG56//bxtmYaxsUno3nllLS8oaWwhYaPNp+sbAI0OmDRLqQFz/F?= =?us-ascii?Q?to/eib3EI3zlO9L3rvVN+oHlnm9kJb5PK5S2ICmJVSYSQzD7sG2jqw+oA/Do?= =?us-ascii?Q?uFoXzDT+Cv7QTHu9ZnKZHe8gMH1km9yVGr/EUNzoS1dfOXt7tvWtAYA5GxbV?= =?us-ascii?Q?8Zh3DSHKYNCRpGAxYkVp2Q5QiQn+AHjmUfoIvDZAwtWqDv3wHph12ij1vAp8?= =?us-ascii?Q?kKGoH+eD3ah6wGraufAYSveJ1f5Gc8kUV73fIZePpmHELxwDCqpw2bqb7ozZ?= =?us-ascii?Q?6CvXQbcf96xqlFw20rRgzOMz0cv9fRMbcsN9j9jMDebLuAObcu5TZ9LS0M9c?= =?us-ascii?Q?iTceJAy2LFxSGJW2YvBxyuszqCeFuCgfEboVjzSRepkHFd9EDI4uiuo2fCNW?= =?us-ascii?Q?fK/OeMPHoADEamFSR/+xUOMEbeskwmR/IE4epZORZS76v7ZMTtm4EGqdADyW?= =?us-ascii?Q?SlhXlxVIv/LiHfgTnNjOmBPea1RG/VC61Fdh2Y9r2j5coe0624PPka8yuOlc?= =?us-ascii?Q?n9wcfIcKVzuNxsY18mSPPsfdY1xNIteZbUkgYpUsgqi8xI1rFmqiyF2fTk/a?= =?us-ascii?Q?5GBoXfTcTLzpf5RK3cNe8I2Pg0CiFdMQWua+lBYT+VSCxb+GcPTOL09jQhHu?= =?us-ascii?Q?80clJTFd8B4J8/OLgR7AXnrbuUTVXuWbzpQL4WDEAv7C4TjwgScffOGa2o8Y?= =?us-ascii?Q?50y1MfFESOG+mQ6ot7Vv1aF/KuHGBgHNUNWSIw43fLVTGNuB6oLBDQPpsSPC?= =?us-ascii?Q?i3UJDlW6k/eD0VUJMT7e1+cfbSnCNN63Y4o3fzKFmozcGWKzdCsyAhy?= X-Microsoft-Exchange-Diagnostics: 1; CY1PR03MB2299; 6:QW0Mw/B9xr6GRKMXUL57rp/jV1Q1GqBAiPnOdHDKJySbLyMoQOmKVGKwGYhMOToU6X8BQPJrsi8PAlEQAbMoFPr85rUXxAS4719kPAoaEQTZEyhjv1BkjusrptMF6j1PK0YdCAFFxrYvT+CmcgykJJF5f/g8tPCiDs05Y8qvNfW8cspav/bEdJoaiHmUKkyESgVt3PtXyuq5DBSGYCiY1F1VSolGDRFiinGjndH/skfD0StvYtdeAz3joPDAjQcqO/DUazWHYS0iDpQt2hTs9uMyHgOHiunfz3LF7vc90PUbOyG43rcGLLK9Rytr8P9bXAjlve3/W+iARJeaq6e3/RZmIwLHhQTH497lR4nb2rBBX9YIgVZI6G6N25eeQFja; 5:UEwmuaRerXc7VndxDCksNmQ4qe6P4uTAGAbHgcGxYloPa39PQ+oivCtVGpEffN0rW3p/7WPTffPHkaorbAF/pAtp8qDM0N96Lzav0XB6E0K1wDmDZLTNoLHRYrcL0cs9PQhBcG/krwBzgFoTrCDdLSDSkQiOJYsXC5AHfQJEQ+M=; 24:PPxZc9x29Od7D7vkgFVqfjV1kGgeAkjbIZpS28KtvTMFg5GOvEfbzQL3a6Um0qcyLRnsEXet8enPj85gHs9HVLAWDMOQydw1N71aMsIXDRA= X-Microsoft-Exchange-Diagnostics: 1; CY1PR03MB2299; 7:KFXn/IKvtMrPs5pmxGzVBiPpZLocEUyESsVa5MMTMj+vVudaEJ8MoYbNagq+nSStAzxfZbvQ/Ivw2QjnvjKZo3+jr2vNDGyFAsbziD77R0AFetS6HEWraInzy3+0xKE0H1AVQ0s5hMmT7SOEFXD41LHGqeHcNLujxrAMvE+oQfld6iLBgw9nJfx2MvfXL6A0i9tizgYGpkTZriWclunNhPfWKe0/uKoo8Upn9wuERWJnvw0dEkgsXJf8fq7/ht81yM3Wk0TNnYxl5gk2fn95WulYflXIioOPlbQvCVyXAnPOCn21zhsfhC6leG9xaGa3tfIEKPH5Vsb8yA3uRpRVOA== X-OriginatorOrg: opensource.altera.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Oct 2016 14:55:59.7711 (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: CY1PR03MB2299 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20161025_075624_231206_EAF103CB X-CRM114-Status: UNSURE ( 5.35 ) 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 , Moritz Fischer , delicious.quinoa@gmail.com, Ian Campbell , Alan Tull , Greg Kroah-Hartman , Julia Cartwright , linux-doc@vger.kernel.org, Michal Simek , linux-kernel@vger.kernel.org, Cyril Chemparathy , devicetree@vger.kernel.org, Jon Masters , Joel Holdsworth , Jonathan Corbet , Matthew Gerlach , Frank Rowand , Dinh Nguyen , 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 Reviewed-by: Rob Herring --- 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 v19: Fix more underscores Make FPGA regions to be children of bridges General cleanup and clarification v20: Add Rob's reviewed-by v21: No change for this patch in v21 of patchset --- .../devicetree/bindings/fpga/fpga-region.txt | 494 +++++++++++++++++++++ 1 file changed, 494 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..3b32ba1 --- /dev/null +++ b/Documentation/devicetree/bindings/fpga/fpga-region.txt @@ -0,0 +1,494 @@ +FPGA Region Device Tree Binding + +Alan Tull 2016 + + CONTENTS + - Introduction + - Terminology + - Sequence + - FPGA Region + - Supported Use Models + - Device Tree Examples + - Constraints + + +Introduction +============ + +FPGA Regions represent FPGA's and partial reconfiguration regions of FPGA's in +the Device Tree. FPGA Regions provide a way to program FPGAs under device tree +control. + +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 specifications for FPGA +usage. + + +Terminology +=========== + +Full Reconfiguration + * The entire FPGA is programmed. + +Partial Reconfiguration (PR) + * A section of an FPGA is reprogrammed while the rest of the FPGA is not + affected. + * Not all FPGA's support PR. + +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 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 and to the soft logic. + * FPGA bridges may be actual hardware or soft logic on an FPGA. + * During Full Reconfiguration, hardware bridges between the host and FPGA + will be disabled. + * During Partial Reconfiguration of a specific region, that region's bridge + will be used to gate the busses. Traffic to other regions is not affected. + * In some implementations, the FPGA Manager transparantly handles gating the + buses, eliminating the need to show the hardware FPGA bridges in the + device tree. + * An FPGA image may create a set of reprogrammable regions, each having its + own bridge and its own split of the busses in the FPGA. + +FPGA Manager + * An FPGA Manager is a hardware block that programs an FPGA under the control + of a host processor. + +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. + + ---------------- ---------------------------------- + | Host CPU | | FPGA | + | | | | + | ----| | ----------- -------- | + | | H | | |==>| Bridge0 |<==>| PRR0 | | + | | W | | | ----------- -------- | + | | | | | | + | | B |<=====>|<==| ----------- -------- | + | | R | | |==>| Bridge1 |<==>| PRR1 | | + | | I | | | ----------- -------- | + | | D | | | | + | | G | | | ----------- -------- | + | | E | | |==>| Bridge2 |<==>| PRR2 | | + | ----| | ----------- -------- | + | | | | + ---------------- ---------------------------------- + +Figure 1: An FPGA set up with a base image that created three regions. Each +region (PRR0-2) gets its own split of the busses that is independently gated by +a soft logic bridge (Bridge0-2) in the FPGA. The contents of each PRR can be +reprogrammed independently while the rest of the system continues to function. + + +Sequence +======== + +When a DT overlay that targets a FPGA Region is applied, the FPGA Region will +do the following: + + 1. Disable appropriate FPGA bridges. + 2. Program the FPGA using the FPGA manager. + 3. Enable the FPGA bridges. + 4. The Device Tree overlay is accepted into the live tree. + 5. Child devices are populated. + +When the overlay is removed, the child nodes will be removed and the FPGA Region +will disable the bridges. + + +FPGA Region +=========== + +FPGA Regions represent FPGA's and FPGA PR regions in the device tree. An FPGA +Region brings together the elements needed to program on a running system and +add the child devices: + + * FPGA Manager + * FPGA Bridges + * image-specific information needed to to the programming. + * child nodes + +The intended use is that a Device Tree overlay (DTO) can be used to reprogram an +FPGA while an operating system is running. + +An FPGA Region that exists in the live Device Tree reflects the current state. +If the live tree shows a "firmware-name" property or child nodes under a FPGA +Region, the FPGA already has been programmed. A DTO that targets a FPGA Region +and adds the "firmware-name" property is taken as a request to reprogram the +FPGA. After reprogramming is successful, the overlay is accepted into the live +tree. + +The base FPGA Region in the device tree represents the FPGA and supports full +reconfiguration. It must include a phandle to an FPGA Manager. The base +FPGA region will be the child of one of the hardware bridges (the bridge that +allows register access) between the cpu and the FPGA. If there are more than +one bridge to control during FPGA programming, the region will also contain a +list of phandles to the additional hardware FPGA Bridges. + +For partial reconfiguration (PR), each PR region will have an FPGA Region. +These FPGA regions are children of FPGA bridges which are then children of the +base FPGA region. The "Full Reconfiguration to add PRR's" example below shows +this. + +If an FPGA Region does not specify a FPGA Manager, it will inherit the FPGA +Manager specified by its ancestor FPGA Region. This supports both the case +where the same FPGA Manager is used for all of a FPGA as well the case where +a different FPGA Manager is used for each region. + +FPGA Regions do not inherit their ancestor FPGA regions' bridges. This prevents +shutting down bridges that are upstream from the other active regions while one +region is getting reconfigured (see Figure 1 above). During PR, the FPGA's +hardware bridges remain enabled. The PR regions' bridges will be FPGA bridges +within the static image of the FPGA. + +Required properties: +- compatible : should contain "fpga-region" +- fpga-mgr : should contain a phandle to an FPGA Manager. Child FPGA Regions + inherit this property from their ancestor regions. A fpga-mgr property + in a region will override any inherited FPGA manager. +- #address-cells, #size-cells, ranges : must be present to handle address space + mapping for child nodes. + +Optional properties: +- 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 indicates that the FPGA has already been programmed with this image. + If this property is in an overlay targeting a FPGA region, it is a + request to program the FPGA with that image. +- fpga-bridges : should contain a list of phandles to FPGA Bridges that must be + controlled during FPGA programming along with the parent FPGA bridge. + This property is optional if the FPGA Manager handles the bridges. + If the fpga-region is the child of a fpga-bridge, the list should not + contain the parent bridge. +- partial-fpga-config : boolean, set if partial reconfiguration is to be done, + otherwise full reconfiguration is done. +- external-fpga-config : boolean, set if the FPGA has already been configured + prior to OS boot up. +- region-unfreeze-timeout-us : The maximum time in microseconds to wait for + bridges to successfully become enabled after the region has been + programmed. +- region-freeze-timeout-us : The maximum time in microseconds to wait for + bridges to successfully become disabled before the region has been + programmed. +- child nodes : devices in the FPGA after programming. + +In the example below, when an overlay is applied targeting fpga-region0, +fpga_mgr is used to program the FPGA. Two bridges are controlled during +programming: the parent fpga_bridge0 and fpga_bridge1. Because the region is +the child of fpga_bridge0, only fpga_bridge1 needs to be specified in the +fpga-bridges property. During programming, these bridges 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 child devices +are then populated. If FPGA programming fails, the bridges are left disabled +and the overlay is rejected. The overlay's ranges property maps the lwhps +bridge's region (0xff200000) and the hps bridge's region (0xc0000000) for use by +the two child devices. + +Example: +Base tree contains: + + fpga_mgr: fpga-mgr@ff706000 { + compatible = "altr,socfpga-fpga-mgr"; + reg = <0xff706000 0x1000 + 0xffb90000 0x20>; + interrupts = <0 175 4>; + }; + + fpga_bridge0: fpga-bridge@ff400000 { + compatible = "altr,socfpga-lwhps2fpga-bridge"; + reg = <0xff400000 0x100000>; + resets = <&rst LWHPS2FPGA_RESET>; + clocks = <&l4_main_clk>; + + #address-cells = <1>; + #size-cells = <1>; + ranges; + + fpga_region0: fpga-region0 { + compatible = "fpga-region"; + fpga-mgr = <&fpga_mgr>; + }; + }; + + fpga_bridge1: fpga-bridge@ff500000 { + compatible = "altr,socfpga-hps2fpga-bridge"; + reg = <0xff500000 0x10000>; + resets = <&rst HPS2FPGA_RESET>; + clocks = <&l4_main_clk>; + }; + +Overlay contains: + +/dts-v1/ /plugin/; +/ { + fragment@0 { + target = <&fpga_region0>; + #address-cells = <1>; + #size-cells = <1>; + __overlay__ { + #address-cells = <1>; + #size-cells = <1>; + + firmware-name = "soc_system.rbf"; + fpga-bridges = <&fpga_bridge1>; + ranges = <0x20000 0xff200000 0x100000>, + <0x0 0xc0000000 0x20000000>; + + gpio@10040 { + compatible = "altr,pio-1.0"; + reg = <0x10040 0x20>; + altr,gpio-bank-width = <4>; + #gpio-cells = <2>; + clocks = <2>; + gpio-controller; + }; + + onchip-memory { + device_type = "memory"; + compatible = "altr,onchipmem-15.1"; + reg = <0x0 0x10000>; + }; + }; + }; +}; + + +Supported Use Models +==================== + +In all cases the live DT must have the FPGA Manager, FPGA Bridges (if any), and +a FPGA Region. The target of the Device Tree Overlay is the FPGA Region. Some +uses are specific to a FPGA device. + + * No FPGA Bridges + In this case, the FPGA Manager which programs the FPGA also handles the + bridges behind the scenes. No FPGA Bridge devices are needed for full + reconfiguration. + + * Full reconfiguration with hardware bridges + In this case, there are hardware bridges between the processor and FPGA that + need to be controlled during full reconfiguration. Before the overlay is + applied, the live DT must include the FPGA Manager, FPGA Bridges, and a + FPGA Region. The FPGA Region is the child of the bridge that allows + register access to the FPGA. Additional bridges may be listed in a + fpga-bridges property in the FPGA region or in the device tree overlay. + + * Partial reconfiguration with bridges in the FPGA + In this case, the FPGA will have one or more PRR's that may be programmed + separately while the rest of the FPGA can remain active. To manage this, + bridges need to exist in the FPGA that can gate the buses going to each 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. The device tree should have a FPGA region for each + PRR. + +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: fpga-mgr@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>; + }; + + fpga_region0: fpga-region0 { + compatible = "fpga-region"; + fpga-mgr = <&fpga_mgr0>; + #address-cells = <0x1>; + #size-cells = <0x1>; + ranges; + }; + +DT Overlay contains: +/dts-v1/ /plugin/; +/ { +fragment@0 { + target = <&fpga_region0>; + #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 = <&fpga_region0>; + #address-cells = <1>; + #size-cells = <1>; + __overlay__ { + #address-cells = <1>; + #size-cells = <1>; + + firmware-name = "base.rbf"; + + fpga-bridge@4400 { + compatible = "altr,freeze-bridge"; + reg = <0x4400 0x10>; + + fpga_region1: fpga-region1 { + compatible = "fpga-region"; + #address-cells = <0x1>; + #size-cells = <0x1>; + ranges; + }; + }; + + fpga-bridge@4420 { + compatible = "altr,freeze-bridge"; + reg = <0x4420 0x10>; + + fpga_region2: fpga-region2 { + compatible = "fpga-region"; + #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 = <&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; + }; + }; + }; +}; + +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. + +-- +[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