From patchwork Wed May 31 23:17:29 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Florian Fainelli X-Patchwork-Id: 101620 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:6358:3046:b0:115:7a1d:dabb with SMTP id p6csp776151rwl; Wed, 31 May 2023 16:43:08 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ50ToT2k2OGc5hbGZqunRTbb48ShazGQQXozKmQcTtH24KrsS3SRhO7z+ESohThp0eooNyv X-Received: by 2002:a05:6808:194:b0:398:f41:cd03 with SMTP id w20-20020a056808019400b003980f41cd03mr5104889oic.47.1685576587570; Wed, 31 May 2023 16:43:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1685576587; cv=none; d=google.com; s=arc-20160816; b=HLMbqO5kLpz0kdFe1fqF43yV5mzSeGxOrCkaQuRzO/yZWWUpi9XIQaXRHnMLWXJ3rM i+itO+E5LNWqwduKJGzw6uaGV5G8xPaeHa3GEqZYfntDmKEKlklcGCzZFBjtdVH2jKXN tlngDNXPeB9Pa/PaejbUrs8t6uOBWisnKVw3+HxyiE0A793jzXG0GAb391a2LxjZNkLH aeEr9f9PBjWWn9SCv6VLPwZ+bD7xRlU56opKQID2lIng7BlXS25p4AKl64aVyhQjczLG X99Ja/DKFgRO4eTAalRkmba28kdND8HwISDX7+ZCcEDmAk6LOJYSOfUmdM5Z5mmdwFjn Rzdg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:message-id:date:subject:cc:to:from :dkim-signature; bh=HVYVBSsqlIFFUXYNSAtxjxi/YQuKD8Q2k015aXbp/2E=; b=FHxJ21dnJoo+dP0i7PK9AkErVmobZr8bNHlsXOKT+pe6zvDlEM5P4pnKYqRj4wv8jH rOHoetexiC7rlNgLSmni67z0fI20oOgZof4IjjIGrCyhzFs1qacS7zhIMqtyL9UaYaje XoYlNapoF1gEHEK2CQ83h/4IsT6dOVp30iUBULbogxskpJSqGAiakNtZkPnuLvStYQpV oX6wNEJgm+n8hhv35UJRhJR+MjJDPykqlEw+JhCD3WFO2zlM406rSn/hNn/QEtwUXzQY jj7XB4Cxs4hoWaEu394aK7hoofWkCNVR9rnGidb7/+lm9oD4W+RD80xRwClAnx7MCood N3fw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@broadcom.com header.s=google header.b=ByE+mNcS; 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=QUARANTINE sp=QUARANTINE dis=NONE) header.from=broadcom.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id f15-20020a170902ff0f00b001a8031f3964si472516plj.437.2023.05.31.16.42.48; Wed, 31 May 2023 16:43:07 -0700 (PDT) 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=@broadcom.com header.s=google header.b=ByE+mNcS; 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=QUARANTINE sp=QUARANTINE dis=NONE) header.from=broadcom.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229849AbjEaXRp (ORCPT + 99 others); Wed, 31 May 2023 19:17:45 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37456 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229537AbjEaXRo (ORCPT ); Wed, 31 May 2023 19:17:44 -0400 Received: from mail-qk1-x72b.google.com (mail-qk1-x72b.google.com [IPv6:2607:f8b0:4864:20::72b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8AA19123 for ; Wed, 31 May 2023 16:17:42 -0700 (PDT) Received: by mail-qk1-x72b.google.com with SMTP id af79cd13be357-75affe977abso13872185a.0 for ; Wed, 31 May 2023 16:17:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; t=1685575061; x=1688167061; h=mime-version:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to; bh=HVYVBSsqlIFFUXYNSAtxjxi/YQuKD8Q2k015aXbp/2E=; b=ByE+mNcS6GGLE103o/FdcxfwZOkfzrmmHbEK3W3WMOShX1bIyFebRv5pKeQxcvfHRW 7AhXy3TedKdT/EpoIA7b8vesQYUyHYd5eU1iv7yuhPK4vIfoyNc+SCfJrXPO7/zMtzIG QkMz+4p18w8XwukEgkk+kPjo8eHszI6BZ+rWo= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1685575061; x=1688167061; h=mime-version:message-id:date:subject:cc:to:from:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=HVYVBSsqlIFFUXYNSAtxjxi/YQuKD8Q2k015aXbp/2E=; b=io+APCjskfyH6HNPSAgOqgEMhLcYNzU8RH2stFuD7qh1NW9hrYmlEEiTyqVEGCar8r ExYpPKB7y3kCGb1hYuSy4N1VZZFoXA4GNdtnTRmjbcF6FHkYavVXE/9HjgFWQKe6aX7j mcuAzFTlndgmGtw3uZbByNimlSDfs1iXTKmlZFPmwAjLxQd7ZsNoDgdTT9r1jwkg8LUw l++ln5jqLAmJ8Q88huNqELyNxjcKftKcarWXUUmGvR9g/f3WGDuSBUmtRABV6O9/YzYR p2punCuwutvvek7/06ro46rP8fb5QfqRdiTAtPgxVQs1/MfDcTiQlihnRutnJ8V976zs qRpg== X-Gm-Message-State: AC+VfDzx3lKyRen0YCSqpemk63A5wAmgXP/zsJGe7QUNtl9qtryNWScK G2aI/7hQmClftd3ufpl02RuMUg== X-Received: by 2002:a05:6214:d87:b0:621:7d4:e059 with SMTP id e7-20020a0562140d8700b0062107d4e059mr7460996qve.10.1685575061540; Wed, 31 May 2023 16:17:41 -0700 (PDT) Received: from fainelli-desktop.igp.broadcom.net ([192.19.223.252]) by smtp.gmail.com with ESMTPSA id c8-20020a0cfb08000000b00627a6fd04ddsm1551795qvp.122.2023.05.31.16.17.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 31 May 2023 16:17:39 -0700 (PDT) From: Florian Fainelli To: netdev@vger.kernel.org Cc: Florian Fainelli , Florian Fainelli , Broadcom internal kernel review list , Andrew Lunn , Heiner Kallweit , Russell King , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , linux-kernel@vger.kernel.org (open list) Subject: [PATCH net-next] net: phy: broadcom: Add LPI counter Date: Wed, 31 May 2023 16:17:29 -0700 Message-Id: <20230531231729.1873932-1-florian.fainelli@broadcom.com> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 X-Spam-Status: No, score=-0.3 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MIME_NO_TEXT, RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_NONE,T_SCC_BODY_TEXT_LINE, URIBL_BLOCKED autolearn=no 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 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1767455155741088498?= X-GMAIL-MSGID: =?utf-8?q?1767455155741088498?= Add the ability to read the PHY maintained LPI counter which is in the Clause 45 vendor space, device address 7, offset 0x803F. The counter is cleared on read. Signed-off-by: Florian Fainelli Reviewed-by: Andrew Lunn --- drivers/net/phy/bcm-phy-lib.c | 19 ++++++++++++------- include/linux/brcmphy.h | 2 ++ 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/drivers/net/phy/bcm-phy-lib.c b/drivers/net/phy/bcm-phy-lib.c index 5603d0a9ce96..c6e2e5f636d4 100644 --- a/drivers/net/phy/bcm-phy-lib.c +++ b/drivers/net/phy/bcm-phy-lib.c @@ -496,18 +496,20 @@ EXPORT_SYMBOL_GPL(bcm_phy_downshift_set); struct bcm_phy_hw_stat { const char *string; - u8 reg; + int devad; + u16 reg; u8 shift; u8 bits; }; /* Counters freeze at either 0xffff or 0xff, better than nothing */ static const struct bcm_phy_hw_stat bcm_phy_hw_stats[] = { - { "phy_receive_errors", MII_BRCM_CORE_BASE12, 0, 16 }, - { "phy_serdes_ber_errors", MII_BRCM_CORE_BASE13, 8, 8 }, - { "phy_false_carrier_sense_errors", MII_BRCM_CORE_BASE13, 0, 8 }, - { "phy_local_rcvr_nok", MII_BRCM_CORE_BASE14, 8, 8 }, - { "phy_remote_rcv_nok", MII_BRCM_CORE_BASE14, 0, 8 }, + { "phy_receive_errors", -1, MII_BRCM_CORE_BASE12, 0, 16 }, + { "phy_serdes_ber_errors", -1, MII_BRCM_CORE_BASE13, 8, 8 }, + { "phy_false_carrier_sense_errors", -1, MII_BRCM_CORE_BASE13, 0, 8 }, + { "phy_local_rcvr_nok", -1, MII_BRCM_CORE_BASE14, 8, 8 }, + { "phy_remote_rcv_nok", -1, MII_BRCM_CORE_BASE14, 0, 8 }, + { "phy_lpi_count", MDIO_MMD_AN, BRCM_CL45VEN_EEE_LPI_CNT, 0, 16 }, }; int bcm_phy_get_sset_count(struct phy_device *phydev) @@ -536,7 +538,10 @@ static u64 bcm_phy_get_stat(struct phy_device *phydev, u64 *shadow, int val; u64 ret; - val = phy_read(phydev, stat.reg); + if (stat.devad < 0) + val = phy_read(phydev, stat.reg); + else + val = phy_read_mmd(phydev, stat.devad, stat.reg); if (val < 0) { ret = U64_MAX; } else { diff --git a/include/linux/brcmphy.h b/include/linux/brcmphy.h index e9afbfb6d7a5..251833ab271f 100644 --- a/include/linux/brcmphy.h +++ b/include/linux/brcmphy.h @@ -359,6 +359,8 @@ #define LPI_FEATURE_EN 0x8000 #define LPI_FEATURE_EN_DIG1000X 0x4000 +#define BRCM_CL45VEN_EEE_LPI_CNT 0x803f + /* Core register definitions*/ #define MII_BRCM_CORE_BASE12 0x12 #define MII_BRCM_CORE_BASE13 0x13