Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754113AbcKATPc (ORCPT ); Tue, 1 Nov 2016 15:15:32 -0400 Received: from mail-sn1nam02on0081.outbound.protection.outlook.com ([104.47.36.81]:61792 "EHLO NAM02-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1750708AbcKATPR (ORCPT ); Tue, 1 Nov 2016 15:15:17 -0400 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; Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=atull@opensource.altera.com; From: Alan Tull To: Greg Kroah-Hartman CC: Rob Herring , , "Moritz Fischer" , Dinh Nguyen , , Alan Tull Subject: [[PATCH repost v21] 04/11] fpga: add bindings document for fpga region Date: Tue, 1 Nov 2016 14:14:25 -0500 Message-ID: <1478027672-4857-5-git-send-email-atull@opensource.altera.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1478027672-4857-1-git-send-email-atull@opensource.altera.com> References: <1478027672-4857-1-git-send-email-atull@opensource.altera.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [67.164.136.211] X-ClientProxiedBy: CO2PR06CA030.namprd06.prod.outlook.com (10.141.242.30) To CY1PR03MB1519.namprd03.prod.outlook.com (10.163.17.25) X-MS-Office365-Filtering-Correlation-Id: 14ef2876-fd4b-41e4-2507-08d4028b67bc X-Microsoft-Exchange-Diagnostics-untrusted: 1;CY1PR03MB1519;2:o4G3lGFIvY8SarQuy4C80hTQKOI5BNkUu0ioSs0ykN5TXyqeeWpWGFSodpJY8k5VACXzzPK78DbpG/fTjAYOMFEMioaChwmXs+w5Fsn2qU83OwO9HsFocl9maHrUEPEr5oFhLWSo2IJcNID+1gkftcn494B04O1cNlImJdX7+JNvTlyMcRbqITjJ6PUl8DFiBC/N0jsJkcRb+l1kHTH/4g==;3:0Gdln5jzkgQ76JygyY0kKcwdTtA1Kr//IrJEn7OzoZ/JTrqo15YeLBd0UEnmUic77WduEArr55FxR6jahzW/zzPwMJzrYEJQKJ/QmhSV5JKlZ4fOtg+tCnY5hmXlyWEy6FdwDZBLmcXcCN2ETVBAjw== X-Microsoft-Antispam-Untrusted: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:CY1PR03MB1519; X-Microsoft-Exchange-Diagnostics-untrusted: 1;CY1PR03MB1519;25:6n+0A/6Il8W8H+0miCNG2krkrNxhV3V+oZZxtNataDqTHss36GR2Q3RZuc4dwNpS2xDoDZB7Ly+9FIt9UT/RRjZwo4tU9Jm8iDnwBLgDNVHtUdn3+A86cveUCNj0N7Bfpho0w2DtGcN2khJlHn/DMINzwdALvGzH11ZTetuv3LAlWO0kEyJ4Xr3N2KM9sUxq8abfCdRf+6v/nTWXD8HLDVAMVvAeOTAls4e7YnXtfBNSnZPKuZj5cJLKAQSwfA0oDSibwYYU6yoM0dk++WJz/RS9rZvZqt90NKQ5R/k+gR/EeHAulgzzzlUXLWs2dXscdbSrH14AmC4HLdyxTrPec4Hfexni9xjxzhZN/ws86AvaTZjlrJnl1F/gv+RJKW/4zeOJw1ts2T78uXWPoQBPS0UvBldqNNuy3cs9sESVjpn8EVokTJ4HgNYhyWwrP+vKFEdC0NGpleNicfUalUDdaw91emd73PWNOyCBj2WPwuHyc9l24StWlmFFP4QsKN8xjB8ULXUr1ZeuQGv2ABT9Gnz7/fJCAE7szLo5yAsQSftCT8N3CoedLphZZx6jzGNHfcALv4v8+DDioBog4aLrQKrYdDU3B1JZRMkgaIkRNp9fIdd7VRfzqc+CLFpUHGbtodWXG+hi0E0gdQ7p+fZhF9fxOoX7rkvAm2jw5Ictb0YQj0SJzBD4dqaKgJIlbXNo/5byVNlfoRIaHvbPAlrtICwJcz0ztfaluKwkbrfGOLrGB6b6pEuPwmu3W0wiB5XIYra9u4mu+PXKL8jDpA90OjEWB+x9FrAcikvmYY/N2mKLh4pKdM0+J/rlXcsSW1OIkJL51HQynd8DS2mcf/nac8Ghcl4V0wT5pBdS4cDpVjAyTkvSB3mXhxZHf3cLKKOw X-Microsoft-Exchange-Diagnostics-untrusted: 1;CY1PR03MB1519;31:DRCawKD4OWrQZTqiOj3qlL/Qd7JrU73nTU9UBjsW7fYHfeQxBO3cEGCfLGPChOrR7mn6fCyitNzGfZTuXUr3OQEe+Vz4TfyYx3JFMZlBxqTOyQ4Iw2LoobOHnpiJoQyy1FZrOfWyIYWvJ5yecDxLpViByNMi/YaYKMbgHgCE55792PwJ7IFaJn2PBQro/zJ0vkPZ70Q4GtBP52tPJW3Pz0/KD8aH4QDtn8F3DWcmDtkrQyHaPuDTtYZHDPpUwP5ZfrbdH8M228rKSFl1TlpWMA==;20:U80SISh9v8BoByQjDoi288f0ga/bAAqR65FG55i5IWo/xP4QsNkOozqlnqjAapCRnRhw4ugCc7dPeJOaBil8IrexUgInHTiOzSAQtKM7c+ldhn9isa5GgWjYPn7eMPEr9oiZ9AL+lTCD3Nnpt2D77RI3VGoh02UPnGuKX6skTHU= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(34691856369561)(52743740316358)(131327999870524)(80048183373757)(192813158149592)(189271028609987);UriScan:(34691856369561)(52743740316358)(131327999870524)(80048183373757)(192813158149592)(189271028609987); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040176)(6045074)(601004)(2401047)(5005006)(8121501046)(10201501046)(3002001)(6055026)(6046074)(6072074);SRVR:CY1PR03MB1519;BCL:0;PCL:0;RULEID:;SRVR:CY1PR03MB1519;BCL:0;PCL:0;RULEID:(6040176)(6045074)(601004)(2401047)(13018025)(5005006)(13017025)(13015025)(13024025)(13023025)(8121501046)(10201501046)(3002001)(6055026)(6046074)(6072074);SRVR:SN2PR03MB2304;BCL:0;PCL:0;RULEID:;SRVR:SN2PR03MB2304; X-Microsoft-Exchange-Diagnostics-untrusted: 1;CY1PR03MB1519;4:RzowV8AOB+h/SUsEMfcbHpPTpw/APsuhl3LG3op99dHBVz6+Xn0FKIMcuEaWpf/CNt+rTPx7UrnLEftrotzCwQwEa9NdxgsSoC4LM8sJwm51y7eWDQPwX/yw9iS18zjN8fwpK0dGTwHOYe5KID+d8pe/CeR9Wv4rqBj/E4nm4z/IM2+MHOFf1Zz+Wa1wc8FfDN+u9mTVWiz1HReZU0JWY3Ux7qQSVvsV7SrV+3DkZJZbOYa72RuBsx9rk0nBhBTJWlITM2w+3c715hou2S/68yIwPaWh5FhxmseWnvbFw+ruFWeUBjRoC3GldLsOj4UDmvzOogkr0xED3LCI3qPf2xmZv/Gz2SGGTAOVpZr599gTp1bw/aBaPh7H0T2PUNLxwtIn2O0sWqPztDW7Iwf3YKa/vcqlezwaKVt+xgfAdqF/eYu5rKEuV11T2eJ+Iz4xs1tR+a5W+jHcWLlQUrISntFE67Z40dOLzpxLOWNpTo3+RRRIDtQfoKfX8BinxNDdjoIld+ny4WzMKo4/mvYvrQop8MLoZmrESj0qFfl+5A8D1IS5+HsbomBejWQRKTr7RB03MERxJH40Q3s9xbIGsjjLoRhggFcGUEoY2oQlEQ87tUCr8B6h1qgFIV4Gnf9QxbL76UA3YwrczbRuIOiwA04d/PvcekwBFuLvP+xYhDOR71gM/9GShkhY1AH3JSMj X-Forefront-PRVS: 01136D2D90 X-Forefront-Antispam-Report-Untrusted: SFV:NSPM;SFS:(10009020)(4630300001)(6009001)(7916002)(189002)(199003)(92566002)(3846002)(77096005)(7846002)(19580395003)(19580405001)(6666003)(68736007)(81156014)(81166006)(4001430100002)(101416001)(15974865002)(86362001)(8676002)(5660300001)(76176999)(6116002)(305945005)(50986999)(2906002)(7736002)(33646002)(110136003)(66066001)(42882006)(42186005)(105586002)(47776003)(107886002)(5003940100001)(2950100002)(586003)(6916009)(229853001)(4326007)(15975445007)(48376002)(106356001)(50466002)(189998001)(50226002)(97736004);DIR:OUT;SFP:1101;SCL:1;SRVR:CY1PR03MB1519;H:atull-VirtualBox.hsd1.nm.comcast.net;FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:0;LANG:en; X-Microsoft-Exchange-Diagnostics-untrusted: =?us-ascii?Q?1;CY1PR03MB1519;23:F6yIOIcwT+gqgNH7GDKPtwQyrGodPqSBubOwVi0aG?= =?us-ascii?Q?HfkvepkOAx9G7pCKbdnUAIDdkk8529EwqLY5/++0GZGI5eSQTJ8AjIUog/tj?= =?us-ascii?Q?SYmAiWikngkFUWJAptgPHgYb4DlVagfa8qbWEi49aqiRJAXtylXjTFQypuAU?= =?us-ascii?Q?oCxbzSr4/ANsVEQQOQ9jZV6XJrVPupBl35OoQsLU/iR6iwRuTTrawK2R0mgT?= =?us-ascii?Q?vUcEWdZTZ/JutL7ERPYovwZYuehvJTDxpqDKbg3ars7GgAqi4Y7ghA4niEJr?= =?us-ascii?Q?jZZAJGCVCUG2ExS7CHVkK7tIVLjacMgQrdoZSyKQxa0Gg+uEXECMA+O0AcC9?= =?us-ascii?Q?Wjwey7jeKrydXEF80ddBVA7T0+pedXjruz2N9ITUaULAvmvPc58ib1TwD4Lk?= =?us-ascii?Q?EBPXC8KcYG+e1FBISWvHw2XRWOZi4xvoKzYnL/Q9Zi09XqyS5vIyZu6dnt/i?= =?us-ascii?Q?C9hcbdxHqHWVe7haIMrmxrQ+c64Ip/HrfC3SRZ1EIM0HCpqEoXsZ0ezeCyv8?= =?us-ascii?Q?mDkn1qDk8HB57BDlLRFIOHLvX8V0QK8lYNm9R5omPuxFFxUDfY0rQr0qK5K/?= =?us-ascii?Q?P7/sCRnmWlG4IxG6+WSv7AMbu0f8ycfGfcSF9GXWuO4EECh9EXdAOUT54IEJ?= =?us-ascii?Q?IBB1K3mbIDLZT1+PQo7j5LcO1vBooGzLCQjSjakVXaSIFGPJNPV3hw3ft+NZ?= =?us-ascii?Q?/0vV+LOqIOa65519/ntTrtyfnKdnVP+v4qsWie37xr/7FmoxL8v9olMGM7lW?= =?us-ascii?Q?58qTvwZuh3nnOZChIJHCy/1VIgt8ZZAlVNzfJjO/5olJPwJ27UOLaU47jWOF?= =?us-ascii?Q?1S1aIrnapzoTNtDQKo9aVEle2dj29BomXfpoa/RBkWcNFA1tfTONi/J6DUCR?= =?us-ascii?Q?E4vKgNK8iYWFqvVipJuJD2ypLwZoq2XxxALZt5XNVAwXgHAjQI3Xg5wxk6uQ?= =?us-ascii?Q?Rw3KkpoDgSsR39TbOO10LDItA4hRepXNTxWtk/5eMr7LnqIWyE95TsXFKE7u?= =?us-ascii?Q?y4lr/kMES0ZnK3GT50tvMFA8ZNtkzi0RiZj5KqC5e276JrELICi3BVZ4HgX5?= =?us-ascii?Q?eACS7TPWKARxjOaHyh/2R42KfFi0MYSRCkIMHsWBPU6yIO7flqy07ro7Fa+K?= =?us-ascii?Q?/LsvYc27YaOnY2cLWrs5FdoxVBxMgN/M5xjC9mHi+k7KPTP0L+9j18NFM1bK?= =?us-ascii?Q?udxRXqkbX6U5qw=3D?= X-Microsoft-Exchange-Diagnostics-untrusted: 1;CY1PR03MB1519;6:CW1ajApTZV7HiTNmq4pAgnheA7rKBWYrJm8uhBGdOKgSLk8YqKdIdZC6dtAvmqPB8kD4aBX8WStfh2EuqMptC9Agcj1A+u2JOv+H3cJsENkrvN+AzOQrapDHecq5m1lRSbgwkIeklNupZ97jsAeEzDJRpHMpmF2WChoMngu4+wkZf3Y7NsG5hj0oiCtFUBUBRirTx5aFvYJVdTrZLDFH14SOPkFCvJwgHdxZ8xXkENZMdjelzwM984vjuUgqd8FA8s2SNYR7U+Y7lX/IpIT4bT3fhEo2c80drh1hWFJdggLcBXuV2vpcPpUeWZX79kKDbd2kHkIB7b5ji5D/y1y3AVxVp1SoyqACPZyWMlJRmyKAMSh+VZvA2GhfK5PLZcMo;5:04OQXh92xcFlLKdlRxPVKXhk9ySHrw54mHyHKnF5NMOjhsNeolDS6qogef4HDFLaALfrPEYQQkVuGA08oONZ+lcnZOGZLhW6ycciEmxoMEqf2BmLt9pq5/b6vE5mfHok5UDe29JGKpJTVEdBs/AqyA==;24:df1EniOJxX5qvzm284oLCb6kY4K1mpANPHeVwUFAB5cLLgyzbD5Y+riSAfNxPcDox303w/3ZGqmM+5SxdMBQ8tyvtlz+jjDfG0WIQ2SEgvo= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics-untrusted: 1;CY1PR03MB1519;7:Ug69F/4iBg5SzL70akx64PF5xJ5uQhG8GTfJqUKOcQaVdAYmXIJP44lb6huIkyAI6i6UTC37KXMC9oZLa4h4GpxCNkNqRRvRCHCkq4FkwYGY2eHP0n4/KvB71HYCRLqrJUnZlGStGCnkOF3BRZGm9ra8dRfpU8V+TD8/NeZKSXGt/4MdJQKEbdFAPiH82Oyj63i2xCIfy0NxIhy+KhOscFOyqNEbQdwJbG0f+aqPpRvmPoSPBTbbt6KA/cC4cDwTinwvRgm2yqGJI+izGcqI0VhgrI3YY3Yt1BLfi5eHReUR8IYUpEJq3Hg35My4HuqkTb2sv7ti4IIdmT950lLDXzpB9gV3lxpGKZm+V5/k/lw= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR03MB1519 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)(1110001)(1109001)(339900001)(199003)(189002)(4326007)(105606002)(97736004)(48376002)(229853001)(81156014)(106466001)(6070500001)(76176999)(87936001)(189998001)(66066001)(81166006)(33646002)(8676002)(2950100002)(42882006)(6916009)(2906002)(107886002)(19580405001)(50986999)(110136003)(7846002)(19580395003)(86362001)(305945005)(7736002)(4001430100002)(626004)(336002)(92566002)(15975445007)(3720700001)(956001)(50226002)(50466002)(5660300001)(5003940100001)(77096005)(11100500001)(68736007)(6116002)(85426001)(15974865002)(356003)(8936002)(586003)(6666003)(47776003)(3846002)(7099028);DIR:OUT;SFP:1101;SCL:1;SRVR:SN2PR03MB2304;H:sj-itexedge03.altera.priv.altera.com;FPR:;SPF:Fail;PTR:InfoDomainNonexistent;A:0;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;BY2FFO11OLC008;1:gT93YilM5yF1H44e3SOIXoCyXbGejKNuQ11kXqjifbrbK3OyQoFQd7WiZFCeqbijPvJiLe/fktLbOUOXQFQodnnAtClM5CQQKeOyZ4UfoWJetvlEoCwZcmslkIu0/b21s/CmRg4UvmbbyatJVh60iuoCGc4lX1KaARbJ0cEQ7JF0X5D4hekEwEBPn3SOdlIrb/tfcvBgc3SmQQKetKlxYdbn1Qmy0iGqW0G6he4PYuksY6A6F+TykyqSKbXsuOkWSoLPqUnRVX17YqQcbwuXBWESrGD6mtWiWXsFkpSPTK/01ex+nDa8HRGei0/t9Vl4/5FbDzDHcDm9ihDBvWE4KONRApgmRGUdw0O9VCjKoe5WMoEyTtisiAkN5tWZ72y0GWVeYDfnRm0977hSwTatFKuZHoXEgVBpuHiAtldLYfmhbDsjIqj5V3qsHhxNUKe2l8/0bvfXEzAMPjbuYCiZZn6UmwyclEB3+7eLbqveAUguU53VHn5wjI8FtXwqIv/YFDjnBZWoQ0Dj+2jAi+LUEaXFMJgbciZvfMTfpkUOznKCVSBEPwOTL7DcvzVubNwInrQmx/SLKGeJStZe4+tlwg== X-MS-Exchange-Transport-CrossTenantHeadersStripped: BY2FFO11OLC008.protection.gbl X-Microsoft-Exchange-Diagnostics: 1;SN2PR03MB2304;2:7xT7/fMniDdC4yY3oJVOn7zVCRCW3MhaMpxgVq9y1k44LszMpxCAkdLr3425ZKAGo07Ca+uW8ozLcM8BNGTKHrPdqb+v2XNg4NT1lXhDAiyfHKLDSkA9Fuk0YNUyBKLJ/7DDcWgtH0IW5F9q1bDKquF7lwP+6Yg8Kn9qhi2VinH7VKWmVZu+Mf8NV3sm7IWJDwfTCKDL7++H2rmhxBanbQ==;3:x1OeTfUvKis3Pr3sS2FvFAS9+q4Gyi6VPcmitb00axiuouKLS1+9VtxWIRaT6RlYYmStEfBCrRjDXTHLl4W1uJqxIFaih44rfCI4XnimI/qLjtOpaKBv2NegGSRSM7tx0tTz/A/ELE8MPAHruoopJLWyFGyMpwctEpVsNgylq4a1TaOHUYBKnFji/QzYUrLzsqKAJZbv4Ivl15Wh8JP8g07v60N+ibBXYL9lQ/T/yhpukYkkINhu9S0Flz8DuYyWRw2IVMKlnnYh1E0oHuSCxw== X-DkimResult-Test: Passed X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(3001016);SRVR:SN2PR03MB2304; X-Microsoft-Exchange-Diagnostics: 1;SN2PR03MB2304;25:a/zqvcwSa6KmEGQDiCCHqqqkTttwUcblNlkoDVwDwDQ/f5dGIhfAaQLYlbYrjGS72P9DLI+nF7sKuzL5tOELfZhx5mBolkQB1bTQbARIzF3A2e9BogoJqFq6fd5yE9vNUJau+Q1OgDpIKNBk3l5/OhJFi9od4Q1QI5a6TQ6BItH4pukAmO3b4UNzDRenTFiZ9LkB03GFTQe/2jG+tJOaIEXyrHUmVmXbPGrb5vqPlDMA6v/MsrKKIpiU5nH8AfVKLGC0gzFtydjXCmrqwIjSYc/zsP961TtrJ5DyEw3OYLhEm0KmiUBX6g0ApTh9K6GNce847h9dmwcVqWkRW8KNGTAJNHNZFNVYn0kAwW2FBhWtBvFca7usyPwxaGCmUAwX+9XBbq3TKtXUuPUje3ZdqINkyiAObpucRqM9ip9+WqtbnASyG+k01mwO27L2xG8X7sGw/WJxKl6/wnz+3RY4lw==;31:Xi670h3Al9Hbkp6d1s2Q5WHYBuCyE2j9b6VtQgX5lGhrajeOaZudNUy3FVwzXOZa6PQO1tVwcsq9qnnPSK3zRs8oCEurMyHyMzoMqV2s2QxC0lTh+hw254t7AGJfQ/+tKvBBSfGB6umXEBySVUWrnjAfWQ/Hacgqu8d2/B/xvQlDhPiFQR5It9/Kv5az6Zgwjh1lcQdPedCWolm3dzEPOB2Zv7uxff/4JcxddVWFy7PqDjBkCEFWp0dwyIN2PQaIFc30g2GkcjfRfu1OYAC9V0K3T5umInEDYJcOzUJYvtU= X-Microsoft-Exchange-Diagnostics: 1;SN2PR03MB2304;20:qE0cz5M8F+TM7q4X6meS6cYqqLE4HIraRnitYghBTiitgk6PK8J3TEl58E44u8XzcCXthRRPQlo1fB0YIEmzX9F/budwdrZn4ZONOvK/ADLIiMdkCeWXxgoIwOimsBk7EyjGPPU7PpWowsp/6S2fnbutDZzKiEgg6mfYOb7jTww= X-Microsoft-Exchange-Diagnostics: 1;SN2PR03MB2304;4:ihjZC84UGFATBtRyQ7jRq4Kj4OmXS20BkckeikeKvCha7bYOk/gJNhLRe8u1ZaKC+L944YhuRZLjkxm0jPunLe8Y7gRJJJ0hqh8Is9vOnrqgXI51rdLWhJAl6F75z2Q8r4NpEyZzLX6G9tE8LntgIqfn8HvDsaaqckJyB8dAIO3ArswEgTT22yRp3ob6oTPv45hw0uCrE6gGGYcAMEcbid+Stwik9cKxiIQ5NIHz/79CpAlxqyEsx+K37HpXLH+a9qVQ2vGtIsN03Oup0pP8gZQjVJaV6FRj1z5CkpRic/R61BvefJfEYTf90UNDox9l9ISpIcbLG7rUk+3RZLeh3mQiOjDKvq9QaoC7PeuI1kGJjaC5NQC9zXyOoXFrS/58LllnM4bFnpHrFUkd209N9BrMdOG00GyyRbU9PfhSHlVQA301bc/cCPuLpBWS0t3QRsM59ZNVCuV19rPAqVSgQ3WYwiGlcgLTvw0pM+YcdibrHH9VECZZtsVDVwYRAqnnbuug8mSr0Mw+drph+E3qTepYSJutLWpXnZGUuLD+MyejYptTR7yD2LyzK3vP1/fVfhCPXOP7l5rL+/noepYS+4wEyQIjaf72vxnMSYY+7kB7Q6FYrooaY9OwSEL5ODxw/eEVu8cKu5I1hcz536QX53k6Zf49+VtNNJQJPvn8XhQM5LkImhLr6mRZYBcTCmM+YtMINlzlBRLXrrg5JMzenWi9wazmrUhDLD6fxGljthhuUD+dZBdYJQYhyt6OTYsf6lBZOsJX3irOgkDiDkV+Mw== X-Forefront-PRVS: 01136D2D90 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;SN2PR03MB2304;23:HO0FKBA1uhsVw0JYJeVMS5MBTHnHQORL/f/Iciu0k?= =?us-ascii?Q?liSsei1MAwHXMz7O95sYjtooY/CCkKpSSAT9GmPdubBrEEICnqjfSmq9XTYN?= =?us-ascii?Q?ijBpvcxmISQpmSR49ddW37wFG8rsnX4IPFc+j5Yz0/9jOzWnVwVdeDkkpW5E?= =?us-ascii?Q?VuS06yvLtmjcfL7aMg6C2M9tjQdi/DhcycNwZyuifSlshnHwuChzUKjA+V8G?= =?us-ascii?Q?dfe3oAiDzePASGnsQbkKhSChkBS1izl2ailLe8ZyauRS3RnKBZC54gFQLZTB?= =?us-ascii?Q?BhoD939X5oSCN4nBPccuixYQ2hsc4fk/HqbDPbH/K3miH0Dp7ZgKJVmDkuXN?= =?us-ascii?Q?LkNxQob8v/V6oAsSFXMo2tHT9qJy+1Jd97vivDlvrvo/rQR1CQkYgq4XO3HZ?= =?us-ascii?Q?7FTaYNLooTl99ax4tpgi6zxCgjhuyp1ec9Pd4Y5xCSm7p+pBGUUL65i2Hptv?= =?us-ascii?Q?TuDgqENswafueYXbs4QjaCxuTCRXchL7zzxm3kDNnLw67TgRFTmd3skJJ4eF?= =?us-ascii?Q?5b3O413iwbiSil6pQWlLJpI1Pu4nYLhUselmU9SBZWn3VGxOSfgUJLSNJS9t?= =?us-ascii?Q?1bCoaaavzWocL5kXhGOQhXS/2pjDdOg+P3kEjaCrWCGh5lkZkxFvkds3Wqjk?= =?us-ascii?Q?/stv8QLhsQPrSyi+JeygecCiOY2nCPRRKk3s1AG8/3dhsUfu+oLyHHZYF/sJ?= =?us-ascii?Q?fL0pXQqom3zxqYydAI1ixcavxsNA0eJ6tDkewg6huqhzqgOd0FaAk/L2H8iv?= =?us-ascii?Q?8Led7N90OFtFPD6Y5MgQZqmIB78ai2Yl4UoUHAtMVzVGyJn626MSRi6XCS1I?= =?us-ascii?Q?i6QBkzLajPWvc8/gYNg60AOOVWT/Ji9zA3pmQscCW0aSesnPhaJeaeLvGN+a?= =?us-ascii?Q?TLjfrNoILDEVOEsLXJhLBjv1i6D5V88WhN45kqPBO6mHqm3PugEHM+17e78C?= =?us-ascii?Q?iy/tGGXoBFstQZpIUMuLHeAW7iUb9VJrmT+RB62tFxoEH2DdQ6Pyr4uxNBYa?= =?us-ascii?Q?juO8gkIazTjieGsbLwVIzaOOJDWT06WYazh7wPHKHbSPdxs2roNhAhU0whYX?= =?us-ascii?Q?GxAJO+FJU4+Muw0qDFcXR52LY74k+hXTGnCFTmBLpHDIaMtnSM2NOe0eX3XS?= =?us-ascii?Q?pPnWVtQRrM3Oi667lBrId+hczUGUVScT3YIldt2ClewfFwmcCqYtVi6gYPuY?= =?us-ascii?Q?4iZUoaL83nIylWDZVDSSp+/Kf0es5yLUwr63izyFFyyDCm79kZbSzgAc/nmQ?= =?us-ascii?Q?lUxz9mlbqyyG5LnOvNKTO9wVvnvv9DX0W9UZMAYUR1fDpKyIM4ltaBXYUpLd?= =?us-ascii?Q?Ajhk6ZhveU90eGPzgbkkG17WbIDPlMEzJGq26sKwJ+ZTlaQyYSy3gSxawKYk?= =?us-ascii?Q?/wblwcFGXd6eU5aKkRVX+JlPG8W3+13qsFABbribP8pJRPzQKa/t53brJznI?= =?us-ascii?Q?nLftuC+Xg=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1;SN2PR03MB2304;6:x/JUI7bTbJLWj87cY7S0RgnRZbCO7H0KK+uBpwCJgda3J9u3qfzG0A8cERhp01qMSOxyrhgB011c3/GkTmyYBCT5zilsbtGJQpzkF6GRpf+WRNrI+Wgr9gTC+R5W1WN1u3glFbmXeegBnIc+7sYrij6YwX5aI8K9A9GMzCITVYxUxzRpM7rYoCjvWBr3H4ZbNsW5BWMMX0jba7jBhPJYzcEzNqU0HezB6ex27497YLp7YtpfXamWPfdOts98U6A0GB3jcAMhYyGQJrK8NH1uodeDHOkdtYydVlhqnbfzK+TR9CmX2mUSXoIlKfI7JqUSrC910ItHqPrBmw6JmiZW37+V3wPuaqz9OsaNp40fid68nbx8rY/FmQBHRv71h8xU;5:jaW1//MlvMSbPyJg4dvWbUCeIrOES9+7lByDFqPE9yz3xAnFYt68csyzGsA+EGwhgFBTGBlsmDKDXjl5Nn9E29VDA9+bCwCVar8IU0QKcZPHlx4gG3+6Z5N3v4srnv/E9h2b+k+FepnjjlFDPhv/TA==;24:UvptjavmZ3jseRUdAipGHcAImwGSrqBMOY+HeVzEiFKNxgJ+w9Hvt6scxgM1pqlahxs45KTE+qM48JLZLSkSza3T5zckq+YMQurTx2rdIks= X-Microsoft-Exchange-Diagnostics: 1;SN2PR03MB2304;7:Y8DE/+NUPM6lVkg5HVFcvl9dcWdWFPj72uUYSpkuAmzf+3pQvjdU4M5WpgLXTybdDaUzDAkAvTAeFBrrTJBJsRjZxGoiaiAsCnCBoxmTdDw9myRMyLji1Q0lYKHfrC6/kwHRf6mh54cY9sipzd0U9cdXs8pmxJu6YYrQY7e3e+GrvwdWiKXF+DTE4FJnT2ZYzKTirTY06364wssmUzhUMlrlQz4gD7JU4bcZR66CN5rhWg4iTpHIIuH5HAkLAdql3Ji5Sn1U8tuKWaGOAat3txvwOvC+roJsi/+HTtBoo81PMTeZAX3Chh/7QJS9+UsKKuCkZ2WuHShcjW/Cwy+BJA== X-OriginatorOrg: opensource.altera.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Nov 2016 19:15:11.0832 (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: SN2PR03MB2304 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 18745 Lines: 514 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 Signed-off-by: Greg Kroah-Hartman --- .../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 -- 1.9.1