| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143 |
- From 7f54cc9772ced2d76ac11832f0ada43798443ac9 Mon Sep 17 00:00:00 2001
- From: Daniel Golle <[email protected]>
- Date: Mon, 3 Apr 2023 02:19:02 +0100
- Subject: [PATCH 13/16] net: dsa: mt7530: split-off common parts from
- mt7531_setup
- MT7988 shares a significant part of the setup function with MT7531.
- Split-off those parts into a shared function which is going to be used
- also by mt7988_setup.
- Signed-off-by: Daniel Golle <[email protected]>
- Reviewed-by: Andrew Lunn <[email protected]>
- Signed-off-by: David S. Miller <[email protected]>
- ---
- drivers/net/dsa/mt7530.c | 99 ++++++++++++++++++++++------------------
- 1 file changed, 55 insertions(+), 44 deletions(-)
- --- a/drivers/net/dsa/mt7530.c
- +++ b/drivers/net/dsa/mt7530.c
- @@ -2348,11 +2348,64 @@ mt7530_setup(struct dsa_switch *ds)
- }
-
- static int
- +mt7531_setup_common(struct dsa_switch *ds)
- +{
- + struct mt7530_priv *priv = ds->priv;
- + struct dsa_port *cpu_dp;
- + int ret, i;
- +
- + /* BPDU to CPU port */
- + dsa_switch_for_each_cpu_port(cpu_dp, ds) {
- + mt7530_rmw(priv, MT7531_CFC, MT7531_CPU_PMAP_MASK,
- + BIT(cpu_dp->index));
- + break;
- + }
- + mt7530_rmw(priv, MT753X_BPC, MT753X_BPDU_PORT_FW_MASK,
- + MT753X_BPDU_CPU_ONLY);
- +
- + /* Enable and reset MIB counters */
- + mt7530_mib_reset(ds);
- +
- + for (i = 0; i < MT7530_NUM_PORTS; i++) {
- + /* Disable forwarding by default on all ports */
- + mt7530_rmw(priv, MT7530_PCR_P(i), PCR_MATRIX_MASK,
- + PCR_MATRIX_CLR);
- +
- + /* Disable learning by default on all ports */
- + mt7530_set(priv, MT7530_PSC_P(i), SA_DIS);
- +
- + mt7530_set(priv, MT7531_DBG_CNT(i), MT7531_DIS_CLR);
- +
- + if (dsa_is_cpu_port(ds, i)) {
- + ret = mt753x_cpu_port_enable(ds, i);
- + if (ret)
- + return ret;
- + } else {
- + mt7530_port_disable(ds, i);
- +
- + /* Set default PVID to 0 on all user ports */
- + mt7530_rmw(priv, MT7530_PPBV1_P(i), G0_PORT_VID_MASK,
- + G0_PORT_VID_DEF);
- + }
- +
- + /* Enable consistent egress tag */
- + mt7530_rmw(priv, MT7530_PVC_P(i), PVC_EG_TAG_MASK,
- + PVC_EG_TAG(MT7530_VLAN_EG_CONSISTENT));
- + }
- +
- + /* Flush the FDB table */
- + ret = mt7530_fdb_cmd(priv, MT7530_FDB_FLUSH, NULL);
- + if (ret < 0)
- + return ret;
- +
- + return 0;
- +}
- +
- +static int
- mt7531_setup(struct dsa_switch *ds)
- {
- struct mt7530_priv *priv = ds->priv;
- struct mt7530_dummy_poll p;
- - struct dsa_port *cpu_dp;
- u32 val, id;
- int ret, i;
-
- @@ -2426,44 +2479,7 @@ mt7531_setup(struct dsa_switch *ds)
- mt7531_ind_c45_phy_write(priv, MT753X_CTRL_PHY_ADDR, MDIO_MMD_VEND2,
- CORE_PLL_GROUP4, val);
-
- - /* BPDU to CPU port */
- - dsa_switch_for_each_cpu_port(cpu_dp, ds) {
- - mt7530_rmw(priv, MT7531_CFC, MT7531_CPU_PMAP_MASK,
- - BIT(cpu_dp->index));
- - break;
- - }
- - mt7530_rmw(priv, MT753X_BPC, MT753X_BPDU_PORT_FW_MASK,
- - MT753X_BPDU_CPU_ONLY);
- -
- - /* Enable and reset MIB counters */
- - mt7530_mib_reset(ds);
- -
- - for (i = 0; i < MT7530_NUM_PORTS; i++) {
- - /* Disable forwarding by default on all ports */
- - mt7530_rmw(priv, MT7530_PCR_P(i), PCR_MATRIX_MASK,
- - PCR_MATRIX_CLR);
- -
- - /* Disable learning by default on all ports */
- - mt7530_set(priv, MT7530_PSC_P(i), SA_DIS);
- -
- - mt7530_set(priv, MT7531_DBG_CNT(i), MT7531_DIS_CLR);
- -
- - if (dsa_is_cpu_port(ds, i)) {
- - ret = mt753x_cpu_port_enable(ds, i);
- - if (ret)
- - return ret;
- - } else {
- - mt7530_port_disable(ds, i);
- -
- - /* Set default PVID to 0 on all user ports */
- - mt7530_rmw(priv, MT7530_PPBV1_P(i), G0_PORT_VID_MASK,
- - G0_PORT_VID_DEF);
- - }
- -
- - /* Enable consistent egress tag */
- - mt7530_rmw(priv, MT7530_PVC_P(i), PVC_EG_TAG_MASK,
- - PVC_EG_TAG(MT7530_VLAN_EG_CONSISTENT));
- - }
- + mt7531_setup_common(ds);
-
- /* Setup VLAN ID 0 for VLAN-unaware bridges */
- ret = mt7530_setup_vlan0(priv);
- @@ -2473,11 +2489,6 @@ mt7531_setup(struct dsa_switch *ds)
- ds->assisted_learning_on_cpu_port = true;
- ds->mtu_enforcement_ingress = true;
-
- - /* Flush the FDB table */
- - ret = mt7530_fdb_cmd(priv, MT7530_FDB_FLUSH, NULL);
- - if (ret < 0)
- - return ret;
- -
- return 0;
- }
-
|