Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754634AbdLGPLN (ORCPT ); Thu, 7 Dec 2017 10:11:13 -0500 Received: from mail2.skidata.com ([91.230.2.91]:37869 "EHLO mail2.skidata.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754462AbdLGPLL (ORCPT ); Thu, 7 Dec 2017 10:11:11 -0500 X-Greylist: delayed 597 seconds by postgrey-1.27 at vger.kernel.org; Thu, 07 Dec 2017 10:11:11 EST X-IronPort-AV: E=Sophos;i="5.45,373,1508796000"; d="scan'208";a="1146833" Subject: Re: [PATCH net-next v4 1/4] phylib: Add device reset delay support To: Geert Uytterhoeven , Richard Leitner CC: Rob Herring , Mark Rutland , Fugang Duan , Andrew Lunn , "Florian Fainelli" , Frank Rowand , "David S. Miller" , Geert Uytterhoeven , Sergei Shtylyov , Baruch Siach , "David Wu" , , "netdev@vger.kernel.org" , "devicetree@vger.kernel.org" , "linux-kernel@vger.kernel.org" References: <20171207144358.3351-1-dev@g0hl1n.net> <20171207144358.3351-2-dev@g0hl1n.net> From: Richard Leitner Message-ID: <5f174dfc-e373-1069-cf22-f25a569030d0@skidata.com> Date: Thu, 7 Dec 2017 16:01:11 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.5.0 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: [172.16.60.30] X-ClientProxiedBy: sdex1srv.skidata.net (172.16.10.92) To sdex1srv.skidata.net (172.16.10.92) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1313 Lines: 46 Hi Geert, On 12/07/2017 03:52 PM, Geert Uytterhoeven wrote: > Hi Richard, > > On Thu, Dec 7, 2017 at 3:43 PM, Richard Leitner wrote: >> --- a/drivers/net/phy/mdio_device.c >> +++ b/drivers/net/phy/mdio_device.c >> @@ -24,6 +24,7 @@ >> #include >> #include >> #include >> +#include >> >> void mdio_device_free(struct mdio_device *mdiodev) >> { >> @@ -118,8 +119,16 @@ EXPORT_SYMBOL(mdio_device_remove); >> >> void mdio_device_reset(struct mdio_device *mdiodev, int value) >> { >> - if (mdiodev->reset) >> - gpiod_set_value(mdiodev->reset, value); >> + unsigned int d; >> + >> + if (!mdiodev->reset) >> + return; >> + >> + gpiod_set_value(mdiodev->reset, value); >> + >> + d = value ? mdiodev->reset_delay : mdiodev->reset_post_delay; >> + if (d) >> + usleep_range(d, d + min_t(unsigned int, d / 10, 100)); > > Oops, I meant "max_t", not "min_t", else the upper limit can be "d + 0", > which is not what we want. You're right... > Sorry, my fault. I just copied it over from you suggestion without thinking about it... So it's definitely my fault too ;-) I'll wait for some more comments and send a new version next week. regards;Richard.L