Received: by 2002:a05:6358:d09b:b0:dc:cd0c:909e with SMTP id jc27csp3289482rwb; Tue, 8 Nov 2022 02:52:10 -0800 (PST) X-Google-Smtp-Source: AMsMyM77x5GVNEKulSvcgGEkSgiotfgqMdY/7OPauUfN2il9joyJB4USAQ0Ao6qlAm1u0WBTXqKl X-Received: by 2002:a17:907:2672:b0:780:8bb5:25a3 with SMTP id ci18-20020a170907267200b007808bb525a3mr52603016ejc.281.1667904730085; Tue, 08 Nov 2022 02:52:10 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1667904730; cv=none; d=google.com; s=arc-20160816; b=NUFHP0mVvCgzVJ0Uxs7imZY/3dfdxZ3Q3XgzV0bjCnT/k54+RgB4y4jNGp9akW+9eN XqOukcP8hyE2EQyHo7/hpAANyKNp6NTDk3lfNg7yS9mrgYs8+7qBSnvAI4MSA+zSEOIM cSpdQYckITjmGsCUYmuSUZcYWHIuoLYjDLQCLoRk98Jd/7XWuFiVHy4WjvP1YWciFThJ R+A/d784dUNHLMIrlPhGLReVw+ekw0Cp1mhooI585+aVO/fQOYqO+aLF6YANbIfyiwb3 Z+U8hyAZjnzcVWRBNKO6wJbVc6ct0AVIUnZi4SjtRSDUz2jEXPJWpCqSWoCxDjWndOVq GxSA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=si17unMCzPrZa4ys3yDdn0xD+FavdNlbbGuceXGsRj4=; b=XiJccgnLum7QMvEg2lzZL6iL+3iSTcEskybK7HZeSJsGP8K+emnkrW0czI0cGqm50X TdvGCl4vClYKhQNMGwV3zTbGrMNOXN8vs2uD1YoaQLMQUqEmOjzFrYQYSpIvWdV6Q8M6 DWNEuZ4UUwBcO8bFAHFWO1eQ641JLd/Tu6CCGnSev8ykIoTmLYO3RNKT/fTGBN23pL0W sLGpDuCU9JcoxmeVk7yythyaZP8k8yTLtUoh+mpDFaPVhmWRtwzWA+k41cI7nh3Z7nQ2 pM/E01hbVXIZyZdiyyONrzabMU4xydJoXcHUcE0etPufIWJcxGsxVAYDv/saFrlhpPt0 u4ig== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=K7+wpFoQ; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id qb34-20020a1709077ea200b00791a4f70674si11915498ejc.24.2022.11.08.02.51.48; Tue, 08 Nov 2022 02:52:10 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=K7+wpFoQ; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233813AbiKHKQH (ORCPT + 89 others); Tue, 8 Nov 2022 05:16:07 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45148 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233376AbiKHKQE (ORCPT ); Tue, 8 Nov 2022 05:16:04 -0500 Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3914FBF8; Tue, 8 Nov 2022 02:16:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1667902563; x=1699438563; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=7iE5y9/CL0SMSk1mAHJvny43HgcdVVS8SDYC0bUemas=; b=K7+wpFoQOgI1NFPKIpAfTaxnvSyNkPhFcNRZvt5pzss3Bn8VuDU8K9Te QQ+vmOC74jCJG2n9H1v0sUkKQ5qG2tjJxZffT1/LovV15nn8Ufc3Fo2RA EVYKMfxE7NKYOpYHXA6eW5ji8IHPpAv9kvox2AOHqOwwsB/wVA/s/eLRf AsP+gN4Ry15eA12/t5YBmGj18JXKcd1ma3uqtS/RQHRAlaEyyTlNL6NSF dl73qrKpbjToIxRpyXwGgLD8Q4EUcV0z/If5bSxvhsw65DMH8ofeWrnjI M6b67V5A749bJMHuCkFB3To1XIh1EuPowGK0Klb3leVR9e9YOX5e3G8+h w==; X-IronPort-AV: E=McAfee;i="6500,9779,10524"; a="298175083" X-IronPort-AV: E=Sophos;i="5.96,147,1665471600"; d="scan'208";a="298175083" Received: from orsmga005.jf.intel.com ([10.7.209.41]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Nov 2022 02:16:01 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10524"; a="811187958" X-IronPort-AV: E=Sophos;i="5.96,147,1665471600"; d="scan'208";a="811187958" Received: from mike-ilbpg1.png.intel.com ([10.88.227.76]) by orsmga005.jf.intel.com with ESMTP; 08 Nov 2022 02:15:57 -0800 From: Michael Sit Wei Hong To: Andrew Lunn , Heiner Kallweit , Russell King , "David S . Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Tan Tee Min Cc: Looi Hong Aun , Voon Weifeng , Zulkifli Muhammad Husaini , Gan Yi Fang Subject: [PATCH net-next 1/1] net: phy: dp83867: add TI PHY loopback Date: Tue, 8 Nov 2022 18:15:27 +0800 Message-Id: <20221108101527.612723-1-michael.wei.hong.sit@intel.com> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-4.4 required=5.0 tests=AC_FROM_MANY_DOTS,BAYES_00, DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF, RCVD_IN_DNSWL_MED,RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE, SPF_NONE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Tan Tee Min The existing genphy_loopback() is not working for TI DP83867 PHY as it will disable autoneg support while another side is still enabling autoneg. This is causing the link is not established and results in timeout error in genphy_loopback() function. Thus, based on TI PHY datasheet, introduce a TI PHY loopback function by just configuring BMCR_LOOPBACK(Bit-9) in MII_BMCR register (0x0). Tested working on TI DP83867 PHY for all speeds (10/100/1000Mbps). Signed-off-by: Tan Tee Min --- drivers/net/phy/dp83867.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/drivers/net/phy/dp83867.c b/drivers/net/phy/dp83867.c index 6939563d3b7c..350217a23b34 100644 --- a/drivers/net/phy/dp83867.c +++ b/drivers/net/phy/dp83867.c @@ -925,6 +925,12 @@ static void dp83867_link_change_notify(struct phy_device *phydev) } } +static int dp83867_loopback(struct phy_device *phydev, bool enable) +{ + return phy_modify(phydev, MII_BMCR, BMCR_LOOPBACK, + enable ? BMCR_LOOPBACK : 0); +} + static struct phy_driver dp83867_driver[] = { { .phy_id = DP83867_PHY_ID, @@ -951,6 +957,7 @@ static struct phy_driver dp83867_driver[] = { .resume = genphy_resume, .link_change_notify = dp83867_link_change_notify, + .set_loopback = dp83867_loopback, }, }; module_phy_driver(dp83867_driver); -- 2.34.1