From patchwork Sun Mar 22 17:49:34 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dejin Zheng X-Patchwork-Id: 222078 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.8 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH, MAILING_LIST_MULTI, SIGNED_OFF_BY, SPF_HELO_NONE, SPF_PASS, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id DF7F9C54FCF for ; Sun, 22 Mar 2020 17:50:00 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id B4B4F206C3 for ; Sun, 22 Mar 2020 17:50:00 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="pN3Mim6m" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726979AbgCVRt7 (ORCPT ); Sun, 22 Mar 2020 13:49:59 -0400 Received: from mail-pj1-f66.google.com ([209.85.216.66]:52484 "EHLO mail-pj1-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726786AbgCVRt5 (ORCPT ); Sun, 22 Mar 2020 13:49:57 -0400 Received: by mail-pj1-f66.google.com with SMTP id ng8so5010009pjb.2; Sun, 22 Mar 2020 10:49:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Y6ygVFYqMzt2De4r6GDL67AxV7bnQMxmtxe+tWMMmbQ=; b=pN3Mim6muNyc7udwZzmuWD4AWAHO1zuyiiRdb8q4cMnhpuyYzy+HaI0thchVjCDY6S ISwG8zZpspUERPG94L+4Og2NZOc3+XMO7pDCRTrZ45FDkKKdOLb83BJlUOz3bQ627V7k xHs6gEyVCskuDdnge0odpvqj2xxZAVqzhFLmFZCnrRMrlMRizz5CUA8dJCRa5nZQFZAJ coL8+1kKuSgiCHdAFf7sZoPapYgr8EBwep5OmSeZd/0AoYYMnC7K+CwOs6IK33ufufQJ 91+e5sn6es0QOpSsYks16FEIVthfCXZFDxiET5vIwff5h29dW17GaXsB/9LfT1IX4Y/h k3Kw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Y6ygVFYqMzt2De4r6GDL67AxV7bnQMxmtxe+tWMMmbQ=; b=glhOSRLOIaZobhu+HAEnhoZh8z+ye3/gFle+BOQuaJ9TnY7Hpz8S0V9EN73r/WIYfK WvY6GtgZZNieHd3zbccLuCXMavtuLywHdxZGolcytSvBnZz6dykR+wKDEKACC+0qMbVk D1T9mWiwVyycGuYBOzSgGqEFS7Uca6ig0UDmR5c8riqxT5DBQ9N0i49kwUHmP5M5psQ1 mjUs0GHpvkLdtkgawYf9u5cJr0DwAfP78qLhr3hxvWJdz7c5uSHIiuUXHZ/kh02P4v7Z x+zW4DFrL8LdI/XIfGBkkM0RsUjhTjFYZyIqeYvkFVVzm44e8FxsAKwH7nAlEu+MZLHP 6axQ== X-Gm-Message-State: ANhLgQ22LAnNbKo2JERtSjssq/wmdWI/IRiWFE0+uKMCkluQ+vHxi0GF DzkKdHG5udV/IhbPciBn+TA= X-Google-Smtp-Source: ADFU+vt6T37tW8x+Rkrx3qm7lQ1EZuux4e1WSMCSr2mC6XYMjjTJaSm5Z3KbPrqVO+Ce2SmNOXIoqg== X-Received: by 2002:a17:90a:5805:: with SMTP id h5mr9098496pji.175.1584899396035; Sun, 22 Mar 2020 10:49:56 -0700 (PDT) Received: from localhost (216.24.188.11.16clouds.com. [216.24.188.11]) by smtp.gmail.com with ESMTPSA id s4sm3121073pgm.18.2020.03.22.10.49.55 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Sun, 22 Mar 2020 10:49:55 -0700 (PDT) From: Dejin Zheng To: andrew@lunn.ch, f.fainelli@gmail.com, hkallweit1@gmail.com, linux@armlinux.org.uk, davem@davemloft.net, mchehab+samsung@kernel.org, corbet@lwn.net, gregkh@linuxfoundation.org, broonie@kernel.org, tglx@linutronix.de, netdev@vger.kernel.org Cc: linux-kernel@vger.kernel.org, Dejin Zheng Subject: [PATCH net-next v5 01/10] iopoll: introduce read_poll_timeout macro Date: Mon, 23 Mar 2020 01:49:34 +0800 Message-Id: <20200322174943.26332-2-zhengdejin5@gmail.com> X-Mailer: git-send-email 2.25.0 In-Reply-To: <20200322174943.26332-1-zhengdejin5@gmail.com> References: <20200322174943.26332-1-zhengdejin5@gmail.com> MIME-Version: 1.0 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org this macro is an extension of readx_poll_timeout macro. the accessor function op just supports only one parameter in the readx_poll_timeout macro, but this macro can supports multiple variable parameters for it. so functions like phy_read(struct phy_device *phydev, u32 regnum) and phy_read_mmd(struct phy_device *phydev, int devad, u32 regnum) can also use this poll timeout framework. Signed-off-by: Dejin Zheng --- v4 -> v5: - no changed v3 -> v4: - no changed v2 -> v3: - no changed v1 -> v2: - no changed include/linux/iopoll.h | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/include/linux/iopoll.h b/include/linux/iopoll.h index 35e15dfd4155..7d44a2e20267 100644 --- a/include/linux/iopoll.h +++ b/include/linux/iopoll.h @@ -13,6 +13,46 @@ #include #include +/** + * read_poll_timeout - Periodically poll an address until a condition is + * met or a timeout occurs + * @op: accessor function (takes @args as its arguments) + * @val: Variable to read the value into + * @cond: Break condition (usually involving @val) + * @sleep_us: Maximum time to sleep between reads in us (0 + * tight-loops). Should be less than ~20ms since usleep_range + * is used (see Documentation/timers/timers-howto.rst). + * @timeout_us: Timeout in us, 0 means never timeout + * @args: arguments for @op poll + * + * Returns 0 on success and -ETIMEDOUT upon a timeout. In either + * case, the last read value at @args is stored in @val. Must not + * be called from atomic context if sleep_us or timeout_us are used. + * + * When available, you'll probably want to use one of the specialized + * macros defined below rather than this macro directly. + */ +#define read_poll_timeout(op, val, cond, sleep_us, timeout_us, args...) \ +({ \ + u64 __timeout_us = (timeout_us); \ + unsigned long __sleep_us = (sleep_us); \ + ktime_t __timeout = ktime_add_us(ktime_get(), __timeout_us); \ + might_sleep_if((__sleep_us) != 0); \ + for (;;) { \ + (val) = op(args); \ + if (cond) \ + break; \ + if (__timeout_us && \ + ktime_compare(ktime_get(), __timeout) > 0) { \ + (val) = op(args); \ + break; \ + } \ + if (__sleep_us) \ + usleep_range((__sleep_us >> 2) + 1, __sleep_us); \ + } \ + (cond) ? 0 : -ETIMEDOUT; \ +}) + /** * readx_poll_timeout - Periodically poll an address until a condition is met or a timeout occurs * @op: accessor function (takes @addr as its only argument) From patchwork Sun Mar 22 17:49:36 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dejin Zheng X-Patchwork-Id: 222077 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.8 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH, MAILING_LIST_MULTI, SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 04CB1C4332B for ; Sun, 22 Mar 2020 17:50:12 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id CBF322076F for ; Sun, 22 Mar 2020 17:50:11 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Y6oLeb7X" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727050AbgCVRuK (ORCPT ); Sun, 22 Mar 2020 13:50:10 -0400 Received: from mail-pl1-f194.google.com ([209.85.214.194]:42033 "EHLO mail-pl1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727024AbgCVRuF (ORCPT ); Sun, 22 Mar 2020 13:50:05 -0400 Received: by mail-pl1-f194.google.com with SMTP id t3so4853600plz.9; Sun, 22 Mar 2020 10:50:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=/YhBDotZNiUkpqK45eTrgb3dFMB1KDWG5QBFRlQzbfM=; b=Y6oLeb7XdV3SgVAK5PbJRcvZ2+K1yOxt5UvbgsxZYszMis6QthDllZB4/n7rw2wlG3 bSiQe3f/RPF/Kxtlt2dLkFIOgn6eppA8xkzvG14Ww1mbuARoa8O1XgCB20KTMCERhh4L d8Y72xV0LwUhTmHDCMKsrQM/t8IY7017EXjYHukMiw/lu4reMK4QVbd0tbxcHAV7wYDg ZAQuErck+REWqOAVGtqXdycqpCDElESqSFpnr7LAWxFaEobEk15gjrsNDg74532dvKtq 4tJdMYgfc0h15Ja4W6ds212iN35VW1QEHvZujR7z6n9CzHoGmB4GsI2L04oE/g4A1uV/ y3YA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=/YhBDotZNiUkpqK45eTrgb3dFMB1KDWG5QBFRlQzbfM=; b=uHXwjGBxJNv3B3auJYzl81cUs0ZXuFAUXgl94h2P/R8jZ+p8dQMN6i86SSyLbA0Vst xm87tkEGmnYt7joeLdPXy1YjkUvZMW6QEvIbmkr0/dKkb3/P9oaKT5t229jq2Z/GpFZf PI4HGG2J7phsUTJim7NYpcSY60xFoDHJUgq+e+tZxhkutLEmUegn3HcixF46bl840t9a x8+OLmZ1q46JWOhcSct0NAvOZgzonP5+tgEmuAFDZwCvv6bwbY/DwfEh9EHkuyZilmnb UhStnq89HSc5WupYK6p+j0lGTGflasxOuyoKj8i4ruPr242sCl7Jr5UoJO6znIeFKcCf qf/Q== X-Gm-Message-State: ANhLgQ2mH6+eFaGp5rPypjS2rmN4U1h8x7pIsUud83cdKJZhAJmNRYkw /SwJX7SKhq0VyOB9oW55wW4= X-Google-Smtp-Source: ADFU+vsUwW2kD/BfkehLGAKKgAL+HFOhety1BX46RhwuHdVRlUcXWeJm2uamduuqRrwuXxcoWYV3+w== X-Received: by 2002:a17:90a:228c:: with SMTP id s12mr20944474pjc.68.1584899404058; Sun, 22 Mar 2020 10:50:04 -0700 (PDT) Received: from localhost ([216.24.188.11]) by smtp.gmail.com with ESMTPSA id e187sm10433716pfe.143.2020.03.22.10.50.03 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Sun, 22 Mar 2020 10:50:03 -0700 (PDT) From: Dejin Zheng To: andrew@lunn.ch, f.fainelli@gmail.com, hkallweit1@gmail.com, linux@armlinux.org.uk, davem@davemloft.net, mchehab+samsung@kernel.org, corbet@lwn.net, gregkh@linuxfoundation.org, broonie@kernel.org, tglx@linutronix.de, netdev@vger.kernel.org Cc: linux-kernel@vger.kernel.org, Dejin Zheng Subject: [PATCH net-next v5 03/10] net: phy: introduce phy_read_mmd_poll_timeout macro Date: Mon, 23 Mar 2020 01:49:36 +0800 Message-Id: <20200322174943.26332-4-zhengdejin5@gmail.com> X-Mailer: git-send-email 2.25.0 In-Reply-To: <20200322174943.26332-1-zhengdejin5@gmail.com> References: <20200322174943.26332-1-zhengdejin5@gmail.com> MIME-Version: 1.0 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org it is sometimes necessary to poll a phy register by phy_read_mmd() function until its value satisfies some condition. introduce phy_read_mmd_poll_timeout() macros that do this. Suggested-by: Andrew Lunn Reviewed-by: Andrew Lunn Signed-off-by: Dejin Zheng --- v4 -> v5: - no changed v3 -> v4: - deal with precedence issues for parameter cond. v2 -> v3: - modify the parameter order of newly added functions. phy_read_mmd_poll_timeout(val, cond, sleep_us, timeout_us, \ phydev, devaddr, regnum) || \/ phy_read_mmd_poll_timeout(phydev, devaddr regnum, val, cond, \ sleep_us, timeout_us) v1 -> v2: - passed a phydev, device address and a reg to replace args... parameter in phy_read_mmd_poll_timeout() by Andrew Lunn 's suggestion. Andrew Lunn , Thanks very much for your help! - handle phy_read_mmd return an error(the return value < 0) in phy_read_mmd_poll_timeout(). Thanks Andrew again. include/linux/phy.h | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/include/linux/phy.h b/include/linux/phy.h index 36d9dea04016..42a5ec9288d5 100644 --- a/include/linux/phy.h +++ b/include/linux/phy.h @@ -24,6 +24,7 @@ #include #include #include +#include #include @@ -784,6 +785,20 @@ static inline int __phy_modify_changed(struct phy_device *phydev, u32 regnum, */ int phy_read_mmd(struct phy_device *phydev, int devad, u32 regnum); +#define phy_read_mmd_poll_timeout(phydev, devaddr, regnum, val, cond, \ + sleep_us, timeout_us) \ +({ \ + int ret = 0; \ + ret = read_poll_timeout(phy_read_mmd, val, (cond) || val < 0, \ + sleep_us, timeout_us, phydev, devaddr, \ + regnum); \ + if (val < 0) \ + ret = val; \ + if (ret) \ + phydev_err(phydev, "%s failed: %d\n", __func__, ret); \ + ret; \ +}) + /** * __phy_read_mmd - Convenience function for reading a register * from an MMD on a given PHY. From patchwork Sun Mar 22 17:49:39 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dejin Zheng X-Patchwork-Id: 222076 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.8 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH, MAILING_LIST_MULTI, SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 53991C4332B for ; Sun, 22 Mar 2020 17:50:20 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 29F30206C3 for ; Sun, 22 Mar 2020 17:50:20 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="KjXKCqIP" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727122AbgCVRuT (ORCPT ); Sun, 22 Mar 2020 13:50:19 -0400 Received: from mail-pj1-f66.google.com ([209.85.216.66]:51101 "EHLO mail-pj1-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727103AbgCVRuR (ORCPT ); Sun, 22 Mar 2020 13:50:17 -0400 Received: by mail-pj1-f66.google.com with SMTP id v13so5016748pjb.0; Sun, 22 Mar 2020 10:50:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=+KK3Ro2FLwCDE/TwXjj4wqViR4KSXhk4w82GFr36fy4=; b=KjXKCqIPvUSlSTFndLJj/ygE3t+yMKnldDlXqXrdjnGEyAnIY6v1PposD3DYeRRpDa fhwijHMJaE1Lt16cooebo9YTytFz4iVy2MzW8/WUeWVQCi0ghawsdSAY8KfGqxRdUwNH RRSTfOWyJYvOaHvygxoibRWzvNx8XQlLoRA8+iU4vWK6hiXMVrZyJOQWpnHpNnrVPVO/ WjvyMLzA0IIcfHchdPCZG7tdQbkoFEJs9v7K40UXBes8ZSJ1WZGpGGqUPGYh/Qdfo7rL IchSHNxEW4RsqbrDK/B31bf1peAkPcEQzbYMhHvzRfjteTzi1nf6jkJBpm2+nx94DhZh q4qg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=+KK3Ro2FLwCDE/TwXjj4wqViR4KSXhk4w82GFr36fy4=; b=ECUgVizKcAMOuKOoaLx3po4acwd/JnGlatzcDUComK8FWjJQPsjVTuOp8TdGwcJFdj 0+K0bddv5GlUfd0qaVguQN8dpcsDUi9t4ZTPYOdN0Syu5n3TWsPUQWoyqu0bs9orv+8N jU7+2gbXakVBqTWyATgVbDfk4MFE7V/QiXuZoVU75OUHPuEr2LKXMW8tphJ0slZ7zTjL 9Q39ba30VeV5t+juN9FaLkZGVxvOrpMbZXzLcKZKG8A8VzBa8UaQQ3dp3wcSCFiSCNG3 +JJrnj0C86UlDJMefVGoefwil8AnGjcoog58ryAsrULaW/F6OsQWF0E3i+bgaQCALZlO MNYQ== X-Gm-Message-State: ANhLgQ0+mA7bz51Dkl3JRErxlEBewnulBGXM3CCejrFVlEjvMu9Ecwha AZWpqzrVi27dCTLbWyGlt64= X-Google-Smtp-Source: ADFU+vvLvQ6L6WOE/gLrmdD7xpPudkUuhEU+ZgWI+NjRNU3GlGfsMiqAD/p/Z/JEvsadjV8ztlM1uw== X-Received: by 2002:a17:902:82c5:: with SMTP id u5mr1947470plz.254.1584899416291; Sun, 22 Mar 2020 10:50:16 -0700 (PDT) Received: from localhost ([216.24.188.11]) by smtp.gmail.com with ESMTPSA id t3sm4609244pfl.26.2020.03.22.10.50.15 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Sun, 22 Mar 2020 10:50:15 -0700 (PDT) From: Dejin Zheng To: andrew@lunn.ch, f.fainelli@gmail.com, hkallweit1@gmail.com, linux@armlinux.org.uk, davem@davemloft.net, mchehab+samsung@kernel.org, corbet@lwn.net, gregkh@linuxfoundation.org, broonie@kernel.org, tglx@linutronix.de, netdev@vger.kernel.org Cc: linux-kernel@vger.kernel.org, Dejin Zheng Subject: [PATCH net-next v5 06/10] net: phy: marvell10g: use phy_read_mmd_poll_timeout() to simplify the code Date: Mon, 23 Mar 2020 01:49:39 +0800 Message-Id: <20200322174943.26332-7-zhengdejin5@gmail.com> X-Mailer: git-send-email 2.25.0 In-Reply-To: <20200322174943.26332-1-zhengdejin5@gmail.com> References: <20200322174943.26332-1-zhengdejin5@gmail.com> MIME-Version: 1.0 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org use phy_read_mmd_poll_timeout() to replace the poll codes for simplify mv3310_reset() function. it should be add msleep(5) before call phy_read_mmd_poll_timeout() to keep the code more similar, but it will report that warning, so modify it to msleep(20). ./scripts/checkpatch.pl v5-0006-net-phy-marvell10g-use-phy_read_mmd_poll_timeout-.patch WARNING: msleep < 20ms can sleep for up to 20ms; see Documentation/timers/timers-howto.rst #41: FILE: drivers/net/phy/marvell10g.c:251: + msleep(5); Suggested-by: Andrew Lunn Signed-off-by: Dejin Zheng --- v4 -> v5: - add msleep() to before call phy_read_mmd_poll_timeout() to keep the code more similar. v3 -> v4: - add this patch by Andrew's suggestion. Thanks Andrew! drivers/net/phy/marvell10g.c | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/drivers/net/phy/marvell10g.c b/drivers/net/phy/marvell10g.c index 7e05b92504f0..c0fb8391c75b 100644 --- a/drivers/net/phy/marvell10g.c +++ b/drivers/net/phy/marvell10g.c @@ -241,22 +241,18 @@ static int mv3310_power_up(struct phy_device *phydev) static int mv3310_reset(struct phy_device *phydev, u32 unit) { - int retries, val, err; + int val, err; err = phy_modify_mmd(phydev, MDIO_MMD_PCS, unit + MDIO_CTRL1, MDIO_CTRL1_RESET, MDIO_CTRL1_RESET); if (err < 0) return err; - retries = 20; - do { - msleep(5); - val = phy_read_mmd(phydev, MDIO_MMD_PCS, unit + MDIO_CTRL1); - if (val < 0) - return val; - } while (val & MDIO_CTRL1_RESET && --retries); - - return val & MDIO_CTRL1_RESET ? -ETIMEDOUT : 0; + msleep(20); + return phy_read_mmd_poll_timeout(phydev, MDIO_MMD_PCS, + unit + MDIO_CTRL1, val, + !(val & MDIO_CTRL1_RESET), + 5000, 80000); } static int mv3310_get_edpd(struct phy_device *phydev, u16 *edpd) From patchwork Sun Mar 22 17:49:42 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dejin Zheng X-Patchwork-Id: 222075 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.8 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH, MAILING_LIST_MULTI, SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9545AC54FCF for ; Sun, 22 Mar 2020 17:50:35 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 69997206C3 for ; Sun, 22 Mar 2020 17:50:35 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="dGcRXKjJ" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727205AbgCVRub (ORCPT ); Sun, 22 Mar 2020 13:50:31 -0400 Received: from mail-pf1-f196.google.com ([209.85.210.196]:33830 "EHLO mail-pf1-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727186AbgCVRua (ORCPT ); Sun, 22 Mar 2020 13:50:30 -0400 Received: by mail-pf1-f196.google.com with SMTP id 23so6302554pfj.1; Sun, 22 Mar 2020 10:50:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=TpAaf6pIDlWasxVFtmzhqQBYaoymlujVKSINWwIwexY=; b=dGcRXKjJc2f5XtRos22ebmYCMlFLPCnV1JMyskeVFlc2SWnRr+Uq6a5AH2Na5Qsc5f paDc5aslgQpW1MLbHdICOSwUP4EpgiT8i7YElC2jUYkrj5PJcRcXnBo0OQ5rTmpom6N0 xfTrsy9dagxtcuZ1FNSMzxqQYVSRTWrIh2QqxjKOGB5fFMmG62g1VdDB28bt9CcUa19C gLs59Nf+fpiBdIvcPXvDtO9hYI3ZmluJz+jmTjBeDHP0FFebXD/y5GySCzWhCvtwGbDh By5qpQFRri0SNqB3vSACwkAWZ/1bbIFwE4PyX/djGx32sV1HDHXPvMsVtjbc1G/Ys/ZD eSlw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=TpAaf6pIDlWasxVFtmzhqQBYaoymlujVKSINWwIwexY=; b=HjnuZyRBK7+95fZh9sO6KONCIm75wT9RLDMq+ff7TZ6xbT13Mp+GGIXoOd7sCTWpmj cedWy7j7KxiezKEpf7dV5udO+lkFAszn7Gb83jLM1UT0BMvh8uWZjvcplVPUujBZsEmd F+1e9fg28o4gyzS3yNFwrJKrUhRklmJzsWdVt4sVWzeGJO7vMCND4NiQPW77fO6e5zxj fvSExAPGczYFt80FUMDgG5YrjdKTISTNQDsgYFy7POwRrbFJUe7V/DISmMI2j9WuDiob sHLIeUfpXNI5idVRFn3TM8dyq2Vnxw6iEz+4DG9ITrZ61hHRscuPnlx0kyCSG3ZQP0FL zmRw== X-Gm-Message-State: ANhLgQ2hpH1/jfXyNgduI9YmoY8nQpvokZBdEd0WkgoJkOl2qD/N6mP+ 0Xo3oJsz2jj+8ynj3Wt6K84= X-Google-Smtp-Source: ADFU+vtgyjV/A/ADJMXKTgo6CwD2w9Jf3aHfud8mpofU9uWznIeeVeZZ8IeG4Lq/3EwDBkpgtr533g== X-Received: by 2002:a62:7ad7:: with SMTP id v206mr19867365pfc.181.1584899429552; Sun, 22 Mar 2020 10:50:29 -0700 (PDT) Received: from localhost ([216.24.188.11]) by smtp.gmail.com with ESMTPSA id j4sm11053651pfg.133.2020.03.22.10.50.28 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Sun, 22 Mar 2020 10:50:29 -0700 (PDT) From: Dejin Zheng To: andrew@lunn.ch, f.fainelli@gmail.com, hkallweit1@gmail.com, linux@armlinux.org.uk, davem@davemloft.net, mchehab+samsung@kernel.org, corbet@lwn.net, gregkh@linuxfoundation.org, broonie@kernel.org, tglx@linutronix.de, netdev@vger.kernel.org Cc: linux-kernel@vger.kernel.org, Dejin Zheng Subject: [PATCH net-next v5 09/10] net: phy: smsc: use phy_read_poll_timeout() to simplify the code Date: Mon, 23 Mar 2020 01:49:42 +0800 Message-Id: <20200322174943.26332-10-zhengdejin5@gmail.com> X-Mailer: git-send-email 2.25.0 In-Reply-To: <20200322174943.26332-1-zhengdejin5@gmail.com> References: <20200322174943.26332-1-zhengdejin5@gmail.com> MIME-Version: 1.0 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org use phy_read_poll_timeout() to replace the poll codes for simplify lan87xx_read_status() function. it should be add msleep(10) before call phy_read_poll_timeout() to keep the code more similar, but it will report that warning, so modify it to msleep(20). ./scripts/checkpatch.pl v5-0009-net-phy-smsc-use-phy_read_poll_timeout-to-simplif.patch WARNING: msleep < 20ms can sleep for up to 20ms; see Documentation/timers/timers-howto.rst #42: FILE: drivers/net/phy/smsc.c:126: + msleep(10); Suggested-by: Andrew Lunn Signed-off-by: Dejin Zheng --- v4 -> v5: - add msleep before phy_read_poll_timeout() to keep the code more similar v3 -> v4: - add this patch by Andrew's suggestion. Thanks Andrew! drivers/net/phy/smsc.c | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/drivers/net/phy/smsc.c b/drivers/net/phy/smsc.c index b73298250793..f888523086ed 100644 --- a/drivers/net/phy/smsc.c +++ b/drivers/net/phy/smsc.c @@ -112,8 +112,6 @@ static int lan87xx_read_status(struct phy_device *phydev) int err = genphy_read_status(phydev); if (!phydev->link && priv->energy_enable) { - int i; - /* Disable EDPD to wake up PHY */ int rc = phy_read(phydev, MII_LAN83C185_CTRL_STATUS); if (rc < 0) @@ -125,15 +123,12 @@ static int lan87xx_read_status(struct phy_device *phydev) return rc; /* Wait max 640 ms to detect energy */ - for (i = 0; i < 64; i++) { - /* Sleep to allow link test pulses to be sent */ - msleep(10); - rc = phy_read(phydev, MII_LAN83C185_CTRL_STATUS); - if (rc < 0) - return rc; - if (rc & MII_LAN83C185_ENERGYON) - break; - } + msleep(20); + phy_read_poll_timeout(phydev, MII_LAN83C185_CTRL_STATUS, rc, + rc & MII_LAN83C185_ENERGYON, 10000, + 620000); + if (rc < 0) + return rc; /* Re-enable EDPD */ rc = phy_read(phydev, MII_LAN83C185_CTRL_STATUS); From patchwork Sun Mar 22 17:49:43 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dejin Zheng X-Patchwork-Id: 222074 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.8 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH, MAILING_LIST_MULTI, SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1B5C0C4332E for ; Sun, 22 Mar 2020 17:50:42 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id E85D7206C3 for ; Sun, 22 Mar 2020 17:50:41 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="IlEFI136" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727229AbgCVRuj (ORCPT ); Sun, 22 Mar 2020 13:50:39 -0400 Received: from mail-pg1-f195.google.com ([209.85.215.195]:44204 "EHLO mail-pg1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726623AbgCVRue (ORCPT ); Sun, 22 Mar 2020 13:50:34 -0400 Received: by mail-pg1-f195.google.com with SMTP id 142so694929pgf.11; Sun, 22 Mar 2020 10:50:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=AymXtp3nG2LLyQijF0AdQUTMbx+e63yTlaZBg9wNr3E=; b=IlEFI136z2Ku169Qafi1L04lNH2PtWbJTwkZVbsZIH5y4xUSSUnY468PQp+D6aIJ73 HIH4XuPjOJ5ZYRDfLgnzR2fJfVLVcjM7B0Hk0B5DcmojpC2qnaBhFSHbd+M7ilNoiU+a VqPMI5HZHFugtDQF9TyN6mlczdpxlI1xRTxdJzXNaf03HwPWNHalBJs3h1uBo2QQEcpr ydD88vMRIOCDkYFu53YPaoyYBDvpumsFqf7ue7wzeAtREUsps/XCYgSEIBbqpJqYUeTB Bp4HjJdHldmCms0+4I08eDqRldrPUuUzdJPzlhFprC7YoqpVQLgdVzdGkgSl91F8538z uVNA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=AymXtp3nG2LLyQijF0AdQUTMbx+e63yTlaZBg9wNr3E=; b=qSa4WkxywL+AvxAcR6NQgROtPd/h18oPZkQ3+tR3bYrl3sdjpbtH+h2DiV0Qk5Gp5V fZb0sBLHwnuvFzF8hV9rBDk5AoUExjG+M2ZjN0YrdRxpxInL8nrrZh494ScXpkjQXmKm e8320WtKqQEA3jeIRDZK3jAl24vIAN5ZtMSiJV5lWJwnkazqo2u+Ik+8WoWi0gBaWiN1 NabkZdgluhs64Wtsp3gII8qZ7fvnI3hIcJo96p8DvxO9xh8hYN/+raa+bvXn+4/EWmtd AKr9cuE5lbRYAPdXuuPHGFd89Lcju3klg21neDqVWIwkEouCWFaFdlNI2WY8Z22NVITY fUNg== X-Gm-Message-State: ANhLgQ1ZCX8BOqurTAg5t/u6py5sPwnbEOHvn0VAdgC5asfP/nCcQFdG 8z3ZNXnoDKpk9OmoeR+syJ0= X-Google-Smtp-Source: ADFU+vubfSt1fEHY9S2nQ7rDmb5y7eWgE6gS4SDOOl5P/pjQymmoxGN0DZN8GGvtnTLoleWBYfWKJg== X-Received: by 2002:aa7:99c8:: with SMTP id v8mr19918083pfi.151.1584899433441; Sun, 22 Mar 2020 10:50:33 -0700 (PDT) Received: from localhost ([216.24.188.11]) by smtp.gmail.com with ESMTPSA id c8sm11594453pfj.108.2020.03.22.10.50.32 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Sun, 22 Mar 2020 10:50:33 -0700 (PDT) From: Dejin Zheng To: andrew@lunn.ch, f.fainelli@gmail.com, hkallweit1@gmail.com, linux@armlinux.org.uk, davem@davemloft.net, mchehab+samsung@kernel.org, corbet@lwn.net, gregkh@linuxfoundation.org, broonie@kernel.org, tglx@linutronix.de, netdev@vger.kernel.org Cc: linux-kernel@vger.kernel.org, Dejin Zheng Subject: [PATCH net-next v5 10/10] net: phy: tja11xx: use phy_read_poll_timeout() to simplify the code Date: Mon, 23 Mar 2020 01:49:43 +0800 Message-Id: <20200322174943.26332-11-zhengdejin5@gmail.com> X-Mailer: git-send-email 2.25.0 In-Reply-To: <20200322174943.26332-1-zhengdejin5@gmail.com> References: <20200322174943.26332-1-zhengdejin5@gmail.com> MIME-Version: 1.0 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org use phy_read_poll_timeout() to replace the poll codes for simplify tja11xx_check() function. Suggested-by: Andrew Lunn Reviewed-by: Andrew Lunn Signed-off-by: Dejin Zheng --- v4 -> v5: - no changed. v3 -> v4: - add this patch by Andrew's suggestion. Thanks Andrew! drivers/net/phy/nxp-tja11xx.c | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/drivers/net/phy/nxp-tja11xx.c b/drivers/net/phy/nxp-tja11xx.c index b705d0bd798b..32ef32a4af3c 100644 --- a/drivers/net/phy/nxp-tja11xx.c +++ b/drivers/net/phy/nxp-tja11xx.c @@ -72,20 +72,10 @@ static struct tja11xx_phy_stats tja11xx_hw_stats[] = { static int tja11xx_check(struct phy_device *phydev, u8 reg, u16 mask, u16 set) { - int i, ret; - - for (i = 0; i < 200; i++) { - ret = phy_read(phydev, reg); - if (ret < 0) - return ret; - - if ((ret & mask) == set) - return 0; - - usleep_range(100, 150); - } + int val; - return -ETIMEDOUT; + return phy_read_poll_timeout(phydev, reg, val, (val & mask) == set, + 150, 30000); } static int phy_modify_check(struct phy_device *phydev, u8 reg,