Received: by 2002:a05:7412:1e0b:b0:fc:a2b0:25d7 with SMTP id kr11csp1026040rdb; Fri, 16 Feb 2024 03:08:09 -0800 (PST) X-Forwarded-Encrypted: i=3; AJvYcCUsoNrHP4o4JINttUCgzvBw4Oq9MapiBb6jnlv+7LEJ0WZjw/ZmstLCjAk2+CZsvYQeJzJoiUTYIdRojzK7CEN7sEirxOg4Rv2ctoT/lA== X-Google-Smtp-Source: AGHT+IEqN5BF/Oc+CSBwO01Jip7V+PoA9qnSS8r0VzBmbAeggBskU9GZtUmIEZ65PRxKvR5w2okB X-Received: by 2002:a05:6102:2424:b0:470:2437:391e with SMTP id l4-20020a056102242400b004702437391emr2730965vsi.6.1708081689202; Fri, 16 Feb 2024 03:08:09 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1708081689; cv=pass; d=google.com; s=arc-20160816; b=1FWncFKVh58sRUiXzNop8zki2RABfMQV5TxYN0A+VgPq3mIQ8u6BAUcpp4Oc0OL0QK q8Ojj0gaNiGOvcYPjjg2rUasXtzj5Legkesop0QDEPR9stdOu+EmN/+7EoGiEqiXGVTe z8+s/xNdswxLM9nVYjwAD+kxERvX6dnGZvdbcpyxVTDbaMOKcFo/0B/Qso9QlLaDJIYD GBs/L0Wc9WTVGVn14CBM9vrpi6UPDkXnVHEXyTlAL2qb3UwWBYGeeEjXvrxOg2ch6CUK UetmuFoLYTj3fFRaCybif7Ul29CmIhNkh3YdUs7q/6djO6Yq0b7iZWMuPoU+95AvQ4G1 2hWw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=reply-to:cc:to:in-reply-to:references:message-id :content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:subject:date:from:dkim-signature; bh=qIzEFlH6tYf3kxvRpoFe19I6y15/TS7x6hzPIBM8miw=; fh=xNlE86XmqkSplYYMvvd74gD/RbF2aUqtHPBgVCVc3H8=; b=dnnr6FAOhOQUYZdiTU6kGiVwV7tKH94+RE9+/7B+y2F9VIu60SdK6v1EVdm5Q0Wvrr U5f5brxi2yFtVZB8DqiuXSj7SSQ6RLwzO6VzlcEa3wuBjSwpEgyCHHB5EICs2N6wrXFo cK766uJySLPey4QhU+fq0I5d6CvhjAkDz2rexOUDY/dBkVwj6nOYSVOR6pLfDiDG2HpS v6e6klvtiErbou0q7iM9w+s/ZB36s9GR/o7K1MFl9olcRiN0eGahMm1yozuHhBPtTPmH PsQqLhWZk3BrHqz/St5B21ULjMKskyvCHHWQUmQK4tv2ru48DdZ7/fN8uYRZG+pDe30W ClxA==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b="P/XlO3pL"; arc=pass (i=1 dkim=pass dkdomain=kernel.org); spf=pass (google.com: domain of linux-kernel+bounces-68497-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-68497-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org. [2604:1380:45d1:ec00::1]) by mx.google.com with ESMTPS id z20-20020ac84554000000b0042db60cb41bsi3323763qtn.593.2024.02.16.03.08.08 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 16 Feb 2024 03:08:09 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-68497-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) client-ip=2604:1380:45d1:ec00::1; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b="P/XlO3pL"; arc=pass (i=1 dkim=pass dkdomain=kernel.org); spf=pass (google.com: domain of linux-kernel+bounces-68497-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-68497-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org 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 ny.mirrors.kernel.org (Postfix) with ESMTPS id 9115B1C21C90 for ; Fri, 16 Feb 2024 11:08:08 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 3928A60ED6; Fri, 16 Feb 2024 11:05:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="P/XlO3pL" Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 C3AB458AC1; Fri, 16 Feb 2024 11:05:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708081544; cv=none; b=j10MqBAvSpLm5+FxGmkoTmsh4QoYUZlBS0N2NY1QMcC2oUp8711feCyZG2eCfwB1kC/icbLIN0QszgLIauwWjoz9XmQn4gmAa8ItCSbVOdUre1p5dqP+R0XwrKLNJdpypk54D8clOieQhkJYPkQMn3sBXXgwPDq+OWDszH606yE= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708081544; c=relaxed/simple; bh=td9ArVknXuzyTB8FXUOyI13YbxdPw2V6dLjZ0FXccDI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=u4jr5FyOjCaJGofAm7YbtCpXoF+lWk6D6Id1QlXqdXGvJOowUxpnGxj/rTyp1c66HB+JUrJnzC5UD0U+QfWEmoTKNLv1yxr8BnF0H+LxcFLEaTf5LqoT1M9BRfkZfbH5emjZxaUNjmxxM2NreaU6yRGTlh6CWauEoFLi902rqTo= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=P/XlO3pL; arc=none smtp.client-ip=10.30.226.201 Received: by smtp.kernel.org (Postfix) with ESMTPS id 5AED7C4166A; Fri, 16 Feb 2024 11:05:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1708081544; bh=td9ArVknXuzyTB8FXUOyI13YbxdPw2V6dLjZ0FXccDI=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=P/XlO3pL9pqeVzP2EWfZwOcV2OYLrhF091DQWn2r3Xh05ASkcpAfRXC7K8LqTd6qG YkTF1FpLRBkWHwrJ1HaojsFK8zM+6lrD2wmtut0YQXyXHklYO8HNzoUP/sAscb//+A NsNAUWFQ+TWc/vuduAHUKPNCISoqyYMmT2cQOL4yx//uPdNd7H3qnh0YLzO7iuzpTW Ep4dx1OTUVvkydxCTIQC3N7Hjx+Lv7b0NQ6mYc/+RsmxQCNHJ9vOfhqgoEyIvluVIX 5hwLey8r9HLbVY6hI2BPmfO801DakYk/2xpzqb4CCruR5iIbuf7ogDrkPfPm8+bgr9 NLzUr0QNmei4g== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 491E8C48BF0; Fri, 16 Feb 2024 11:05:44 +0000 (UTC) From: =?utf-8?b?QXLEsW7DpyDDnE5BTA==?= via B4 Relay Date: Fri, 16 Feb 2024 14:05:36 +0300 Subject: [PATCH net-next v2 8/8] net: dsa: mt7530: simplify link operations and force link down on all ports Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit Message-Id: <20240216-for-netnext-mt7530-improvements-3-v2-8-094cae3ff23b@arinc9.com> References: <20240216-for-netnext-mt7530-improvements-3-v2-0-094cae3ff23b@arinc9.com> In-Reply-To: <20240216-for-netnext-mt7530-improvements-3-v2-0-094cae3ff23b@arinc9.com> To: Daniel Golle , DENG Qingfang , Sean Wang , Andrew Lunn , Florian Fainelli , Vladimir Oltean , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Matthias Brugger , AngeloGioacchino Del Regno , Russell King Cc: mithat.guner@xeront.com, erkin.bozoglu@xeront.com, Bartel Eerdekens , netdev@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, =?utf-8?q?Ar=C4=B1n=C3=A7_=C3=9CNAL?= X-Mailer: b4 0.12.4 X-Developer-Signature: v=1; a=ed25519-sha256; t=1708081540; l=5194; i=arinc.unal@arinc9.com; s=arinc9-patatt; h=from:subject:message-id; bh=3PnEpSD/b9sLXrH/ouiQE55BJAdoplXfAHA3Ch+TLls=; b=mSaVHEzCy4ejGcjX96SnPb/qltroYfKxJok9jX4XC6EEKUgprqU+eyIwYXvYzGj3FGdeQTMiz RZCb+leeyYiAYQTbPcfrjcTZTQSfLKSqIKcXmsLArrQw1X2bfF2KpZu X-Developer-Key: i=arinc.unal@arinc9.com; a=ed25519; pk=VmvgMWwm73yVIrlyJYvGtnXkQJy9CvbaeEqPQO9Z4kA= X-Endpoint-Received: by B4 Relay for arinc.unal@arinc9.com/arinc9-patatt with auth_id=115 X-Original-From: =?utf-8?b?QXLEsW7DpyDDnE5BTA==?= Reply-To: From: Arınç ÜNAL Currently, the link operations for switch MACs are scattered across port_enable, port_disable, phylink_mac_config, phylink_mac_link_up, and phylink_mac_link_down. port_enable and port_disable clears the link settings. Move that to mt7530_setup() and mt7531_setup_common() which set up the switches. This way, the link settings are cleared on all ports at setup, and then only once with phylink_mac_link_down() when a link goes down. Enable force mode at setup to apply the force part of the link settings. This ensures that only active ports will have their link up. Now that the bit for setting the port on force mode is done on mt7530_setup() and mt7531_setup_common(), get rid of PMCR_FORCE_MODE_ID() which helped determine which bit to use for the switch model. The "MT7621 Giga Switch Programming Guide v0.3", "MT7531 Reference Manual for Development Board v1.0", and "MT7988A Wi-Fi 7 Generation Router Platform: Datasheet (Open Version) v0.1" documents show that these bits are enabled at reset: PMCR_IFG_XMIT(1) (not part of PMCR_LINK_SETTINGS_MASK) PMCR_MAC_MODE (not part of PMCR_LINK_SETTINGS_MASK) PMCR_TX_EN PMCR_RX_EN PMCR_BACKOFF_EN (not part of PMCR_LINK_SETTINGS_MASK) PMCR_BACKPR_EN (not part of PMCR_LINK_SETTINGS_MASK) PMCR_TX_FC_EN PMCR_RX_FC_EN These bits also don't exist on the MT7530_PMCR_P(6) register of the switch on the MT7988 SoC: PMCR_IFG_XMIT() PMCR_MAC_MODE PMCR_BACKOFF_EN PMCR_BACKPR_EN Remove the setting of the bits not part of PMCR_LINK_SETTINGS_MASK on phylink_mac_config as they're already set. Suggested-by: Vladimir Oltean Signed-off-by: Arınç ÜNAL --- drivers/net/dsa/mt7530.c | 26 +++++++++++++------------- drivers/net/dsa/mt7530.h | 2 -- 2 files changed, 13 insertions(+), 15 deletions(-) diff --git a/drivers/net/dsa/mt7530.c b/drivers/net/dsa/mt7530.c index 5c8ad41ce8cd..1ae11b180d54 100644 --- a/drivers/net/dsa/mt7530.c +++ b/drivers/net/dsa/mt7530.c @@ -1018,7 +1018,6 @@ mt7530_port_enable(struct dsa_switch *ds, int port, priv->ports[port].enable = true; mt7530_rmw(priv, MT7530_PCR_P(port), PCR_MATRIX_MASK, priv->ports[port].pm); - mt7530_clear(priv, MT7530_PMCR_P(port), PMCR_LINK_SETTINGS_MASK); mutex_unlock(&priv->reg_mutex); @@ -1038,7 +1037,6 @@ mt7530_port_disable(struct dsa_switch *ds, int port) priv->ports[port].enable = false; mt7530_rmw(priv, MT7530_PCR_P(port), PCR_MATRIX_MASK, PCR_MATRIX_CLR); - mt7530_clear(priv, MT7530_PMCR_P(port), PMCR_LINK_SETTINGS_MASK); mutex_unlock(&priv->reg_mutex); } @@ -2257,6 +2255,12 @@ mt7530_setup(struct dsa_switch *ds) mt7530_mib_reset(ds); for (i = 0; i < MT7530_NUM_PORTS; i++) { + /* Clear link settings and enable force mode to force link down + * on all ports until they're enabled later. + */ + mt7530_rmw(priv, MT7530_PMCR_P(i), PMCR_LINK_SETTINGS_MASK | + PMCR_FORCE_MODE, PMCR_FORCE_MODE); + /* Disable forwarding by default on all ports */ mt7530_rmw(priv, MT7530_PCR_P(i), PCR_MATRIX_MASK, PCR_MATRIX_CLR); @@ -2359,6 +2363,12 @@ mt7531_setup_common(struct dsa_switch *ds) UNU_FFP_MASK); for (i = 0; i < MT7530_NUM_PORTS; i++) { + /* Clear link settings and enable force mode to force link down + * on all ports until they're enabled later. + */ + mt7530_rmw(priv, MT7530_PMCR_P(i), PMCR_LINK_SETTINGS_MASK | + MT7531_FORCE_MODE, MT7531_FORCE_MODE); + /* Disable forwarding by default on all ports */ mt7530_rmw(priv, MT7530_PCR_P(i), PCR_MATRIX_MASK, PCR_MATRIX_CLR); @@ -2657,23 +2667,13 @@ mt753x_phylink_mac_config(struct dsa_switch *ds, int port, unsigned int mode, const struct phylink_link_state *state) { struct mt7530_priv *priv = ds->priv; - u32 mcr_cur, mcr_new; if ((port == 5 || port == 6) && priv->info->mac_port_config) priv->info->mac_port_config(ds, port, mode, state->interface); - mcr_cur = mt7530_read(priv, MT7530_PMCR_P(port)); - mcr_new = mcr_cur; - mcr_new &= ~PMCR_LINK_SETTINGS_MASK; - mcr_new |= PMCR_IFG_XMIT(1) | PMCR_MAC_MODE | PMCR_BACKOFF_EN | - PMCR_BACKPR_EN | PMCR_FORCE_MODE_ID(priv->id); - /* Are we connected to external phy */ if (port == 5 && dsa_is_user_port(ds, 5)) - mcr_new |= PMCR_EXT_PHY; - - if (mcr_new != mcr_cur) - mt7530_write(priv, MT7530_PMCR_P(port), mcr_new); + mt7530_set(priv, MT7530_PMCR_P(port), PMCR_EXT_PHY); } static void mt753x_phylink_mac_link_down(struct dsa_switch *ds, int port, diff --git a/drivers/net/dsa/mt7530.h b/drivers/net/dsa/mt7530.h index 8a8144868eaa..a71166e0a7fc 100644 --- a/drivers/net/dsa/mt7530.h +++ b/drivers/net/dsa/mt7530.h @@ -304,8 +304,6 @@ enum mt7530_vlan_port_acc_frm { MT7531_FORCE_DPX | \ MT7531_FORCE_RX_FC | \ MT7531_FORCE_TX_FC) -#define PMCR_FORCE_MODE_ID(id) ((((id) == ID_MT7531) || ((id) == ID_MT7988)) ? \ - MT7531_FORCE_MODE : PMCR_FORCE_MODE) #define PMCR_LINK_SETTINGS_MASK (PMCR_TX_EN | PMCR_FORCE_SPEED_1000 | \ PMCR_RX_EN | PMCR_FORCE_SPEED_100 | \ PMCR_TX_FC_EN | PMCR_RX_FC_EN | \ -- 2.40.1