Received: by 2002:a89:48b:0:b0:1f5:f2ab:c469 with SMTP id a11csp6864lqd; Tue, 23 Apr 2024 12:43:47 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCX+hqbBTxy07rKf6U5guWkKtLjDVSBpjMj6VCTT4fIjHESLgj+j7xEON4sKBbvf97KV+7ACiL5qjh3BUrqMxSv09Tb0AjbZ9xz3aStbXA== X-Google-Smtp-Source: AGHT+IG08IZbic1cjqOO5AnABvP1i3yHcqVUD5IU0zI7t+vmRil0/VNmjUUvurDC+Qn7lycntgOb X-Received: by 2002:a17:902:934c:b0:1e6:40f1:935e with SMTP id g12-20020a170902934c00b001e640f1935emr503264plp.35.1713901427445; Tue, 23 Apr 2024 12:43:47 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1713901427; cv=pass; d=google.com; s=arc-20160816; b=bLVWVSMLhvUymLCb0LD1UZ6nq3E39VjRdtxEINrF/ZGeg6A9o1nKL2O4FAG9zLWZu6 AyJHngqOIepeeVgJ54FvV3Xg12wI9ZT8elZU134rxRG874x4E9R2/SHLfxlOxu1T2NJU IaErdXdHMo7uEJgiO5inKmLM0d+bJ9PjaH4HCpPoqLhC4OlGr0DpkOmTseAeuH5KJhTF +wixFuPqkL7TgbrwWH839oDD5VjoxevslKruG0NaQS/I8DJmfaM7K4LMhu/Ye7jkDnMY mnm0sot4VRSyH6dUL96V95qIMth3p2X7UdQ4WA5r1XUF8BS94r0OJ+Pm9I2Qe5DQ2mLj 7bTA== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature:dkim-filter; bh=GMx3z9UC/x91NKUkF6rO7sDef3PMYb/OMEcVYGyPsAo=; fh=YPB6smmkDIKJA3a8AQbe7oLWhmaFArz4Rg9M7M49aVo=; b=iJjtxSFmfZds9V7lthKC675JogM6k04esIQCREuFbuTeuHIhDH8KNSKT+mk0nn3H7r Uv2PydhSC5zngeZ7JBHqnLPeuSayl3FFu9wJ1gAnszdVIqmAcb/re0vVrAt3VJeO2qyU QBg7TBTfpr8qBn4o4dUvOr78nf8I/Ltc4AeXk9JwMcJhFBeWelOh2XPBUNZBdc7rKiVz iwy9B9LCagt0lJqxPD41T5JdaaaNTOXCOuz2Eqc46D6xWIsMjt9Cpk9d3w7VhM3hX3n3 Hkueyu4J4zs7F/ESIjCrbT01RB1YdXtD5syp+utzle3bo5GWgbc7vIiRPMvxwgYj+QWF DrTw==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@broadcom.com header.s=dkimrelay header.b=ogwTU74z; arc=pass (i=1 dkim=pass dkdomain=broadcom.com dmarc=pass fromdomain=broadcom.com); spf=pass (google.com: domain of linux-kernel+bounces-155759-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-155759-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=broadcom.com Return-Path: Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [2604:1380:45e3:2400::1]) by mx.google.com with ESMTPS id b12-20020a170902e94c00b001e2c4ff586fsi10113016pll.48.2024.04.23.12.43.47 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 23 Apr 2024 12:43:47 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-155759-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) client-ip=2604:1380:45e3:2400::1; Authentication-Results: mx.google.com; dkim=pass header.i=@broadcom.com header.s=dkimrelay header.b=ogwTU74z; arc=pass (i=1 dkim=pass dkdomain=broadcom.com dmarc=pass fromdomain=broadcom.com); spf=pass (google.com: domain of linux-kernel+bounces-155759-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-155759-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=broadcom.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sv.mirrors.kernel.org (Postfix) with ESMTPS id E583128254B for ; Tue, 23 Apr 2024 18:42:32 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 41F2413F459; Tue, 23 Apr 2024 18:42:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b="ogwTU74z" Received: from relay.smtp-ext.broadcom.com (relay.smtp-ext.broadcom.com [192.19.144.205]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DB4C4136989; Tue, 23 Apr 2024 18:42:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.19.144.205 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713897735; cv=none; b=oj+T1CPURxGW+kygQ3oc7XwBLCzAUlzchOSNiGHM1gFd8IXl0GA2vB2PARVrQWx9GHkC6UyVx/uneX3k/ei0mBpS010gVPAj1WqVLEgi8QLWyOrdYtgtBl7VHffAaCKCFJmItK8ScgbS8K9imTOFTKyJPe2gNVVJcLrclEhaIwo= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713897735; c=relaxed/simple; bh=sErawwCYvUHt0YL4Bze2yqUWXOhsq1yzz/3NhImhAnw=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=GO9/9LB755/PRobvVfBM6X+OK/b1iz69FSAPe9jkR/gEEoXVQ8/kJsyXTSKZ2gZlK0zJfht+uBggauZKGdPtjPhv6Hm3TY57F9Edi48UY/hBBFH9PXuUjSDjQDZv3X74oqtfMluVMZ1lo3yPhH0Z5UGv3yUuvnfj+8usIp2v/6A= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=broadcom.com; spf=fail smtp.mailfrom=broadcom.com; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b=ogwTU74z; arc=none smtp.client-ip=192.19.144.205 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=broadcom.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=broadcom.com Received: from mail-lvn-it-01.lvn.broadcom.net (mail-lvn-it-01.lvn.broadcom.net [10.36.132.253]) by relay.smtp-ext.broadcom.com (Postfix) with ESMTP id 1F244C0049BB; Tue, 23 Apr 2024 11:33:41 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.11.0 relay.smtp-ext.broadcom.com 1F244C0049BB DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=broadcom.com; s=dkimrelay; t=1713897221; bh=sErawwCYvUHt0YL4Bze2yqUWXOhsq1yzz/3NhImhAnw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ogwTU74zlzGTjH/CcZyypXFgz5gJpWmuWxCY86v1S/fbzF3UPQnYi99Bnt/D8ZweQ 8Rs6EUSuEz4z9G0FhMNwk0Ana4KD5968IBI7bgcEydcNwxnmxYVq+kiOngxzmllUhm q4YuOe9CZWuGO32oyobEq091+ysPqTp/GZDp8mqY= Received: from fainelli-desktop.igp.broadcom.net (fainelli-desktop.dhcp.broadcom.net [10.67.48.245]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail-lvn-it-01.lvn.broadcom.net (Postfix) with ESMTPSA id 41C5518041CAC7; Tue, 23 Apr 2024 11:33:39 -0700 (PDT) From: Florian Fainelli To: netdev@vger.kernel.org Cc: Florian Fainelli , Andrew Lunn , Vladimir Oltean , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Russell King , linux-kernel@vger.kernel.org (open list) Subject: [PATCH net-next 2/8] net: dsa: b53: Introduce b53_adjust_531x5_rgmii() Date: Tue, 23 Apr 2024 11:33:33 -0700 Message-Id: <20240423183339.1368511-3-florian.fainelli@broadcom.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240423183339.1368511-1-florian.fainelli@broadcom.com> References: <20240423183339.1368511-1-florian.fainelli@broadcom.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Takes care of doing the 531x5 switch series specific RGMII programming and is called from b53_adjust_link() to allow the future removal of b53_adjust_link(). Signed-off-by: Florian Fainelli --- drivers/net/dsa/b53/b53_common.c | 84 +++++++++++++++++--------------- 1 file changed, 46 insertions(+), 38 deletions(-) diff --git a/drivers/net/dsa/b53/b53_common.c b/drivers/net/dsa/b53/b53_common.c index bd069439549f..744567c465f7 100644 --- a/drivers/net/dsa/b53/b53_common.c +++ b/drivers/net/dsa/b53/b53_common.c @@ -1266,14 +1266,57 @@ static void b53_adjust_63xx_rgmii(struct dsa_switch *ds, int port, phy_modes(interface)); } +static void b53_adjust_531x5_rgmii(struct dsa_switch *ds, int port, + phy_interface_t interface) +{ + struct b53_device *dev = ds->priv; + u8 rgmii_ctrl = 0, off; + + if (port == dev->imp_port) + off = B53_RGMII_CTRL_IMP; + else + off = B53_RGMII_CTRL_P(port); + + /* Configure the port RGMII clock delay by DLL disabled and + * tx_clk aligned timing (restoring to reset defaults) + */ + b53_read8(dev, B53_CTRL_PAGE, off, &rgmii_ctrl); + rgmii_ctrl &= ~(RGMII_CTRL_DLL_RXC | RGMII_CTRL_DLL_TXC | + RGMII_CTRL_TIMING_SEL); + + /* PHY_INTERFACE_MODE_RGMII_TXID means TX internal delay, make + * sure that we enable the port TX clock internal delay to + * account for this internal delay that is inserted, otherwise + * the switch won't be able to receive correctly. + * + * PHY_INTERFACE_MODE_RGMII means that we are not introducing + * any delay neither on transmission nor reception, so the + * BCM53125 must also be configured accordingly to account for + * the lack of delay and introduce + * + * The BCM53125 switch has its RX clock and TX clock control + * swapped, hence the reason why we modify the TX clock path in + * the "RGMII" case + */ + if (interface == PHY_INTERFACE_MODE_RGMII_TXID) + rgmii_ctrl |= RGMII_CTRL_DLL_TXC; + if (interface == PHY_INTERFACE_MODE_RGMII) + rgmii_ctrl |= RGMII_CTRL_DLL_TXC | RGMII_CTRL_DLL_RXC; + rgmii_ctrl |= RGMII_CTRL_TIMING_SEL; + b53_write8(dev, B53_CTRL_PAGE, off, rgmii_ctrl); + + dev_info(ds->dev, "Configured port %d for %s\n", port, + phy_modes(interface)); +} + static void b53_adjust_link(struct dsa_switch *ds, int port, struct phy_device *phydev) { struct b53_device *dev = ds->priv; struct ethtool_keee *p = &dev->ports[port].eee; - u8 rgmii_ctrl = 0, reg = 0, off; bool tx_pause = false; bool rx_pause = false; + u8 reg = 0; if (!phy_is_pseudo_fixed_link(phydev)) return; @@ -1295,43 +1338,8 @@ static void b53_adjust_link(struct dsa_switch *ds, int port, if (is63xx(dev) && port >= B53_63XX_RGMII0) b53_adjust_63xx_rgmii(ds, port, phydev->interface); - if (is531x5(dev) && phy_interface_is_rgmii(phydev)) { - if (port == dev->imp_port) - off = B53_RGMII_CTRL_IMP; - else - off = B53_RGMII_CTRL_P(port); - - /* Configure the port RGMII clock delay by DLL disabled and - * tx_clk aligned timing (restoring to reset defaults) - */ - b53_read8(dev, B53_CTRL_PAGE, off, &rgmii_ctrl); - rgmii_ctrl &= ~(RGMII_CTRL_DLL_RXC | RGMII_CTRL_DLL_TXC | - RGMII_CTRL_TIMING_SEL); - - /* PHY_INTERFACE_MODE_RGMII_TXID means TX internal delay, make - * sure that we enable the port TX clock internal delay to - * account for this internal delay that is inserted, otherwise - * the switch won't be able to receive correctly. - * - * PHY_INTERFACE_MODE_RGMII means that we are not introducing - * any delay neither on transmission nor reception, so the - * BCM53125 must also be configured accordingly to account for - * the lack of delay and introduce - * - * The BCM53125 switch has its RX clock and TX clock control - * swapped, hence the reason why we modify the TX clock path in - * the "RGMII" case - */ - if (phydev->interface == PHY_INTERFACE_MODE_RGMII_TXID) - rgmii_ctrl |= RGMII_CTRL_DLL_TXC; - if (phydev->interface == PHY_INTERFACE_MODE_RGMII) - rgmii_ctrl |= RGMII_CTRL_DLL_TXC | RGMII_CTRL_DLL_RXC; - rgmii_ctrl |= RGMII_CTRL_TIMING_SEL; - b53_write8(dev, B53_CTRL_PAGE, off, rgmii_ctrl); - - dev_info(ds->dev, "Configured port %d for %s\n", port, - phy_modes(phydev->interface)); - } + if (is531x5(dev) && phy_interface_is_rgmii(phydev)) + b53_adjust_531x5_rgmii(ds, port, phydev->interface); /* configure MII port if necessary */ if (is5325(dev)) { -- 2.34.1