From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752775AbeAQKjY (ORCPT + 1 other); Wed, 17 Jan 2018 05:39:24 -0500 Received: from mail-eopbgr30096.outbound.protection.outlook.com ([40.107.3.96]:11316 "EHLO EUR03-AM5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752598AbeAQKjT (ORCPT ); Wed, 17 Jan 2018 05:39:19 -0500 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=peda@axentia.se; Subject: Re: [REGRESSION] mux/gpio.c is not able to get any gpio pins To: Linus Walleij Cc: Andrew Jeffery , Charles Keepax , "linux-gpio@vger.kernel.org" , "linux-kernel@vger.kernel.org" References: <6c711f96-e412-f7a6-125b-59c61829d802@axentia.se> <69f82f18-8334-1b88-97ee-04f77ea1ee03@axentia.se> From: Peter Rosin Organization: Axentia Technologies AB Message-ID: Date: Wed, 17 Jan 2018 11:39:11 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.5.2 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit X-Originating-IP: [85.226.244.23] X-ClientProxiedBy: HE1PR0202CA0010.eurprd02.prod.outlook.com (2603:10a6:3:8c::20) To AM4PR0202MB2769.eurprd02.prod.outlook.com (2603:10a6:200:8c::19) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 449174f6-2aed-47f0-0641-08d55d968ee1 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(7020095)(4652020)(7021125)(5600026)(4604075)(2017052603307)(7153060)(7193020);SRVR:AM4PR0202MB2769; X-Microsoft-Exchange-Diagnostics: 1;AM4PR0202MB2769;3:1j/QJsr5x2ciVwT7uyP+GIT4JYTDVEDmPFn1iBCl2TXFFFRcnYkOL+XiPnZ9YHxfyZOqUAg3DoIPue5wehffNJYvOOoL0d8hzBO8+a82jq95SJudidV7unQArQp3+B89htbxODi93rddhI32FhtguPGlJexolRCPb3k10X/K1gzPvy9buI0HVSUfxna3P4AaExsDVJlUNtchReQfZnwj79YkJkzKJT22KCC6g6KfjQJdwLBsqbRmq+9JpinkbDjy;25:agI82ddUQ1BclIOC6b0bJuxEdfNNcavNgStXy+AO5lRB4MCcRwLpthp7hrzfX/VkDiUl/AeRJW8nc4w/KfC8yYUT/R2TWZUvHPWQY3+y8J+GhedcNiUupiY7UxH5kTv379l9SfVW/lEoC3X3YwDpotvGuiXPMSB4hriSaGQ7rsrY+yfbfaB3EXIEdNc5j11xwcvpOJclvYSmCq6zZrrXqHPEp3n/tNUJmuxf1viTFux6JzCPCaTKbniX+VU/MBBa3MevAXlwtZzE3qQJfiyv6X1K/TuvIeJ2JXYqdKVFgEWxHLfYVtKNc2fxUs+Up0m1743iASvp+BNryd6HXTYHpQ==;31:73/kDBZ9EA6c2S7f+D0fX4JlSkhMAPhRS2WUcCI0ipbonEUNVgwfkrCnDtUcTLN5N51rAPOOma378/x62eDpFUyRf5kmRyaFcVSkJwqF7D9S/tn2XfFKxajqUcRCo0ynQKW7Ajc7rLw0O+qd9XYcYS+s5hvl7n9aUwMnSEAQNUTyhjhJQIFprfsuvUXk+WDd02+MTQVnwtyfucPybBSZAMOMgtyxOKap1adsCeQE24A= X-MS-TrafficTypeDiagnostic: AM4PR0202MB2769: X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040470)(2401047)(8121501046)(5005006)(10201501046)(3231023)(944501161)(3002001)(93006095)(93001095)(6041268)(2016111802025)(20161123564045)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123558120)(6043046)(6072148)(201708071742011);SRVR:AM4PR0202MB2769;BCL:0;PCL:0;RULEID:(100000803101)(100110400095);SRVR:AM4PR0202MB2769; X-Microsoft-Exchange-Diagnostics: 1;AM4PR0202MB2769;4:rjTDSLeeekI2mEKbuFB9N3P4m9SjziTZWDVXFZUei0W8OS0BDc2n7yJ8ip2S0wV4szA6nkiIp5PCrzpUs6G9E/KPWzmeHLxuZMnMIwaZJuC29ta//YsqwCaqh1oEQBAXtKzWE9/iCixs3UFuJzXBMISU9X12L2D3ZpXxtoywuYNvpmnj1C0gF87BnqK8FsB2I06gWdEyihhPVGUpqTQinhDYlSI4LNXCGKJQeVNN5FF/QZ4FrtkXuET6irtS4fLYiWkX5OVI/0aU6hM6c8k5MA== X-Forefront-PRVS: 0555EC8317 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(6049001)(39840400004)(39380400002)(396003)(346002)(366004)(376002)(377424004)(189003)(24454002)(199004)(65806001)(65956001)(66066001)(2906002)(68736007)(229853002)(6486002)(77096006)(36756003)(26005)(47776003)(3846002)(6116002)(7736002)(76176011)(305945005)(52116002)(93886005)(31696002)(36916002)(86362001)(6666003)(2950100002)(6916009)(53546011)(5660300001)(8936002)(65826007)(23676004)(2486003)(52146003)(59450400001)(54906003)(31686004)(4326008)(105586002)(106356001)(58126008)(386003)(16526018)(8676002)(53936002)(97736004)(81156014)(81166006)(64126003)(50466002)(316002)(3260700006)(230700001)(74482002)(478600001)(83506002)(25786009)(117156002)(6246003)(16576012)(42262002);DIR:OUT;SFP:1102;SCL:1;SRVR:AM4PR0202MB2769;H:[192.168.13.3];FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtBTTRQUjAyMDJNQjI3Njk7MjM6cm9iRXlWNVdOOXdvVHJTU2M5SlR2MEt6?= =?utf-8?B?bjRQSDRYSEp1bGc0akgyZlp4RS9XY0kxd0FVZDF4RlJIMWlrVjhmM3R0a0k5?= =?utf-8?B?Vi9wM3BMOEd4azE2WGRhSGZTNWsyMkxkdSthVDhxLzZIVEVEeUlaTURiaHNG?= =?utf-8?B?YWpzK2RmVUhRVUs3SW50NFNaMDNmb1pnSnIyOGw5allpeWpZT002SVl6WEFM?= =?utf-8?B?c1E2UElENXZVRmpmZUJGVGhhN1I0T1p2eXc5em9jMEU3SGdsWnhCTWMyZk1w?= =?utf-8?B?WGhFUitic3doQ3YyaEpid3M4QXUvOFpleE8rSU1jcE40eWY4VmNTbDZDL0hv?= =?utf-8?B?cWxEc1htOG1vbUJHanFzbmhBL2ZZbGJhR0RQNkszUXFzVE4yZjBYTHpNUFJK?= =?utf-8?B?NTZRWUN2bFh5MDBGTjFTcE4wRS85TFBPRm5qMDNxTHFTVjQxc1VuZ3h5MlQ3?= =?utf-8?B?WG5BNHZVakxaZkplMHNNSmpubDZoRmZMU2ZCU2syWkJ5azA1ZTRxL3A3TXpR?= =?utf-8?B?Y3R3L1lLL3hGMENNZlAxVXlCRWZzeTZudG5wQVhuZ3lKZU9kbTlEdTVlVFMy?= =?utf-8?B?VmZ3U2tETTRXWFNwOSt5NVEzMW8zcUhnVzZDZ2R6WUQ4QUVPVXJ2VWN1Z2hB?= =?utf-8?B?YStPekZRSHdnNVhGdTRseGJ5ZnpRODZNNVp4WDNlLzlVVXBRWVZ0akVZRmtC?= =?utf-8?B?ZTFDZnlUR25XY2dHZ0pSWm41cnZibWgrNzFvTjFhL1BZejhzY1dtMjg2MlRy?= =?utf-8?B?RzN2WmF2MGxHNHJpQnoxTE9mU0JBQkczaHlSWlRmVk5RdlRsSFBqdWlHSlZT?= =?utf-8?B?L0tuNjc2bk5RUWVIQVhUTUtTNnI0TVNnQkRCQzMxbEQzSU5zajYyY1pLZjN1?= =?utf-8?B?NWpQYVBuOW92TWpBaGtLSWo5NkcxaGZRRkdFM2U4UlVQNjFKK04yUjlYK2ZD?= =?utf-8?B?ZEhYQW9SQ092SkZnTzZVWG55a0VvL01mOWhORmg5MjdoNXB6Rm1tZy9nN0cw?= =?utf-8?B?OFJ4L1EzODFlWmx0ZWxlenp5eDdyYVZnNnRZcFpVelF5QzZKbWZtbGk1cGdB?= =?utf-8?B?YjZkYjN6YmVKdWNxcEV1MVhiYk52MVJHdHlqYWFPdTgrL2FWQmxBTGxENFhl?= =?utf-8?B?K2E5MWRoVmlkelFEbkhteVlhdCtvM1NIUnh0VUQwNngrMVo4dWhiWUQ5TXpz?= =?utf-8?B?bFIyRCtEMmRpNHBQSytMa2hrYndSNytYemVxNzFDV0NqSGdGSFc1TnpDcVBj?= =?utf-8?B?a0RCU0J0a1NIcXdTYTFtZVYwYnE2Ky94RlRub2tGY2xkVmo5N3lzWFhyZ3B4?= =?utf-8?B?YkFLYU1hSG1IYWlRNVdRZlZoT283QVZQTXFnUFFHWHh2cVVwMFk3NFdXVDZj?= =?utf-8?B?M2RMSVhVMVBqWkxvZ0tlL0RGRzNlcXFqN0I3cUttc3hTa21xcVlvZmEwMStm?= =?utf-8?B?UjZGbnQ2V0poRUh6ejA3M0ZMVGZUQ1krRWMySnVIamEvWnkyQy83THYvaFlw?= =?utf-8?B?aGUwT3pvLy81dXdydWVFeThFeUhvTGl3OCs3N3p2NjFxeDM0b3RKbnlLYTIy?= =?utf-8?B?TFZqanRtUEJ1Vk9oclAxbjBhODB3WGdTL1F6MkpzRGFveDAxVFczc1FRbnE4?= =?utf-8?B?ajJXVnR0ZC8xYS9IeGJTb255ZDcwanYyeTExUThZWkFnOTRLaGc1RzJWcUJz?= =?utf-8?B?TDJFejRnVFFFcjc4eklWVzdiUklpcUVNSkdlV2FseDJGS1lMVndNOGJWZ1c1?= =?utf-8?B?SjAvREVyTllNT0VPZUpscGdqMWs4TURubWdLMlZERlNGWVpLMkZNOUZaWERk?= =?utf-8?B?SDFSZ1VMaEl1YnM5eldLcVNXWVRBRzhvdE55R1pXSjRPc3dPOTlkU3JGTFp4?= =?utf-8?B?alprRnlMOWFhZC9VczVodE9ESGJQdnYwQTVJdVlidldhWEFaQmtCUWZzUlFP?= =?utf-8?B?azZIcEtVL2ppUW9PQllPNjlsOVF3MFRYR1BRMzhrN3Jpa0xZYStCZ0RPYi9P?= =?utf-8?B?ZDhRUzVGMjBzRFZnZEE5bXd5cHpYNEg2aDlkYVdOYlYyeFVRSGZUTjZxUCt3?= =?utf-8?B?UDIxajdLaTBUcWdPakdUM3BNOU16aUYxdkIzWllTZkZzNElYSmZwUnM2bVdq?= =?utf-8?Q?ZIp24Ds5++p+sZQa1yZoxmNn0=3D?= X-Microsoft-Exchange-Diagnostics: 1;AM4PR0202MB2769;6:rBa8lYhopsK+vr+0pgTqqDrACX8Eq4kzmTeNMr6WjMaBGMdahzWYNXRMKLV0TIUkhOYYkXrWjSzEaocwlXYRQkQ41tS0sA1HUnVQOLgp+bTkLiEjqQwd705jr7NcPuQ25ovM2HFOwdpHmrYxFEvugBAMiTjPbf0Sys+jySuv9GTeiV6hsGfjv555XXGzdABukUwIb0vrOKd8Kv09rGcuts6Pno4ILuKobKoa37YxvOkg5l/y7UU7mvhIxU6tKAkAesaZ6hoyFGXe8XhIHIOZip6qlA6Oo4sJGrmNp9EkTwce0Gq/r2nyRTWjmNpd9grJcJL+qBGhcnRBkY8rx2zPfPr1uhPE8qrqLUwpXgvhsEk=;5:ctSvM7m1gpmsOjVoqk0Xu414dxADWmFRKrLVNX8kKCCKUnbpfUynZNmVurbdJ1ZxXn2xmeCjl+/NH7WxJB9ZEgnI5FA4OD/wu5TktDWD56q48e9yTMBolJFXRYaE10EfxPsx9uxYwSl6Gk+RIX910sJ46X6VhX/13mDyXfHxRWM=;24:A5c1n1ZEOfEbRIeLO2+EcO4+fAOT3CBys0lFXbuuqmUM9CLrvezac6KeQRDnd0PB10b+lM6G7bj8Fkgr6mGAMat+riPC/LGbS4ES+KpMMcg=;7:UMgq17CEGhtx/4TqSZ/fzYiEQBzhZrC4vecaj9F8SvLt33kzwfIusdW9u4t+jjJhSovb0DpjLd3oEpf+Wxe7eS5/XijZhiB/OYE3Lp9XNJbC4z4GgXwr6ydYVPgw7xGsASfyoZGhu+st/H7wfF5HExgbgm9LYZvvTA9ZyTlJIJApGEwGG5wN74w2qk8ux1rc8Bs9lrQ/mzKOJGRvSR5L4/XxuxlXNLhHgMKY3YE8yHLKqoMVbCRbpMPjifgNCefy SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: axentia.se X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Jan 2018 10:39:16.1695 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 449174f6-2aed-47f0-0641-08d55d968ee1 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4ee68585-03e1-4785-942a-df9c1871a234 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM4PR0202MB2769 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Return-Path: On 2018-01-17 10:35, Linus Walleij wrote: > On Wed, Jan 17, 2018 at 12:57 AM, Peter Rosin wrote: >> On 2018-01-17 00:18, Linus Walleij wrote: > >>> I think gpiod_set_transitory() calls chip->set_config(chip, gpio, packed); >>> which calls gpiochip_generic_config() which calls >>> pinctrl_gpio_set_config() which calls >>> pinctrl_get_device_gpio_range() which returns -EPROBE_DEFER; >>> if it can't find a range to map the GPIO to pin control. >>> >>> Can you confirm this with e.g. debug prints in >>> pinctrl_get_device_gpio_range() in drivers/pinctrl/core.c? >> >> Yep, a debug print hits, so that that seems to be the origin of >> the -EPROBE_DEFER. > > OK we know where it comes from, good. > >>> To fix this, I think sx150x_probe() need to be rewritten >>> to register the pin controller first, then the GPIO chip, >>> so the range mapping is up and kicking when the chip gets >>> initialized. >> >> I tried with: > > (solution that seems correct) Which is more correct, to have the pinctrl_enable at the end of the probe or directly after devm_pinctrl_register_and_init()? > You should work on top of this change I think. > >> No disco. I also tried with the pinctrl_enable call last in the probe >> but that was no different. > > This driver does not define a GPIO range for the GPIOchip though. > (No gpiochip_add_ranges) so it is dependent on the DTS > adding a gpio-ranges = <...>; entry. > > The only DTS in the kernel tree using this chip does not... I'm using arch/arm/boot/dts/at91-nattis-2-natte-2.dts which includes at91-natte.dtsi which has the node with the sx1502q in question. This is in -next. > The thing is that when the driver requests generic config by > assigning gpiochip_generic_config() to .set_config() it > agrees to define a range mapping, so it may be breaching this > contract. The primary driver using this method is the Intel driver > in driver/pinctrl/intel/*. and this uses gpiochip_add_pin_range() > explicitly. > > I would first try to add the gpio range in the DTS. Then the > GPIO core will add the range (the code is in drivers/gpio/gpiolib-of.c) > and everything will be happy. If I, in the above mentioned node, add gpio-ranges = <&ioexp 0 0 8>; it works. > Another solution would be to do what Intel does and add a > static GPIO range. Since the SX150x doesn't seem very > configurable wrt pins-to-gpios mappings, this should be fine. Adding the below on top of the previous pinctrl/gpiochip reshuffle also works (with the dt change reverted, of course). diff --git a/drivers/pinctrl/pinctrl-sx150x.c b/drivers/pinctrl/pinctrl-sx150x.c index 049dd15e04ef..cbf58a10113d 100644 --- a/drivers/pinctrl/pinctrl-sx150x.c +++ b/drivers/pinctrl/pinctrl-sx150x.c @@ -1193,6 +1193,11 @@ static int sx150x_probe(struct i2c_client *client, if (ret) return ret; + ret = gpiochip_add_pin_range(&pctl->gpio, dev_name(dev), + 0, 0, pctl->data->npins); + if (ret) + return ret; + /* Add Interrupt support if an irq is specified */ if (client->irq > 0) { pctl->irq_chip.name = devm_kstrdup(dev, client->name, > Yet another solution would be to make a local .set_config() call > that just calls the local function sx150x_pinconf_set() > in some modified version and thus you break the dependence > between the GPIO and pin controller. Didn't try that, the above seems better anyway. I'll send patches shortly, but please state where you want that pinctrl_enable call; together with devm_pinctrl_register_and_init (or perhaps just use plain old deprecated devm_pinctrl_register), or at the end of the probe, after the gpio init block? Cheers, Peter