From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S945094AbcJSPac (ORCPT ); Wed, 19 Oct 2016 11:30:32 -0400 Received: from mail-bn3nam01on0045.outbound.protection.outlook.com ([104.47.33.45]:53064 "EHLO NAM01-BN3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S945072AbcJSPaW (ORCPT ); Wed, 19 Oct 2016 11:30:22 -0400 Authentication-Results: spf=fail (sender IP is 66.35.236.236) smtp.mailfrom=opensource.altera.com; xilinx.com; dkim=pass (signature was verified) header.d=altera.onmicrosoft.com;xilinx.com; dmarc=none action=none header.from=opensource.altera.com;xilinx.com; dkim=pass (signature was verified) header.d=altera.onmicrosoft.com; Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=atull@opensource.altera.com; From: Alan Tull To: Moritz Fischer , CC: Rob Herring , Jon Masters , "Michal Simek" , Jonathan Corbet , "Cyril Chemparathy" , Matthew Gerlach , , , , Alan Tull Subject: [PATCH] fpga: add method to get fpga manager from device Date: Wed, 19 Oct 2016 10:30:04 -0500 Message-ID: <20161019153004.1945-1-atull@opensource.altera.com> X-Mailer: git-send-email 2.10.1 MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [64.129.157.38] X-ClientProxiedBy: BY2PR1001CA0039.namprd10.prod.outlook.com (10.164.163.177) To BLUPR03MB1506.namprd03.prod.outlook.com (10.163.81.24) X-MS-Office365-Filtering-Correlation-Id: 8323e491-98a1-4c21-429c-08d3f834d483 X-Microsoft-Exchange-Diagnostics-untrusted: 1;BLUPR03MB1506;2:C6Ups1opHWAt7akTri0L0nLE5YK/9wA4Q1r8G7MWsKt7YFXIAVbR0nu/VIDSDW6Dsjrm0SvdC8EFZFVVd/pzit65BJwZis6oqFQ2V3UjD4HUI5hjY/fjr1GekvPw62NQAFRn/SDMpwO5URMYVV+fMFoLfMwXBQhYvEKFu9akJaLnwFTCQX9wiKnEy9WlZaxUQv6hgkycgVOrznNiMHtO/w==;3:b+frkedJVa7VXEVtkgOKE/JeCjy/KTZ/z1T+tzNFAojE91eJ500MBanW0kS48ECw+TA9xsB61Clg5pXX7JDxL275dIfbskTSb5WUdcOrTiPwcCGfiCGAE+xYR+SUtz5MrNl15XuK/NC37wWOExHFNw==;25:7d4HZa8eexpBh7xG1AYqMTYvsr1PHteO9eTvrdxUIR33i/CvmkgxVP1Ezz/DzgTH2YEG5expMm3H4SVxS+8dh3PAkCd0VIWfXjeSVuisCaf/68fl/04TxhyOam41ymMLe6lA29nOgiHUJAB7RSXDKrE8Jx/FcfjVEmu12SwgiEWEcM6zg85X6T2rUWzRUIWXA8VlPTzG+0C4hbUc5jGt7rvAGrQJwZeNRFH4wpQhr99+aPukJkhrtbOhbNnXLAiCEM/sPSZ21A+Tt04wd1NvG6E6KB69WZ1b6za3FUOWPxovV/IB1V8FGPn7lb1G7VNK1haphGowfTn5UeSLRd66qGohfG3Vwanb4QcmFoRFteUVJK5znyEJmM4Q6BUh5G9TvTxIiMhz3SR5w7q9Y+VQyK46OYTSqIKCGr7joFvxBrdW4/8FW+kU2BQ8uceNJjY86XgGCjTUCwSJiXe9C/9OyA== X-Microsoft-Antispam-Untrusted: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BLUPR03MB1506; X-Microsoft-Exchange-Diagnostics-untrusted: 1;BLUPR03MB1506;31:0Ul7H06n8wMyYc7yUMz79Q68mfqCiNUqnCJYEddEGq4m35rOZ6vU1U2j+w9zVaMroKrDzj6yXAUYvJRudispiTludQLhICCL8ZvXYL+0TX+avL0mYJoJW7qVbZoqLCXHYrx2L/f4vr4nFVXfdWv56S+iEq6qa3qabh06Shn/ajL0OHgzkrHllaeheW+6aRQh/Rm6tK5NhL9sCCbpzRQMb/WaYK7cm7yNlEiQ35r58+aQNWM3NGhVDYIDu9l3AyzlP18Cvbe4PXZm1+fSZDy4Rg==;20:VGjLGGwaeQViFK9l3az7uyCXm0KP9UofdARciWk02d2EOvlIFW6IA8CA0KpLIrJA9tfzpMzOzXqW29BEh8qaP9dL0ZKNWMV+lKhROSNqGZ5VLstiG9pKi40Y8vP/WknzqxMjGNsK/O6OuWzdm4GDafiSDDRdHTNO8iGEy33qc38=;4:OeHKDdzYDAiJ9QlyRU5nVvMtLovIyugFOTwPu/lohoptBvICpGUJNYyeUslkkZBkVQbmLLAya3CrkZ8DI+FEVKw2EtqDg5o/+05ddh3Urrc8V4X7TYqhHvCxnF2k5kELyCLfe/ytaJn2I4efabDVqlhYGgrIIt6POFtWOeFGNr3PRcc/xsrlJtTqLjdYkrzYi6t3Cb/tUjEAJ2EylfTqlWNnd+YGI2FGyvk2XNJ8oYRKkQZraGnzvUw6K6cP6seeqUR0q9VhOzIMOK5WvdqfwZpNYOhKRxWx/ymUrztOgVuc4JHH2pb4LFqNEZlfkpjbsAEPWb7RWQTj/Q5HPw4sn0Rv+i6lHF0UA/s1Go9+Hd/mkEgX53Is84zpuP/KglYkj9Wc6m35ZgLwC4/QhnBkv4jZxDS+dwOO63BjwjvSuD/7W6SXkFZhZXfMOPFZKG7ZT/Ix+N73QLcEuXUyow4nhQ== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(80048183373757);UriScan:(80048183373757); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040176)(601004)(2401047)(5005006)(8121501046)(10201501046)(3002001)(6055026);SRVR:BLUPR03MB1506;BCL:0;PCL:0;RULEID:;SRVR:BLUPR03MB1506;BCL:0;PCL:0;RULEID:(6040176)(601004)(2401047)(13024025)(13023025)(13015025)(13017025)(13018025)(8121501046)(5005006)(3002001)(10201501046)(6055026);SRVR:BLUPR03MB278;BCL:0;PCL:0;RULEID:;SRVR:BLUPR03MB278; X-Forefront-PRVS: 0100732B76 X-Forefront-Antispam-Report-Untrusted: SFV:NSPM;SFS:(10009020)(4630300001)(6009001)(7916002)(189002)(199003)(42186005)(110136003)(2906002)(92566002)(7846002)(86362001)(97736004)(305945005)(50226002)(8666005)(107886002)(7736002)(48376002)(50466002)(19580405001)(8676002)(4001430100002)(19580395003)(69596002)(33646002)(5660300001)(66066001)(50986999)(229853001)(189998001)(4326007)(53416004)(1076002)(77096005)(81156014)(101416001)(81166006)(5003940100001)(106356001)(586003)(6116002)(68736007)(105586002)(47776003)(42882006)(3846002)(7059030);DIR:OUT;SFP:1101;SCL:1;SRVR:BLUPR03MB1506;H:linuxheads99.altera.com;FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:0;LANG:en; X-Microsoft-Exchange-Diagnostics-untrusted: =?us-ascii?Q?1;BLUPR03MB1506;23:6qlg19xK313OBdps/jT+CZgw7zGl5THPro1H5ug54?= =?us-ascii?Q?Pld4JIdzsKn9Apq9wP4BCtOd/FM0zf691c+wautohcCEX6rBNHoD84uOCVWo?= =?us-ascii?Q?1s58uJzn/CcMbmuzq2UUMKDVybMKLChqle97FdQpGjavA6jwfYJU0bKkeWbe?= =?us-ascii?Q?3HcGoIu7BT/BdiN+wseov2+Qw6LYIMp86LmM5s61NAk5EUOf/iBx00vOw20o?= =?us-ascii?Q?B0easpgHfPokaWJ5GSavL3J6As4S6ZYupCiHyE2vbnI6NexRvBG14DHH5Lcv?= =?us-ascii?Q?VJ7UEHIjIrUwl3M7ibxQdkS79dv13B/vlUCfRjx8SjTncAwe6x0gTR/FjDvQ?= =?us-ascii?Q?NbAaViwOU8+pylopmogXU9rnf1pFSOOlxfzE0ni5EztJr8ul4shEwrh2w+tH?= =?us-ascii?Q?HTuQJhRUaFYXxosbfR8783GpfqpTwu4knQECz/KFMCTiUH1D5NiPuduuRLcs?= =?us-ascii?Q?kE7pXI8ZeYSFPJWV/WXy2C/IljuFDcRLtzrrzDqR0kmXOz6Mcmqx9r+NFFTE?= =?us-ascii?Q?OnMMB662HlEou00h+xSUCqeQ8aTEbQzWA7RA/cyo5KzBNUHVpR1xOAktkt9f?= =?us-ascii?Q?8LoYfEjHLvspwObIHLRZFDTMbQAgfWobhL/EInsgJ2Gx6Z88XRA3cjsKhrRL?= =?us-ascii?Q?HnoNTvmWawlFny1cyCxlcJpSFbmK8ddNIRpowzc/JGlut5fBS8mH1jol2wBt?= =?us-ascii?Q?kGkN4lK9YOJqOkT+pD56ors3edHB2dC8QxA4Yku6MREhmd3J14xbd9fmFVlL?= =?us-ascii?Q?dOa3Uy4TsbBv+SJa3rQyM+vOEjnA2K44T0Uq/cY8+TpCjFzzq7364kq3E27J?= =?us-ascii?Q?nm0n3ukLlzGibw7uYXrUjSa968RvPiEk3Qll17T7uHDO1wun8klYB733s3ba?= =?us-ascii?Q?cvyDmN3Wlm7usXARvDiByfZrJrktb3JpWGAAx7bBbAhB2So4lZmdrgEt5sIo?= =?us-ascii?Q?EHnIJr9qnGaBwa2eoGasVzwUiAjX73WmL6Is1v0mUgpXADVL9UtGAh9nMtre?= =?us-ascii?Q?kexjbBzTZHBVRHFNFf8t/jOR2xv3iWlpBJk3S9YEcEo8DnbWovOfjtb2PFPb?= =?us-ascii?Q?91VH54WT9i94C64CllzE1F7Kg6ofXJegE/144Z+y8HtTbpJhUkJwdXsqtojx?= =?us-ascii?Q?rOYySXdU+CIrn/SUYesSWn/pqqNAFYA?= X-Microsoft-Exchange-Diagnostics-untrusted: 1;BLUPR03MB1506;6:9ow3w1q9Wcn1NLwsqmByqei0VUQGpo+qY5bjoskVd/bG7F3yshOfSy01dlKPULK4An5/pXtHDJr0WcsNnoFJKTrGNHlIJIycvtQegfuTOmBLypBEtvX1d8vZjfELuKRYgRgD6xJ9wv3DkOZfqAvvFRJAMUTneQXtG2nu2kOGuVbwezLFb6YQYZCBrrIpa1IxX2V9oA0gKen3rioQrFPzsMuQ/LjMKykfCUTUcuZ07sLpdRnwfwMsF3QKwdFCIkQ6d5n0IAJv2RW0asErXqlW9ewjMitR21Ij2Cit4vklrJMBwx1tBRT41XAnjJRObniDGMj1HIU57UD5HDVb5n/FXUSrebtxBeTmF+qq1HtE5TE=;5:xa4LTMOYyK+SjzynktcaUSTNQMWtC/joZSOmaJwjP+2eVTNoVe6/wmpKFpo8lpm1OGLYtWfLsq8ezZ0fhFVVD2QoxI2ZiT8vBou/yAUYibb4UHfqLmL6wWjPPEyHvUGD/A+8Ll/jkSZK5kESZq8veA==;24:ORyxJtuXhGwUrF0TCRgVoiP3VKdxiEoW9xOww+LWjac5AE6d7jnfFbdBEy3mePl+a0P4qwurDPMPu+xqDu369uzIzuj+q3icVuS7kHRnqus= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics-untrusted: 1;BLUPR03MB1506;7:FEUcbOhxqywLwpbXiAA5ib55WLDtEqiu/Ah7zMKAH7J3IbnopiBZY8o7HZhyTHAKfBXpgjL/ruUKoslcbHrFqAPcYyLLaAGRYDOHElyXyTg6Yu4wmxeefjlslt2zPqU3JlMKE9ZY2IBdljZ+JN8neVUE+xW9gYluhrVByKuT2ddzDXbpUpjhfONbM0Vkbgv9GpTnMaHXCN49XTb5dN8FGYmwmXXgz78Yd3qvZrc1U883pxfxmKRAsq6oDEVcyfebJbz6Wqut3ErprIU0VTxLKOs1n2pH3vuvRBOpxAm7UMXg3XiAoKRbgdKKbHnGJj7kp1iflHMuBOVZJyON72L8k9n05h0lndL1WsMAKaXhiJU= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLUPR03MB1506 X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-HT: Tenant X-Forefront-Antispam-Report: CIP:66.35.236.236;IPV:NLI;CTRY:US;EFV:NLI;SFV:NSPM;SFS:(10009020)(6009001)(7916002)(2980300002)(1109001)(1110001)(339900001)(189002)(199003)(68736007)(1076002)(3720700001)(19580395003)(336002)(19580405001)(53416004)(8666005)(2906002)(7846002)(8936002)(356003)(50226002)(42882006)(5003940100001)(189998001)(229853001)(305945005)(8676002)(105606002)(7736002)(11100500001)(106466001)(81166006)(50986999)(81156014)(4326007)(956001)(92566002)(47776003)(5660300001)(626004)(85426001)(77096005)(97736004)(5001770100001)(6070500001)(66066001)(33646002)(107886002)(586003)(87936001)(50466002)(86362001)(6116002)(4001430100002)(3846002)(48376002)(7099028)(7059030);DIR:OUT;SFP:1101;SCL:1;SRVR:BLUPR03MB278;H:sj-itexedge04.altera.priv.altera.com;FPR:;SPF:Fail;PTR:InfoDomainNonexistent;MX:1;A:0;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;BL2FFO11FD044;1:pxpZU4J8pNjBBoy0HzKv6KS7Bzb1KyPrbKLxrBZER/uuzPpaRnKQWL7hvNmUVCvlefBJMegcYlzJZuYEg51a38x0T1aYjgGQSsCNK/hIFldueyXNtmAxlxHOefCsdfFD0Ak7MsohT7BiYEwwMMaEGocu8BQNRyG0LA2ATr78UqHQG7l29INmexXqGelIyCNiTbuAGUADaJIOv9o62z6Kyb0IoLTdx9FaBy2IziGyDYjL0QvMfqKI9vqOYqVdL67Vqyob1VJ2ffMm22RqHj112N/9g/KqWHv90v7HusfcM0Q3ToLXjdll+Rhx57TXwZNHCsBe7v7kDByvoB8ouHHuXhhVUmS/nV4Z7lUPkV4EMEPii+BEYNFC4ZBbApbxZlkvHn6uZYaf2FWx//29Ai8xSW4zSilDtqTUXd5uQLh+oQK0i6xmQ+l7CckKQBNR1EJQOGUcZ+QojGUN9g6bS4g5HhzpnP3nwpsnpFgNIQih+UwyF/F9ilVnCdDogSJPYxnW4UBwe6sg4HKGHqXtVkaOIZg0gFP7HDbQD6TzOlK/wYdtLp+kmmUn++o8FzRNsjEgG42bLX8s/a1veNYJtWrwqN6eoBXG53BVxZIc7fRU2Go= X-MS-Exchange-Transport-CrossTenantHeadersStripped: BL2FFO11FD044.protection.gbl X-Microsoft-Exchange-Diagnostics: 1;BLUPR03MB278;2:gXexp0Mk0qrVSRKSs7yEoVwoL2gG7AWQNyIw5f64W81PMEtKnmaYUaA87a2oZ9oz1f3rdqd9c6g0FRZukjVxNs76jJqAWmP8EhkE7O7+qXoW1NM/gC6FK2mdBKCL3jG/aK1sVDtFEH2vd/g0es7MeZiQP6LbzKyAhgpxGsEUHY/m2YHGG0F4F4PHUDQdn1K+7FsO/GNFw41Q+Ag+JSLMAA==;3:5yaWSRDnKAEFFSyJ2WK7CzPceljERlfUk1QfZZwt6YhNm31bz7HjcNF9F0aluhCkiH3+3ovwwCIfow9BhxwO/0USqnWOHWyYTmiMwBRp0ucjAr9ZfbELVIQYp0nTGU5MY2WtSoC26TAOfK9gtCL2IT1lZzvCBXnd1xePFNZAv2K5Oa5xFVI5r208qMAAKv79MSOONq/nVN8vqxGWGMinbOPZUL9aDVPdxWQjnLQhKsLTpiw4A9n3zcRBs5xlKTkDRvsoVIMjXY3qsBTmhfsmtQ== X-DkimResult-Test: Passed X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(3001016);SRVR:BLUPR03MB278; X-Microsoft-Exchange-Diagnostics: 1;BLUPR03MB278;25:5lF/so0fWWgNTrd+1UnyzU520ddYjBT+OyvKaUuytnd6dbdAEOqphdk7uLey6wONFIUG0wZ1gCDa2Ed21G1Fwv626m+xkEPTVekqhr0+xWYApcg4B8Ki8KxjpzGAqUbOzy15MfNJdaNmSx107im155L1eyzByUvOx1M6u49X/0OKm/MqcaoQmkXzlA8+X1SwpdZ0oO02cuVeuWQGlyPKK99hEh3ROhxfCYnVcL6Dr+r/ebZCF0++o0qBx4oOSlli7twjinTaAKYeBsnS1ghQ97hyH2LGrS7qJhinXUMzJZ8pEVZT93Won9NmFtNGOLRt2qRLerZqUHudLrsNpXa4YECCuIYeGoDZ8UjJ7GxRk6/qEecUxE6Q+NCCHBJ8NcUcYgKHWWtofl7rvdvb0tPDxlCGnHIvzpcj/7p1+yDosTJ48WFTMyyyZ4cFFZKPKfNrzfoBlzt67Uir+XXqd1Tb13A4D1xvu6d2V7a9d1bbdQxwD859EiKO1piLTVSpRLQhlWCZp7DeYjQMmzfeNuG4zhiMZvMRBXjbEtEqg2cXYYmLlzhJPTA5CTJoebQJLZLEQ1xPZPIFzC3ZXSdKUH7dMbgIRy0xiegJNdsS2jlMTJljHyB4qu0ppVUHgd5FzViwHo7Mo+plhdPF2semEZ/xLVcvYs9kSW5mSFjRFX/Nvmq8o3yaSTCX4awsJtDSqUQpv/zYA0zgGwsVhCGrIhpJwqLF7Zpvhbd6V5n9MRtI36L9+14sYjzgVaJkbmR94r7CxLFm0Bsoo2sfgoI5SMDFlKso1DFxvApWOITdn1SR4QM= X-Microsoft-Exchange-Diagnostics: 1;BLUPR03MB278;31:HZ7XUpsNmM9Pt/kx5ZjCdM+Aq0VxEk8Ot2i60gkDl3k43vyw/25nC16ObRml85fGc82x8c2IS1fTnecOzGunf+I7zv1rHUtrnuvjMlzD7IgnFoZSYgMdA5l1H5NTDfcqdgHtjcoT1xmHUdFTuXjCejPTOaTY9bd3FWvMonvzSLWvmuBmbVcNU3Vr3RUOBUmKqVClK8tOlqUYIZNj6alfzYN5Pb5Vo2iIfgz8FERiNlXxeGS7R1k4T5oeBYxo014Dt+1VSW1Ru6vRzpR1FlWr5w==;20:hJp0VM65v6ga1C+LLwjGWzqy4Sfkr6CAHovzxJV2v9wyfBmYOJCKcTRAWvey/yWe9uq+ZsSGoj05N+FbfAFEv4BTNVRf3VjtT1K7UxMKRbh6UCmOu532YSjl25TXxIc93/SpLCfPU8UvX+EJFmyM/XUA9xx9VHA1aYdqtsHLY4T79Ny4ZZ2aCJbt/IV2JL9cHENSTwJ64VFuke8OLSqtNDG4iZdNgVxPJ4/3eocLh8FF4d/p3bJkiH3zZoh0pvIY X-Microsoft-Exchange-Diagnostics: 1;BLUPR03MB278;4:VeFbHu4ngwqZywJPqT3cGhoOTTGP8A4JTdtc02fTDQvBtMEJSPCxHLCRm8YxDlqrcbOGhtEgqCqa33KvLJHnAFy3z5fFNZ16xcpUKHHNjV4WG/DZoEVGlocgoKoOIVJiIGBqR906BEb6gsJSUweruMbjWG6oPiwqjmPkE0ghuZ9md5PXN45bifz7FYy6hAjTn+Y1kq7ZZEN9BDmjU7YuIAHZccEa4zgaHDWlaY7OWZKrc4ogPk6F+o+YAHSkF3uIoKXytTdu6KYrPyrzEG7ZFwDfhxod7M5tDueCC7l6psub8lrM0EVRnJX3gjnlBxAn2dEKX6dJXEY/lymd7uee0z8D/kXs43dqInbEhUq1iPUaMnoRyYnUjwbjsaIMIYEEQEer2eHl74VYAxauiPfraAxQty5DYOSuoh8F7Ao3SMBxLhVtt9SA+l7FFw/KTuMt0c5EAYHsuvmotTu5oFUde4kmI4JyRLysNOw4pRbO/WYmGQZVhPauI0WMZQMK8jX/wkQv4mBCQzT/2sHN+ASVEN6GNW5BcOrhdOmtGg90AVyLd+q4PEzVszISHjTqoRfK X-Forefront-PRVS: 0100732B76 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;BLUPR03MB278;23:b64IQSSSqy/b66oc7fAB5a+epqtjN0O5rEC8pzEBej?= =?us-ascii?Q?if2g1LWzbnDcLLtLuctOMtUqfm4/B9SkKB8kBnEby0ZcpwaCZwShytHAGvyC?= =?us-ascii?Q?OyDHzEf8yJ+8qmCLLSIFJalYMsKmgX9RSz2tCQ6QUpodkFXYVSVhniUJXe8b?= =?us-ascii?Q?q+8ZWT+dVXJd0KHYJlQIGfZCEipFMuZ9KvZP3C9esmHuHtU+H9QPX1QDqGwB?= =?us-ascii?Q?HELes/YzZuNb0T8NO69SqO7kOTXgcHc0Qh49vtR+4Ami+QmTerEtYMvSadrG?= =?us-ascii?Q?atGz9hsrkMbYp4+7zQ3y4gZm0qywNL3czZX9vB67TR+jbx2oEthjTOcU3/5K?= =?us-ascii?Q?+j74cE7mFV0aTIa1Fsz66VfZ+0ls3g8EdCPDnJbAIDaBJxOl2Fr/Pye8e0l6?= =?us-ascii?Q?4PH9SIsctaAbL1iD5nNbSAP1jpFvbP/q76z0Y+6VksIDdvfaGYaP2qHyqcRO?= =?us-ascii?Q?ZUMiq8ZE4X3jY6vpRrutF9uqctxZOWooJ3TsxMsQ1glRElJy/diKbjrETB2M?= =?us-ascii?Q?g2B+fBMioZ9cKTJOp4ZTFv6YfY9X93tTr9iVW57jm9AnUblhJLmqb2FqODRO?= =?us-ascii?Q?ViRfp3pEqfUYx3jwbKa2Hockgkapli6QjBRkjTKMb2sAMUyuIbAGMJrFxDl4?= =?us-ascii?Q?Ack2MfEy5Zp0TGdMCwVOKyn7V8c0mTKlw2DsHUWlpB4l9I/Fi0TJ6qyEdFAy?= =?us-ascii?Q?ZOMuXQ/q8XlnbWiaV1jPib8a/tnuls6/z0bm6iZ6U1aAwabGkJNryJlr5x7c?= =?us-ascii?Q?Nve75nBM/IiwAQpTXy2W/KoIGAbvYDu12ervuXSt2rJqJwvkRD7xnoGtFp7Z?= =?us-ascii?Q?zzHXWJoGsyIqyhy+Y0eX51cXBlFHE4K3FdaXH/50YKMYGqggFE1DGYdHABwh?= =?us-ascii?Q?9czcNh2W0tLIREGp0zeifrBJB3aKNx3AxsIZ9zR+yOgq0e3vKh6ZhGSz+G9j?= =?us-ascii?Q?d7dVX387Xfe3Jav6Ha3ZZkY6Y+Qg5Oj1Xl4VjCyF7grugx4uIizTguar+dO2?= =?us-ascii?Q?ZXsARpIUpXi/U5yFmnxU9hPFinew0NwkSEIS6KG0dGaoxl1t7sChFsi7+hS/?= =?us-ascii?Q?4rIKurOyHUeBfAMGJsgnL5kdvRqxo2T5XcdzaAXgKq2iatqxcaS9SPASLpPs?= =?us-ascii?Q?XsgqqQAKbu4MJW6JOo28FLcLmQu14A4pdQnB51euztkL74E2I6vJXSwSBA/b?= =?us-ascii?Q?pAF6n65t1LtPcx86CowmW8QqluX+H3obESpjEPOES3HwPzUc3O48vb3NUHSj?= =?us-ascii?Q?x9NJpNhnuxZqk43HdVHt8nSlH5ScRqDHVK3TTiNu1G0yt+EZPKi8is7Q3wki?= =?us-ascii?Q?ene00sUXhqZn1d3XsXm6iAv0pMoR4gUTekC9KnKWiub5FyRqMEWh+DKR5Hjo?= =?us-ascii?Q?NZ+NOrAcXWaMFqyJWcjl02Z2g=3D?= X-Microsoft-Exchange-Diagnostics: 1;BLUPR03MB278;6:HkOysl0m4Y6Cr0/1eJEC/NQ9QKCIL+8L55my1X/vofTkUf4Q8vRVXOGOo+EKcSZzyXA98M2e5LIVl+Qv1EgKSSXmBAslcqEUUPnWicVq0QhtSEL3HPcXejIu7qKhwxLOxk8l70guuzBA57PEC6hUuzBus08wCVkN4X2I/PO6RtVgDNRvAZRfTtUIzV3YnxWTr5idlzH0opllU5jok+xaEJ8RPMDBrCa9WsFLs54M1pvjxvQbDLI8OIqRHZTDhyKSAai8UGMbScZd+OsYbQVP9AfLZe8FmJ1OFjBzI9ZZYp69LKAJaRS06gxM+F1pb38JheWuX/AqyJHzL/mLbFmyTJ1rpnaoIGy2mRr3u/7yYFk=;5:4qKv2IT0gxbUtxw0LuqyT42yV2XkbtHa752+REByPCSofan/nhE5UT6aEHjBYOUjK1z1ZRByYUS3/N0iKzqqD9PoU+aAyGB4AazrWOLZAZiKfGyTAUm5clqm9ZfYnvIQdylQ41WGPjAJdI19RcwsNA==;24:GrgPX14H+EgqokVaidzAPRd+xGic8jOMOT9N8jDvU9LazIN9G3ClNoYjaozF/SBcWWfPugEejMjyJGyd2GeFKfALAfBeNfkzZkci18W3ATA= X-Microsoft-Exchange-Diagnostics: 1;BLUPR03MB278;7:88g2yfHiKKFT+OQKPVTZpHW66naKNxTeVGtnu1Jouj7yEWciBGuTcowrisJC2l/SwPHeZD1ILw9QM0ZTVKwK16G2AdFSy+U6/huaILxi7f95txmzmQugvoriPOssrfsWpNYxqP7Jmj5vmRZAhqb0aFDNK7OGg+QXLfL+vOFtmKb1P2rUs/WmXt/BrGPdWy6O2Vf9DoouoEpJ+gDULSHLGU4uydclq/+RauraffaCB6gxfhv3yqwsa24wX8jVUNVMrpEHYEu97e2czl4pbBbmYxlksK5EHQTHb3oWIQAKcZUKa5do48LNv8cEMAx68kwnmxLIQa7As8FP/m3GN1gE2g== X-OriginatorOrg: opensource.altera.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Oct 2016 15:30:11.6827 (UTC) X-MS-Exchange-CrossTenant-Id: fbd72e03-d4a5-4110-adce-614d51f2077a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=fbd72e03-d4a5-4110-adce-614d51f2077a;Ip=[66.35.236.236];Helo=[sj-itexedge04.altera.priv.altera.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLUPR03MB278 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The intent is to provide a non-DT method of getting ahold of a FPGA manager to do some FPGA programming. This patch refactors of_fpga_mgr_get() to reuse most of it while adding a new method fpga_mgr_get() for getting a pointer to a fpga manager struct, given the device. Signed-off-by: Alan Tull --- Documentation/fpga/fpga-mgr.txt | 6 ++-- drivers/fpga/fpga-mgr.c | 76 +++++++++++++++++++++++++++++------------ include/linux/fpga/fpga-mgr.h | 2 ++ 3 files changed, 60 insertions(+), 24 deletions(-) diff --git a/Documentation/fpga/fpga-mgr.txt b/Documentation/fpga/fpga-mgr.txt index 9227e3f..087924f 100644 --- a/Documentation/fpga/fpga-mgr.txt +++ b/Documentation/fpga/fpga-mgr.txt @@ -42,11 +42,13 @@ To get/put a reference to a FPGA manager: ----------------------------------------- struct fpga_manager *of_fpga_mgr_get(struct device_node *node); + struct fpga_manager *fpga_mgr_get(struct device *dev); + +Given a DT node or device, get an exclusive reference to a FPGA manager. void fpga_mgr_put(struct fpga_manager *mgr); -Given a DT node, get an exclusive reference to a FPGA manager or release -the reference. +Release the reference. To register or unregister the low level FPGA-specific driver: diff --git a/drivers/fpga/fpga-mgr.c b/drivers/fpga/fpga-mgr.c index c58b4c4..79ce2ee 100644 --- a/drivers/fpga/fpga-mgr.c +++ b/drivers/fpga/fpga-mgr.c @@ -39,7 +39,8 @@ static struct class *fpga_mgr_class; * Step the low level fpga manager through the device-specific steps of getting * an FPGA ready to be configured, writing the image to it, then doing whatever * post-configuration steps necessary. This code assumes the caller got the - * mgr pointer from of_fpga_mgr_get() and checked that it is not an error code. + * mgr pointer from of_fpga_mgr_get() or fpga_mgr_get() and checked that it is + * not an error code. * * Return: 0 on success, negative error code otherwise. */ @@ -99,7 +100,8 @@ EXPORT_SYMBOL_GPL(fpga_mgr_buf_load); * Request an FPGA image using the firmware class, then write out to the FPGA. * Update the state before each step to provide info on what step failed if * there is a failure. This code assumes the caller got the mgr pointer - * from of_fpga_mgr_get() and checked that it is not an error code. + * from of_fpga_mgr_get() or fpga_mgr_get() and checked that it is not an error + * code. * * Return: 0 on success, negative error code otherwise. */ @@ -182,30 +184,11 @@ static struct attribute *fpga_mgr_attrs[] = { }; ATTRIBUTE_GROUPS(fpga_mgr); -static int fpga_mgr_of_node_match(struct device *dev, const void *data) -{ - return dev->of_node == data; -} - -/** - * of_fpga_mgr_get - get an exclusive reference to a fpga mgr - * @node: device node - * - * Given a device node, get an exclusive reference to a fpga mgr. - * - * Return: fpga manager struct or IS_ERR() condition containing error code. - */ -struct fpga_manager *of_fpga_mgr_get(struct device_node *node) +struct fpga_manager *__fpga_mgr_get(struct device *dev) { struct fpga_manager *mgr; - struct device *dev; int ret = -ENODEV; - dev = class_find_device(fpga_mgr_class, NULL, node, - fpga_mgr_of_node_match); - if (!dev) - return ERR_PTR(-ENODEV); - mgr = to_fpga_manager(dev); if (!mgr) goto err_dev; @@ -227,6 +210,55 @@ struct fpga_manager *of_fpga_mgr_get(struct device_node *node) put_device(dev); return ERR_PTR(ret); } + +static int fpga_mgr_dev_match(struct device *dev, const void *data) +{ + return dev->parent == data; +} + +/** + * fpga_mgr_get - get an exclusive reference to a fpga mgr + * @dev: parent device that fpga mgr was registered with + * + * Given a device, get an exclusive reference to a fpga mgr. + * + * Return: fpga manager struct or IS_ERR() condition containing error code. + */ +struct fpga_manager *fpga_mgr_get(struct device *dev) +{ + struct device *mgr_dev = class_find_device(fpga_mgr_class, NULL, dev, + fpga_mgr_dev_match); + if (!mgr_dev) + return ERR_PTR(-ENODEV); + + return __fpga_mgr_get(mgr_dev); +} +EXPORT_SYMBOL_GPL(fpga_mgr_get); + +static int fpga_mgr_of_node_match(struct device *dev, const void *data) +{ + return dev->of_node == data; +} + +/** + * of_fpga_mgr_get - get an exclusive reference to a fpga mgr + * @node: device node + * + * Given a device node, get an exclusive reference to a fpga mgr. + * + * Return: fpga manager struct or IS_ERR() condition containing error code. + */ +struct fpga_manager *of_fpga_mgr_get(struct device_node *node) +{ + struct device *dev; + + dev = class_find_device(fpga_mgr_class, NULL, node, + fpga_mgr_of_node_match); + if (!dev) + return ERR_PTR(-ENODEV); + + return __fpga_mgr_get(dev); +} EXPORT_SYMBOL_GPL(of_fpga_mgr_get); /** diff --git a/include/linux/fpga/fpga-mgr.h b/include/linux/fpga/fpga-mgr.h index 12f6207..96a1a33 100644 --- a/include/linux/fpga/fpga-mgr.h +++ b/include/linux/fpga/fpga-mgr.h @@ -134,6 +134,8 @@ int fpga_mgr_firmware_load(struct fpga_manager *mgr, struct fpga_manager *of_fpga_mgr_get(struct device_node *node); +struct fpga_manager *fpga_mgr_get(struct device *dev); + void fpga_mgr_put(struct fpga_manager *mgr); int fpga_mgr_register(struct device *dev, const char *name, -- 2.10.1