From patchwork Wed Apr 25 19:12:51 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Florian Fainelli X-Patchwork-Id: 904705 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="TS9q7hL+"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40WVLK4HXfz9ryr for ; Thu, 26 Apr 2018 05:16:41 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756331AbeDYTQ0 (ORCPT ); Wed, 25 Apr 2018 15:16:26 -0400 Received: from mail-pg0-f67.google.com ([74.125.83.67]:41892 "EHLO mail-pg0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751519AbeDYTP4 (ORCPT ); Wed, 25 Apr 2018 15:15:56 -0400 Received: by mail-pg0-f67.google.com with SMTP id m21so11001247pgv.8 for ; Wed, 25 Apr 2018 12:15: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; bh=dsgHbEFVczl83mAsGhfKwaXAwnPzSBXBQsIyGWWgP48=; b=TS9q7hL+3aEY1CSKKwwpjrEZZYnw7wZS3NmND4eQj5od+V73P5SswjhuYZMi/0HVqH 66DKerH4MV3Wm9CEUwKmYarnmhBtMFdAd/4h+64Sey0wQYcHBj/HPqB1Ay1F75mZTHix KBoH5NCz+aEERJjgLbT9dg1erwMbU52txVo1wa6NuSdxGyawv1eUZW/5eV8Yult9pnvQ cJq9ZDEaYmjC4JraIxNCWxrsNv9Gs6DWBC5D9Qho6Kk6mY4+pIJKqGfMEgLsBbsL6Vcf +sP0zpPceJpkYMgXcZMb1UCCzz5glcLX4dWvPSXR4g1XiIoBXr3A8ex+5wwsPK953a8u eTqQ== 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; bh=dsgHbEFVczl83mAsGhfKwaXAwnPzSBXBQsIyGWWgP48=; b=Obf3DGluXAlR1KOxI2WvPr8w3pfLkEOCKLys8z9Y6Qvhh9YLqRdfKtPvN08iiu2y7y A7jo0qSRbXfm3qHAFHA5zTAojWB6+IWaAXCi3cnnrgU/gaPw8fcda6LHmvAPBRmB2w1t YIbOBOiVd5CNkgIJnjJkIxfG5rcurep7AJ3pfJeulTS+tdMZrM38XiBcBH5vtrSI4uZP Tnr5qJly3ovi2zjAqHfY5XyE/tVGoPX9s36A9gjSwAHJYtmwwESqTMl8WCg5UQ7z19Yc iJmxD6SU/p/f6/2yQxMBs6ZucYE5nqssFz7WdKrNJuKs8Tqtcgm0kefaAhqI6lz8t8My CXWg== X-Gm-Message-State: ALQs6tD3D3Vk75FNU+MwHikFxdUs89NB6sUsHaT6lXHhZBUEttfBwMOn XfQaaxBBljlO0Vma5lUqJqHu0Dzj X-Google-Smtp-Source: AIpwx48eqQ7qXAawW2/f/IjZvO9iopuUprUQ3Eqbw7QYA45ulapgonOVJIz3hozgYNB6BPNhcrbt0A== X-Received: by 2002:a17:902:7795:: with SMTP id o21-v6mr29367575pll.8.1524683755408; Wed, 25 Apr 2018 12:15:55 -0700 (PDT) Received: from fainelli-desktop.igp.broadcom.net ([192.19.223.250]) by smtp.gmail.com with ESMTPSA id s4sm16742809pgp.35.2018.04.25.12.15.53 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 25 Apr 2018 12:15:54 -0700 (PDT) From: Florian Fainelli To: netdev@vger.kernel.org Cc: Florian Fainelli , andrew@lunn.ch, vivien.didelot@savoirfairelinux.com, cphealy@gmail.com, davem@davemloft.net, nikita.yoush@cogentembedded.com Subject: [PATCH net-next 5/8] net: dsa: Add helper function to obtain PHY device of a given port Date: Wed, 25 Apr 2018 12:12:51 -0700 Message-Id: <20180425191254.3467-6-f.fainelli@gmail.com> X-Mailer: git-send-email 2.14.1 In-Reply-To: <20180425191254.3467-1-f.fainelli@gmail.com> References: <20180425191254.3467-1-f.fainelli@gmail.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org In preparation for having more call sites attempting to obtain a reference against a PHY device corresponding to a particular port, introduce a helper function for that purpose. Signed-off-by: Florian Fainelli --- net/dsa/port.c | 33 ++++++++++++++++++++++----------- 1 file changed, 22 insertions(+), 11 deletions(-) diff --git a/net/dsa/port.c b/net/dsa/port.c index 7acc1169d75e..5e2a88720a9a 100644 --- a/net/dsa/port.c +++ b/net/dsa/port.c @@ -273,25 +273,38 @@ int dsa_port_vlan_del(struct dsa_port *dp, return 0; } -static int dsa_port_setup_phy_of(struct dsa_port *dp, bool enable) +static struct phy_device *dsa_port_get_phy_device(struct dsa_port *dp) { - struct device_node *port_dn = dp->dn; struct device_node *phy_dn; - struct dsa_switch *ds = dp->ds; struct phy_device *phydev; - int port = dp->index; - int err = 0; - phy_dn = of_parse_phandle(port_dn, "phy-handle", 0); + phy_dn = of_parse_phandle(dp->dn, "phy-handle", 0); if (!phy_dn) - return 0; + return NULL; phydev = of_phy_find_device(phy_dn); if (!phydev) { - err = -EPROBE_DEFER; - goto err_put_of; + of_node_put(phy_dn); + return ERR_PTR(-EPROBE_DEFER); } + return phydev; +} + +static int dsa_port_setup_phy_of(struct dsa_port *dp, bool enable) +{ + struct dsa_switch *ds = dp->ds; + struct phy_device *phydev; + int port = dp->index; + int err = 0; + + phydev = dsa_port_get_phy_device(dp); + if (!phydev) + return 0; + + if (IS_ERR(phydev)) + return PTR_ERR(phydev); + if (enable) { err = genphy_config_init(phydev); if (err < 0) @@ -317,8 +330,6 @@ static int dsa_port_setup_phy_of(struct dsa_port *dp, bool enable) err_put_dev: put_device(&phydev->mdio.dev); -err_put_of: - of_node_put(phy_dn); return err; }