From patchwork Mon Jun 8 17:47:57 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Florian Fainelli X-Patchwork-Id: 481951 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 BF84F1401DE for ; Tue, 9 Jun 2015 03:49:09 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b=dh4zaHDp; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753383AbbFHRtF (ORCPT ); Mon, 8 Jun 2015 13:49:05 -0400 Received: from mail-qk0-f179.google.com ([209.85.220.179]:33494 "EHLO mail-qk0-f179.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752601AbbFHRtD (ORCPT ); Mon, 8 Jun 2015 13:49:03 -0400 Received: by qkhg32 with SMTP id g32so81780248qkh.0 for ; Mon, 08 Jun 2015 10:49:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id; bh=B13vXzEzolWGi2XA4OA5bA69TLmGJbd3FzIWw/6RiOM=; b=dh4zaHDpIovNxe2TrCd561qeNVODoTMms2l8UztmaZTPXCF3KHjY1HNdmL925v6Icy dDG2IOpJBXkV3xlq2f0WwIeIUqSyDyCPfnbjeou9/pQ98FC9Mr4FrdXuvk0tKvjrb0Zd /zfDWso7Pn2ux4jyc+xI+IyBl8gY+u+K1unJJpY7HNmMGStYM/3VgKwUxkTvPcnfB9Og CVQnJXdtGyXRjAU7bvYWOZKTYY5ptM8MFRV8/iLsb9r1pejrXBoT6boPNwI/shSosTl0 zV3U/TI24BhE2MFhe58Np+cbs6UNRIEgozASqEiAClx61beEYndQ6NjUwy0MSfAmokgm JvjA== X-Received: by 10.140.201.81 with SMTP id w78mr22070255qha.39.1433785742379; Mon, 08 Jun 2015 10:49:02 -0700 (PDT) Received: from fainelli-desktop.broadcom.com (5520-maca-inet1-outside.broadcom.com. [216.31.211.11]) by mx.google.com with ESMTPSA id p17sm1513259qkp.6.2015.06.08.10.49.00 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 08 Jun 2015 10:49:00 -0700 (PDT) From: Florian Fainelli To: netdev@vger.kernel.org Cc: davem@davemloft.net, pgynther@google.com, jaedon.shin@gmail.com, Florian Fainelli Subject: [PATCH net] net: bcmgenet: power on MII block for all MII modes Date: Mon, 8 Jun 2015 10:47:57 -0700 Message-Id: <1433785677-3817-1-git-send-email-f.fainelli@gmail.com> X-Mailer: git-send-email 2.1.0 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org The RGMII block is currently only powered on when using RGMII or RGMII_NO_ID, which is not correct when using the GENET interface in MII or Reverse MII modes. We always need to power on the RGMII interface for this block to properly work, regardless of the MII mode in which we operate. Fixes: aa09677cba423 ("net: bcmgenet: add MDIO routines") Signed-off-by: Florian Fainelli --- David, I am targetting "net" here since this is a bug fix, however, we have few people using MII or Reverse MII with GENET, such that there is no need to queue this for -stable unless you want to. Thanks! drivers/net/ethernet/broadcom/genet/bcmmii.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/drivers/net/ethernet/broadcom/genet/bcmmii.c b/drivers/net/ethernet/broadcom/genet/bcmmii.c index e7651b3c6c57..420949cc55aa 100644 --- a/drivers/net/ethernet/broadcom/genet/bcmmii.c +++ b/drivers/net/ethernet/broadcom/genet/bcmmii.c @@ -299,9 +299,6 @@ int bcmgenet_mii_config(struct net_device *dev, bool init) phy_name = "external RGMII (no delay)"; else phy_name = "external RGMII (TX delay)"; - reg = bcmgenet_ext_readl(priv, EXT_RGMII_OOB_CTRL); - reg |= RGMII_MODE_EN | id_mode_dis; - bcmgenet_ext_writel(priv, reg, EXT_RGMII_OOB_CTRL); bcmgenet_sys_writel(priv, PORT_MODE_EXT_GPHY, SYS_PORT_CTRL); break; @@ -310,6 +307,15 @@ int bcmgenet_mii_config(struct net_device *dev, bool init) return -EINVAL; } + /* This is an external PHY (xMII), so we need to enable the RGMII + * block for the interface to work + */ + if (priv->ext_phy) { + reg = bcmgenet_ext_readl(priv, EXT_RGMII_OOB_CTRL); + reg |= RGMII_MODE_EN | id_mode_dis; + bcmgenet_ext_writel(priv, reg, EXT_RGMII_OOB_CTRL); + } + if (init) dev_info(kdev, "configuring instance for %s\n", phy_name);