Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754115AbcKAT3n (ORCPT ); Tue, 1 Nov 2016 15:29:43 -0400 Received: from mail-by2nam03on0060.outbound.protection.outlook.com ([104.47.42.60]:56544 "EHLO NAM03-BY2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1750914AbcKAT3l (ORCPT ); Tue, 1 Nov 2016 15:29:41 -0400 Authentication-Results: spf=fail (sender IP is 66.35.236.236) smtp.mailfrom=opensource.altera.com; vger.kernel.org; dkim=fail (signature did not verify) header.d=altera.onmicrosoft.com;vger.kernel.org; dmarc=none action=none header.from=opensource.altera.com; Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=atull@opensource.altera.com; Date: Tue, 1 Nov 2016 14:29:18 -0500 From: atull X-X-Sender: atull@atull-VirtualBox To: Moritz Fischer CC: Michal Simek , =?ISO-8859-15?Q?S=F6ren_Brinkmann?= , "Linux Kernel Mailing List" , linux-arm-kernel Subject: Re: [RFC] fpga: Pull checks for supported operations into framework In-Reply-To: Message-ID: References: <1477851123-17686-1-git-send-email-moritz.fischer@ettus.com> User-Agent: Alpine 2.10 (DEB 1266 2009-07-14) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="8323329-793686852-1478028569=:3201" X-Originating-IP: [67.164.136.211] X-ClientProxiedBy: BY1PR0501CA0015.namprd05.prod.outlook.com (10.162.139.25) To BN3PR03MB1509.namprd03.prod.outlook.com (10.163.35.148) X-MS-Office365-Filtering-Correlation-Id: b9093af2-dd44-4b81-136c-08d4028d6a88 X-Microsoft-Exchange-Diagnostics-untrusted: 1;BN3PR03MB1509;2:Y8hDllCLCcEDGMtZkX9pwluZSrNOjFF1xQLwCsZg8dkjeQJSv/5UoS66b5NHHDW8v/nKQbK0gyRez0xa9rBr237hsFKYfurzSwvc/AUsm83udcdbVQ0FiSWwkunrDB+QTvc1O3badu/EcxHnDRbZea2l8ZQNuxg+dra/DFEN3ICJLY6q6LOzHa0znG8e2jjAiCggZIlSiAKjL09aNXIMsA==;3:6fg8W7i9Vqig2VGcRQTuzvX5UWIemXr1WCAiwxnIYt4SYGCWmv86CLyROECXne+s/9i2jEgZuMvxQ1FQxNFc6NwuowTx5aN9k6RAimylYlnAL7E0jg+smeualkTArg1DY/wX2uX7z5Dhr3UhQCG2jg== X-Microsoft-Antispam-Untrusted: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BN3PR03MB1509; X-Microsoft-Exchange-Diagnostics-untrusted: 1;BN3PR03MB1509;25:wlGRwoTP2L5tDNmNdH4ZLOX9Vk++9ChVkuQ2byvAKAub0U7orGH38nn/3aGmR9r9Cl7xjLaQZH1/9pNkTpDZiwwJCS0V2J5T95oziS12aJnMei5lfFQrebcQ+uZos2TcJvI1PSx1d0gnkk2hNPi50SJC78QMA3PdVGyF1H5/FzIttsxyeq2UHrc8/aqLy1Nc+Fe7NLsc0wJCUupqZCnrhmbQaADw2oEEK1scRHzB9XDwdF4yCWI6kgg9V0Kx4fD9sBXib/ijBjGlVWRCgGgIDNKfq0QVRbIYDYnX5oCFndIVZmAlFbUOln96Rc3xFS+YiMKjyPONxlejdX7ViTYe7od9i7aXse3oZ0TbPzMM7lZJY0IAeMkZF0MyfnNkVXgzC6eVDzEuUXrRjyFwMApLkU72cqUuV54nCYf3gRvu2jIKgMQN6BSB70JHdFReVzezoXqIrZq+y0PgjLxxH4AsdVYhTuQSkgTm3+zhJwssJIeUnuKC2Xo4TflU0NACSyEp1Rlnv9xhOWF7UWp+EyNxX6x6ppT2rEYvKqXgk75pqBtAp6uTVm9wH35BLdUSRv5v1se1c3O2PmG0r6IDK3ysJga6AfyPuPlv3OuNOWofQfp80ip9MQwJnfSAP0Sn+ESySW76ppjMtJtPqX5FBQmEuB6KW0ZwG4G43kEOcd1ZrTbxOYHO3y4xEQdh+CoZufN3JMU9sOqU3S8XiCTY/wEAKZ3Fr9rnVPOzhrNZuXxYJ8PqGA+aKRU4HI3OVKQZPpmwxw2zgrryx58v3mq1EAe2YxRr/RSuQklserr+2ea9lK6PxeA3xoTHZeggtdEcyTNX X-Microsoft-Exchange-Diagnostics-untrusted: 1;BN3PR03MB1509;31:hUPjGDpBlx8s1fY5ywb1cbz0crg1q2Wp14cemEq2RUYFsa1ozMceIPjhkqmCUncxnfAXG+2XneMr02IGG2r0ymLcBHUFjuLAp9tELzOzResuABfonKQEVKxkLF21DFQPkwP1h1xXbaKFsQnI6gvhFeGR6Wsq7FMj8MTDz7WX/NwYhsGnqGtk4HbFVHlrzDJLWu3Pva0NWcitVvlp1GXPDWyNq+1xkIW8/pIxc0GxrxbOX7CW3ILpT3WJYBN1QsB9xTAiLvpiHczAaI20u9AatQ==;20:qisfL4m6X11gnAIxRKebrVXPtS3/UzKjOhUntme6t6CZj2ylkcePmoJi1DVv4qS34Hj0jTVmnQ3dAKfQhhwL3Ki0ET6gCw3s87pI2PC6aSDvnaLv7wHIcs/B9+WYK2adQ08c8/vVUTkdshXj5mHNZgJlUxp0OUtyjm2N4I5//fE= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(9452136761055)(80048183373757)(258649278758335)(192813158149592);UriScan:(9452136761055)(80048183373757)(258649278758335)(192813158149592); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040176)(6045074)(601004)(2401047)(8121501046)(5005006)(3002001)(10201501046)(6055026)(6046074)(6072074);SRVR:BN3PR03MB1509;BCL:0;PCL:0;RULEID:;SRVR:BN3PR03MB1509;BCL:0;PCL:0;RULEID:(6045074)(6040176)(601004)(2401047)(13015025)(13023025)(13017025)(13024025)(8121501046)(5005006)(13018025)(10201501046)(3002001)(6055026)(6046074)(6072074);SRVR:BN3PR03MB2289;BCL:0;PCL:0;RULEID:;SRVR:BN3PR03MB2289; X-Microsoft-Exchange-Diagnostics-untrusted: 1;BN3PR03MB1509;4:XKuyqbPkKyXLDGYaGTdtH4gI5XkeRn//Zyy8wWpUNnPkkyF6FGedcy0aDWTSk2ke1V6GS7nPXDSslNA4gUnCTtaaJbJT2E8HQAyKovt0T/DaWSuDseegRsmqK303EHNFrisVr+PyClHs1X4ReMBIvmm9Z3OOM70cXUFU5pmLNt0ntTDGVAMS5gcs9Rwq3TrM9V1JKRKmpsbw728ZAqa7bflD2ZVLgqFPyEg9mCLNnhN0xuASU1iYun0uceJ98cnoIWmGrA7lAy8VQj9xbH1BqY+kWqPvKmvF3c3NPmp+x49RKa5W0BhUoZ1BKhrr8SsloibG5QclzK1RugZZ5q+p3HGSsUaWyWctNp9je5Y6it1B1lPVa0mVqUEz67kWp37uIeRvgbzE88+HzJrl6W0Wuj4Wqjku2Otdh+zNsPJsTUlJrZs8YdgSmrQrxZcBW+sWiIRbNjQuZopZD2Tmnm1VCOvwsHFsK4r/l0eEumtMVtQVP+3qK0SYU2q7GSZO9231iFAaxY8mNV72NOJAmdCaohEuUDivUeIcEwvcgDNj+pZ9Gpu5TG20j2owvkvw8Ao6AEnsaNO+EviNtpt2UI7oXpPraxE/qAYGyl67v4wsirBJM4KnXqPNihcHjcWL+4ui X-Forefront-PRVS: 01136D2D90 X-Forefront-Antispam-Report-Untrusted: SFV:NSPM;SFS:(10009020)(4630300001)(6009001)(6049001)(7916002)(377454003)(55674003)(199003)(189002)(53754006)(24454002)(6666003)(4001350100001)(42186005)(50986999)(105586002)(76176999)(54356999)(97736004)(5660300001)(81156014)(305945005)(81166006)(2906002)(66066001)(4326007)(8676002)(7846002)(7736002)(8666005)(106356001)(83506001)(6916009)(2950100002)(101416001)(42882006)(6116002)(3846002)(19580405001)(110136003)(586003)(33716001)(86362001)(92566002)(189998001)(86152002)(77096005)(9686002)(19580395003)(68736007)(4610100001)(7059030);DIR:OUT;SFP:1101;SCL:1;SRVR:BN3PR03MB1509;H:[10.0.2.15];FPR:;SPF:None;PTR:InfoNoRecords;A:0;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics-untrusted: =?us-ascii?Q?1;BN3PR03MB1509;23:7hShE6jUa+BDtmlYzIeUluzkgzjZDd8NwRRKeFe25?= =?us-ascii?Q?EoEE590iyz1VZvzXjUKdowLrHZTnDRRbSG9FTq+3Asv7QmMZ2geaEzsyKEr/?= =?us-ascii?Q?LFsxBOHX7m67iw0ZQvQRN/Kh+GPj+h8SULm/igf4fEy8LI3mlJ0cKgroYr0d?= =?us-ascii?Q?mWOBRkBkZBVz9V7eXyxkWZVGP1DpxT4SbsqVfRadsl0E2a10Va6+GVZXd2Sk?= =?us-ascii?Q?zgwATK1cqvDk1pNnq5oDiOR+KW8uQpN0NugSYghKqsGv8um7ftkuMovbyyB9?= =?us-ascii?Q?J2VHvq+ivK0DYArxP79K5v9ZEqyufXwMD/oyWUiZ7KVg5pCuEF3fZ4n+J1lG?= =?us-ascii?Q?Ge4xEgiJEUhD/YT9jymTwmMcp5ODNjOUNhEeafLH9DDI2PaHXrP3MBxhUzWj?= =?us-ascii?Q?zNKJOuQj7rPRiWzMrF6xlkv7WqlXlNWuGlRmxx6cmsKEhxoElBo/Pk5ZwAlU?= =?us-ascii?Q?icIDvIwCDH0aICAcYg8Gz7eh6vqUledpPg5BOI2Ruz6TP+iyvhInUiIYkfXP?= =?us-ascii?Q?kc332XMllqoRIM/bm8fK3CbrLYjEPMmxm1d3y5dtcJP7IyYdlv/U0dP1TzZW?= =?us-ascii?Q?3bi6pZoUxgl8aswFC9h5YKX0YJa6/R7YjyrahhhBtOfYUK32/tAuZXOXo+r2?= =?us-ascii?Q?X/17R2lnbFxUGjG/UPTTiNkib+h683THaGyc3cA7KT0qmI9/BikUXtVfRJFP?= =?us-ascii?Q?m9SuYu11SiR9o/iQf/qBnNIrk+b8Cm83rYNfbm+GQoZtBiMUdoGvLhTCiQW4?= =?us-ascii?Q?oJpyovbz6VE2qSVs3dcTjQSvk2w5ZERgdsfDZRme9xWzyxxgUU5kNS7E+KZC?= =?us-ascii?Q?26QRJj/loO4FRve3jSltRjIRTjW1EauRx1+3aydLkKQuoAyooquNtA4EuRvD?= =?us-ascii?Q?xKWSm8vmVTckQw2y922qYRNb12WsnBYHfwWmiEs24KaRtu+xdx8nK5RxkLmS?= =?us-ascii?Q?MmUeEK8J1AtIRxMhyq/9piG4epDBhZ17L80cr7kjraBzSThpqygUle2MSqfp?= =?us-ascii?Q?tlgPuZq0YG/T/ljjcS1NDJctM3wa1HhR+Ot0wVl1Pq0Ffvwcwqa2YoGcG9f1?= =?us-ascii?Q?y+qBj1fIEH35sRKsd1aDF6DHdn17uzu2dSmZ70BltifQZTbZIrl+x4PjFJig?= =?us-ascii?Q?Vs3yG+3FzOpazqKLaJP2Z/x38kSfXDJmYpUOGEFy1LDiIkrladJ1vSVZmkjG?= =?us-ascii?Q?P23aMLj/rvITgn92w3l/lqezepZuZ46XZmKzy3FT8aG2O6v0BDTLcLRyw=3D?= =?us-ascii?Q?=3D?= X-Microsoft-Exchange-Diagnostics-untrusted: 1;BN3PR03MB1509;6:rupL3ns6BF0pOx7WxxW+iOFsctlYOtsXm9BSA5OE2jL6iQwYmL1Gw/854On7rqB+rWLv+Ny2N7eBIvWwPrWi132p5FzpsrNP3WHX+IdmJv+6m2Su/VKeLKvSfNzcx2in5yRZD3VhqfIrETFOKJZXyOpLxjLIqXA3icbOu1/0GvUKQFa0U2SfgXDUllu6QfnHFjPc4rPBqmEofXmobaDhEfnbOebfjl+zppLKnGzV8Ltjn/vJBuTIHw7x/aFIDBQvyBwV0G5/dGg+eEfrMd82HIx4igOkHNcAWnq+Wz7ow/hlV98ScybiJFyVLktk6gkvHOMcciv/Jy4W/nLmlaZhaNhILT/YYGHhcDrpJncKjgUxsoD1m00cWDDLMGM0nu3X;5:tqzoZstTHb/CqMw8UbNDpu4Vv4SURJRDGbhDkjL9cN1bV/oBkSrgsUh0JEGXJYMdyk9MhOphivgP/N38rHJSWu4kMhXHl6VzLp5r3j+vIHkibmr9oHoU51WYmJJ+P20x03Q/kIlHnHfWBrvd8Q/88w==;24:HFwvdgvjHC+gv739GHJbUiLATiC0sMjoFRBb6NOBFkhmXt7pw9dhvEnK02pSrD2z8+K42bAv/jaUFhY/R1vYMCpo01be9pVEgxE/bup/7+8= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics-untrusted: 1;BN3PR03MB1509;7:5WFx6nUns8NFy9bVbPfB8IWxnH43PKyfOoCUno+j3aa9mCMboHky0uJceOv3jgFxtlSwzrv2CAXuATdyoTdFPCyhTQEBFpVb22/xEFRyHFSUxegcud3f/p0W1jRbXg+VjmFnIZjzl7R3OUjgHB0Zv+6H1xB3krKHW/OKHpvGJ+bipD2B4rw4dKoE/GX5EtiDDp0yMkcCQ3AG5emonBwAJIlWPpKDlSzetqmasOGsRw271w1bu3femd8jUr0hBuf0byVQIwKvnNRa3jve1m8u+GWuAwn+NmW+kdTEJ8eZH8vwm/Mzj/fjsZcQaBEKLhp/LRchbXCZvndrSUcuUIM/opzMsqQO60fKVUqAM/UdPfQ= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN3PR03MB1509 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: BL2FFO11FD027.protection.gbl 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)(1110001)(1109001)(339900001)(377454003)(189002)(55674003)(53754006)(24454002)(199003)(86152002)(5660300001)(106466001)(6666003)(77096005)(68736007)(83506001)(6116002)(586003)(2476003)(3846002)(512874002)(110136003)(84326002)(8936002)(5009310100001)(6916009)(2950100002)(87936001)(42882006)(81166006)(81156014)(66066001)(41446006)(7846002)(305945005)(7736002)(85426001)(60046009)(4326007)(336002)(92566002)(92616002)(8666005)(105606002)(90366008)(19580395003)(626004)(4610100001)(8676002)(6070500001)(4001350100001)(9686002)(956001)(356003)(50986999)(2906002)(19580405001)(189998001)(54356999)(33716001)(86362001)(76176999)(11100500001)(97736004)(3720700001)(7099028)(7059030);DIR:OUT;SFP:1101;SCL:1;SRVR:BN3PR03MB2289;H:sj-itexedge04.altera.priv.altera.com;FPR:;SPF:Fail;PTR:InfoDomainNonexistent;MX:1;A:0;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;BL2FFO11FD027;1:uPZn9lGZQd2kfvn/lbppgUtvQDZkmko7/aHThXrlMliAxV8EHHoSqRe4sPnyM7XG4gQefEJ12mUv63ns34b+o8+vKP7TjyOZurOAPHY9jQ4trfdZvxjTh5e/tkj3d5T7XgqHCu7yqHh1tkxw1ylDgZIiUsKdsbgoWhouunMcvzydhUtluFUFRuMK1IkIIeCP5GFtNGDEiAP3eoc9IB7xaMkjphPNBTZHgeH6FjDd/TTLmGEb/QWVaFIlG/wMnVn7hKngrM5EIibrkCPCw9R9Qaq90Y9M7GMaDSWab3p8Yx1er4+vewrejdLBnkIf0Q41bjd+dRNWs0mXMqaNBc3hMUhViSgZRxuk078kImsXf1cSai+ZxlT1ZvX3lbcfsCln7sGoZ/X0qos/tX6JQ5bno6QTUJYKnuzvyF6ujJXq08qjUXH7cxMUuS5kWjwIuAlcoaTuPibUCZP2BB0jkd3ixRa2z3yPKSIJhDO3MssCSK2nUq4pmmcsRmbwp60T62JEplpQU1nq0Y2mYyEMF9X9eWcI3df7UBDkxvOAbw1kEm7UDQhXnBTk2SgCbFqHHjwm2YOfbtTeGGYeC3fs1R0svnuDcmPGSuvIfNw4r0uZUTY= X-Microsoft-Exchange-Diagnostics: 1;BN3PR03MB2289;2:/MviE5pjYw+wsU8YKrcqIkKEVsXLFQuQmoQAr8sr1YgIdNIc1PJC6KAIbmhE5hKhSh1X1RxbEt9tRdbk4HniVoGoONxiuRdogn3JT88qntfOUVHVb9kFuwyikaayLiwZi1ciY5DlvPX07T9WrN4qz9U6L/iNqkdqXWy9BRM1yJbJLFmDKnEeHf0NWbzw/jHzLyZNcevWAnsZe9bvEsq/kA==;3:EDhp/j43iU2MqRCao3vqBUDmTtt0YCxWYvd7soKS1Rdrz8TCwIsVz0QYItTlpgVs1rb+rPufJMMiKRxStgzukX7w8MDeLK0u5iMPAJlQOYcMVUefJQmxYbgb1nw3scwrGiK96HbgIzLMURk9Jmyk48y5XkivSiHrvj/qoz3ptMcilAxaR5B2dbEd6FxDj30oixF8Ws0/VcQfPpXyCDfSxP1eXkT2fFo7iS13k4DrIrkSRMIxznLEeOz1pMa+dVlnt5HVfokWkCfWzJKlSIhnAg== X-DkimResult-Test: Failed X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(3002016);SRVR:BN3PR03MB2289; X-Microsoft-Exchange-Diagnostics: 1;BN3PR03MB2289;25:lBGUavR/0DPigqoKiS7SyeMOzQ7xxndpTVX5xqFj2aC3yYYNvnu4fiPl20gm7uZnWUI6BZuQJC2J6y1JE0wv7TZDZQ7Byw5a0eOVkby79F8vLglr7QzG1zjQz3C2mXZ/zABAbyCdMR7hPsixxChhkOm4HTYMZRxMFQAFWxKJQiITEribGxFQvAdSkvIN0f1jdn4JrE4VWfn+7gTihCzmfyVMyPe+97gi8Cx8dH/EUXJHGqe2Di7m54NY3gV2RyztItiI6lSaqi6K5UhNUUJVSGfzIrk6+8cfDjMVsbrCBqu25jIAfZSWcZHXZ/2y3rHTegE3d8okGc7XXCRMw4sjnwTLwuQjpTFp0bhK1uhxRIEEnldCWupjE2JKb8Ogekt5T18uwYRtidrYTr7nmqo605sW6Xffyq7rOq++ARhNqir62BAbpyX09dySPlzhvOCynFWmWu5mzpBRdr6iByWs5kkGTKVJSnjXc97+flOfmrAltHHxnASp5bT16cpPxCPEldSZ7yuwBSjmTYd5mLPv31D8SBetPSIPF39ngS9W0tTkjq6V4JrUvx7nArFC81kl1hwQyuylgiND8EBVYSpEJftvFQSXc19kaKqYNzM7rEqdqb3bBE2kWN4V1gDSj2YFLeg08WXtQaxtiTwG+zuiLxU7JjtQfXht2mOH8m8UFwya+1Bhh3zrmIWY9ljIGRoDYGOyH3XIZuA22W5udQkUa4bug1iVABn/yNWhlnBzMu8odVRNtNvMoIFVeu+m8NiG7YfSiVXM0GtL2mOwFGMJ2Sa8gBkB+zTf93fNy1Fq9CM10sqvhfBjb2Cn5JCaodnfs0DmXL347w6Bg5kL1ENm7A== X-Microsoft-Exchange-Diagnostics: 1;BN3PR03MB2289;31:1qcjsPTL8ACOpj3xgOcmp5IyienS+XB6FatjjsNR819d8pV4uqoewbaXwpOaTvDIGtQGDJp89RUuu6H9Ie3Y4fbeW00mgy/2hQE3Y6NgF4qkwrVz1rK/Cy5bR2JTlkZtKlWfFG2QeyZ92/cqAc9cYhIRLysu2ejVSShnTh5mG1GQfV8hH+nx3GyMZi0qPrDgC/U8Y1GUzokEIYdO4Xy+3HzgL14X3KCPVHlzQiMdUB8/hrCFOj631czUt7AzSt0H5ikBJymhheHQfCpHXyF4SDxh54H4c/0wTBpgQdmyfgE=;20:RVKcG9KcqoGBgUCk40cUFlX9FuYrwEHROduP4l+YsF9qsj+mwEQWesSR0J2VRPTU798d6jNFxszkoGkA6/qCrr/cGeuOvnN/jFNkFs/Nc7zzkqau2/0taeJSnBQC+ziPqso0kmHoL509fhbH5CoCpPgQkIgyr9HPC9U6E/cWybA= X-Microsoft-Exchange-Diagnostics: 1;BN3PR03MB2289;4:DanXqidn4r9uyb7krXTA1K4mEj19SxdfAPXbA7Dij7QBeeKjlkgKZnYHgLzeK8g8OkWdNbYwhJdDujXHO75Zf6VE0g9doEIjq1ItGoOD8VdZhz3p8/fDLlhhxLizFdNe0SHyTtaqC9A16pwsIV+3z+tP4oR4MITKUcLV5v8LKAsXGFKJ9DB7PinHpnV+JhmeNrIiZFTO/CDVxialDiTQBhHnek2kVIpG6o3EQghosJIm+VIkV54Q49qlU+eUgCskAbX49pUmeLKvV92ibY3teAb8vDjthfjBJTAFK8fIfA0J3sXGXzB5gdpqDWMwRIZD2aSvxA/jIHAN+3oXwdukJg6jIl3qKfGOheHK1mAehDIs5P9ESkjZdAV62jJrs/QzAbqFLtQuI/OC+TDVar1BodHX90n3gAQpWINhe1IoSnGn0ZlPWyD7rL/eWdu+QpwEojGD83zrqj18G69vrulSrnGc0rss9ZD0ro96904GwbRiYmuvxO7b1vDmUQa86RDJHEZgQ7KOgWI3Op1vlhtwz6+da92Lkmy3+FfBk1tjXAtYopPcOKFfBppdjUY3OsmCKbf6FLExe3e7wpSVMcJzrXyks40OZO4Y/Z6nr23VjtCqF6XPdR8KuaGSYxYCYkjhpMQbr/Mu+pM4kc9DL9BnLeQ2QWO4CHIkHbyELckKc0ie+I/yfdZ32sTtTx87GftrLYJNffzwwnjsMBFMZDVh1A== X-Forefront-PRVS: 01136D2D90 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;BN3PR03MB2289;23:406e8BEQrUzxbDtO6FIk+V3GdWWgSxjG0tX2+s7Ol?= =?us-ascii?Q?fQlungpsL2tBo19JhZ04SmpC41yH6o+LttIivPYAcPjspGtOgFGIZ+lCzIiD?= =?us-ascii?Q?bmTJboIXo8z0h9oRmpkK5uZqiAs+PwmS7PA6zhzjYc+mDOraQ2hk6aZFshoJ?= =?us-ascii?Q?N+1f/d9nJzVv+MAbRnSNf1lSFQv+602l1kiyypi2lzP7WrUNB4hCv5xZSBit?= =?us-ascii?Q?iBVpPe9udidTEJ2o3KeAClO9IicOjYtfrW1uZkN1ZYp9W06A3+hOt4ACgsxo?= =?us-ascii?Q?UEDWRTT280SadBzv0b0g6fXEoGaf1aFaC0q3L5Bxa+TpmdZMroK/1AMhl6mS?= =?us-ascii?Q?mFnYJ0ZgjR2AnwAtCyxEwET5hIwqlMGzEpC/3/45YvtkLYyhVet/ktCcjdGL?= =?us-ascii?Q?ZV2fvPtnqQa8BYGOII279iPvOr8YrBnRUPMILvuvaCHjTJIYfb2+BCPfeF7t?= =?us-ascii?Q?a+xYwpKEUF2J859xB62+yIgzXskESxL4yO79rAwQ38zTC1KPuiTzeRuH1X0j?= =?us-ascii?Q?XZOnG8r5OLC3yhCWANlsRhhhZAI+eWUZ3PGhdeFyUQ8MI3jwBIIjTIazP+4e?= =?us-ascii?Q?MLWOhU5/N2InWhNHLRujPsB6HnpfHqWgOUdZiBDlJI5DuKHpXOaXeIaXJQ94?= =?us-ascii?Q?yJcqB+upSaVMlT5pEhEiHQJqmkc6RyzFENAgIxl8fBP99yhbnSEvGMR7bfH3?= =?us-ascii?Q?uEwRwavXbczwyWYvYfB1789Xv+kAUUb4K4fLeXDqmRYOc6i0V23dUvlf79w1?= =?us-ascii?Q?rHQTTQtxeuPS4D5xJTqyy2XinZpfkiBRh+t5xcsArfzLdrEGpoalVTwgTDIG?= =?us-ascii?Q?9bTF45XnhHRR57TKA+ltYVl7Qv8M5Br2su+JeL18RjdmdXfVw8/BG2bqWPug?= =?us-ascii?Q?0xgamRT5YxcRs7Vg4zw7TZMZJ6axIvyNPcJ7+NeDAfXZTBpHOU0TL/1EE1Be?= =?us-ascii?Q?bHc+IA8VctM5KUaKA1fjhsdY++noakX9PzI7W/4yP11WmzjyEGDCfvo8sXwc?= =?us-ascii?Q?IYagtkM7Za2d0ejSLVG80KG7Zx4f+qZsbjFzAP6dLRtVDyc+qifp9estIW9a?= =?us-ascii?Q?3YvqHFRhV9qyWtV9MMkr+0XGe8QIBe0jzDZQr2xIwWtQ30NjZuHr4luSjJs+?= =?us-ascii?Q?fVp/rM4/PyUNutewGA40fywR5qqw4eTUsB79/6I6kAYhHYOMmqYydWUlhIjd?= =?us-ascii?Q?ocOYUiKhSQfKktfhoCqd+P0aiN0I5JO7fSLXGzSqHsx5nkIxvoFuyyDZ0Fuj?= =?us-ascii?Q?ZHvft00nU8QPDNcHOBIc0LqcKr7fUXzycCywkMaVQm/+0nxvZNSywr3n0Ir1?= =?us-ascii?Q?N+KjHR1VQfE8NstypVv/x/OxsFy9z3H4mJXF2YX+0YlUoptTGtiXHaIY8NIe?= =?us-ascii?Q?jaMrFcJMdUeCAH7WFmG8+Sn4PlNmLBr2Qji9fqSUzDAWtwjiXcVy55IEVrHv?= =?us-ascii?Q?ST+TNGkAC5BVWCg+mXC3XkzcaXElUI2xneCzL0E/4gzeDS2xe8aZpcXrZCXs?= =?us-ascii?Q?Ym/0TRBplsWANPzNMtMQf7jLTl4OjAJ+X9ezCOMMh7mIvtg1Gtc2rSeHt0Wf?= =?us-ascii?Q?u4IGEdygXSj2xa9DmIcqlKRi0AiVb8J7Wl4RGA5mHtrQUsz529T+QXmpRIRB?= =?us-ascii?Q?pbtpkOHvXgrZmIn5vZ/1gjd52IGLxUmemKq0dtZVl8=3D?= X-Microsoft-Exchange-Diagnostics: 1;BN3PR03MB2289;6:uVjtgYosqa3ZQRmilzmJhSVxgcNRc2X8n9Uk/rOgAf5xCA7PXnjK58bN2y91N2TtEVFblNjBebLiBoaDqYHN/kpEb0aSR3sVVnF0ZvPwVkWcL43kN9ez61W5MBQNphU5KgkfqmJUeRXaqqrW11uHoCNqSSqwlWvlaIX96DV7ngz9SohkQ44VoPbZLkQzTCKjPo0TJL2MBNI4pjqiYr9S76jkqBWjFclJHQT2idnjuynOTtDVz92RKVbitXdcBIhygn2uXBr6IbCmIInpsqBX9dBEJCxzXeEL+XMKssrv83mnIDqt+c21V3YntR6qLqvWWU1x3wZVhSsg82Lo20BCgOF0BLHaf09yu31WPGbeFEEIKcx81xYc6asQ2RkBa1qa;5:q+f8S6p040+npG2BCAgwh6bOeJtrYxr5RZFkP1zj6HRt4x0uq7D5pESrWvWhcQSem8ufNS+0YBIK5v8Wqh+lIclRZ2sbHrZ7gV/2zHoL9EiaHijYtJxxocHzUfiTp8m083f/ryjplgIxAA6nHj9JRw==;24:ehhCKmC8aJTItCc1/8vhAclWMvXPcRwWnevF0tzew/4qlp9dnGYvbXVlfM9tVVJv+xYNG0BA/TaYvG7skTIsthr1hUyVd9gvTGVmrQpytJ8= X-Microsoft-Exchange-Diagnostics: 1;BN3PR03MB2289;7:Tv4Y919LGQ67qAGnOllyFEQAOlbpL+D9/BRs4gsY2SmyorMds/5hiR4t3COPS+oIjq0oT3gZ6xTnE/PLwBZhPbeCgcLj6rNEpFIDJ4A7qVv1z6uKgL7JR6ZgBm+HpLLy6kwHLZiYeRO3pg71hVoK8r5xOb6CW3HQRqEbaXEzY+JojzccWGT/P96K8VYpFsa/VDg6WFOaEurS7v/UFwjyhHxs/Mi2l6VSgQeG0zFP+RwlILKe0j8edDALdYuIM5Vu5ZsBd1OZQSPgUCBFWYuaBwBQSEU55PN/7QcWlXhX7SZAMvrLgEl5RbjCBqm7yHMLgQTe2Qo3Ie50L0VL8sNhhQ== X-OriginatorOrg: opensource.altera.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Nov 2016 19:29:34.7217 (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: BN3PR03MB2289 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 7627 Lines: 203 --8323329-793686852-1478028569=:3201 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8BIT On Mon, 31 Oct 2016, Moritz Fischer wrote: > Found a couple of issues, will resubmit after cleaning up. Feel free to add > general feedback on the idea anyways in the meantime. Sorry for double post. Hi Moritz, This looks good and useful to me. One comment below. > > On Sun, Oct 30, 2016 at 11:12 AM, Moritz Fischer > wrote: > > Most of the drivers only support a subset of {PARTIAL, FULL} > > reconfiguration. > > Pull duplicate checks in each driver into the framework. > > > > Signed-off-by: Moritz Fischer > > Cc: Alan Tull > > Cc: Michal Simek > > Cc: Sören Brinkmann > > Cc: linux-kernel@vger.kernel.org > > Cc: linux-arm-kernel@lists.infradead.org > > --- > > Hi all, > > > > with the new drivers (ice40, altera-ps-spi) being submitted I've noticed > > we're duplicating this check over and over again, > > so I figured we might as well pull it into the framework. > > > > I'm not sure if there are gonna be other 'flags' we need to support > > in the short term (we talked about byte-swapping ...) > > > > Note: This patch goes on top of greg's char-misc-testing that already > > contains Alan's latest changes to support the A10 and won't apply > > to master. > > > > Cheers, > > > > Moritz > > > > --- > > drivers/fpga/fpga-mgr.c | 12 ++++++++++++ > > drivers/fpga/socfpga-a10.c | 4 +++- > > drivers/fpga/socfpga.c | 3 ++- > > drivers/fpga/zynq-fpga.c | 3 ++- > > include/linux/fpga/fpga-mgr.h | 9 +++++++-- > > 5 files changed, 26 insertions(+), 5 deletions(-) > > > > diff --git a/drivers/fpga/fpga-mgr.c b/drivers/fpga/fpga-mgr.c > > index c58b4c4..85f17d8 100644 > > --- a/drivers/fpga/fpga-mgr.c > > +++ b/drivers/fpga/fpga-mgr.c > > @@ -49,6 +49,11 @@ int fpga_mgr_buf_load(struct fpga_manager *mgr, struct fpga_image_info *info, > > struct device *dev = &mgr->dev; > > int ret; > > > > + if (!(mgr->supported_flags & info->flags)) { > > + dev_err(dev, "Unsupported flags passed\n"); > > + return -ENOTSUPP; > > + } > > That condition is obviously garbage ... > > + > > /* > > * Call the low level driver's write_init function. This will do the > > * device-specific things to get the FPGA into the state where it is > > @@ -252,6 +257,7 @@ EXPORT_SYMBOL_GPL(fpga_mgr_put); > > */ > > int fpga_mgr_register(struct device *dev, const char *name, > > const struct fpga_manager_ops *mops, > > + u32 supported_flags, > > void *priv) > > { > > struct fpga_manager *mgr; > > @@ -268,6 +274,11 @@ int fpga_mgr_register(struct device *dev, const char *name, > > return -EINVAL; > > } > > > > + if (!supported_flags) { > > + dev_err(dev, "Attempt to register with no supported flags\n"); > > + return -EINVAL; > > + } > > + > > mgr = kzalloc(sizeof(*mgr), GFP_KERNEL); > > if (!mgr) > > return -ENOMEM; > > @@ -282,6 +293,7 @@ int fpga_mgr_register(struct device *dev, const char *name, > > > > mgr->name = name; > > mgr->mops = mops; > > + mgr->supported_flags = supported_flags; > > mgr->priv = priv; > > > > /* > > diff --git a/drivers/fpga/socfpga-a10.c b/drivers/fpga/socfpga-a10.c > > index ccd9fb2..e7c82ff 100644 > > --- a/drivers/fpga/socfpga-a10.c > > +++ b/drivers/fpga/socfpga-a10.c > > @@ -519,7 +519,9 @@ static int socfpga_a10_fpga_probe(struct platform_device *pdev) > > } > > > > return fpga_mgr_register(dev, "SoCFPGA Arria10 FPGA Manager", > > - &socfpga_a10_fpga_mgr_ops, priv); > > + &socfpga_a10_fpga_mgr_ops, > > + FPGA_MGR_PARTIAL_RECONFIG, > > + priv); > > } > > > > static int socfpga_a10_fpga_remove(struct platform_device *pdev) > > diff --git a/drivers/fpga/socfpga.c b/drivers/fpga/socfpga.c > > index b6672e6..3285b7d 100644 > > --- a/drivers/fpga/socfpga.c > > +++ b/drivers/fpga/socfpga.c > > @@ -582,7 +582,8 @@ static int socfpga_fpga_probe(struct platform_device *pdev) > > return ret; > > > > return fpga_mgr_register(dev, "Altera SOCFPGA FPGA Manager", > > - &socfpga_fpga_ops, priv); > > + &socfpga_fpga_ops, FPGA_MGR_FULL_RECONFIG, > > + priv); > > } > > > > static int socfpga_fpga_remove(struct platform_device *pdev) > > diff --git a/drivers/fpga/zynq-fpga.c b/drivers/fpga/zynq-fpga.c > > index 249682e..1dabd25 100644 > > --- a/drivers/fpga/zynq-fpga.c > > +++ b/drivers/fpga/zynq-fpga.c > > @@ -413,6 +413,7 @@ static int zynq_fpga_probe(struct platform_device *pdev) > > struct zynq_fpga_priv *priv; > > struct resource *res; > > int err; > > + u32 flags = FPGA_MGR_FULL_RECONFIG | FPGA_MGR_PARTIAL_RECONFIG; > > > > priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL); > > if (!priv) > > @@ -465,7 +466,7 @@ static int zynq_fpga_probe(struct platform_device *pdev) > > clk_disable(priv->clk); > > > > err = fpga_mgr_register(dev, "Xilinx Zynq FPGA Manager", > > - &zynq_fpga_ops, priv); > > + &zynq_fpga_ops, flags, priv); > > if (err) { > > dev_err(dev, "unable to register FPGA manager"); > > clk_unprepare(priv->clk); > > diff --git a/include/linux/fpga/fpga-mgr.h b/include/linux/fpga/fpga-mgr.h > > index 040b86d..4f4bcf2 100644 > > --- a/include/linux/fpga/fpga-mgr.h > > +++ b/include/linux/fpga/fpga-mgr.h > > @@ -64,9 +64,12 @@ enum fpga_mgr_states { > > > > /* > > * FPGA Manager flags > > + * FPGA_MGR_FULL_RECONFIG: do full reconfiguration if supported > > * FPGA_MGR_PARTIAL_RECONFIG: do partial reconfiguration if supported > > */ > > -#define FPGA_MGR_PARTIAL_RECONFIG BIT(0) > > +#define FPGA_MGR_FULL_RECONFIG BIT(0) > > +#define FPGA_MGR_PARTIAL_RECONFIG BIT(1) > > +#define FPGA_MGR_EXTERNAL_CONFIG BIT(2) > > On second thought the FULL_RECONFIG is the same as !PARTIAL_RECONFIG, > so useless .. That looks good and doesn't seem useless to me. A driver may support PR, FR, or both. It's nice and clear what FPGA_MGR_PARTIAL_RECONFIG|FPGA_MGR_FULL_RECONFIG means when a driver supports both. > > > > > /** > > * struct fpga_image_info - information specific to a FPGA image > > @@ -119,6 +122,7 @@ struct fpga_manager { > > enum fpga_mgr_states state; > > const struct fpga_manager_ops *mops; > > void *priv; > > + u32 supported_flags; > > }; > > > > #define to_fpga_manager(d) container_of(d, struct fpga_manager, dev) > > @@ -135,7 +139,8 @@ struct fpga_manager *of_fpga_mgr_get(struct device_node *node); > > void fpga_mgr_put(struct fpga_manager *mgr); > > > > int fpga_mgr_register(struct device *dev, const char *name, > > - const struct fpga_manager_ops *mops, void *priv); > > + const struct fpga_manager_ops *mops, u32 supported_flags, > > + void *priv); > > > > void fpga_mgr_unregister(struct device *dev); > > > > -- > > 2.4.11 > > > > Cheers, > > Moritz > --8323329-793686852-1478028569=:3201--