From patchwork Tue Feb 28 06:00:16 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Mika_Penttil=C3=A4?= X-Patchwork-Id: 733301 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3vXSyv1XC4z9s9Y for ; Tue, 28 Feb 2017 17:16:55 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=NextfourGroupOy.onmicrosoft.com header.i=@NextfourGroupOy.onmicrosoft.com header.b="PJBVtp9Q"; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751055AbdB1GQy (ORCPT ); Tue, 28 Feb 2017 01:16:54 -0500 Received: from mail-db5eur01on0084.outbound.protection.outlook.com ([104.47.2.84]:4192 "EHLO EUR01-DB5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751037AbdB1GQw (ORCPT ); Tue, 28 Feb 2017 01:16:52 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NextfourGroupOy.onmicrosoft.com; s=selector1-nextfour-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=QGeT1xpL9wF7j4BaWFdrXLeyR8PLJYl4AfPUmH2vQk8=; b=PJBVtp9QZtYM0h0X0AbxJvhU/g0i6z6bY/NVWioduqkr7UK8zcfYEbXFRqdPe1/klRqSqfDMz+VHuJ/MyobsKTBpfxW8H6/+YUYVk52TDJbOYpx4/27eMdUQz4zUdWww6TYxAYXaj1P68RRCPre6I8/xNX/jEyCCn8K4NlaPiBY= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=mika.penttila@nextfour.com; Received: from [10.10.10.110] (194.157.170.61) by VI1PR0701MB2176.eurprd07.prod.outlook.com (10.169.137.21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.947.2; Tue, 28 Feb 2017 06:00:18 +0000 To: LKML , , From: =?UTF-8?Q?Mika_Penttil=c3=a4?= Subject: [PATCH] fix pinctrl setup for i.IMX6 Message-ID: Date: Tue, 28 Feb 2017 08:00:16 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.5.1 MIME-Version: 1.0 X-Originating-IP: [194.157.170.61] X-ClientProxiedBy: HE1PR0101CA0023.eurprd01.prod.exchangelabs.com (10.168.141.161) To VI1PR0701MB2176.eurprd07.prod.outlook.com (10.169.137.21) X-MS-Office365-Filtering-Correlation-Id: bbf018b4-f4ce-4aa1-2135-08d45f9f1303 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001); SRVR:VI1PR0701MB2176; X-Microsoft-Exchange-Diagnostics: 1; VI1PR0701MB2176; 3:g02yAQPrsBIKffJAUT7D7/KDFWDJx8eJDryc2biI6Q9tCPWrugHGYZ2aiHOTg7hnz3AEOHpwYLxHr4OMie8xHBDnMF+upFIAhd9EIhfdwHYCo60h7MR/4lfoMfsepD+wkDxe9AFNPfIJUCp69QCt32AF6FfzkwxpPEiufM5NphK99c0hUHr/S4aPsKnuxc6p5PEGZtEfhKrM9C7SCtN/GKVfaNYHyN9j+X4EHz1y3QvSvNh+cXD8BLJLWY//h3CjaejQ+snxDkHeo1JxYkFssg==; 25:tIsqLWmVvWzFDncPGFw2RJjy1JERhh16mWu4+Y98xx/eLpPeiEs8OePWuZ2TkJfcf27Gh+6dYitTHHQ3Os2MSdm1AXLvigN//sVmNcUiPLExf33DJPUXhxDDDHR39QLfhgLQ6KPpIdOSxLOJer8DJcDV8zdg+R1WeqZiCYJA02FPHHHEq1/UsnsAlJLEUPoey3pZbBBM5UKpCH6E4iPqNpHG8RuSDIpXe2Lo8rHcvEaPJS9mxeI9HEMDLwTVpP+J+S2x3Th7EJ83qGFmNls6dp5RYasFNha58MChDRboCS7Zru9Tt5rufU18zqS3piCY7Hn9Z01GQQ99gnRzGzHJya+NcgBFEuGKyGAaHOxJLyOuOZnW2IsyemaR8UIMYa87m2lBE0CO2O750580z75rVGQYqG6CcO3HAVFHbgMOXUe91Yv1NMt/i5rV6GVfqPo070IoMXdsx+DYJWTV6rLMzA== X-Microsoft-Exchange-Diagnostics: 1; VI1PR0701MB2176; 31:0hvkwZO2wa7kLmxHrdfNMJAeYQ0fi6L/7RjRKnMLSx3ij0YsygnuBLTQEkcRlRymGVWnYwDeKZj8isqKka76blh8WeK4cG3vNqETH/prtt7KQsczEI7mG8j7HQU3YR6f/EaeCxLdbwW0jgkrP2326E3rFmZjO/HobzBDcQDPFhGjYLXt9+BJ6LzPdU2CQa6ncO3yDJCUEgnWUrCrWeCKGsfupXubSW2pS8197Fmfp0TOg+ysaGTrZhHuaq1g53lP/kHiakAjzqIZ86wCgiY6/Q== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(5005006)(8121501046)(3002001)(10201501046)(6041248)(20161123555025)(20161123560025)(2016111802025)(20161123564025)(20161123562025)(20161123558025)(6072148)(6043046); SRVR:VI1PR0701MB2176; BCL:0; PCL:0; RULEID:; SRVR:VI1PR0701MB2176; X-Microsoft-Exchange-Diagnostics: 1; VI1PR0701MB2176; 4:MotbOQ7DK86RiE5Kfpuh1HRieTc4cAE0WrluV2cHx2/4f4lNg2CwBCxdzPbnnwk1AzvZTiV721m6w5boSwZmTy79VGuepeWYZCEThiw+8nwrYKgSCBhSFMz3BsaPjHjMYrW+A7nwzUEPwffjfnNLc8LMquSloLzp+UXnk2e2DlgIIB8Ar5Z0tojcwf29Ra2KzpHjQ0x79Bf/O+GLFSAS9wIpkEI9PpYGPTPnrBTg5dn4D5DpkI9oKT1+PLm2Af0KEs2P2tzgyI9X35gIU/DfgxCjs6444zXXhtG1BKxgKChvqmXPsVkPPq8BIg+stZjTCg/reYZ7/eRFO8d00+pRMbKHa3A/khs0BHuRNJv5okQUS3YK33T6ORZgbIEsHcAzcwO/nEqgc5kxIlKs0vGMP0mi3nfr8W29vBXaKaQt3dYTrRDMIjUzrshoFrWYlDFLu539Zn53VaCjRclrF6SEWSZoiwb3LDw9i5C3/AYCqq26tPCcalNm5D8ALfL6Rpv982hNVxiz94GjAJ8iiE8dAHm14qN+6PC27ocDMsi92PmoGcsNqNPIkBmDYfQQTSDwhPkv2S1XYY0Aw3WY2z4OGTssP5hwcxO9gC1q9bTO+ta2mhGcq9BMZfADnqzxGw/4XQFdrklPkS5Jmuka34Qa7UIKo0cRQJ9pLU253zO4+U0= X-Forefront-PRVS: 0232B30BBC X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6009001)(6049001)(7916002)(39830400002)(39450400003)(39410400002)(189002)(199003)(65826007)(6116002)(3846002)(106356001)(6486002)(25786008)(90366009)(50986999)(54356999)(64126003)(83506001)(65806001)(81156014)(86362001)(8676002)(81166006)(105586002)(77096006)(50466002)(189998001)(65956001)(66066001)(5660300001)(53936002)(31696002)(2906002)(47776003)(2870700001)(4001350100001)(68736007)(36756003)(92566002)(23676002)(31686004)(97736004)(42186005)(305945005)(33646002)(38730400002)(7736002)(2201001)(101416001)(2101003); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR0701MB2176; H:[10.10.10.110]; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: nextfour.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtWSTFQUjA3MDFNQjIxNzY7MjM6dFhRYWE2QnJzVjlNYVZ3MnZ6Ym1BazEv?= =?utf-8?B?c1drcTYvaU9nMDNLU1R0K0pCWlFNVnVqSTNVaGdtbWRXMnEydWxNZDlsMDJs?= =?utf-8?B?Nk82clVZQStRbEsyZFRCVUtHV2NoT0hUVlhDNUdOdTV6VkpqQ0lsWG53U1RM?= =?utf-8?B?S0ZnSjBvM05laUZJdEtUc2FyV2ttTVRBSkxGV0V3ekJ0c2QrblJVb0NIdlhQ?= =?utf-8?B?QVlmTkFqdDdnYzVaV1VuZEZLb2cvRmdocTFVNlBBbTZNTkM1L3ZSSGFSTGxZ?= =?utf-8?B?YzNvaFcwVEVuTUlPR3FwUVZ1OU55ZVRwaHpFYWZQc0FYcEhJeVIxaEhZcisr?= =?utf-8?B?cThCT0hhRE1PR3BvaVJpaDV2ZXZzSzRVeUpBbXY3ZVRQM0dOL0lDb2ZIU0hK?= =?utf-8?B?NHhzbmtpR2JXOVEycGs1Z2N5Vk54WmxocjNiZDVKRzNTQ2I3Z0ZDUHp5eDFN?= =?utf-8?B?bG9QM1Era3hVOWNRSnVUbUpNWWhUNk0zNGNqU2ZyRGZldUZwbC94NVBaQmhq?= =?utf-8?B?NDJ3OThsT0Y0Nkl6cjFpN1JMSDBOUzNpS2dYdCtjMXhVWDNyQjI1T2hHOGZq?= =?utf-8?B?VlFDWk92Um53NVZJVFF3Z1FveGFMNnZ5U3BQcGRzOUtzMTgzWkw2WDllcnQw?= =?utf-8?B?NStRanF2WlpodG93VFdPazA1L0JjeENZSzRwdEhITGFHbksyRkNxYm9nL20z?= =?utf-8?B?eXRmaERRbFBZYThpS2JuRG9WWUo4VCtrVk0xdmZVbmVZU2tzQUIyTC9iWCtI?= =?utf-8?B?eXlhZFRtbWpWYnJydXBsdmFqdzQ5bTlBK0N6Znh1NTJhSDNiVmhqSmxkZVVq?= =?utf-8?B?UjBvd21xZUIwNHNNZDdoZGc5U1M3aUdlUGR2SENCbE11VGhmR0tXY2ZEZTcr?= =?utf-8?B?L3pTR29oaTdnOEhJbHg2ekV0YUNiT1EzaSt3NEprUlA0cFRoMW5wNnAxRjAz?= =?utf-8?B?dFIwVFZCaGh2UHhyYmpjdTNxOTF2YnhhVGV2RGQ0eC95THBJUXRaZXYva2li?= =?utf-8?B?TEJYeFBzNWJPNDZtMmNRZXZZMUpSQVd0UFBmLzlQU2JNckNuUWJzMlllR3VZ?= =?utf-8?B?UlNVbFpXekJDMklSbkt5L3Iwd0ZJOTNXWjNPWE4zUWxic0RzSUd1MmxndXlG?= =?utf-8?B?SjNzWHNLZk9nTi9HbVZ3TXZvU2t2NjhsQjM4TEYxeG9Xc3dmaU0xaFZnYmow?= =?utf-8?B?RWRMN1JnQ3BCSGxGVFhXZCtKM0xKa0huT0YzeXFiRFBtaHM0OG1zbndsM3Vm?= =?utf-8?B?NGJRNzdEMXFjS2ZwNXFlVGlTQ3J4ZU4wdjJzOWdJYUdyVTJKRjVBZGorWEl3?= =?utf-8?B?ZXBFLzdpenlJK3hXKzIrQXlWVllNTFdoT0Fsc0RvMkVDMGVpNVRMYW1JbWhQ?= =?utf-8?B?YlVvZ2J2eGdYbWF5MFlPeVFwUy81TSs3cFVlZXVGQ1gzZHl3djk5RTVpUFVq?= =?utf-8?B?cEJyUlQ5S0JyWUoySlhiYUEvSU85b3d3OC9jMGpKeGdvenZGdHRJU3lwTTh2?= =?utf-8?B?dVdIK1FsTVVmNyt2R1pjWFdzeTEzZDVBdjVmaGw2U1VoNjBsOXBtN3ljQ2Yv?= =?utf-8?B?S2RLcDI5L3NuV1IzZkhsRWJOWVBuY2gyOWZRYzVFRk0vazZnMXV4V1l3OUhh?= =?utf-8?B?aXFORWY1ODFaeE5ZNy9COTVtbVVIWi9FU1V2eWtyT1hVZVFmZGJtdDVmK01Z?= =?utf-8?Q?VEWK89XMBGcNYtBIXRk96c8BqX4hH8SfBnLO6yNtN?= X-Microsoft-Exchange-Diagnostics: 1; VI1PR0701MB2176; 6:XPrZSGnwDIIp7mROUVQMdAM7ynUgucTH6F35cPJ/ZBaxhMyss9J4wdUJVqvsgi4pzoojS0713maSrlaUZKsF3nhPRO+Uwn/HOHv4HNPYU6l+YQj2eC3556t+BhNaBwuNDQ7OaHJko2NAbzh/bS7uUBmRHX+WpyEOhfS02s9/vclwbKUCo5EXa1Fy2suu10DtyhUbRs5d2OMlb77k7a70YA45L3fWEQclFmVDjmtNpucDFz087XwhfvDdcE+oyW0rSjIQat0jTBSshLxaqh30Nq6GDeJY2F6GQFIx0F89EPgXRe1bYUP/CQY76IUgXwarbqFJvjDLkMx0z71PhqT2FA8P9nhlEjUhn5Oeilayr+UTe+agDo1JpMoRd5vUeWT8OXRsBgnIZWyU4yyWvey22g==; 5:L33tP+0u4gBt7IfE5PgvH1A9jSAzBE87KyCFW8wibw/pKRvstOctPC4McoY0ASkF2bkrMQ/GAIaaF3ncuNHsntbYsuxNzHwPuFGGi7YK7lYFf7mwPmlTyN2cpsMUVzX3aCsf2JZb4eWRZXN7ydDEZA==; 24:078bR7KYQD+1J79mDYzAxPpo5HamQKwEDGqpyGot5RqukQ6yOLtPtPg7q1IwjqzT5LjGhFO7CKlEZBnjBQcqCpF613Vv7bOeuUajworcQco= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; VI1PR0701MB2176; 7:qP7vw1P0+l1DyEgxdb7SnH7X7cLSS0FEy5zxUr/i8pg+CMxoargvp0tVUx96cmC3l6N985LMqHXOGp6c0qMC/TGdP1T+ILMAxRN/O/pyjeImEDCC2xAD+Pk/+IfZxYt7Kcj1NnW7ZTwN2rNoe+PhdtpBnyFCqjH1eqxPYefIruOu05mHX8FHIsDFOI3/bjVHs3e5nX3/DVVS5e8Qv0ykfHOnalkBL9mWM5Y6CO/IRjYEEaeCNMcKYQkgGMsE9TkBVPGYLqwgjQ3E0LFBscjXofResd9voKep5ahOIOXpQJvdbOJ9D4a827aOtxgjdy9eH6RvAVVcGBuKrswyGWjUWw== X-OriginatorOrg: nextfour.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Feb 2017 06:00:18.7241 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0701MB2176 Sender: linux-gpio-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-gpio@vger.kernel.org Hi! Recent pulls for mainline pre 4.11 introduced pinctrl setup changes and moved pinctrl-imx to use generic helpers. Net effect was that hog group could not be resolved. I made it work for myself with a two stage setup with create and start separated, and dt probe in between them. Signed-off-by: Mika Penttilä --- -- To unsubscribe from this list: send the line "unsubscribe linux-gpio" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html diff --git a/drivers/pinctrl/core.c b/drivers/pinctrl/core.c index d690465..33659c5a 100644 --- a/drivers/pinctrl/core.c +++ b/drivers/pinctrl/core.c @@ -2237,6 +2237,47 @@ int devm_pinctrl_register_and_init(struct device *dev, } EXPORT_SYMBOL_GPL(devm_pinctrl_register_and_init); +int devm_pinctrl_register_and_init_nostart(struct device *dev, + struct pinctrl_desc *pctldesc, + void *driver_data, + struct pinctrl_dev **pctldev) +{ + struct pinctrl_dev **ptr; + struct pinctrl_dev *p; + + ptr = devres_alloc(devm_pinctrl_dev_release, sizeof(*ptr), GFP_KERNEL); + if (!ptr) + return -ENOMEM; + + p = pinctrl_init_controller(pctldesc, dev, driver_data); + if (IS_ERR(p)) { + devres_free(ptr); + return PTR_ERR(p); + } + + *ptr = p; + devres_add(dev, ptr); + *pctldev = p; + + return 0; +} +EXPORT_SYMBOL_GPL(devm_pinctrl_register_and_init_nostart); + +int devm_pinctrl_start(struct device *dev, + struct pinctrl_dev *pctldev) +{ + int error = 0; + + error = pinctrl_create_and_start(pctldev); + if (error) { + mutex_destroy(&pctldev->mutex); + return error; + } + + return error; +} +EXPORT_SYMBOL_GPL(devm_pinctrl_start); + /** * devm_pinctrl_unregister() - Resource managed version of pinctrl_unregister(). * @dev: device for which which resource was allocated diff --git a/drivers/pinctrl/freescale/pinctrl-imx.c b/drivers/pinctrl/freescale/pinctrl-imx.c index a7ace9e..3644aed 100644 --- a/drivers/pinctrl/freescale/pinctrl-imx.c +++ b/drivers/pinctrl/freescale/pinctrl-imx.c @@ -686,16 +686,6 @@ static int imx_pinctrl_probe_dt(struct platform_device *pdev, return 0; } -/* - * imx_free_resources() - free memory used by this driver - * @info: info driver instance - */ -static void imx_free_resources(struct imx_pinctrl *ipctl) -{ - if (ipctl->pctl) - pinctrl_unregister(ipctl->pctl); -} - int imx_pinctrl_probe(struct platform_device *pdev, struct imx_pinctrl_soc_info *info) { @@ -774,26 +764,30 @@ int imx_pinctrl_probe(struct platform_device *pdev, ipctl->info = info; ipctl->dev = info->dev; platform_set_drvdata(pdev, ipctl); - ret = devm_pinctrl_register_and_init(&pdev->dev, - imx_pinctrl_desc, ipctl, - &ipctl->pctl); + + ret = devm_pinctrl_register_and_init_nostart(&pdev->dev, + imx_pinctrl_desc, ipctl, + &ipctl->pctl); + if (ret) { dev_err(&pdev->dev, "could not register IMX pinctrl driver\n"); - goto free; + return ret; } ret = imx_pinctrl_probe_dt(pdev, ipctl); if (ret) { dev_err(&pdev->dev, "fail to probe dt properties\n"); - goto free; + return ret; + } + + ret = devm_pinctrl_start(&pdev->dev, ipctl->pctl); + if (ret) { + dev_err(&pdev->dev, "could not start IMX pinctrl driver\n"); + return ret; } dev_info(&pdev->dev, "initialized IMX pinctrl driver\n"); return 0; -free: - imx_free_resources(ipctl); - - return ret; } diff --git a/include/linux/pinctrl/pinctrl.h b/include/linux/pinctrl/pinctrl.h index 8ce2d87..e7020f0 100644 --- a/include/linux/pinctrl/pinctrl.h +++ b/include/linux/pinctrl/pinctrl.h @@ -153,9 +153,17 @@ extern struct pinctrl_dev *pinctrl_register(struct pinctrl_desc *pctldesc, extern void pinctrl_unregister(struct pinctrl_dev *pctldev); extern int devm_pinctrl_register_and_init(struct device *dev, - struct pinctrl_desc *pctldesc, - void *driver_data, - struct pinctrl_dev **pctldev); + struct pinctrl_desc *pctldesc, + void *driver_data, + struct pinctrl_dev **pctldev); + +extern int devm_pinctrl_register_and_init_nostart(struct device *dev, + struct pinctrl_desc *pctldesc, + void *driver_data, + struct pinctrl_dev **pctldev); + +extern int devm_pinctrl_start(struct device *dev, + struct pinctrl_dev *pctldev); /* Please use devm_pinctrl_register_and_init() instead */ extern struct pinctrl_dev *devm_pinctrl_register(struct device *dev,