Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752225AbcKYAKc (ORCPT ); Thu, 24 Nov 2016 19:10:32 -0500 Received: from mail-eopbgr20113.outbound.protection.outlook.com ([40.107.2.113]:8211 "EHLO EUR02-VE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1750698AbcKYAKV (ORCPT ); Thu, 24 Nov 2016 19:10:21 -0500 X-Greylist: delayed 30993 seconds by postgrey-1.27 at vger.kernel.org; Thu, 24 Nov 2016 19:10:20 EST Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=peda@axentia.se; Subject: Getting at gpio- and pinctrl-devices as a consumer References: <1479908035-18284-1-git-send-email-peda@axentia.se> <20161124151420.GF4271@katana> <46be889f-a558-0174-f638-c685b23c8ed9@axentia.se> <20161124195230.GA1666@katana> CC: Wolfram Sang , , Peter Korsgaard , Wolfram Sang , , To: Linus Walleij , Alexandre Courbot From: Peter Rosin Organization: Axentia Technologies AB Message-ID: Date: Thu, 24 Nov 2016 22:35:32 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.5.0 MIME-Version: 1.0 In-Reply-To: <20161124195230.GA1666@katana> Content-Type: text/plain; charset="windows-1252" Content-Transfer-Encoding: 7bit X-Originating-IP: [217.210.101.82] X-ClientProxiedBy: HE1PR05CA0040.eurprd05.prod.outlook.com (10.162.181.50) To VI1PR0201MB2317.eurprd02.prod.outlook.com (10.168.63.19) X-Microsoft-Exchange-Diagnostics: 1;VI1PR0201MB2317;2:PridQYHwbpVNMgx1ol/O9PEh63DV9oo029/IuClA/NiAaGc5W4PU869mwGxl70+d8luzw+1o7uxU+GlVJ2k4Eazoy7ZdBTxqzk7rCswBfq2pQrLCgmMXEq4omQicOYsrz6B8yVmH3WyexwM6d0MHpXvv7j0csfCdlZ/OftIziZE=;3:xhXtO16p3QyPRftzkQrkqLdSWorEXH2knpF5amAf5wLOJGr/dDy0UqDsXrRbhPiS8DW4JrY2C8IiiblJzWUNfJxfCvyFVMP8AGe963NDF35OsVU8Xof0STz5lf/j3nkUBLEFWeeBWt+CAu+5rTDSuJRcuM306AKq419KnBYj9+I= X-MS-Office365-Filtering-Correlation-Id: a66d93ed-00a0-4538-5312-08d414b1d5ca X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001);SRVR:VI1PR0201MB2317; X-Microsoft-Exchange-Diagnostics: 1;VI1PR0201MB2317;25:qM+ZhjiFF/3INWG5Zacq759jYo4KugL+McsnWsdi+YjpwNYN7ogpuVRA61Qz4TFn2wZcCDFMNl8H1Bs7RG/hgCmUWajgT48S+hO4gSMdAm6MQEV9KuSFoYAKCiH7GBX25ABBtSwCNxj/uXLjOJvfy9WcYjajC2x5lLuEJUufq9P0G7Hr5us7oKsDsOX7VH9KeuNCI9mv1uUt6lE7XEoR9kBAOLNDZ3Rt/55lyY+GQpydY3Yd8QyuYRrQuDgtSRyt28VOD1jB+zbUR0F7fyIxPel9HzbD2avpZSPFcawQoO+orM32te8d+c8T4mZ1kHL8u+97zjZno38VNcuH3GaVgnSZ1HAlIfOWlUyRCb7aaSnRrbvHe7WVfcv0OqIvR5VjxozPTAS+9M2EV3fz960I4H1kO6bwoBz5XWmKeUi/+Myx3BXXAy7xSyU8CEV0zpxiy/k5K1/WbVXUAV2Gud1EHtxxd431bDigmvYkpEIFXfABZt5pm3A/LQumhnKBNCMv7DCzOTcArveHGvbfe04uGjffXSuPbtN0MJ2VqkbXkzI3hUuXDz0Ki4lTeWvpmdYLv22IJ3ZXBJYByrs1/hDF1+fXRChKahfzkoPVqUm3uMtccsjMEnd8673heu2vYlLG0I4qehtFgLmQk1zj6ZzhEM3PZqducJE4fF3Y/dmCNzmWQTD1rUb9OXnlil3rfUQLBnSWDWsZgckinu/M8yDAZ6cKDX8tx3Hb8d/HMNHdzV0= X-Microsoft-Exchange-Diagnostics: 1;VI1PR0201MB2317;31:hRw/GOLxYOdRU+eHjTulhFk/IE5gjqLfpzvqYzxy7rnA7P+bbJjG6o0QpJptepp8jRGz85XGqUd0gwfHo4UvlMDRTCppuQBipmd8F9YQjt6iE50FtpduwdrV62qkS1LwH/Lir/Qn0hUEWLRNDTPvr+fXiB3w4qqpo6qYCDoz2iXpBWwAVZtZqtAJwFnPSEU/SOcWk7y7oJk2N7f47QdQL6L4slPbXTTxFEwK0/0Z0Gg7x0BOymI9SHJSguErcof9354YX+q0bu/uXm2/GUZf/uHUlahjJJ6LcErslPFUErM= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6060326)(6045199)(6040361)(601004)(2401047)(5005006)(8121501046)(10201501046)(3002001)(6041248)(6061324)(2016111802025)(20161123555025)(20161123564025)(20161123560025)(20161123562025)(6043046)(6072148);SRVR:VI1PR0201MB2317;BCL:0;PCL:0;RULEID:;SRVR:VI1PR0201MB2317; X-Microsoft-Exchange-Diagnostics: 1;VI1PR0201MB2317;4:1IvEpeigtBH74khQ+nPtgMrq/a20XsTOgCKtk9xFLxqIIIntE0LBAx416P+kmVoZuqYNXuqoHSyK6ZwyJ3U8PUStfDyDHCxVTFg1jcNO58xSoyaTvkTC9qNIa/SoWBpOXUmXJYtUKrjd0xxDFKRiGV4kDbHN1oZupwH5vsBN0ced9bBWMvOH/4r71tVWMzzo1oEeZgyImChcs2JQgp/GRtaaZG56Aw+sm5LdEFBt8adykiyRBEkq5NoI09WBk9nAb/6E5xUPoLRWJqDPCvOvuVFYWWPdIAwdp9xlwMIuDU4TgabEJHnkCnxkgwWbrgP6JZWEQJ2JrlozxWbbDGBtErP3znQKUR7LufNlFLbWJu9AgmsgJ9o3qVQnb1tnYnk6D+tW3/pJChbeZx6hZi8rVr/rod6F0UFkDIO1fkCAQ025bzOpaGeTcTcHPGfQotJT3ai0X0zpL3V6hlYQN/+2MN631vtjzcZzpAe6BhRt4VMazKOAemfg8fSkKit16sEq+KSIRvTFcj3tyfVpdua1r5zGKxqzyYF/6fILfiRLrwHheKWKVkLXMnuyLITGKSNG4a0RQK26ALmCve8QEkD4TmWl8teL+IDQCm+gx/BAx4uxufEhQTw4zb1Eq9sEuEJ/eMZTKmNqTZPM+bZ1DyncBQ0w4xcc1vgwl3l4tdRwmrpgW/v4W9948QQp6pmIDY1v X-Forefront-PRVS: 0136C1DDA4 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6049001)(6009001)(7916002)(199003)(24454002)(377424004)(189002)(65826007)(39410400001)(42186005)(64126003)(189998001)(39380400001)(93886004)(101416001)(2906002)(74482002)(68736007)(105586002)(106356001)(33646002)(117156001)(39060400001)(36756003)(77096005)(31686004)(50986999)(23746002)(6116002)(66066001)(2950100002)(6666003)(97736004)(305945005)(65806001)(4326007)(3846002)(76176999)(65956001)(31696002)(54356999)(47776003)(8676002)(50466002)(5001770100001)(4001150100001)(4001350100001)(230700001)(7846002)(83506001)(81166006)(7736002)(5660300001)(38730400001)(86362001)(81156014)(92566002)(39450400002)(39400400001)(42262002);DIR:OUT;SFP:1102;SCL:1;SRVR:VI1PR0201MB2317;H:[192.168.0.125];FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?Windows-1252?Q?1;VI1PR0201MB2317;23:hMd3W4Senj4wIttim1yJKOSLsswzbP2kBQ8?= =?Windows-1252?Q?Th4jbOZaR7KCXk7pOI5dTfqILwGO187QRVSeXRx76PwletxBL4M9Rd/U?= =?Windows-1252?Q?BN9v4AyB1QRacA5Y/ofgMOhiaYQ5Hx0V09hWHFzb1HCkm37UvXric1Wq?= =?Windows-1252?Q?JGX4MuU77yBeYzNLEHoy8T0jQiDHh8jAImsCyorawFKQSBZ9j1OoAuui?= =?Windows-1252?Q?dUhWVAC/HVJFqxUPvhDKQRAyBDGBelfx6V4fd5joicPwVjpCy+yxcN48?= =?Windows-1252?Q?Qu0Cb4VBRI8S3f50al2l4JmYQO90FX6UTphHBZmnraCFYbnQm2qMrFSU?= =?Windows-1252?Q?+Ji6FyVBXlshc7PLk8UpowSwhj14OHyWqFcbkv3/QpHvIuxOi5B6+xI4?= =?Windows-1252?Q?8UD8nfP6Ggk7nHvq5yo0Sv8SSu1ksP7bd0Ew7tVfsDcH0o3xO6o4UDhh?= =?Windows-1252?Q?ovg74Xe23eOEhxRXra4hegVUhwhHVS9/R/KQHxFOFmP/44hshJ+4dQeL?= =?Windows-1252?Q?1kA1OQArsRLBoU/qDENae6eU8FQt91Aez++U/WxDkO8mBQCO3ZcWB1HA?= =?Windows-1252?Q?0lRceS6MCOsD/s0b6zYVcI3ucxgFb9aKir6NZmmLauKTHmprwHUFWoD8?= =?Windows-1252?Q?X0gVbqsfgxhr5RVWsBhogS5dTEc7GcdwR5XMaN7Jirqn2h+58oVx5nQS?= =?Windows-1252?Q?Q2fRJNPimLUbUZpG9TxJNtXNmKB6oc74A1L8v/G9KP3dHrgn0JsYvUe5?= =?Windows-1252?Q?HjXbS85frgQZxm48yEQAAvGtkqhewr7ijTHpOUzIWsS7ZW7Tba9SrUwy?= =?Windows-1252?Q?qwlOQpnsiuwL40iag0PUedkkVTfovKpuqd6kInAtoCJp7tShTX9yi7N1?= =?Windows-1252?Q?+d6+d3e+uoO6nQcFWaG1/SfgAcYTRt6cIOc3yoW5fZRbFXauOa8nBmK7?= =?Windows-1252?Q?RsMiv4LevXVSMLCWDu8zgrsENgTT2Oz4XVcH0xGDEl+0/eEelShKJodM?= =?Windows-1252?Q?A1ecpp2Kz1q+jsjkmzXaNdAEKng62clxgeGbv1HLnLUmGPEhS/JJwcno?= =?Windows-1252?Q?medbee2iE6RDASLmZJvTi/cgmRmx8ah9Pt/36l300u4f0NLFKpbLcuiT?= =?Windows-1252?Q?Bma69F+OWB3T/r6TMIyVZivRVuWRGA2QwxWfscnONHsXG7Wci7yZmZyu?= =?Windows-1252?Q?/UpRHdfc3gMvoQvZuFUpaM4nHGnCzmJvPaZ3p0F65e3f2tBSd1sV+MuA?= =?Windows-1252?Q?HXkXjFinscJtHkhLCNiC1+sUHFAd3uEVtn40G0c9DapOCkmi9FPhaOhj?= =?Windows-1252?Q?2Ht4T8Pd+PorIb7VcG+Q9KmYTZX+nragljIQH7tM9tI3jLN73nQEDzuZ?= =?Windows-1252?Q?HJyTqdq8L71v7ppqhFMy9miuFl57BuvqGp9ALrexYl81ZIu0O9+NwnXq?= =?Windows-1252?Q?tePHLX+9mUrwxlVpVr7oOmLCaAektmoiQwKVLsMA3ysVUVmUvfiZ5yBg?= =?Windows-1252?Q?zbJ+E/XUm1NJyKU/0QC/z8KDNCBZUT0lBf6iQYPfRus0NvDO5d6Cw+Y6?= =?Windows-1252?Q?DdLMEDK7j1hkj3mubzXoBaeVv9/excwRsONm862Q/V5VbanzzQPZ7jRP?= =?Windows-1252?Q?1dA=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1;VI1PR0201MB2317;6:IOgclTs0WMmivFDs96y3PzWsX48smEZTNGvGbrkkFie/rqM777TfBD8MCxvrz3MLF4Cm37Kv2G6lMnoGkBLuYyyKh4pM7MNSZWGNRpj6ZoGv2pDkIP7w2FmJ2I7FqBQl7RQ9ZhRsWQ0f3vlriK49jYmpTqwQpdStzxT+BIAni+LV7xZlA03A48+KMONbNKCHPnEcAZPoGWB5XrN9KgbsTD20hME4CpkOFdD/wsjlZCNGUZ7oA9cVFd801gDaC8MuuuKASkum5FGHh2OJBAYVoMY3QLOpm3APSvXhNff4eQw4vm0K4ptK0KqMATwkr/i7Uq5ggd04q93EHpPCNSxbMCl5lsrcpdgKpSWQ/A1SNiN0nv8lr+JbxB37EYoFO4+9;5:t7Yh4T6Sxeyqa4+SIPMusRcNkrpa6udjwA3q1wN6EYYMTHY3BwF3B4BVTre0KhWTZWOVLAC9CDHUTYBnUowOHF/xsqfShcU8TwvTY/k1tgsZoaKbxE3nAwRGVEjzu4JjvItLOxKLngC6ZUWK4u/RgA==;24:edU3zmTAX5KnwDnWhP+iFQOkXu9UoriIDc8k8ju++QizIKEWEpf/QdcUltZwYpdrSVBvSy+FKVIRG7N/Hpq4eP42zBSbyI/KMxqwCFoL5uI= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;VI1PR0201MB2317;7:ztsoQ9EGK4oTwYEkDhRIqQ8StBEd8c7wRDh/SFixQmHeV57eCx++cqTlvTOin9rxpeGwYw097vLtFVRVESwBAIGadQ20yVo2+b7w5M1BTj5/PhhTqaVT70rAYX/tmM1hBkN+NCIT6LdiGxVrji3Xy7mKz+pMacBuLc8isuHT9tTsPj7RuHCIqyaKnldp4VQAcw/Lc33KjPm/24TVomIV0LeovQhGM5RW5XmGriJTm1gevAFXjxR6EN7Lq7pJj2WJZbGK3omntQwNyQSxEjMltpogvDpzZrdPomZlZmdn9dzVjivCc7j4sggCpbFzwbCtXVDhAzgnZzSWX0Xhm+mUtUfXc2oDyKGK0tuEAbuO0WY= X-OriginatorOrg: axentia.se X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Nov 2016 21:35:38.4757 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0201MB2317 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1561 Lines: 44 On 2016-11-24 20:52, Wolfram Sang wrote: >> Yes, I never liked that include, but I don't know how to get >> from struct gpio_desc * to the relevant struct device * >> without it... > > Looks to me like we should ask the GPIO maintainers if they are willing > to export this value? I am probably not as good as you in explaining the > details why, though... Right. Adding Linus, Alexandre and the gpio list. The background is that the gpio- and pinctrl-based i2c-mux drivers need to know if the device that is used to control the mux of the i2c-bus is also sitting on that very same i2c-bus. If it is, the locking has to be different and a bit more relaxed. This relaxed mode cannot be used always, as that would change the mux behavior in an unacceptable way for stuff expecting the (traditional) stricter locking. See Documentation/i2c/i2c-topology for more details if you need it. To check this, the i2c mux drivers dig out the device connected to each gpio-pin (or pinctrl-state) and walks up the device tree to see if the root i2c adapter that is muxed is in the loop. When I wrote this code, I could not find a clean way to go from a struct gpio_desc * to the relevant device, short of doing #include "../../gpio/gpiolib.h" gpio_dev = &gpio_desc->gdev->dev; And similarly for pinctrl: #include "../../pinctrl/core.h" struct pinctrl_setting *setting; pinctrl_dev = setting->pctldev->dev; I'm not very proud of that, and wonder if there is a better way to get at the needed struct device? If not, then perhaps there should be? Cheers, Peter