From patchwork Thu Apr 21 18:26:12 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "David Rivshin (Allworx)" X-Patchwork-Id: 613260 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 3qrS333yxpz9t3t for ; Fri, 22 Apr 2016 04:29:51 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b=g0dIuwa4; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753258AbcDUS3e (ORCPT ); Thu, 21 Apr 2016 14:29:34 -0400 Received: from mail-qk0-f196.google.com ([209.85.220.196]:36547 "EHLO mail-qk0-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752118AbcDUS3c (ORCPT ); Thu, 21 Apr 2016 14:29:32 -0400 Received: by mail-qk0-f196.google.com with SMTP id l68so4407271qkf.3; Thu, 21 Apr 2016 11:29:31 -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:in-reply-to:references; bh=qaVghnEl0IPafQ39rvpfk2b4XcEvJ/084eTxahjQYNg=; b=g0dIuwa4VRPdbhjGPv2QwUKOvkQE0O2QmlHBSG4Yd62k1190pqrTJuFBk8TgVZSBvq AXJTTXr8Tp6+ivY5SGKJutKmnJ2wrrWcz4+JOfyMETg58ifNAzLUwh24qPCNYPPs9sWH oykAV4ir4cDcjThlm3vtZit3LkCwbQA935UAR0e6/NUb/CqlSOfzOBCs+4fbfDNwsiiS 1kULEop0riECtGMUJavefFob40JiTBVFlMPJGEtPmaG1zHhNXPku0f4u8M7OcjpZj2dk HD5uSXRzsk1gWYckM2pCSmzGwSbsJIlmHFROgrmbWQtPTeChDKQ/2awr314RbAogYAR0 L07Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=qaVghnEl0IPafQ39rvpfk2b4XcEvJ/084eTxahjQYNg=; b=PDoPAAlZcWHuQ9sosYX3ir43EWf/GrjFb3HyH6k7uxriiDUf52C/TvsHZ7PNm3zS9b 5OBnNBjvRhWNCPZgdMg5UoT8PQ8aAeORkLzuzJ46hlSi4/a4aH9y9lP6q2b221vIAq9f RnMScg2aJpFE+7a7KM1HznsMsvuj7pdatGaEcL+iRqUIgMaqJk/zF7knvjYeMqCP8q93 tQcvzVervn3eo5qYq5dfIkSmwy5sf+mcmgl7oxvwVxoR1/tNeDRpMSa1WCAVhhXFO1cx C6HKHKyZrlPtw0dhiLdTirdwSS+1YXhC75anEVQbjA3LAysZ3wXnncM9ij9sA/Tg9PQq Q5HQ== X-Gm-Message-State: AOPr4FXUece0Ts+XLQxAhk+vlHgLxki4JBnyPAPiYI+XBC0CAXGsJ4P+HfEDzIPc8UXYvQ== X-Received: by 10.55.73.6 with SMTP id w6mr22105354qka.82.1461263371106; Thu, 21 Apr 2016 11:29:31 -0700 (PDT) Received: from drivshin-linux.crosskeys.inscitek.com ([24.213.148.66]) by smtp.gmail.com with ESMTPSA id z2sm925239qge.21.2016.04.21.11.29.30 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 21 Apr 2016 11:29:30 -0700 (PDT) From: "David Rivshin (Allworx)" To: netdev@vger.kernel.org, linux-omap@vger.kernel.org Cc: linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, David Miller , Mugunthan V N , Grygorii Strashko , Andrew Goodbody , Markus Brunner , Nicolas Chauvet Subject: [PATCH net v2 2/3] drivers: net: cpsw: fix error messages when using phy-handle DT property Date: Thu, 21 Apr 2016 14:26:12 -0400 Message-Id: <1461263172-10428-1-git-send-email-drivshin.allworx@gmail.com> X-Mailer: git-send-email 2.5.5 In-Reply-To: <1461261035-5578-1-git-send-email-drivshin.allworx@gmail.com> References: <1461261035-5578-1-git-send-email-drivshin.allworx@gmail.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: David Rivshin The phy-handle, phy_id, and fixed-link properties are mutually exclusive, and only one need be specified. However if phy-handle was specified, an error message would complain about the lack of phy_id or fixed-link. Also, if phy-handle was specified and the subsequent of_phy_connect() failed, the error message still referenced slaved->data->phy_id, which would be empty. Instead, use the name of the device_node as a useful identifier. Fixes: 9e42f715264f ("drivers: net: cpsw: add phy-handle parsing") Signed-off-by: David Rivshin Acked-by: Rob Herring Tested-by: Nicolas Chauvet --- If would like this for -stable it should apply cleanly as far back as 4.5. It failes on 4.4 due to some context differences, but can be applied with 'git am -C2'. Or, I can produce a separate patch against linux-4.4.y if preferred. Changes since v1 [1]: - Rebased (no conflicts) - Added Tested-by from Nicolas Chauvet - Added Acked-by from Rob Herring for the binding change [1] https://patchwork.ozlabs.org/patch/560324/ Documentation/devicetree/bindings/net/cpsw.txt | 4 ++-- drivers/net/ethernet/ti/cpsw.c | 17 +++++++++++++---- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/Documentation/devicetree/bindings/net/cpsw.txt b/Documentation/devicetree/bindings/net/cpsw.txt index 28a4781..3033c0f 100644 --- a/Documentation/devicetree/bindings/net/cpsw.txt +++ b/Documentation/devicetree/bindings/net/cpsw.txt @@ -46,16 +46,16 @@ Optional properties: - dual_emac_res_vlan : Specifies VID to be used to segregate the ports - mac-address : See ethernet.txt file in the same directory - phy_id : Specifies slave phy id - phy-handle : See ethernet.txt file in the same directory Slave sub-nodes: - fixed-link : See fixed-link.txt file in the same directory - Either the property phy_id, or the sub-node - fixed-link can be specified + +Note: Exactly one of phy_id, phy-handle, or fixed-link must be specified. Note: "ti,hwmods" field is used to fetch the base address and irq resources from TI, omap hwmod data base during device registration. Future plan is to migrate hwmod data base contents into device tree blob so that, all the required data will be used from device tree dts file. diff --git a/drivers/net/ethernet/ti/cpsw.c b/drivers/net/ethernet/ti/cpsw.c index d69cb3f..3c81413 100644 --- a/drivers/net/ethernet/ti/cpsw.c +++ b/drivers/net/ethernet/ti/cpsw.c @@ -1150,16 +1150,19 @@ static void cpsw_slave_open(struct cpsw_slave *slave, struct cpsw_priv *priv) if (slave->data->phy_node) slave->phy = of_phy_connect(priv->ndev, slave->data->phy_node, &cpsw_adjust_link, 0, slave->data->phy_if); else slave->phy = phy_connect(priv->ndev, slave->data->phy_id, &cpsw_adjust_link, slave->data->phy_if); if (IS_ERR(slave->phy)) { - dev_err(priv->dev, "phy %s not found on slave %d\n", - slave->data->phy_id, slave->slave_num); + dev_err(priv->dev, "phy \"%s\" not found on slave %d\n", + slave->data->phy_node ? + slave->data->phy_node->full_name : + slave->data->phy_id, + slave->slave_num); slave->phy = NULL; } else { phy_attached_info(slave->phy); phy_start(slave->phy); /* Configure GMII_SEL register */ @@ -2030,15 +2033,19 @@ static int cpsw_probe_dt(struct cpsw_platform_data *data, /* This is no slave child node, continue */ if (strcmp(slave_node->name, "slave")) continue; slave_data->phy_node = of_parse_phandle(slave_node, "phy-handle", 0); parp = of_get_property(slave_node, "phy_id", &lenp); - if (of_phy_is_fixed_link(slave_node)) { + if (slave_data->phy_node) { + dev_dbg(&pdev->dev, + "slave[%d] using phy-handle=\"%s\"\n", + i, slave_data->phy_node->full_name); + } else if (of_phy_is_fixed_link(slave_node)) { struct device_node *phy_node; struct phy_device *phy_dev; /* In the case of a fixed PHY, the DT node associated * to the PHY is the Ethernet MAC DT node. */ ret = of_phy_register_fixed_link(slave_node); @@ -2067,15 +2074,17 @@ static int cpsw_probe_dt(struct cpsw_platform_data *data, if (!mdio) { dev_err(&pdev->dev, "Missing mdio platform device\n"); return -EINVAL; } snprintf(slave_data->phy_id, sizeof(slave_data->phy_id), PHY_ID_FMT, mdio->name, phyid); } else { - dev_err(&pdev->dev, "No slave[%d] phy_id or fixed-link property\n", i); + dev_err(&pdev->dev, + "No slave[%d] phy_id, phy-handle, or fixed-link property\n", + i); goto no_phy_slave; } slave_data->phy_if = of_get_phy_mode(slave_node); if (slave_data->phy_if < 0) { dev_err(&pdev->dev, "Missing or malformed slave[%d] phy-mode property\n", i); return slave_data->phy_if;