Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1765836AbcLVJyG (ORCPT ); Thu, 22 Dec 2016 04:54:06 -0500 Received: from mail-eopbgr30112.outbound.protection.outlook.com ([40.107.3.112]:27097 "EHLO EUR03-AM5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1750917AbcLVJyD (ORCPT ); Thu, 22 Dec 2016 04:54:03 -0500 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=peda@axentia.se; From: Peter Rosin To: linux-kernel@vger.kernel.org Cc: Peter Rosin , Alan Stern , Greg Kroah-Hartman , linux-usb@vger.kernel.org, Wenyou Yang Subject: [PATCH v2 REGRESSION RESEND] usb: ohci-at91: use descriptor-based gpio APIs correctly Date: Thu, 22 Dec 2016 08:43:55 +0100 Message-Id: <1482392635-20521-1-git-send-email-peda@axentia.se> X-Mailer: git-send-email 2.1.4 MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [217.210.101.82] X-ClientProxiedBy: DB6PR0601CA0046.eurprd06.prod.outlook.com (10.169.209.32) To HE1PR0201MB2313.eurprd02.prod.outlook.com (10.168.145.148) X-MS-Office365-Filtering-Correlation-Id: 43c2e11c-f0b8-4c38-234b-08d42a3e54fe X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001);SRVR:HE1PR0201MB2313; X-Microsoft-Exchange-Diagnostics: 1;HE1PR0201MB2313;3:JT1UWQc3ZBSoW6PjbErj7npdiZnJl0f2jurFl2yh6jjikhLuAE9+2Ncth5Ch4B9HOgoArjeQ7s1xhUyH3M79h4h9/gfASz4KevW7MmuGEv0pnu3CX3nsA0XPn6w5HJhz1+BOyFCHweAsBL0kEd6MaG5/SrXoECkQjVXM6VWX3CVKNSagyxhKmDAY5Ql0uZeShslrA0nCSQTdpDGZ3QMmCNZM+XQpBp7m+EF+1oJsZz6op5DuL6Rpv+ioNfanHX3Hch78wMriLG2RZJzoDh9Jtg== X-Microsoft-Exchange-Diagnostics: 1;HE1PR0201MB2313;25:N6yqayPJ8Poojiiyr1Yn3qwQC99mN75SiReof/91Qal9V64FqdWQkrrt677KDijRULy1mJgamhSxhx3aJ/3Pa1EBRb8oD92xiPhRLCq5pA7Z2IM0o1+EiRLx+gM/P/4gBefUkeQt5X/t90EF+G6Ot5OvDBZImW23GjFfGepyM5EkJNwhyT0uyLlyzn3fkV/BdONcXgGw9J98Oz77ii4MWUMqgGR8Lm4v923qWqeTm1JscRH03qXn8Mc3hZSuCIy/qxwx28FGvdMj6rReO4tX1+FCqTYBpdHpJsUDYNT5L3aiitKB+h8P1Cj6LB4LViQNH7hny0fEuMr9Vfu4NTyiEJ4GEjWQSFZ1O4K817ujldGhfEvVCgVSHQOiCQA/ZUN70WDoLP08Dzs9ntx98glpMAUecd31/owhUbNDz5E4w6jlcFbyMVAljulqked/NH+HNlLexfgjp1l5fHtkKn+/7OqBZdL4+idNkVbKMKHDGMh7l1WO5MpWssfuJguNrz04On3G0iUxQkcXI2xzM2bqL7j/IchyqzlAXCr13b65/FcSsvq+JrUQs5vQ2MwDP1rj/Vmfu+Lbtppe8Ab1XcvMJyrHI0tbQmI5+/yRMyfJwm2iNcvcByut9fH5m3JPh8CcrYyWAM631aNDToHuWqj7u/T6fAMi5wSKhp1/LLqd8m3RTjWqSZTAh6zzwzHT6a1wm1fAW/k8oui2R1TyGHGuaFlr+9fKYk4Ex6C2NundokjV6UMBIpTwM72mU95LRq+owimnozIn174NIs3EkRV9mg== X-Microsoft-Exchange-Diagnostics: 1;HE1PR0201MB2313;31:xocilyjT8gg2+efSD9F1lAtBpLgkx/VqGX4kXa1F41jMV093XOq5vtkMiMTwVcdVs7PwMw4bcrtyOBcaQWjDQnqer8kQKcaD4+cXIe3Jg55auWps1tmHjzWG0j+25xMoekjwedt0ZGAUw6fdr1rN1Bx983fCYUdMP+n7NRoChBcr+HIW9EKrRbLvpHENrghH7ZUYlTazA8zsXLqhs1839QHtR3UDGGLkEsReMznClyCQqJj5UlaCm1jbisWdS/qr;4:b1/qS2/nqvA5ppW7TI/VQWtp7+kpTR/17fG/9cVJ3LbAu4sM2RjnrNPlSo1rsuRJn3lGTny6LRbJR5m/weUoVWTD5cqBa/bUaSx4ioHklzANrbo1572BhzWzQGaRrmoNMUKtO3Bfh0it8xdR6AHrGgZdx5nYkosmk4rk604LMAf/7jjeUqO0DxqCAoBYpGCt4rmzrE2eN9ZV9FYKqeOq2qyey6UE108KFIJLlMV6+IC/Pc5KwCi+EuH0sBlkoOf+p6gbBlrg0cYrMNzXb2txL0Q9OQTcXqJy/cKPDyYRGUVUKk6QqsITYfvSeCq6Fh+1qcLAbAcYFylwtJe2kctpaSe+Kv4z5U2Ix1zlHryKcV3qRy60rVbo9Qy8u7pUs+pf8yu790ppIUdRMMl+e3jIb2BNJvnchDAuo/lNT98sr2r/bEf/+HO3Qrxhe6oLUxaAa2kIaXXCqDbdcYipqDDGDEEt8zQJ+CgzUQVqOFzoUfjyRYxni75YQpcA2YpsNJEv2HVbYNkK31ZhozyU2rynek6zigGBTfoQzpuTGdl9FfXOcuZWbMZBv0zHa/dDB80W29I8VuX8lh9QnwUTb+WNPMXOnIfA4URqDscRJjG8X17xDlJBnsMFw0LSZZOIDP5G 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)(10201501046)(3002001)(6041248)(2016111802025)(20161123555025)(20161123562025)(20161123564025)(20161123560025)(6072148)(6043046);SRVR:HE1PR0201MB2313;BCL:0;PCL:0;RULEID:;SRVR:HE1PR0201MB2313; X-Forefront-PRVS: 01644DCF4A X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6069001)(6009001)(7916002)(39830400002)(39450400003)(39410400002)(199003)(189002)(25786008)(2351001)(4326007)(66066001)(305945005)(101416001)(7736002)(2361001)(47776003)(86362001)(2906002)(105586002)(189998001)(81156014)(81166006)(97736004)(5003940100001)(36756003)(50226002)(8676002)(42186005)(68736007)(48376002)(106356001)(6916009)(38730400001)(6666003)(50466002)(74482002)(92566002)(33646002)(110136003)(6116002)(6512006)(6506006)(6486002)(3846002)(5660300001)(50986999)(42262002);DIR:OUT;SFP:1102;SCL:1;SRVR:HE1PR0201MB2313;H:localhost.localdomain;FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;HE1PR0201MB2313;23:0oC/F7SeeTG/uV6EplUFkSfOQofvhk3/RXti+eg?= =?us-ascii?Q?gOB47BMPcJyIltH7r4D3W0Lvwd0Kz3ohzJOHNlOZ5oIDOce8jNuEzjjIpYJe?= =?us-ascii?Q?N4P2Cp1mxN15/+OHK37J+vNluRrU8faO2kVAmooJMxhZgEtZMLA3DSD8hQIs?= =?us-ascii?Q?Ck99jXJpEop5utzF0qGgNNJCe3YklVGcY3ijs3SStOt8xgIpVpUI18snah8I?= =?us-ascii?Q?YMWXI9zI/CQZK94CIhARHlQdG3dgC6j7/inKO7Wj3Ek7VrVSHFlFOaV9fpxJ?= =?us-ascii?Q?Gnzmj0vNyzM8oYd6woFaponbPvg6Y4LBpQu0Q+r+XoM3PYbnrMxxhbUrZpQt?= =?us-ascii?Q?bCkmIj2ChcEwglKD3Ykh11UqGmLVMOU3EblHggZbNB0nTpNd1l1zCW8utGVb?= =?us-ascii?Q?+e/7xepTUv7eZeuOw1+6Plji5L8RQQXS3WRcyBUreGqQeDLS4E+iXkkSAXHi?= =?us-ascii?Q?WJ8Jp3kmy6FGME0j1pQT0j6q9Bx78dQD/Bxx/4TsU+S31iPUl7yMs9n3BQ0o?= =?us-ascii?Q?GoNg1WzsjlhPP7rxb3OmvH7tQe9cjfrIkk0qBc1fOe8pESGhwNIDOiZiz2q0?= =?us-ascii?Q?h/Ca3NzLs9ie4DRMncw6cWBCYYTii1k3AFTu6+DPQOm8wzarbAcQcGWpQNYC?= =?us-ascii?Q?iXCA6iZJCtUq16orEu0qrINHyn+QLjJLuMURbjuVrptVCP0NRhTNMlN772R0?= =?us-ascii?Q?kDfsz+a5OSsTOkTCiWAkFlbUBcMFhxepShDxDmuf5TW5awVxM4tW3CnE8Slc?= =?us-ascii?Q?Lv/mBPBL72BJrK20NifRddi1B+SdMqatmSdllL3kLAu30k1lcUlYM4+XABG5?= =?us-ascii?Q?SfKM3kLc9q7CjVjJWalVcVLyODwmXe6hmtqot2isL4Qxuq0y25oDxxgzdFtK?= =?us-ascii?Q?ZcZWLynFq/GBV8iQiC/70AaOd3oLwAtli4vYZRS4b+855/PeTl/NLI/l9paZ?= =?us-ascii?Q?/1kqm2et4Dms7FxlqWm2EzaXSxonD4n3BsBi38YXRif0jlRTA7MLtG4RzuqC?= =?us-ascii?Q?yUYHeTxUk2XboW4fuhayIi+p29PAxcHFi9XLooVj/TdOzAt9Aw98FxLLgjKE?= =?us-ascii?Q?narxSSyCyvjjtBep9ulzo3fGj6PIEf0JECEZIAeByhYF9STGLFww4YTZNVcH?= =?us-ascii?Q?DK+SoNRcNYlg/Yl1fydvXKfu+vhjm9wJ1S8GYmML0yJOO39C5RZSDnNPJXO6?= =?us-ascii?Q?3mPpoItaytrVLXz8=3D?= X-Microsoft-Exchange-Diagnostics: 1;HE1PR0201MB2313;6:Z7Ll5VwsCyqMCHo4EjjHfJHyv6f7wrkIgyRtp2JpD/yUnwKlV+mTP6eHILtepbq9Ht7yzWk/DtE3ZnhQAPS6icdHlgEmCCbrcONYdgvAYUi4ALpph+qF6GM1oJU8nLIlTAZBTo+pb8N6eKkb65FPVTzHV7+i8rcWD4ILI+yN1+GSffI/niblwk9wvjRMWTcLiwkQNIKJij7hkbAyVoEpHM5UtZNjCzXYQtzubfdPanuuX8IY/VrM4jNfrxkyvvfShAQI1o4CPgMopCheFE3b+WD3oRzJSZ31O8g5/M2qE5qUH0d9SbcmMqzeAGPBFLRNnhTgsN+qP3L0nbBljZvKbUVHQ/ApzbJe/DtFqX88p/WfWjpntUqD9j004BaiCWotOw4y5Crw1JM5kBUBA15OQUOfjz4/kgxPTsBkMPPhsL/9ly3Ob8+llAJTykiK01ID;5:EGIYkYFC0QUaesPhV897mjDmDX6NWDuo52Yf6TfLIFjob9Yi+i+TSTgKMSBrslMJ754/4vvgYkY9COQivWH5t+Baz+2Z2pVD05FEqnnt8kpHKUQBDAYiPgFd3005U2Yz+kd6aBDeMNio269fORvGXQ==;24:ouWc5P/twp+IbmE0vVZUGTogxyUJHpwZEmnlCnxOYubW5EPz8OuETr5J4IzTNLDPveDz5eWM8r0NMexfpHweDSI1mXTkiv3ewtz5F0B7DPI= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;HE1PR0201MB2313;7:/KfIvLtDVol8o6ynopAmV/agnyr526JZgqu0DQrbEgmynT7TsdGDoxmt+VQ/O3zirVsLiKzwxH0tdkfZEgMN4bdeScGMjdgvzeNOedc0mKwk6Ogwd6d6Pb6h6KGXhfvEmRRwPOF1TxajI+0PrKsPzdsbk5qXNnYhFycjyhC0jH8PypvVlpEgU7VR8FD7fvf2cqt0QvxWAkRHfMczGYshAPEf++JMCYAhwxl+WDS9b2F0GG/HPkwHEVGl7yxWCc14nHgrVMLbSVnu+Cduz9fj0ciL1NOMcJdekeTqpAjfjyNOHH5dKk+iiga8HgM0iJFGStk1YBPMbEzW5e4DSUNJW/EnzUalSDMHvVZ3CuKBY6aE5EjQCTvO9WKmVgZ1bciwKe4L6WAXkZBMH25PvNyynJxNbhQpZZExwPkRWtMofbPLYK6y4E6pXjzkRUumyEBbDpfOoCSs8vZmCDlndhH9WQ== X-OriginatorOrg: axentia.se X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Dec 2016 07:44:15.6833 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0201MB2313 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3288 Lines: 98 The gpiod_get* function family does not want the -gpio suffix. Use devm_gpiod_get_index_optional instead of devm_gpiod_get_optional. The descriptor based APIs handle active high/low automatically. The vbus-gpios are output, request enable while getting the gpio. Don't try to get any vbus-gpios for ports outside num-ports. WTF? Big sigh. Fixes: 054d4b7b577d ("usb: ohci-at91: Use descriptor-based gpio APIs") Signed-off-by: Peter Rosin --- Hi! Resending this, since the only response I've got is that the merge window is open and that this patch has been put on hold due to that. But I think this regression (which happend between v4.9 and current master) should be fixed before the merge window closes. v1 -> v2 changes: - use devm_gpiod_get_index_optional instead of devm_gpiod_get_optional Cheers, peda drivers/usb/host/ohci-at91.c | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/drivers/usb/host/ohci-at91.c b/drivers/usb/host/ohci-at91.c index 1b2e09c32c6b..66ec407df2db 100644 --- a/drivers/usb/host/ohci-at91.c +++ b/drivers/usb/host/ohci-at91.c @@ -43,7 +43,6 @@ struct at91_usbh_data { struct gpio_desc *overcurrent_pin[AT91_MAX_USBH_PORTS]; u8 ports; /* number of ports on root hub */ u8 overcurrent_supported; - u8 vbus_pin_active_low[AT91_MAX_USBH_PORTS]; u8 overcurrent_status[AT91_MAX_USBH_PORTS]; u8 overcurrent_changed[AT91_MAX_USBH_PORTS]; }; @@ -268,8 +267,7 @@ static void ohci_at91_usb_set_power(struct at91_usbh_data *pdata, int port, int if (!valid_port(port)) return; - gpiod_set_value(pdata->vbus_pin[port], - pdata->vbus_pin_active_low[port] ^ enable); + gpiod_set_value(pdata->vbus_pin[port], enable); } static int ohci_at91_usb_get_power(struct at91_usbh_data *pdata, int port) @@ -277,8 +275,7 @@ static int ohci_at91_usb_get_power(struct at91_usbh_data *pdata, int port) if (!valid_port(port)) return -EINVAL; - return gpiod_get_value(pdata->vbus_pin[port]) ^ - pdata->vbus_pin_active_low[port]; + return gpiod_get_value(pdata->vbus_pin[port]); } /* @@ -535,18 +532,17 @@ static int ohci_hcd_at91_drv_probe(struct platform_device *pdev) pdata->ports = ports; at91_for_each_port(i) { - pdata->vbus_pin[i] = devm_gpiod_get_optional(&pdev->dev, - "atmel,vbus-gpio", - GPIOD_IN); + if (i >= pdata->ports) + break; + + pdata->vbus_pin[i] = + devm_gpiod_get_index_optional(&pdev->dev, "atmel,vbus", + i, GPIOD_OUT_HIGH); if (IS_ERR(pdata->vbus_pin[i])) { err = PTR_ERR(pdata->vbus_pin[i]); dev_err(&pdev->dev, "unable to claim gpio \"vbus\": %d\n", err); continue; } - - pdata->vbus_pin_active_low[i] = gpiod_get_value(pdata->vbus_pin[i]); - - ohci_at91_usb_set_power(pdata, i, 1); } at91_for_each_port(i) { @@ -554,8 +550,8 @@ static int ohci_hcd_at91_drv_probe(struct platform_device *pdev) break; pdata->overcurrent_pin[i] = - devm_gpiod_get_optional(&pdev->dev, - "atmel,oc-gpio", GPIOD_IN); + devm_gpiod_get_index_optional(&pdev->dev, "atmel,oc", + i, GPIOD_IN); if (IS_ERR(pdata->overcurrent_pin[i])) { err = PTR_ERR(pdata->overcurrent_pin[i]); dev_err(&pdev->dev, "unable to claim gpio \"overcurrent\": %d\n", err); -- 2.1.4