From patchwork Fri Jun 16 08:55:36 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Grzeschik X-Patchwork-Id: 776631 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 3wpvNW3gk9z9s8N for ; Fri, 16 Jun 2017 18:55:55 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753010AbdFPIzx (ORCPT ); Fri, 16 Jun 2017 04:55:53 -0400 Received: from metis.ext.4.pengutronix.de ([92.198.50.35]:59221 "EHLO metis.ext.4.pengutronix.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752385AbdFPIzw (ORCPT ); Fri, 16 Jun 2017 04:55:52 -0400 Received: from dude.hi.pengutronix.de ([2001:67c:670:100:1d::7]) by metis.ext.pengutronix.de with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1dLn2l-0007mC-7w; Fri, 16 Jun 2017 10:55:51 +0200 Received: from mgr by dude.hi.pengutronix.de with local (Exim 4.89) (envelope-from ) id 1dLn2j-0000ig-WF; Fri, 16 Jun 2017 10:55:49 +0200 From: Michael Grzeschik To: netdev@vger.kernel.org Cc: nicolas.ferre@microchip.com, kernel@pengutronix.de Subject: [PATCH] net: macb: add fixed-link node support Date: Fri, 16 Jun 2017 10:55:36 +0200 Message-Id: <20170616085536.20442-1-m.grzeschik@pengutronix.de> X-Mailer: git-send-email 2.11.0 X-SA-Exim-Connect-IP: 2001:67c:670:100:1d::7 X-SA-Exim-Mail-From: mgr@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: netdev@vger.kernel.org Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org In case the MACB is directly connected to a non-mdio PHY/device, it should be possible to provide a fixed link configuration in the DT. Signed-off-by: Michael Grzeschik --- drivers/net/ethernet/cadence/macb.c | 21 +++++++++++++++++++++ drivers/net/ethernet/cadence/macb.h | 2 +- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/cadence/macb.c b/drivers/net/ethernet/cadence/macb.c index 91f7492623d3f..91e36efe1d5fb 100644 --- a/drivers/net/ethernet/cadence/macb.c +++ b/drivers/net/ethernet/cadence/macb.c @@ -425,6 +425,16 @@ static int macb_mii_probe(struct net_device *dev) int phy_irq; int ret; + if (bp->phy_node) { + phydev = of_phy_connect(dev, bp->phy_node, + &macb_handle_link_change, 0, + bp->phy_interface); + if (!phydev) + return -ENODEV; + + return 0; + } + phydev = phy_find_first(bp->mii_bus); if (!phydev) { netdev_err(dev, "no PHY found\n"); @@ -498,6 +508,17 @@ static int macb_mii_init(struct macb *bp) dev_set_drvdata(&bp->dev->dev, bp->mii_bus); np = bp->pdev->dev.of_node; + if (of_phy_is_fixed_link(np)) { + if (of_phy_register_fixed_link(np) < 0) { + dev_err(&bp->pdev->dev, + "broken fixed-link specification\n"); + goto err_out_unregister_bus; + } + bp->phy_node = of_node_get(np); + + np = NULL; + } + if (np) { /* try dt phy registration */ err = of_mdiobus_register(bp->mii_bus, np); diff --git a/drivers/net/ethernet/cadence/macb.h b/drivers/net/ethernet/cadence/macb.h index ec037b0fa2a4d..7efc726e0a113 100644 --- a/drivers/net/ethernet/cadence/macb.h +++ b/drivers/net/ethernet/cadence/macb.h @@ -928,7 +928,7 @@ struct macb { dma_addr_t rx_buffers_dma; struct macb_or_gem_ops macbgem_ops; - + struct device_node *phy_node; struct mii_bus *mii_bus; int link; int speed;