]> www.infradead.org Git - nvme.git/commitdiff
net: dsa: mt7530: refactor MT7530_HWTRAP and MT7530_MHWTRAP
authorArınç ÜNAL <arinc.unal@arinc9.com>
Mon, 22 Apr 2024 07:15:13 +0000 (10:15 +0300)
committerDavid S. Miller <davem@davemloft.net>
Wed, 24 Apr 2024 10:57:02 +0000 (11:57 +0100)
The MT7530_HWTRAP and MT7530_MHWTRAP registers are on MT7530 and MT7531.
It's called hardware trap on MT7530, software trap on MT7531. That's
because some bits of the trap on MT7530 cannot be modified by software
whilst all bits of the trap on MT7531 can. Rename the definitions for them
to MT753X_TRAP and MT753X_MTRAP. Add MT7530 and MT7531 prefixes to the
definitions specific to the switch model.

Remove the extra parentheses from MT7530_XTAL_40MHZ and MT7530_XTAL_20MHZ.

Rename MHWTRAP_PHY0_SEL, MHWTRAP_MANUAL, and MHWTRAP_PHY_ACCESS to be on
par with the "MT7621 Giga Switch Programming Guide v0.3" document.

Make an enumaration for the XTAL frequency. Set the data type of the xtal
variable on mt7531_pll_setup() to it.

Signed-off-by: Arınç ÜNAL <arinc.unal@arinc9.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/dsa/mt7530.c
drivers/net/dsa/mt7530.h

index 39c47499036b14ffb8ac12181e4d4de29c60a420..606516206fb97e3f6e8dae8a4e3bed3072d6ef9d 100644 (file)
@@ -417,23 +417,23 @@ mt7530_setup_port6(struct dsa_switch *ds, phy_interface_t interface)
 
        mt7530_rmw(priv, MT7530_P6ECR, P6_INTF_MODE_MASK, P6_INTF_MODE(1));
 
-       xtal = mt7530_read(priv, MT7530_MHWTRAP) & HWTRAP_XTAL_MASK;
+       xtal = mt7530_read(priv, MT753X_MTRAP) & MT7530_XTAL_MASK;
 
-       if (xtal == HWTRAP_XTAL_25MHZ)
+       if (xtal == MT7530_XTAL_25MHZ)
                ssc_delta = 0x57;
        else
                ssc_delta = 0x87;
 
        if (priv->id == ID_MT7621) {
                /* PLL frequency: 125MHz: 1.0GBit */
-               if (xtal == HWTRAP_XTAL_40MHZ)
+               if (xtal == MT7530_XTAL_40MHZ)
                        ncpo1 = 0x0640;
-               if (xtal == HWTRAP_XTAL_25MHZ)
+               if (xtal == MT7530_XTAL_25MHZ)
                        ncpo1 = 0x0a00;
        } else { /* PLL frequency: 250MHz: 2.0Gbit */
-               if (xtal == HWTRAP_XTAL_40MHZ)
+               if (xtal == MT7530_XTAL_40MHZ)
                        ncpo1 = 0x0c80;
-               if (xtal == HWTRAP_XTAL_25MHZ)
+               if (xtal == MT7530_XTAL_25MHZ)
                        ncpo1 = 0x1400;
        }
 
@@ -456,19 +456,20 @@ mt7530_setup_port6(struct dsa_switch *ds, phy_interface_t interface)
 static void
 mt7531_pll_setup(struct mt7530_priv *priv)
 {
+       enum mt7531_xtal_fsel xtal;
        u32 top_sig;
        u32 hwstrap;
-       u32 xtal;
        u32 val;
 
        val = mt7530_read(priv, MT7531_CREV);
        top_sig = mt7530_read(priv, MT7531_TOP_SIG_SR);
-       hwstrap = mt7530_read(priv, MT7531_HWTRAP);
+       hwstrap = mt7530_read(priv, MT753X_TRAP);
        if ((val & CHIP_REV_M) > 0)
-               xtal = (top_sig & PAD_MCM_SMI_EN) ? HWTRAP_XTAL_FSEL_40MHZ :
-                                                   HWTRAP_XTAL_FSEL_25MHZ;
+               xtal = (top_sig & PAD_MCM_SMI_EN) ? MT7531_XTAL_FSEL_40MHZ :
+                                                   MT7531_XTAL_FSEL_25MHZ;
        else
-               xtal = hwstrap & HWTRAP_XTAL_FSEL_MASK;
+               xtal = (hwstrap & MT7531_XTAL25) ? MT7531_XTAL_FSEL_25MHZ :
+                                                  MT7531_XTAL_FSEL_40MHZ;
 
        /* Step 1 : Disable MT7531 COREPLL */
        val = mt7530_read(priv, MT7531_PLLGP_EN);
@@ -497,13 +498,13 @@ mt7531_pll_setup(struct mt7530_priv *priv)
        usleep_range(25, 35);
 
        switch (xtal) {
-       case HWTRAP_XTAL_FSEL_25MHZ:
+       case MT7531_XTAL_FSEL_25MHZ:
                val = mt7530_read(priv, MT7531_PLLGP_CR0);
                val &= ~RG_COREPLL_SDM_PCW_M;
                val |= 0x140000 << RG_COREPLL_SDM_PCW_S;
                mt7530_write(priv, MT7531_PLLGP_CR0, val);
                break;
-       case HWTRAP_XTAL_FSEL_40MHZ:
+       case MT7531_XTAL_FSEL_40MHZ:
                val = mt7530_read(priv, MT7531_PLLGP_CR0);
                val &= ~RG_COREPLL_SDM_PCW_M;
                val |= 0x190000 << RG_COREPLL_SDM_PCW_S;
@@ -877,20 +878,20 @@ static void mt7530_setup_port5(struct dsa_switch *ds, phy_interface_t interface)
 
        mutex_lock(&priv->reg_mutex);
 
-       val = mt7530_read(priv, MT7530_MHWTRAP);
+       val = mt7530_read(priv, MT753X_MTRAP);
 
-       val |= MHWTRAP_MANUAL | MHWTRAP_P5_MAC_SEL | MHWTRAP_P5_DIS;
-       val &= ~MHWTRAP_P5_RGMII_MODE & ~MHWTRAP_PHY0_SEL;
+       val |= MT7530_CHG_TRAP | MT7530_P5_MAC_SEL | MT7530_P5_DIS;
+       val &= ~MT7530_P5_RGMII_MODE & ~MT7530_P5_PHY0_SEL;
 
        switch (priv->p5_mode) {
        /* MUX_PHY_P0: P0 -> P5 -> SoC MAC */
        case MUX_PHY_P0:
-               val |= MHWTRAP_PHY0_SEL;
+               val |= MT7530_P5_PHY0_SEL;
                fallthrough;
 
        /* MUX_PHY_P4: P4 -> P5 -> SoC MAC */
        case MUX_PHY_P4:
-               val &= ~MHWTRAP_P5_MAC_SEL & ~MHWTRAP_P5_DIS;
+               val &= ~MT7530_P5_MAC_SEL & ~MT7530_P5_DIS;
 
                /* Setup the MAC by default for the cpu port */
                mt7530_write(priv, MT753X_PMCR_P(5), 0x56300);
@@ -898,13 +899,13 @@ static void mt7530_setup_port5(struct dsa_switch *ds, phy_interface_t interface)
 
        /* GMAC5: P5 -> SoC MAC or external PHY */
        default:
-               val &= ~MHWTRAP_P5_DIS;
+               val &= ~MT7530_P5_DIS;
                break;
        }
 
        /* Setup RGMII settings */
        if (phy_interface_mode_is_rgmii(interface)) {
-               val |= MHWTRAP_P5_RGMII_MODE;
+               val |= MT7530_P5_RGMII_MODE;
 
                /* P5 RGMII RX Clock Control: delay setting for 1000M */
                mt7530_write(priv, MT7530_P5RGMIIRXCR, CSR_RGMII_EDGE_ALIGN);
@@ -924,7 +925,7 @@ static void mt7530_setup_port5(struct dsa_switch *ds, phy_interface_t interface)
                             P5_IO_CLK_DRV(1) | P5_IO_DATA_DRV(1));
        }
 
-       mt7530_write(priv, MT7530_MHWTRAP, val);
+       mt7530_write(priv, MT753X_MTRAP, val);
 
        dev_dbg(ds->dev, "Setup P5, HWTRAP=0x%x, mode=%s, phy-mode=%s\n", val,
                mt7530_p5_mode_str(priv->p5_mode), phy_modes(interface));
@@ -2365,7 +2366,7 @@ mt7530_setup(struct dsa_switch *ds)
        }
 
        /* Waiting for MT7530 got to stable */
-       INIT_MT7530_DUMMY_POLL(&p, priv, MT7530_HWTRAP);
+       INIT_MT7530_DUMMY_POLL(&p, priv, MT753X_TRAP);
        ret = readx_poll_timeout(_mt7530_read, &p, val, val != 0,
                                 20, 1000000);
        if (ret < 0) {
@@ -2380,7 +2381,7 @@ mt7530_setup(struct dsa_switch *ds)
                return -ENODEV;
        }
 
-       if ((val & HWTRAP_XTAL_MASK) == HWTRAP_XTAL_20MHZ) {
+       if ((val & MT7530_XTAL_MASK) == MT7530_XTAL_20MHZ) {
                dev_err(priv->dev,
                        "MT7530 with a 20MHz XTAL is not supported!\n");
                return -EINVAL;
@@ -2401,12 +2402,12 @@ mt7530_setup(struct dsa_switch *ds)
                           RD_TAP_MASK, RD_TAP(16));
 
        /* Enable port 6 */
-       val = mt7530_read(priv, MT7530_MHWTRAP);
-       val &= ~MHWTRAP_P6_DIS & ~MHWTRAP_PHY_ACCESS;
-       val |= MHWTRAP_MANUAL;
-       mt7530_write(priv, MT7530_MHWTRAP, val);
+       val = mt7530_read(priv, MT753X_MTRAP);
+       val &= ~MT7530_P6_DIS & ~MT7530_PHY_INDIRECT_ACCESS;
+       val |= MT7530_CHG_TRAP;
+       mt7530_write(priv, MT753X_MTRAP, val);
 
-       if ((val & HWTRAP_XTAL_MASK) == HWTRAP_XTAL_40MHZ)
+       if ((val & MT7530_XTAL_MASK) == MT7530_XTAL_40MHZ)
                mt7530_pll_setup(priv);
 
        mt753x_trap_frames(priv);
@@ -2586,7 +2587,7 @@ mt7531_setup(struct dsa_switch *ds)
        }
 
        /* Waiting for MT7530 got to stable */
-       INIT_MT7530_DUMMY_POLL(&p, priv, MT7530_HWTRAP);
+       INIT_MT7530_DUMMY_POLL(&p, priv, MT753X_TRAP);
        ret = readx_poll_timeout(_mt7530_read, &p, val, val != 0,
                                 20, 1000000);
        if (ret < 0) {
index c6ef20b7bbdd9a9c5e0a7098cc34754b643bec88..1f3aeccc77be86cf52761a534b9d44eb085c0a50 100644 (file)
@@ -495,32 +495,30 @@ enum mt7531_clk_skew {
        MT7531_CLK_SKEW_REVERSE = 3,
 };
 
-/* Register for hw trap status */
-#define MT7530_HWTRAP                  0x7800
-#define  HWTRAP_XTAL_MASK              (BIT(10) | BIT(9))
-#define  HWTRAP_XTAL_25MHZ             (BIT(10) | BIT(9))
-#define  HWTRAP_XTAL_40MHZ             (BIT(10))
-#define  HWTRAP_XTAL_20MHZ             (BIT(9))
-
-#define MT7531_HWTRAP                  0x7800
-#define  HWTRAP_XTAL_FSEL_MASK         BIT(7)
-#define  HWTRAP_XTAL_FSEL_25MHZ                BIT(7)
-#define  HWTRAP_XTAL_FSEL_40MHZ                0
-/* Unique fields of (M)HWSTRAP for MT7531 */
-#define  XTAL_FSEL_S                   7
-#define  XTAL_FSEL_M                   BIT(7)
-#define  PHY_EN                                BIT(6)
-#define  CHG_STRAP                     BIT(8)
-
-/* Register for hw trap modification */
-#define MT7530_MHWTRAP                 0x7804
-#define  MHWTRAP_PHY0_SEL              BIT(20)
-#define  MHWTRAP_MANUAL                        BIT(16)
-#define  MHWTRAP_P5_MAC_SEL            BIT(13)
-#define  MHWTRAP_P6_DIS                        BIT(8)
-#define  MHWTRAP_P5_RGMII_MODE         BIT(7)
-#define  MHWTRAP_P5_DIS                        BIT(6)
-#define  MHWTRAP_PHY_ACCESS            BIT(5)
+/* Register for trap status */
+#define MT753X_TRAP                    0x7800
+#define  MT7530_XTAL_MASK              (BIT(10) | BIT(9))
+#define  MT7530_XTAL_25MHZ             (BIT(10) | BIT(9))
+#define  MT7530_XTAL_40MHZ             BIT(10)
+#define  MT7530_XTAL_20MHZ             BIT(9)
+#define  MT7531_XTAL25                 BIT(7)
+
+/* Register for trap modification */
+#define MT753X_MTRAP                   0x7804
+#define  MT7530_P5_PHY0_SEL            BIT(20)
+#define  MT7530_CHG_TRAP               BIT(16)
+#define  MT7530_P5_MAC_SEL             BIT(13)
+#define  MT7530_P6_DIS                 BIT(8)
+#define  MT7530_P5_RGMII_MODE          BIT(7)
+#define  MT7530_P5_DIS                 BIT(6)
+#define  MT7530_PHY_INDIRECT_ACCESS    BIT(5)
+#define  MT7531_CHG_STRAP              BIT(8)
+#define  MT7531_PHY_EN                 BIT(6)
+
+enum mt7531_xtal_fsel {
+       MT7531_XTAL_FSEL_25MHZ,
+       MT7531_XTAL_FSEL_40MHZ,
+};
 
 /* Register for TOP signal control */
 #define MT7530_TOP_SIG_CTRL            0x7808