From patchwork Fri Mar 10 00:49:04 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Doug Berger X-Patchwork-Id: 737196 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3vfTFh28Kmz9s7f for ; Fri, 10 Mar 2017 11:50:32 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="eoYf36yQ"; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754835AbdCJAu2 (ORCPT ); Thu, 9 Mar 2017 19:50:28 -0500 Received: from mail-wm0-f67.google.com ([74.125.82.67]:36661 "EHLO mail-wm0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754186AbdCJAuZ (ORCPT ); Thu, 9 Mar 2017 19:50:25 -0500 Received: by mail-wm0-f67.google.com with SMTP id v190so293wme.3; Thu, 09 Mar 2017 16:50:24 -0800 (PST) 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=s+FjMImtC8JK2aIreobp4rDeP1vgTGqYZpkIMI6heYQ=; b=eoYf36yQNeLqI2jhGMIOhSCs3/tbtqsNzaZOMpn25gAnB/QpIjMCk7wVltMtqXHkXf t79JEo8MnJj/kpDJmT0rejbcqkNSbrKFnIIrh1BLd0ePeUVeQaAvAwocLK9//WuAUaWE fJsT8LI1yjNJTTyYBq4IodlaF78xhxUKjZT7lCTade+T1hOI11ci3TvxCB3zaKpBpSJ+ bace/af/Dpz4dUI/X0QBDwcCYY1EeRSyBim8Ay+K53iN36jI0Hd4iLzCtqBb6zDWGiG4 fq97WWu1K4DswQzngErpyqz7E96vmfjHzeC/WAeards2DXDwwVfLvALIBnALx6+YJ/AG 1ovg== 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=s+FjMImtC8JK2aIreobp4rDeP1vgTGqYZpkIMI6heYQ=; b=XdYzpVhBakqsRG+MsZ++qBIhTRwgl2d8tTPnnZOd2/QOpXgYCJFfeRIxT/X7iBlmtJ u5wAdbKxord6/QpfUKpTKQSwNkpGrnvawFYfuBJxIln2qgKxJzxc6Xls9fRYwsIO+PBw dey3tuOFKSPDSEJsbE+81/rYp6OaH8cf3Fr7o9gaAfqzbmuI5z2Oz/PeDbuJECsrDD48 IJyZgsEHevj8PrdwwTnciF7m64Yf2Ixnc5IGMEwUsJLJumJ4qY3RIQojVUWo2ReInCet hf+az+YAZ79sDfz62EMF5ymaqaMIxtkanpLpxnYY3p77dF2vDC+MIi4kiSSt3eAXuBAT jgkA== X-Gm-Message-State: AFeK/H3ytsECdjPEVFspfie+pE9Nw++1ScHOj/6Nm51HOzwfqJI2dLKBEFvq2sxQ2rjp6g== X-Received: by 10.28.23.66 with SMTP id 63mr14972wmx.46.1489107023483; Thu, 09 Mar 2017 16:50:23 -0800 (PST) Received: from stb-bld-02.irv.broadcom.com ([192.19.255.250]) by smtp.gmail.com with ESMTPSA id c35sm10374888wra.1.2017.03.09.16.50.21 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 09 Mar 2017 16:50:23 -0800 (PST) From: Doug Berger To: f.fainelli@gmail.com Cc: pgynther@google.com, jaedon.shin@gmail.com, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Doug Berger Subject: [PATCH net 6/8] net: bcmgenet: Power up the internal PHY before probing the MII Date: Thu, 9 Mar 2017 16:49:04 -0800 Message-Id: <20170310004906.10553-7-opendmb@gmail.com> X-Mailer: git-send-email 2.11.1 In-Reply-To: <20170310004906.10553-1-opendmb@gmail.com> References: <20170310004906.10553-1-opendmb@gmail.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Doug Berger When using the internal PHY it must be powered up when the MII is probed or the PHY will not be detected. Since the PHY is powered up at reset this has not been a problem. However, when the kernel is restarted with kexec the PHY will likely be powered down when the kernel starts so it will not be detected and the Ethernet link will not be established. This commit explicitly powers up the internal PHY when the GENET driver is probed to correct this behavior. refs #SWLINUX-4311 Fixes: 1c1008c793fa ("net: bcmgenet: add main driver file") Signed-off-by: Doug Berger --- drivers/net/ethernet/broadcom/genet/bcmgenet.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/drivers/net/ethernet/broadcom/genet/bcmgenet.c b/drivers/net/ethernet/broadcom/genet/bcmgenet.c index 527cecaf12c1..f93098840775 100644 --- a/drivers/net/ethernet/broadcom/genet/bcmgenet.c +++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.c @@ -3289,6 +3289,7 @@ static int bcmgenet_probe(struct platform_device *pdev) const void *macaddr; struct resource *r; int err = -EIO; + const char *phy_mode_str; /* Up to GENET_MAX_MQ_CNT + 1 TX queues and RX queues */ dev = alloc_etherdev_mqs(sizeof(*priv), GENET_MAX_MQ_CNT + 1, @@ -3396,6 +3397,13 @@ static int bcmgenet_probe(struct platform_device *pdev) priv->clk_eee = NULL; } + /* If this is an internal GPHY, power it on now, before UniMAC is + * brought out of reset as absolutely no UniMAC activity is allowed + */ + if (dn && !of_property_read_string(dn, "phy-mode", &phy_mode_str) && + !strcasecmp(phy_mode_str, "internal")) + bcmgenet_power_up(priv, GENET_POWER_PASSIVE); + err = reset_umac(priv); if (err) goto err_clk_disable;