Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp1839389ybl; Sat, 1 Feb 2020 07:26:43 -0800 (PST) X-Google-Smtp-Source: APXvYqxxGGX98Zcsn697NH6CXUV6XEsOAKfdENI8P7Rn6wuwoADQ5yWz2+/6D8b7iEVl1zovCqXn X-Received: by 2002:a05:6830:1d7b:: with SMTP id l27mr10962940oti.251.1580570803481; Sat, 01 Feb 2020 07:26:43 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1580570803; cv=none; d=google.com; s=arc-20160816; b=Y65rfcGfI1CqNi9AaWUzNrk8rzINVR9uc6DdzRfiM85o2xGlqeup254TeQnKsQhxn5 5quRpKAhTZUgbbtrK+gXs1oMeMmwwl3n71mQsPUn4gwfXLcfpGXKS2LAT7GchDoRGCvs XYLbw1bdlx6yQKDiR4jg4kCoGNyrM7AM3W7QnB/MrlgHPvWSTKr+e0N2yNofyALMaEpp agF8i10Vo8FsbPrxT+dqhsx2kq18A2bPCCyLmBZ7yvHHZda2QNWzSvLuD0bqBS4FYSiA Q05v8ptK8opA7euvXaNvW1+qNdNYkkqwczOTvPhbH4YF1vHE2Z8VxaOyHqp8e/75pSbR XHOQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:in-reply-to:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :dkim-signature; bh=EsZWTioUimms8PdGTmgVq7XC9kg7nBLn1dmkjL0S1BE=; b=hb966EcCm20vC++ZnK3Wlk3n5sOMDMpQO1cOFREd27+kfDIsAFAn8r/visf7DZCkIy DAMsg58jMTAnI4rGt/VF0ntdVlnPrqDUyQ5ZBY2+2qi5JJ7j5EEc/Yv3a8ASKOwFRNXu 3d71yRrw1Y+O5FgV3o/mumaIcqAnbjkwhrTjHzh3iyqmlvi2mlMozUdD3RWvCkQ+Xzcp Ye5EhrBzqRp2usrLZHtmF9fyeMgPEO61Rtm6xBX2ukKtdRHJv6enCS/x4y9mYbV4hZlm wkrVXGNWGgGvtxKVUxzjndkKNvD0JSzb0yhSGfWq4Rh39l49I/cP45sHMyKuzoV+sTll YiJg== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@lunn.ch header.s=20171124 header.b=b1b2lBwm; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id a7si6010874otp.11.2020.02.01.07.26.29; Sat, 01 Feb 2020 07:26:43 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=fail header.i=@lunn.ch header.s=20171124 header.b=b1b2lBwm; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726718AbgBAPZ0 (ORCPT + 99 others); Sat, 1 Feb 2020 10:25:26 -0500 Received: from vps0.lunn.ch ([185.16.172.187]:32786 "EHLO vps0.lunn.ch" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726505AbgBAPZ0 (ORCPT ); Sat, 1 Feb 2020 10:25:26 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lunn.ch; s=20171124; h=In-Reply-To:Content-Type:MIME-Version:References:Message-ID: Subject:Cc:To:From:Date:Sender:Reply-To:Content-Transfer-Encoding:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=EsZWTioUimms8PdGTmgVq7XC9kg7nBLn1dmkjL0S1BE=; b=b1b2lBwmz11VkawY66mN9o+kkY NS88S7xI+tDKJbnjVuiQmAW9UQizSs5S+f5JDD0DurykOEpS0WCMjNFmYqJDnnVP0sSg7i6f3S04X UoxfDcmsz1h45xpxI4KzUAuKgdwDLI7x/a0Tpk3OCpMPqCnyM8nLY2SptvxzLY3j2+OU=; Received: from andrew by vps0.lunn.ch with local (Exim 4.93) (envelope-from ) id 1ixue6-0003Tj-N3; Sat, 01 Feb 2020 16:25:18 +0100 Date: Sat, 1 Feb 2020 16:25:18 +0100 From: Andrew Lunn To: Jeremy Linton Cc: netdev@vger.kernel.org, opendmb@gmail.com, f.fainelli@gmail.com, davem@davemloft.net, bcm-kernel-feedback-list@broadcom.com, linux-kernel@vger.kernel.org, wahrenst@gmx.net, hkallweit1@gmail.com Subject: Re: [PATCH 3/6] net: bcmgenet: enable automatic phy discovery Message-ID: <20200201152518.GI9639@lunn.ch> References: <20200201074625.8698-1-jeremy.linton@arm.com> <20200201074625.8698-4-jeremy.linton@arm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20200201074625.8698-4-jeremy.linton@arm.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Sat, Feb 01, 2020 at 01:46:22AM -0600, Jeremy Linton wrote: > The unimac mdio driver falls back to scanning the > entire bus if its given an appropriate mask. In ACPI > mode we expect that the system is well behaved and > conforms to recent versions of the specification. > > We then utilize phy_find_first(), and > phy_connect_direct() to find and attach to the > discovered phy during net_device open. > > Signed-off-by: Jeremy Linton > --- > drivers/net/ethernet/broadcom/genet/bcmmii.c | 40 +++++++++++++++++--- > 1 file changed, 34 insertions(+), 6 deletions(-) > > diff --git a/drivers/net/ethernet/broadcom/genet/bcmmii.c b/drivers/net/ethernet/broadcom/genet/bcmmii.c > index 2049f8218589..f3271975b375 100644 > --- a/drivers/net/ethernet/broadcom/genet/bcmmii.c > +++ b/drivers/net/ethernet/broadcom/genet/bcmmii.c > @@ -5,7 +5,7 @@ > * Copyright (c) 2014-2017 Broadcom > */ > > - > +#include > #include > #include > #include > @@ -311,7 +311,9 @@ int bcmgenet_mii_config(struct net_device *dev, bool init) > int bcmgenet_mii_probe(struct net_device *dev) > { > struct bcmgenet_priv *priv = netdev_priv(dev); > - struct device_node *dn = priv->pdev->dev.of_node; > + struct device *kdev = &priv->pdev->dev; > + struct device_node *dn = kdev->of_node; > + > struct phy_device *phydev; > u32 phy_flags = 0; > int ret; > @@ -334,7 +336,27 @@ int bcmgenet_mii_probe(struct net_device *dev) > return -ENODEV; > } > } else { > - phydev = dev->phydev; > + if (has_acpi_companion(kdev)) { > + char mdio_bus_id[MII_BUS_ID_SIZE]; > + struct mii_bus *unimacbus; > + > + snprintf(mdio_bus_id, MII_BUS_ID_SIZE, "%s-%d", > + UNIMAC_MDIO_DRV_NAME, priv->pdev->id); > + > + unimacbus = mdio_find_bus(mdio_bus_id); > + if (!unimacbus) { > + pr_err("Unable to find mii\n"); > + return -ENODEV; > + } > + phydev = phy_find_first(unimacbus); > + put_device(&unimacbus->dev); > + if (!phydev) { > + pr_err("Unable to find PHY\n"); > + return -ENODEV; Hi Jeremy phy_find_first() is not recommended. Only use it if you have no other option. If the hardware is more complex, two PHYs on one bus, you are going to have a problem. So i suggest this is used only for PCI cards where the hardware is very fixed, and there is only ever one MAC and PHY on the PCI card. When you do have this split between MAC and MDIO bus, each being independent devices, it is more likely that you do have multiple PHYs on one shared MDIO bus. In the DT world, you use a phy-handle to point to the PHY node in the device tree. Does ACPI have the same concept, a pointer to some other device in ACPI? Thanks Andrew