From patchwork Fri Mar 10 00:58:48 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Doug Berger X-Patchwork-Id: 737208 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 3vfTT30QlXz9s7j for ; Fri, 10 Mar 2017 12:00:20 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="duXdJNi5"; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753918AbdCJA7N (ORCPT ); Thu, 9 Mar 2017 19:59:13 -0500 Received: from mail-qk0-f193.google.com ([209.85.220.193]:33848 "EHLO mail-qk0-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753776AbdCJA7L (ORCPT ); Thu, 9 Mar 2017 19:59:11 -0500 Received: by mail-qk0-f193.google.com with SMTP id v125so23812366qkh.1; Thu, 09 Mar 2017 16:59:10 -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=H27Vl20Kbs83IDdCHW0nUb3Vh7lqJ4yRosyBSkqjDLQ=; b=duXdJNi5mmrTLVQCv3lbvvqSJpJU+Qsc+3YdrIkgK4I8R8vaGsLc8Urzw/Ke5iZZzw xIw5/PrxNjyd0D8Pc8PXC9hOkOsd0Y7n+v8E6QUMr7hm+dfHrqpm9xUQcX3D6SwBir5c Lbhf0DZWAoqsL6fm39+VIe7tTRnoXxVjjpPtqLpLdgtKopQTOTtJ6TilbwyhXfRirGhc lGs9vzRqjlKqYoTtDHgv3lkMRbcMuumRNIsbUzXZV1SgjBpS0MQxEQH8dw8ATQYD8u3p Q+ijRjSaw3nXllTTzEn8hqnCpw2nQN8ZBu8Aj65baveWZ2EmczMvfLp4+clokqeMeuW5 T0Tw== 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=H27Vl20Kbs83IDdCHW0nUb3Vh7lqJ4yRosyBSkqjDLQ=; b=jXfsm0ULjEtJ044tK0HEZE22E2eLizXtFGfLrmRRkEkxbwNjPKwS1QDCSA5FpEt9IP F+UpCUGtCLgVeqN2xTt/mGNlYHH8uux2Le3aS4N8UeDdsV4K3Y+okycN9nMVgZFZQSwO 5iqhIOmIXh7vLcHJTgLQC5rFu7h6g79Ez28LX9RCObCIlSXVcJIj1C8/ooG96paPf4qx fUwSdhO0CuWz1/uG58fofalMvW4KKFM3n12hM4RnLlxS0Q5AH8Is6J/yjvzZi8MOLfmc zXWymjGV//Qhfs7N0H8kPvs1cV1t1N16aYqvVCu6WrcuWOQoVKWW/j+H5OVSuLmDd9/7 0PCQ== X-Gm-Message-State: AFeK/H0LKpkLNL7QTViKEx5esvSqtfiQ7+CHE11Z80EKzJo5pdkwIn6T1sH/hLloHGg+9w== X-Received: by 10.55.83.71 with SMTP id h68mr15705286qkb.259.1489107549494; Thu, 09 Mar 2017 16:59:09 -0800 (PST) Received: from stb-bld-02.irv.broadcom.com ([192.19.255.250]) by smtp.gmail.com with ESMTPSA id z4sm1450734qkc.22.2017.03.09.16.59.08 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 09 Mar 2017 16:59:09 -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 v2 net 6/8] net: bcmgenet: Power up the internal PHY before probing the MII Date: Thu, 9 Mar 2017 16:58:48 -0800 Message-Id: <20170310005850.10808-7-opendmb@gmail.com> X-Mailer: git-send-email 2.11.1 In-Reply-To: <20170310005850.10808-1-opendmb@gmail.com> References: <20170310005850.10808-1-opendmb@gmail.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org 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. Fixes: 1c1008c793fa ("net: bcmgenet: add main driver file") Signed-off-by: Doug Berger Reviewed-by: Florian Fainelli --- 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;