]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
net: stmmac: cores: remove many xxx_SHIFT definitions
authorRussell King (Oracle) <rmk+kernel@armlinux.org.uk>
Thu, 8 Jan 2026 17:36:40 +0000 (17:36 +0000)
committerJakub Kicinski <kuba@kernel.org>
Tue, 13 Jan 2026 02:02:11 +0000 (18:02 -0800)
We have many xxx_SHIFT definitions along side their corresponding
xxx_MASK definitions for the various cores. Manually using the
shift and mask can be error prone, as shown with the dwmac4 RXFSTS
fix patch.

Convert sites that use xxx_SHIFT and xxx_MASK directly to use
FIELD_GET(), FIELD_PREP(), and u32_replace_bits() as appropriate.

Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Link: https://patch.msgid.link/E1vdtw8-00000002Gtu-0Hyu@rmk-PC.armlinux.org.uk
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
18 files changed:
drivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c
drivers/net/ethernet/stmicro/stmmac/dwmac-socfpga.c
drivers/net/ethernet/stmicro/stmmac/dwmac100.h
drivers/net/ethernet/stmicro/stmmac/dwmac1000.h
drivers/net/ethernet/stmicro/stmmac/dwmac1000_core.c
drivers/net/ethernet/stmicro/stmmac/dwmac1000_dma.c
drivers/net/ethernet/stmicro/stmmac/dwmac100_core.c
drivers/net/ethernet/stmicro/stmmac/dwmac100_dma.c
drivers/net/ethernet/stmicro/stmmac/dwmac4.h
drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c
drivers/net/ethernet/stmicro/stmmac/dwmac4_dma.c
drivers/net/ethernet/stmicro/stmmac/dwmac4_dma.h
drivers/net/ethernet/stmicro/stmmac/dwmac4_lib.c
drivers/net/ethernet/stmicro/stmmac/dwmac_dma.h
drivers/net/ethernet/stmicro/stmmac/dwmac_lib.c
drivers/net/ethernet/stmicro/stmmac/dwxgmac2.h
drivers/net/ethernet/stmicro/stmmac/dwxgmac2_core.c
drivers/net/ethernet/stmicro/stmmac/dwxgmac2_dma.c

index 107a7c84ace803f08dc739db9cc4afd9901ad22c..4f2b5bd6cb314fef0cc4d6e2cc1d4a5f75f175e8 100644 (file)
@@ -192,9 +192,8 @@ static void loongson_dwmac_dma_init_channel(struct stmmac_priv *priv,
                value |= DMA_BUS_MODE_MAXPBL;
 
        value |= DMA_BUS_MODE_USP;
-       value &= ~(DMA_BUS_MODE_PBL_MASK | DMA_BUS_MODE_RPBL_MASK);
-       value |= (txpbl << DMA_BUS_MODE_PBL_SHIFT);
-       value |= (rxpbl << DMA_BUS_MODE_RPBL_SHIFT);
+       value = u32_replace_bits(value, txpbl, DMA_BUS_MODE_PBL_MASK);
+       value = u32_replace_bits(value, rxpbl, DMA_BUS_MODE_RPBL_MASK);
 
        /* Set the Fixed burst mode */
        if (dma_cfg->fixed_burst)
index a2b52d2c4eb6f6cc45f4e628dcd2a78db529b6a9..4c8991f3b38d73aa3406682a502d22c1a99634f0 100644 (file)
@@ -367,9 +367,8 @@ static int smtg_crosststamp(ktime_t *device, struct system_counterval_t *system,
                .use_nsecs = false,
        };
 
-       num_snapshot = (readl(ioaddr + XGMAC_TIMESTAMP_STATUS) &
-                       XGMAC_TIMESTAMP_ATSNS_MASK) >>
-                       XGMAC_TIMESTAMP_ATSNS_SHIFT;
+       num_snapshot = FIELD_GET(XGMAC_TIMESTAMP_ATSNS_MASK,
+                                readl(ioaddr + XGMAC_TIMESTAMP_STATUS));
 
        /* Repeat until the timestamps are from the FIFO last segment */
        for (i = 0; i < num_snapshot; i++) {
index 7ab791c8d355fb056a9f92b1747ddeee579a97d7..eae929955ad780ba35a6496e61905a2234a2aadb 100644 (file)
@@ -59,8 +59,7 @@
 #define MAC_CORE_INIT (MAC_CONTROL_HBD)
 
 /* MAC FLOW CTRL defines */
-#define MAC_FLOW_CTRL_PT_MASK  0xffff0000      /* Pause Time Mask */
-#define MAC_FLOW_CTRL_PT_SHIFT 16
+#define MAC_FLOW_CTRL_PT_MASK  GENMASK(31, 16) /* Pause Time Mask */
 #define MAC_FLOW_CTRL_PASS     0x00000004      /* Pass Control Frames */
 #define MAC_FLOW_CTRL_ENABLE   0x00000002      /* Flow Control Enable */
 #define MAC_FLOW_CTRL_PAUSE    0x00000001      /* Flow Control Busy ... */
 /* DMA Bus Mode register defines */
 #define DMA_BUS_MODE_DBO       0x00100000      /* Descriptor Byte Ordering */
 #define DMA_BUS_MODE_BLE       0x00000080      /* Big Endian/Little Endian */
-#define DMA_BUS_MODE_PBL_MASK  0x00003f00      /* Programmable Burst Len */
-#define DMA_BUS_MODE_PBL_SHIFT 8
-#define DMA_BUS_MODE_DSL_MASK  0x0000007c      /* Descriptor Skip Length */
-#define DMA_BUS_MODE_DSL_SHIFT 2       /*   (in DWORDS)      */
+#define DMA_BUS_MODE_PBL_MASK  GENMASK(13, 8)  /* Programmable Burst Len */
+#define DMA_BUS_MODE_DSL_MASK  GENMASK(6, 2)   /* Descriptor Skip Length */
 #define DMA_BUS_MODE_BAR_BUS   0x00000002      /* Bar-Bus Arbitration */
 #define DMA_BUS_MODE_DEFAULT   0x00000000
 
index 697bba641e050b5252407150e41ad2ab0c4238d1..17e013e976073f9dd5a09ad041ea847dc6059f57 100644 (file)
@@ -76,7 +76,6 @@ enum power_event {
 /* SGMII/RGMII status register */
 #define GMAC_RGSMIIIS_LNKMODE          BIT(0)
 #define GMAC_RGSMIIIS_SPEED            GENMASK(2, 1)
-#define GMAC_RGSMIIIS_SPEED_SHIFT      1
 #define GMAC_RGSMIIIS_LNKSTS           BIT(3)
 #define GMAC_RGSMIIIS_JABTO            BIT(4)
 #define GMAC_RGSMIIIS_FALSECARDET      BIT(5)
@@ -133,8 +132,7 @@ enum inter_frame_gap {
 #define GMAC_MII_ADDR_WRITE    0x00000002      /* MII Write */
 #define GMAC_MII_ADDR_BUSY     0x00000001      /* MII Busy */
 /* GMAC FLOW CTRL defines */
-#define GMAC_FLOW_CTRL_PT_MASK 0xffff0000      /* Pause Time Mask */
-#define GMAC_FLOW_CTRL_PT_SHIFT        16
+#define GMAC_FLOW_CTRL_PT_MASK GENMASK(31, 16) /* Pause Time Mask */
 #define GMAC_FLOW_CTRL_UP      0x00000008      /* Unicast pause frame enable */
 #define GMAC_FLOW_CTRL_RFE     0x00000004      /* Rx Flow Control Enable */
 #define GMAC_FLOW_CTRL_TFE     0x00000002      /* Tx Flow Control Enable */
@@ -147,7 +145,6 @@ enum inter_frame_gap {
 #define GMAC_DEBUG_TWCSTS      BIT(22) /* MTL Tx FIFO Write Controller */
 /* MTL Tx FIFO Read Controller Status */
 #define GMAC_DEBUG_TRCSTS_MASK GENMASK(21, 20)
-#define GMAC_DEBUG_TRCSTS_SHIFT        20
 #define GMAC_DEBUG_TRCSTS_IDLE 0
 #define GMAC_DEBUG_TRCSTS_READ 1
 #define GMAC_DEBUG_TRCSTS_TXW  2
@@ -155,7 +152,6 @@ enum inter_frame_gap {
 #define GMAC_DEBUG_TXPAUSED    BIT(19) /* MAC Transmitter in PAUSE */
 /* MAC Transmit Frame Controller Status */
 #define GMAC_DEBUG_TFCSTS_MASK GENMASK(18, 17)
-#define GMAC_DEBUG_TFCSTS_SHIFT        17
 #define GMAC_DEBUG_TFCSTS_IDLE 0
 #define GMAC_DEBUG_TFCSTS_WAIT 1
 #define GMAC_DEBUG_TFCSTS_GEN_PAUSE    2
@@ -163,13 +159,11 @@ enum inter_frame_gap {
 /* MAC GMII or MII Transmit Protocol Engine Status */
 #define GMAC_DEBUG_TPESTS      BIT(16)
 #define GMAC_DEBUG_RXFSTS_MASK GENMASK(9, 8) /* MTL Rx FIFO Fill-level */
-#define GMAC_DEBUG_RXFSTS_SHIFT        8
 #define GMAC_DEBUG_RXFSTS_EMPTY        0
 #define GMAC_DEBUG_RXFSTS_BT   1
 #define GMAC_DEBUG_RXFSTS_AT   2
 #define GMAC_DEBUG_RXFSTS_FULL 3
 #define GMAC_DEBUG_RRCSTS_MASK GENMASK(6, 5) /* MTL Rx FIFO Read Controller */
-#define GMAC_DEBUG_RRCSTS_SHIFT        5
 #define GMAC_DEBUG_RRCSTS_IDLE 0
 #define GMAC_DEBUG_RRCSTS_RDATA        1
 #define GMAC_DEBUG_RRCSTS_RSTAT        2
@@ -177,7 +171,6 @@ enum inter_frame_gap {
 #define GMAC_DEBUG_RWCSTS      BIT(4) /* MTL Rx FIFO Write Controller Active */
 /* MAC Receive Frame Controller FIFO Status */
 #define GMAC_DEBUG_RFCFCSTS_MASK       GENMASK(2, 1)
-#define GMAC_DEBUG_RFCFCSTS_SHIFT      1
 /* MAC GMII or MII Receive Protocol Engine Status */
 #define GMAC_DEBUG_RPESTS      BIT(0)
 
@@ -187,8 +180,7 @@ enum inter_frame_gap {
 #define DMA_BUS_MODE_DSL_MASK  0x0000007c      /* Descriptor Skip Length */
 #define DMA_BUS_MODE_DSL_SHIFT 2               /*   (in DWORDS)      */
 /* Programmable burst length (passed thorugh platform)*/
-#define DMA_BUS_MODE_PBL_MASK  0x00003f00      /* Programmable Burst Len */
-#define DMA_BUS_MODE_PBL_SHIFT 8
+#define DMA_BUS_MODE_PBL_MASK  GENMASK(13, 8)  /* Programmable Burst Len */
 #define DMA_BUS_MODE_ATDS      0x00000080      /* Alternate Descriptor Size */
 
 enum rx_tx_priority_ratio {
@@ -199,8 +191,7 @@ enum rx_tx_priority_ratio {
 
 #define DMA_BUS_MODE_FB                0x00010000      /* Fixed burst */
 #define DMA_BUS_MODE_MB                0x04000000      /* Mixed burst */
-#define DMA_BUS_MODE_RPBL_MASK 0x007e0000      /* Rx-Programmable Burst Len */
-#define DMA_BUS_MODE_RPBL_SHIFT        17
+#define DMA_BUS_MODE_RPBL_MASK GENMASK(22, 17) /* Rx-Programmable Burst Len */
 #define DMA_BUS_MODE_USP       0x00800000
 #define DMA_BUS_MODE_MAXPBL    0x01000000
 #define DMA_BUS_MODE_AAL       0x02000000
@@ -320,7 +311,6 @@ enum rtc_control {
 /* PTP and timestamping registers */
 
 #define GMAC3_X_ATSNS       GENMASK(29, 25)
-#define GMAC3_X_ATSNS_SHIFT 25
 
 #define GMAC_PTP_TCR_ATSFC     BIT(24)
 #define GMAC_PTP_TCR_ATSEN0    BIT(25)
index a2ae136d2c0e9174c5292e36f9078bdfa96bb698..1673a272a27e6d35886fc644e2dfcd97934a6787 100644 (file)
@@ -242,7 +242,7 @@ static void dwmac1000_flow_ctrl(struct mac_device_info *hw, unsigned int duplex,
 
        if (duplex) {
                pr_debug("\tduplex mode: PAUSE %d\n", pause_time);
-               flow |= (pause_time << GMAC_FLOW_CTRL_PT_SHIFT);
+               flow |= FIELD_PREP(GMAC_FLOW_CTRL_PT_MASK, pause_time);
        }
 
        writel(flow, ioaddr + GMAC_FLOW_CTRL);
@@ -378,8 +378,8 @@ static void dwmac1000_debug(struct stmmac_priv *priv, void __iomem *ioaddr,
        if (value & GMAC_DEBUG_TWCSTS)
                x->mmtl_fifo_ctrl++;
        if (value & GMAC_DEBUG_TRCSTS_MASK) {
-               u32 trcsts = (value & GMAC_DEBUG_TRCSTS_MASK)
-                            >> GMAC_DEBUG_TRCSTS_SHIFT;
+               u32 trcsts = FIELD_GET(GMAC_DEBUG_TRCSTS_MASK, value);
+
                if (trcsts == GMAC_DEBUG_TRCSTS_WRITE)
                        x->mtl_tx_fifo_read_ctrl_write++;
                else if (trcsts == GMAC_DEBUG_TRCSTS_TXW)
@@ -392,8 +392,7 @@ static void dwmac1000_debug(struct stmmac_priv *priv, void __iomem *ioaddr,
        if (value & GMAC_DEBUG_TXPAUSED)
                x->mac_tx_in_pause++;
        if (value & GMAC_DEBUG_TFCSTS_MASK) {
-               u32 tfcsts = (value & GMAC_DEBUG_TFCSTS_MASK)
-                             >> GMAC_DEBUG_TFCSTS_SHIFT;
+               u32 tfcsts = FIELD_GET(GMAC_DEBUG_TFCSTS_MASK, value);
 
                if (tfcsts == GMAC_DEBUG_TFCSTS_XFER)
                        x->mac_tx_frame_ctrl_xfer++;
@@ -407,8 +406,7 @@ static void dwmac1000_debug(struct stmmac_priv *priv, void __iomem *ioaddr,
        if (value & GMAC_DEBUG_TPESTS)
                x->mac_gmii_tx_proto_engine++;
        if (value & GMAC_DEBUG_RXFSTS_MASK) {
-               u32 rxfsts = (value & GMAC_DEBUG_RXFSTS_MASK)
-                            >> GMAC_DEBUG_RRCSTS_SHIFT;
+               u32 rxfsts = FIELD_GET(GMAC_DEBUG_RXFSTS_MASK, value);
 
                if (rxfsts == GMAC_DEBUG_RXFSTS_FULL)
                        x->mtl_rx_fifo_fill_level_full++;
@@ -420,8 +418,7 @@ static void dwmac1000_debug(struct stmmac_priv *priv, void __iomem *ioaddr,
                        x->mtl_rx_fifo_fill_level_empty++;
        }
        if (value & GMAC_DEBUG_RRCSTS_MASK) {
-               u32 rrcsts = (value & GMAC_DEBUG_RRCSTS_MASK) >>
-                            GMAC_DEBUG_RRCSTS_SHIFT;
+               u32 rrcsts = FIELD_GET(GMAC_DEBUG_RRCSTS_MASK, value);
 
                if (rrcsts == GMAC_DEBUG_RRCSTS_FLUSH)
                        x->mtl_rx_fifo_read_ctrl_flush++;
@@ -435,8 +432,8 @@ static void dwmac1000_debug(struct stmmac_priv *priv, void __iomem *ioaddr,
        if (value & GMAC_DEBUG_RWCSTS)
                x->mtl_rx_fifo_ctrl_active++;
        if (value & GMAC_DEBUG_RFCFCSTS_MASK)
-               x->mac_rx_frame_ctrl_fifo = (value & GMAC_DEBUG_RFCFCSTS_MASK)
-                                           >> GMAC_DEBUG_RFCFCSTS_SHIFT;
+               x->mac_rx_frame_ctrl_fifo = FIELD_GET(GMAC_DEBUG_RFCFCSTS_MASK,
+                                                     value);
        if (value & GMAC_DEBUG_RPESTS)
                x->mac_gmii_rx_proto_engine++;
 }
@@ -534,7 +531,7 @@ void dwmac1000_timestamp_interrupt(struct stmmac_priv *priv)
        if (!(priv->plat->flags & STMMAC_FLAG_EXT_SNAPSHOT_EN))
                return;
 
-       num_snapshot = (ts_status & GMAC3_X_ATSNS) >> GMAC3_X_ATSNS_SHIFT;
+       num_snapshot = FIELD_GET(GMAC3_X_ATSNS, ts_status);
 
        for (i = 0; i < num_snapshot; i++) {
                read_lock_irqsave(&priv->ptp_lock, flags);
index 5877fec9f6c30ed18cdcf5398816e444e0bd0091..a62f1271b6ea5cdef77af27146dbe19c13dd9c91 100644 (file)
@@ -28,13 +28,10 @@ static void dwmac1000_dma_axi(void __iomem *ioaddr, struct stmmac_axi *axi)
        if (axi->axi_xit_frm)
                value |= DMA_AXI_LPI_XIT_FRM;
 
-       value &= ~DMA_AXI_WR_OSR_LMT;
-       value |= (axi->axi_wr_osr_lmt & DMA_AXI_WR_OSR_LMT_MASK) <<
-                DMA_AXI_WR_OSR_LMT_SHIFT;
-
-       value &= ~DMA_AXI_RD_OSR_LMT;
-       value |= (axi->axi_rd_osr_lmt & DMA_AXI_RD_OSR_LMT_MASK) <<
-                DMA_AXI_RD_OSR_LMT_SHIFT;
+       value = u32_replace_bits(value, axi->axi_wr_osr_lmt,
+                                DMA_AXI_WR_OSR_LMT);
+       value = u32_replace_bits(value, axi->axi_rd_osr_lmt,
+                                DMA_AXI_RD_OSR_LMT);
 
        /* Depending on the UNDEF bit the Master AXI will perform any burst
         * length according to the BLEN programmed (by default all BLEN are
@@ -64,9 +61,8 @@ static void dwmac1000_dma_init_channel(struct stmmac_priv *priv,
        if (dma_cfg->pblx8)
                value |= DMA_BUS_MODE_MAXPBL;
        value |= DMA_BUS_MODE_USP;
-       value &= ~(DMA_BUS_MODE_PBL_MASK | DMA_BUS_MODE_RPBL_MASK);
-       value |= (txpbl << DMA_BUS_MODE_PBL_SHIFT);
-       value |= (rxpbl << DMA_BUS_MODE_RPBL_SHIFT);
+       value = u32_replace_bits(value, txpbl, DMA_BUS_MODE_PBL_MASK);
+       value = u32_replace_bits(value, rxpbl, DMA_BUS_MODE_RPBL_MASK);
 
        /* Set the Fixed burst mode */
        if (dma_cfg->fixed_burst)
index 14e847c0e1a91dcdd572803439b63ff6be2e1c5a..dbc0c1019ed5e85247ede81c57159fd748c90111 100644 (file)
@@ -132,7 +132,7 @@ static void dwmac100_flow_ctrl(struct mac_device_info *hw, unsigned int duplex,
        unsigned int flow = MAC_FLOW_CTRL_ENABLE;
 
        if (duplex)
-               flow |= (pause_time << MAC_FLOW_CTRL_PT_SHIFT);
+               flow |= FIELD_PREP(MAC_FLOW_CTRL_PT_MASK, pause_time);
        writel(flow, ioaddr + MAC_FLOW_CTRL);
 }
 
index 82957db47c991187238da009816251ff371e0b66..12b2bf2d739ab9de22f0550938f6b1af975b403f 100644 (file)
@@ -22,7 +22,8 @@ static void dwmac100_dma_init(void __iomem *ioaddr,
                              struct stmmac_dma_cfg *dma_cfg)
 {
        /* Enable Application Access by writing to DMA CSR0 */
-       writel(DMA_BUS_MODE_DEFAULT | (dma_cfg->pbl << DMA_BUS_MODE_PBL_SHIFT),
+       writel(DMA_BUS_MODE_DEFAULT |
+              FIELD_PREP(DMA_BUS_MODE_PBL_MASK, dma_cfg->pbl),
               ioaddr + DMA_BUS_MODE);
 
        /* Mask interrupts by writing to CSR7 */
index 3da6891b9df753dd37a77d7cf36397fcd72c5414..d797d936aee16e1a05a50e8d7f6e8d5a1c302db2 100644 (file)
@@ -95,7 +95,7 @@
 
 /* MAC Flow Control TX */
 #define GMAC_TX_FLOW_CTRL_TFE          BIT(1)
-#define GMAC_TX_FLOW_CTRL_PT_SHIFT     16
+#define GMAC_TX_FLOW_CTRL_PT_MASK      GENMASK(31, 16)
 
 /*  MAC Interrupt bitmap*/
 #define GMAC_INT_RGSMIIS               BIT(0)
@@ -142,23 +142,19 @@ enum power_event {
 
 /* MAC Debug bitmap */
 #define GMAC_DEBUG_TFCSTS_MASK         GENMASK(18, 17)
-#define GMAC_DEBUG_TFCSTS_SHIFT                17
 #define GMAC_DEBUG_TFCSTS_IDLE         0
 #define GMAC_DEBUG_TFCSTS_WAIT         1
 #define GMAC_DEBUG_TFCSTS_GEN_PAUSE    2
 #define GMAC_DEBUG_TFCSTS_XFER         3
 #define GMAC_DEBUG_TPESTS              BIT(16)
 #define GMAC_DEBUG_RFCFCSTS_MASK       GENMASK(2, 1)
-#define GMAC_DEBUG_RFCFCSTS_SHIFT      1
 #define GMAC_DEBUG_RPESTS              BIT(0)
 
 /* MAC config */
 #define GMAC_CONFIG_ARPEN              BIT(31)
 #define GMAC_CONFIG_SARC               GENMASK(30, 28)
-#define GMAC_CONFIG_SARC_SHIFT         28
 #define GMAC_CONFIG_IPC                        BIT(27)
 #define GMAC_CONFIG_IPG                        GENMASK(26, 24)
-#define GMAC_CONFIG_IPG_SHIFT          24
 #define GMAC_CONFIG_2K                 BIT(22)
 #define GMAC_CONFIG_ACS                        BIT(20)
 #define GMAC_CONFIG_BE                 BIT(18)
@@ -166,7 +162,6 @@ enum power_event {
 #define GMAC_CONFIG_JE                 BIT(16)
 #define GMAC_CONFIG_PS                 BIT(15)
 #define GMAC_CONFIG_FES                        BIT(14)
-#define GMAC_CONFIG_FES_SHIFT          14
 #define GMAC_CONFIG_DM                 BIT(13)
 #define GMAC_CONFIG_LM                 BIT(12)
 #define GMAC_CONFIG_DCRS               BIT(9)
@@ -175,11 +170,9 @@ enum power_event {
 
 /* MAC extended config */
 #define GMAC_CONFIG_EIPG               GENMASK(29, 25)
-#define GMAC_CONFIG_EIPG_SHIFT         25
 #define GMAC_CONFIG_EIPG_EN            BIT(24)
 #define GMAC_CONFIG_HDSMS              GENMASK(22, 20)
-#define GMAC_CONFIG_HDSMS_SHIFT                20
-#define GMAC_CONFIG_HDSMS_256          (0x2 << GMAC_CONFIG_HDSMS_SHIFT)
+#define GMAC_CONFIG_HDSMS_256          FIELD_PREP_CONST(GMAC_CONFIG_HDSMS, 0x2)
 
 /* MAC HW features0 bitmap */
 #define GMAC_HW_FEAT_SAVLANINS         BIT(27)
@@ -242,7 +235,6 @@ enum power_event {
 
 /* MAC HW ADDR regs */
 #define GMAC_HI_DCS                    GENMASK(18, 16)
-#define GMAC_HI_DCS_SHIFT              16
 #define GMAC_HI_REG_AE                 BIT(31)
 
 /* L3/L4 Filters regs */
@@ -257,7 +249,6 @@ enum power_event {
 #define GMAC_L3SAM0                    BIT(2)
 #define GMAC_L3PEN0                    BIT(0)
 #define GMAC_L4DP0                     GENMASK(31, 16)
-#define GMAC_L4DP0_SHIFT               16
 #define GMAC_L4SP0                     GENMASK(15, 0)
 
 /* MAC Timestamp Status */
@@ -314,39 +305,32 @@ static inline u32 mtl_chanx_base_addr(const struct dwmac4_addrs *addrs,
 #define MTL_OP_MODE_TSF                        BIT(1)
 
 #define MTL_OP_MODE_TQS_MASK           GENMASK(24, 16)
-#define MTL_OP_MODE_TQS_SHIFT          16
 
-#define MTL_OP_MODE_TTC_MASK           0x70
-#define MTL_OP_MODE_TTC_SHIFT          4
-
-#define MTL_OP_MODE_TTC_32             0
-#define MTL_OP_MODE_TTC_64             (1 << MTL_OP_MODE_TTC_SHIFT)
-#define MTL_OP_MODE_TTC_96             (2 << MTL_OP_MODE_TTC_SHIFT)
-#define MTL_OP_MODE_TTC_128            (3 << MTL_OP_MODE_TTC_SHIFT)
-#define MTL_OP_MODE_TTC_192            (4 << MTL_OP_MODE_TTC_SHIFT)
-#define MTL_OP_MODE_TTC_256            (5 << MTL_OP_MODE_TTC_SHIFT)
-#define MTL_OP_MODE_TTC_384            (6 << MTL_OP_MODE_TTC_SHIFT)
-#define MTL_OP_MODE_TTC_512            (7 << MTL_OP_MODE_TTC_SHIFT)
+#define MTL_OP_MODE_TTC_MASK           GENMASK(6, 4)
+#define MTL_OP_MODE_TTC_32             FIELD_PREP(MTL_OP_MODE_TTC_MASK, 0)
+#define MTL_OP_MODE_TTC_64             FIELD_PREP(MTL_OP_MODE_TTC_MASK, 1)
+#define MTL_OP_MODE_TTC_96             FIELD_PREP(MTL_OP_MODE_TTC_MASK, 2)
+#define MTL_OP_MODE_TTC_128            FIELD_PREP(MTL_OP_MODE_TTC_MASK, 3)
+#define MTL_OP_MODE_TTC_192            FIELD_PREP(MTL_OP_MODE_TTC_MASK, 4)
+#define MTL_OP_MODE_TTC_256            FIELD_PREP(MTL_OP_MODE_TTC_MASK, 5)
+#define MTL_OP_MODE_TTC_384            FIELD_PREP(MTL_OP_MODE_TTC_MASK, 6)
+#define MTL_OP_MODE_TTC_512            FIELD_PREP(MTL_OP_MODE_TTC_MASK, 7)
 
 #define MTL_OP_MODE_RQS_MASK           GENMASK(29, 20)
-#define MTL_OP_MODE_RQS_SHIFT          20
 
 #define MTL_OP_MODE_RFD_MASK           GENMASK(19, 14)
-#define MTL_OP_MODE_RFD_SHIFT          14
 
 #define MTL_OP_MODE_RFA_MASK           GENMASK(13, 8)
-#define MTL_OP_MODE_RFA_SHIFT          8
 
 #define MTL_OP_MODE_EHFC               BIT(7)
 #define MTL_OP_MODE_DIS_TCP_EF         BIT(6)
 
 #define MTL_OP_MODE_RTC_MASK           GENMASK(1, 0)
-#define MTL_OP_MODE_RTC_SHIFT          0
 
-#define MTL_OP_MODE_RTC_32             (1 << MTL_OP_MODE_RTC_SHIFT)
-#define MTL_OP_MODE_RTC_64             0
-#define MTL_OP_MODE_RTC_96             (2 << MTL_OP_MODE_RTC_SHIFT)
-#define MTL_OP_MODE_RTC_128            (3 << MTL_OP_MODE_RTC_SHIFT)
+#define MTL_OP_MODE_RTC_32             FIELD_PREP(MTL_OP_MODE_RTC_MASK, 1)
+#define MTL_OP_MODE_RTC_64             FIELD_PREP(MTL_OP_MODE_RTC_MASK, 0)
+#define MTL_OP_MODE_RTC_96             FIELD_PREP(MTL_OP_MODE_RTC_MASK, 2)
+#define MTL_OP_MODE_RTC_128            FIELD_PREP(MTL_OP_MODE_RTC_MASK, 3)
 
 /* MTL ETS Control register */
 #define MTL_ETS_CTRL_BASE_ADDR         0x00000d10
@@ -451,7 +435,6 @@ static inline u32 mtl_low_credx_base_addr(const struct dwmac4_addrs *addrs,
 
 /* MTL debug: Tx FIFO Read Controller Status */
 #define MTL_DEBUG_TRCSTS_MASK          GENMASK(2, 1)
-#define MTL_DEBUG_TRCSTS_SHIFT         1
 #define MTL_DEBUG_TRCSTS_IDLE          0
 #define MTL_DEBUG_TRCSTS_READ          1
 #define MTL_DEBUG_TRCSTS_TXW           2
@@ -465,7 +448,6 @@ static inline u32 mtl_low_credx_base_addr(const struct dwmac4_addrs *addrs,
 #define MTL_DEBUG_RXFSTS_AT            2
 #define MTL_DEBUG_RXFSTS_FULL          3
 #define MTL_DEBUG_RRCSTS_MASK          GENMASK(2, 1)
-#define MTL_DEBUG_RRCSTS_SHIFT         1
 #define MTL_DEBUG_RRCSTS_IDLE          0
 #define MTL_DEBUG_RRCSTS_RDATA         1
 #define MTL_DEBUG_RRCSTS_RSTAT         2
@@ -490,7 +472,6 @@ static inline u32 mtl_low_credx_base_addr(const struct dwmac4_addrs *addrs,
 #define GMAC_PHYIF_CTRLSTATUS_SMIDRXS          BIT(4)
 #define GMAC_PHYIF_CTRLSTATUS_LNKMOD           BIT(16)
 #define GMAC_PHYIF_CTRLSTATUS_SPEED            GENMASK(18, 17)
-#define GMAC_PHYIF_CTRLSTATUS_SPEED_SHIFT      17
 #define GMAC_PHYIF_CTRLSTATUS_LNKSTS           BIT(19)
 #define GMAC_PHYIF_CTRLSTATUS_JABTO            BIT(20)
 #define GMAC_PHYIF_CTRLSTATUS_FALSECARDET      BIT(21)
index bd5f48d0b9fc42b2d76f73c2023e367833800bad..2176039dd8af8f3e463de587aad01343eca47341 100644 (file)
@@ -572,8 +572,8 @@ static void dwmac4_flow_ctrl(struct mac_device_info *hw, unsigned int duplex,
                        flow = GMAC_TX_FLOW_CTRL_TFE;
 
                        if (duplex)
-                               flow |=
-                               (pause_time << GMAC_TX_FLOW_CTRL_PT_SHIFT);
+                               flow |= FIELD_PREP(GMAC_TX_FLOW_CTRL_PT_MASK,
+                                                  pause_time);
 
                        writel(flow, ioaddr + GMAC_QX_TX_FLOW_CTRL(queue));
                }
@@ -681,8 +681,8 @@ static void dwmac4_debug(struct stmmac_priv *priv, void __iomem *ioaddr,
                if (value & MTL_DEBUG_TWCSTS)
                        x->mmtl_fifo_ctrl++;
                if (value & MTL_DEBUG_TRCSTS_MASK) {
-                       u32 trcsts = (value & MTL_DEBUG_TRCSTS_MASK)
-                                    >> MTL_DEBUG_TRCSTS_SHIFT;
+                       u32 trcsts = FIELD_GET(MTL_DEBUG_TRCSTS_MASK, value);
+
                        if (trcsts == MTL_DEBUG_TRCSTS_WRITE)
                                x->mtl_tx_fifo_read_ctrl_write++;
                        else if (trcsts == MTL_DEBUG_TRCSTS_TXW)
@@ -712,8 +712,7 @@ static void dwmac4_debug(struct stmmac_priv *priv, void __iomem *ioaddr,
                                x->mtl_rx_fifo_fill_level_empty++;
                }
                if (value & MTL_DEBUG_RRCSTS_MASK) {
-                       u32 rrcsts = (value & MTL_DEBUG_RRCSTS_MASK) >>
-                                    MTL_DEBUG_RRCSTS_SHIFT;
+                       u32 rrcsts = FIELD_GET(MTL_DEBUG_RRCSTS_MASK, value);
 
                        if (rrcsts == MTL_DEBUG_RRCSTS_FLUSH)
                                x->mtl_rx_fifo_read_ctrl_flush++;
@@ -732,8 +731,7 @@ static void dwmac4_debug(struct stmmac_priv *priv, void __iomem *ioaddr,
        value = readl(ioaddr + GMAC_DEBUG);
 
        if (value & GMAC_DEBUG_TFCSTS_MASK) {
-               u32 tfcsts = (value & GMAC_DEBUG_TFCSTS_MASK)
-                             >> GMAC_DEBUG_TFCSTS_SHIFT;
+               u32 tfcsts = FIELD_GET(GMAC_DEBUG_TFCSTS_MASK, value);
 
                if (tfcsts == GMAC_DEBUG_TFCSTS_XFER)
                        x->mac_tx_frame_ctrl_xfer++;
@@ -747,8 +745,8 @@ static void dwmac4_debug(struct stmmac_priv *priv, void __iomem *ioaddr,
        if (value & GMAC_DEBUG_TPESTS)
                x->mac_gmii_tx_proto_engine++;
        if (value & GMAC_DEBUG_RFCFCSTS_MASK)
-               x->mac_rx_frame_ctrl_fifo = (value & GMAC_DEBUG_RFCFCSTS_MASK)
-                                           >> GMAC_DEBUG_RFCFCSTS_SHIFT;
+               x->mac_rx_frame_ctrl_fifo = FIELD_GET(GMAC_DEBUG_RFCFCSTS_MASK,
+                                                     value);
        if (value & GMAC_DEBUG_RPESTS)
                x->mac_gmii_rx_proto_engine++;
 }
@@ -769,8 +767,7 @@ static void dwmac4_sarc_configure(void __iomem *ioaddr, int val)
 {
        u32 value = readl(ioaddr + GMAC_CONFIG);
 
-       value &= ~GMAC_CONFIG_SARC;
-       value |= val << GMAC_CONFIG_SARC_SHIFT;
+       value = u32_replace_bits(value, val, GMAC_CONFIG_SARC);
 
        writel(value, ioaddr + GMAC_CONFIG);
 }
@@ -878,9 +875,9 @@ static int dwmac4_config_l4_filter(struct mac_device_info *hw, u32 filter_no,
        writel(value, ioaddr + GMAC_L3L4_CTRL(filter_no));
 
        if (sa) {
-               value = match & GMAC_L4SP0;
+               value = FIELD_PREP(GMAC_L4SP0, match);
        } else {
-               value = (match << GMAC_L4DP0_SHIFT) & GMAC_L4DP0;
+               value = FIELD_PREP(GMAC_L4DP0, match);
        }
 
        writel(value, ioaddr + GMAC_L4_ADDR(filter_no));
index 7b513324cfb08174cf6ec4eafb92357cdfb787e2..7036beccfc85d2829841c6e67a136a6a4c0ad6f9 100644 (file)
@@ -27,13 +27,10 @@ static void dwmac4_dma_axi(void __iomem *ioaddr, struct stmmac_axi *axi)
        if (axi->axi_xit_frm)
                value |= DMA_AXI_LPI_XIT_FRM;
 
-       value &= ~DMA_AXI_WR_OSR_LMT;
-       value |= (axi->axi_wr_osr_lmt & DMA_AXI_OSR_MAX) <<
-                DMA_AXI_WR_OSR_LMT_SHIFT;
-
-       value &= ~DMA_AXI_RD_OSR_LMT;
-       value |= (axi->axi_rd_osr_lmt & DMA_AXI_OSR_MAX) <<
-                DMA_AXI_RD_OSR_LMT_SHIFT;
+       value = u32_replace_bits(value, axi->axi_wr_osr_lmt,
+                                DMA_AXI_WR_OSR_LMT);
+       value = u32_replace_bits(value, axi->axi_rd_osr_lmt,
+                                DMA_AXI_RD_OSR_LMT);
 
        /* Depending on the UNDEF bit the Master AXI will perform any burst
         * length according to the BLEN programmed (by default all BLEN are
@@ -55,7 +52,7 @@ static void dwmac4_dma_init_rx_chan(struct stmmac_priv *priv,
        u32 rxpbl = dma_cfg->rxpbl ?: dma_cfg->pbl;
 
        value = readl(ioaddr + DMA_CHAN_RX_CONTROL(dwmac4_addrs, chan));
-       value = value | (rxpbl << DMA_BUS_MODE_RPBL_SHIFT);
+       value = value | FIELD_PREP(DMA_BUS_MODE_RPBL_MASK, rxpbl);
        writel(value, ioaddr + DMA_CHAN_RX_CONTROL(dwmac4_addrs, chan));
 
        if (IS_ENABLED(CONFIG_ARCH_DMA_ADDR_T_64BIT) && likely(dma_cfg->eame))
@@ -76,7 +73,7 @@ static void dwmac4_dma_init_tx_chan(struct stmmac_priv *priv,
        u32 txpbl = dma_cfg->txpbl ?: dma_cfg->pbl;
 
        value = readl(ioaddr + DMA_CHAN_TX_CONTROL(dwmac4_addrs, chan));
-       value = value | (txpbl << DMA_BUS_MODE_PBL_SHIFT);
+       value = value | FIELD_PREP(DMA_BUS_MODE_PBL, txpbl);
 
        /* Enable OSP to get best performance */
        value |= DMA_CONTROL_OSP;
@@ -151,10 +148,9 @@ static void dwmac4_dma_init(void __iomem *ioaddr,
 
        value = readl(ioaddr + DMA_BUS_MODE);
 
-       if (dma_cfg->multi_msi_en) {
-               value &= ~DMA_BUS_MODE_INTM_MASK;
-               value |= (DMA_BUS_MODE_INTM_MODE1 << DMA_BUS_MODE_INTM_SHIFT);
-       }
+       if (dma_cfg->multi_msi_en)
+               value = u32_replace_bits(value, DMA_BUS_MODE_INTM_MODE1,
+                                        DMA_BUS_MODE_INTM_MASK);
 
        if (dma_cfg->dche)
                value |= DMA_BUS_MODE_DCHE;
@@ -264,7 +260,7 @@ static void dwmac4_dma_rx_chan_op_mode(struct stmmac_priv *priv,
        }
 
        mtl_rx_op &= ~MTL_OP_MODE_RQS_MASK;
-       mtl_rx_op |= rqs << MTL_OP_MODE_RQS_SHIFT;
+       mtl_rx_op |= FIELD_PREP(MTL_OP_MODE_RQS_MASK, rqs);
 
        /* Enable flow control only if each channel gets 4 KiB or more FIFO and
         * only if channel is not an AVB channel.
@@ -295,11 +291,10 @@ static void dwmac4_dma_rx_chan_op_mode(struct stmmac_priv *priv,
                        break;
                }
 
-               mtl_rx_op &= ~MTL_OP_MODE_RFD_MASK;
-               mtl_rx_op |= rfd << MTL_OP_MODE_RFD_SHIFT;
-
-               mtl_rx_op &= ~MTL_OP_MODE_RFA_MASK;
-               mtl_rx_op |= rfa << MTL_OP_MODE_RFA_SHIFT;
+               mtl_rx_op = u32_replace_bits(mtl_rx_op, rfd,
+                                            MTL_OP_MODE_RFD_MASK);
+               mtl_rx_op = u32_replace_bits(mtl_rx_op, rfa,
+                                            MTL_OP_MODE_RFA_MASK);
        }
 
        writel(mtl_rx_op, ioaddr + MTL_CHAN_RX_OP_MODE(dwmac4_addrs, channel));
@@ -354,8 +349,8 @@ static void dwmac4_dma_tx_chan_op_mode(struct stmmac_priv *priv,
                mtl_tx_op |= MTL_OP_MODE_TXQEN;
        else
                mtl_tx_op |= MTL_OP_MODE_TXQEN_AV;
-       mtl_tx_op &= ~MTL_OP_MODE_TQS_MASK;
-       mtl_tx_op |= tqs << MTL_OP_MODE_TQS_SHIFT;
+
+       mtl_tx_op = u32_replace_bits(mtl_tx_op, tqs, MTL_OP_MODE_TQS_MASK);
 
        writel(mtl_tx_op, ioaddr +  MTL_CHAN_TX_OP_MODE(dwmac4_addrs, channel));
 }
@@ -496,8 +491,7 @@ static void dwmac4_set_bfsize(struct stmmac_priv *priv, void __iomem *ioaddr,
        const struct dwmac4_addrs *dwmac4_addrs = priv->plat->dwmac4_addrs;
        u32 value = readl(ioaddr + DMA_CHAN_RX_CONTROL(dwmac4_addrs, chan));
 
-       value &= ~DMA_RBSZ_MASK;
-       value |= (bfsize << DMA_RBSZ_SHIFT) & DMA_RBSZ_MASK;
+       value = u32_replace_bits(value, bfsize, DMA_RBSZ_MASK);
 
        writel(value, ioaddr + DMA_CHAN_RX_CONTROL(dwmac4_addrs, chan));
 }
index f27126f055515b73f825295890e71c81aad4542f..42d93cafe7b6066df439eb007311c6027986ad54 100644 (file)
 /* DMA Bus Mode bitmap */
 #define DMA_BUS_MODE_DCHE              BIT(19)
 #define DMA_BUS_MODE_INTM_MASK         GENMASK(17, 16)
-#define DMA_BUS_MODE_INTM_SHIFT                16
 #define DMA_BUS_MODE_INTM_MODE1                0x1
 #define DMA_BUS_MODE_SFT_RESET         BIT(0)
 
 /* DMA SYS Bus Mode bitmap */
 #define DMA_BUS_MODE_SPH               BIT(24)
 #define DMA_BUS_MODE_PBL               BIT(16)
-#define DMA_BUS_MODE_PBL_SHIFT         16
-#define DMA_BUS_MODE_RPBL_SHIFT                16
+#define DMA_BUS_MODE_RPBL_MASK         GENMASK(21, 16)
 #define DMA_BUS_MODE_MB                        BIT(14)
 #define DMA_BUS_MODE_FB                        BIT(0)
 
 #define DMA_AXI_EN_LPI                 BIT(31)
 #define DMA_AXI_LPI_XIT_FRM            BIT(30)
 #define DMA_AXI_WR_OSR_LMT             GENMASK(27, 24)
-#define DMA_AXI_WR_OSR_LMT_SHIFT       24
 #define DMA_AXI_RD_OSR_LMT             GENMASK(19, 16)
-#define DMA_AXI_RD_OSR_LMT_SHIFT       16
-
-#define DMA_AXI_OSR_MAX                        0xf
-#define DMA_AXI_MAX_OSR_LIMIT ((DMA_AXI_OSR_MAX << DMA_AXI_WR_OSR_LMT_SHIFT) | \
-                               (DMA_AXI_OSR_MAX << DMA_AXI_RD_OSR_LMT_SHIFT))
 
 #define DMA_SYS_BUS_MB                 BIT(14)
 #define DMA_AXI_1KBBE                  BIT(13)
@@ -137,7 +129,6 @@ static inline u32 dma_chanx_base_addr(const struct dwmac4_addrs *addrs,
 /* DMA Rx Channel X Control register defines */
 #define DMA_CONTROL_SR                 BIT(0)
 #define DMA_RBSZ_MASK                  GENMASK(14, 1)
-#define DMA_RBSZ_SHIFT                 1
 
 /* Interrupt status per channel */
 #define DMA_CHAN_STATUS_REB            GENMASK(21, 19)
index 57c03d491774475a963850c58c50e16972cbef6c..c098047a3bff8ab29987dde34764c15770cdba60 100644 (file)
@@ -234,7 +234,7 @@ void stmmac_dwmac4_set_mac_addr(void __iomem *ioaddr, const u8 addr[6],
         * bit that has no effect on the High Reg 0 where the bit 31 (MO)
         * is RO.
         */
-       data |= (STMMAC_CHAN0 << GMAC_HI_DCS_SHIFT);
+       data |= FIELD_PREP(GMAC_HI_DCS, STMMAC_CHAN0);
        writel(data | GMAC_HI_REG_AE, ioaddr + high);
        data = (addr[3] << 24) | (addr[2] << 16) | (addr[1] << 8) | addr[0];
        writel(data, ioaddr + low);
index 054ecb20ce3f68bce5da3efaf36acf33e430d3f0..0b379987d3afe09c6f1aa096ad59e958d6740187 100644 (file)
@@ -59,11 +59,7 @@ static inline u32 dma_chan_base_addr(u32 base, u32 chan)
 #define DMA_AXI_EN_LPI         BIT(31)
 #define DMA_AXI_LPI_XIT_FRM    BIT(30)
 #define DMA_AXI_WR_OSR_LMT     GENMASK(23, 20)
-#define DMA_AXI_WR_OSR_LMT_SHIFT       20
-#define DMA_AXI_WR_OSR_LMT_MASK        0xf
 #define DMA_AXI_RD_OSR_LMT     GENMASK(19, 16)
-#define DMA_AXI_RD_OSR_LMT_SHIFT       16
-#define DMA_AXI_RD_OSR_LMT_MASK        0xf
 
 #define DMA_AXI_OSR_MAX                0xf
 #define DMA_AXI_MAX_OSR_LIMIT ((DMA_AXI_OSR_MAX << DMA_AXI_WR_OSR_LMT_SHIFT) | \
@@ -123,10 +119,8 @@ static inline u32 dma_chan_base_addr(u32 base, u32 chan)
 #define DMA_STATUS_EB_MASK     0x00380000      /* Error Bits Mask */
 #define DMA_STATUS_EB_TX_ABORT 0x00080000      /* Error Bits - TX Abort */
 #define DMA_STATUS_EB_RX_ABORT 0x00100000      /* Error Bits - RX Abort */
-#define DMA_STATUS_TS_MASK     0x00700000      /* Transmit Process State */
-#define DMA_STATUS_TS_SHIFT    20
-#define DMA_STATUS_RS_MASK     0x000e0000      /* Receive Process State */
-#define DMA_STATUS_RS_SHIFT    17
+#define DMA_STATUS_TS_MASK     GENMASK(22, 20) /* Transmit Process State */
+#define DMA_STATUS_RS_MASK     GENMASK(19, 17) /* Receive Process State */
 #define DMA_STATUS_NIS 0x00010000      /* Normal Interrupt Summary */
 #define DMA_STATUS_AIS 0x00008000      /* Abnormal Interrupt Summary */
 #define DMA_STATUS_ERI 0x00004000      /* Early Receive Interrupt */
index 97a803d68e3a2f120beaa7c3254748cf404236df..a0383f9486c2db08bff5a62006857c335721966a 100644 (file)
@@ -97,10 +97,7 @@ void dwmac_dma_stop_rx(struct stmmac_priv *priv, void __iomem *ioaddr, u32 chan)
 #ifdef DWMAC_DMA_DEBUG
 static void show_tx_process_state(unsigned int status)
 {
-       unsigned int state;
-       state = (status & DMA_STATUS_TS_MASK) >> DMA_STATUS_TS_SHIFT;
-
-       switch (state) {
+       switch (FIELD_GET(DMA_STATUS_TS_MASK, status)) {
        case 0:
                pr_debug("- TX (Stopped): Reset or Stop command\n");
                break;
@@ -128,10 +125,7 @@ static void show_tx_process_state(unsigned int status)
 
 static void show_rx_process_state(unsigned int status)
 {
-       unsigned int state;
-       state = (status & DMA_STATUS_RS_MASK) >> DMA_STATUS_RS_SHIFT;
-
-       switch (state) {
+       switch (FIELD_GET(DMA_STATUS_RS_MASK, status)) {
        case 0:
                pr_debug("- RX (Stopped): Reset or Stop command\n");
                break;
index b07d99a3df1b47e6db3a5d7a296132e94716b63d..b5c91c109c4354cfdbf357b823650b45591a9a08 100644 (file)
 #define XGMAC_CONFIG_SS_2500           (0x6 << XGMAC_CONFIG_SS_OFF)
 #define XGMAC_CONFIG_SS_10_MII         (0x7 << XGMAC_CONFIG_SS_OFF)
 #define XGMAC_CONFIG_SARC              GENMASK(22, 20)
-#define XGMAC_CONFIG_SARC_SHIFT                20
 #define XGMAC_CONFIG_JD                        BIT(16)
 #define XGMAC_CONFIG_TE                        BIT(0)
 #define XGMAC_CORE_INIT_TX             (XGMAC_CONFIG_JD)
 #define XGMAC_RX_CONFIG                        0x00000004
 #define XGMAC_CONFIG_ARPEN             BIT(31)
 #define XGMAC_CONFIG_GPSL              GENMASK(29, 16)
-#define XGMAC_CONFIG_GPSL_SHIFT                16
 #define XGMAC_CONFIG_HDSMS             GENMASK(14, 12)
 #define XGMAC_CONFIG_HDSMS_SHIFT       12
-#define XGMAC_CONFIG_HDSMS_256         (0x2 << XGMAC_CONFIG_HDSMS_SHIFT)
+#define XGMAC_CONFIG_HDSMS_256         FIELD_PREP(XGMAC_CONFIG_HDSMS, 0x2)
 #define XGMAC_CONFIG_S2KP              BIT(11)
 #define XGMAC_CONFIG_LM                        BIT(10)
 #define XGMAC_CONFIG_IPC               BIT(9)
 #define XGMAC_CONFIG_CST               BIT(2)
 #define XGMAC_CONFIG_ACS               BIT(1)
 #define XGMAC_CONFIG_RE                        BIT(0)
-#define XGMAC_CORE_INIT_RX             (XGMAC_CONFIG_GPSLCE | XGMAC_CONFIG_WD | \
-                                        (XGMAC_JUMBO_LEN << XGMAC_CONFIG_GPSL_SHIFT))
+#define XGMAC_CORE_INIT_RX             (XGMAC_CONFIG_GPSLCE | \
+                                        XGMAC_CONFIG_WD | \
+                                        FIELD_PREP(XGMAC_CONFIG_GPSL, \
+                                                   XGMAC_JUMBO_LEN))
 #define XGMAC_PACKET_FILTER            0x00000008
 #define XGMAC_FILTER_RA                        BIT(31)
 #define XGMAC_FILTER_IPFE              BIT(20)
@@ -90,7 +90,6 @@
 #define XGMAC_INT_DEFAULT_EN           (XGMAC_LPIIE | XGMAC_PMTIE)
 #define XGMAC_Qx_TX_FLOW_CTRL(x)       (0x00000070 + (x) * 4)
 #define XGMAC_PT                       GENMASK(31, 16)
-#define XGMAC_PT_SHIFT                 16
 #define XGMAC_TFE                      BIT(1)
 #define XGMAC_RX_FLOW_CTRL             0x00000090
 #define XGMAC_RFE                      BIT(0)
 #define XGMAC_ADDR_MAX                 32
 #define XGMAC_AE                       BIT(31)
 #define XGMAC_DCS                      GENMASK(19, 16)
-#define XGMAC_DCS_SHIFT                        16
 #define XGMAC_ADDRx_LOW(x)             (0x00000304 + (x) * 0x8)
 #define XGMAC_L3L4_ADDR_CTRL           0x00000c00
 #define XGMAC_IDDR                     GENMASK(16, 8)
-#define XGMAC_IDDR_SHIFT               8
-#define XGMAC_IDDR_FNUM                        4
+#define XGMAC_IDDR_FNUM_MASK           GENMASK(7, 4)   /* FNUM within IDDR */
+#define XGMAC_IDDR_REG_MASK            GENMASK(3, 0)   /* REG within IDDR */
 #define XGMAC_TT                       BIT(1)
 #define XGMAC_XB                       BIT(0)
 #define XGMAC_L3L4_DATA                        0x00000c04
 #define XGMAC_L3PEN0                   BIT(0)
 #define XGMAC_L4_ADDR                  0x1
 #define XGMAC_L4DP0                    GENMASK(31, 16)
-#define XGMAC_L4DP0_SHIFT              16
 #define XGMAC_L4SP0                    GENMASK(15, 0)
 #define XGMAC_L3_ADDR0                 0x4
 #define XGMAC_L3_ADDR1                 0x5
 #define XGMAC_RSS_DATA                 0x00000c8c
 #define XGMAC_TIMESTAMP_STATUS         0x00000d20
 #define XGMAC_TIMESTAMP_ATSNS_MASK     GENMASK(29, 25)
-#define XGMAC_TIMESTAMP_ATSNS_SHIFT    25
 #define XGMAC_TXTSC                    BIT(15)
 #define XGMAC_TXTIMESTAMP_NSEC         0x00000d30
 #define XGMAC_TXTSSTSLO                        GENMASK(30, 0)
 #define XGMAC_DPP_DISABLE              BIT(0)
 #define XGMAC_MTL_TXQ_OPMODE(x)                (0x00001100 + (0x80 * (x)))
 #define XGMAC_TQS                      GENMASK(25, 16)
-#define XGMAC_TQS_SHIFT                        16
 #define XGMAC_Q2TCMAP                  GENMASK(10, 8)
-#define XGMAC_Q2TCMAP_SHIFT            8
 #define XGMAC_TTC                      GENMASK(6, 4)
-#define XGMAC_TTC_SHIFT                        4
 #define XGMAC_TXQEN                    GENMASK(3, 2)
-#define XGMAC_TXQEN_SHIFT              2
 #define XGMAC_TSF                      BIT(1)
 #define XGMAC_MTL_TCx_ETS_CONTROL(x)   (0x00001110 + (0x80 * (x)))
 #define XGMAC_MTL_TCx_QUANTUM_WEIGHT(x)        (0x00001118 + (0x80 * (x)))
 #define XGMAC_ETS                      (0x2 << 0)
 #define XGMAC_MTL_RXQ_OPMODE(x)                (0x00001140 + (0x80 * (x)))
 #define XGMAC_RQS                      GENMASK(25, 16)
-#define XGMAC_RQS_SHIFT                        16
 #define XGMAC_EHFC                     BIT(7)
 #define XGMAC_RSF                      BIT(5)
 #define XGMAC_RTC                      GENMASK(1, 0)
-#define XGMAC_RTC_SHIFT                        0
 #define XGMAC_MTL_RXQ_FLOW_CONTROL(x)  (0x00001150 + (0x80 * (x)))
 #define XGMAC_RFD                      GENMASK(31, 17)
-#define XGMAC_RFD_SHIFT                        17
 #define XGMAC_RFA                      GENMASK(15, 1)
-#define XGMAC_RFA_SHIFT                        1
 #define XGMAC_MTL_QINTEN(x)            (0x00001170 + (0x80 * (x)))
 #define XGMAC_RXOIE                    BIT(16)
 #define XGMAC_MTL_QINT_STATUS(x)       (0x00001174 + (0x80 * (x)))
 #define XGMAC_SWR                      BIT(0)
 #define XGMAC_DMA_SYSBUS_MODE          0x00003004
 #define XGMAC_WR_OSR_LMT               GENMASK(29, 24)
-#define XGMAC_WR_OSR_LMT_SHIFT         24
 #define XGMAC_RD_OSR_LMT               GENMASK(21, 16)
-#define XGMAC_RD_OSR_LMT_SHIFT         16
 #define XGMAC_EN_LPI                   BIT(15)
 #define XGMAC_LPI_XIT_PKT              BIT(14)
 #define XGMAC_AAL                      DMA_AXI_AAL
 #define XGMAC_DMA_CH_TX_CONTROL(x)     (0x00003104 + (0x80 * (x)))
 #define XGMAC_EDSE                     BIT(28)
 #define XGMAC_TxPBL                    GENMASK(21, 16)
-#define XGMAC_TxPBL_SHIFT              16
 #define XGMAC_TSE                      BIT(12)
 #define XGMAC_OSP                      BIT(4)
 #define XGMAC_TXST                     BIT(0)
 #define XGMAC_DMA_CH_RX_CONTROL(x)     (0x00003108 + (0x80 * (x)))
 #define XGMAC_RxPBL                    GENMASK(21, 16)
-#define XGMAC_RxPBL_SHIFT              16
 #define XGMAC_RBSZ                     GENMASK(14, 1)
-#define XGMAC_RBSZ_SHIFT               1
 #define XGMAC_RXST                     BIT(0)
 #define XGMAC_DMA_CH_TxDESC_HADDR(x)   (0x00003110 + (0x80 * (x)))
 #define XGMAC_DMA_CH_TxDESC_LADDR(x)   (0x00003114 + (0x80 * (x)))
index b40b3ea50e2536a9ee9dcd46d1b2e19c80fa025e..311ff9753ac824968cb6ef835ceb867b7b3ded20 100644 (file)
@@ -369,7 +369,7 @@ static void dwxgmac2_flow_ctrl(struct mac_device_info *hw, unsigned int duplex,
                        u32 value = XGMAC_TFE;
 
                        if (duplex)
-                               value |= pause_time << XGMAC_PT_SHIFT;
+                               value |= FIELD_PREP(XGMAC_PT, pause_time);
 
                        writel(value, ioaddr + XGMAC_Qx_TX_FLOW_CTRL(i));
                }
@@ -1226,8 +1226,7 @@ static void dwxgmac2_sarc_configure(void __iomem *ioaddr, int val)
 {
        u32 value = readl(ioaddr + XGMAC_TX_CONFIG);
 
-       value &= ~XGMAC_CONFIG_SARC;
-       value |= val << XGMAC_CONFIG_SARC_SHIFT;
+       value = u32_replace_bits(value, val, XGMAC_CONFIG_SARC);
 
        writel(value, ioaddr + XGMAC_TX_CONFIG);
 }
@@ -1247,14 +1246,16 @@ static int dwxgmac2_filter_read(struct mac_device_info *hw, u32 filter_no,
                                u8 reg, u32 *data)
 {
        void __iomem *ioaddr = hw->pcsr;
-       u32 value;
+       u32 value, iddr;
        int ret;
 
        ret = dwxgmac2_filter_wait(hw);
        if (ret)
                return ret;
 
-       value = ((filter_no << XGMAC_IDDR_FNUM) | reg) << XGMAC_IDDR_SHIFT;
+       iddr = FIELD_PREP(XGMAC_IDDR_FNUM_MASK, filter_no) |
+              FIELD_PREP(XGMAC_IDDR_REG_MASK, reg);
+       value = FIELD_PREP(XGMAC_IDDR, iddr);
        value |= XGMAC_TT | XGMAC_XB;
        writel(value, ioaddr + XGMAC_L3L4_ADDR_CTRL);
 
@@ -1270,7 +1271,7 @@ static int dwxgmac2_filter_write(struct mac_device_info *hw, u32 filter_no,
                                 u8 reg, u32 data)
 {
        void __iomem *ioaddr = hw->pcsr;
-       u32 value;
+       u32 value, iddr;
        int ret;
 
        ret = dwxgmac2_filter_wait(hw);
@@ -1279,7 +1280,9 @@ static int dwxgmac2_filter_write(struct mac_device_info *hw, u32 filter_no,
 
        writel(data, ioaddr + XGMAC_L3L4_DATA);
 
-       value = ((filter_no << XGMAC_IDDR_FNUM) | reg) << XGMAC_IDDR_SHIFT;
+       iddr = FIELD_PREP(XGMAC_IDDR_FNUM_MASK, filter_no) |
+              FIELD_PREP(XGMAC_IDDR_REG_MASK, reg);
+       value = FIELD_PREP(XGMAC_IDDR, iddr);
        value |= XGMAC_XB;
        writel(value, ioaddr + XGMAC_L3L4_ADDR_CTRL);
 
@@ -1388,13 +1391,13 @@ static int dwxgmac2_config_l4_filter(struct mac_device_info *hw, u32 filter_no,
                return ret;
 
        if (sa) {
-               value = match & XGMAC_L4SP0;
+               value = FIELD_PREP(XGMAC_L4SP0, match);
 
                ret = dwxgmac2_filter_write(hw, filter_no, XGMAC_L4_ADDR, value);
                if (ret)
                        return ret;
        } else {
-               value = (match << XGMAC_L4DP0_SHIFT) & XGMAC_L4DP0;
+               value = FIELD_PREP(XGMAC_L4DP0, match);
 
                ret = dwxgmac2_filter_write(hw, filter_no, XGMAC_L4_ADDR, value);
                if (ret)
index cc1bdc0975d5b6c8c1a778ff6992901ab40c1645..9bb547f3c3c96a91a55dc482b03ac437056a20df 100644 (file)
@@ -55,8 +55,7 @@ static void dwxgmac2_dma_init_rx_chan(struct stmmac_priv *priv,
        u32 value;
 
        value = readl(ioaddr + XGMAC_DMA_CH_RX_CONTROL(chan));
-       value &= ~XGMAC_RxPBL;
-       value |= (rxpbl << XGMAC_RxPBL_SHIFT) & XGMAC_RxPBL;
+       value = u32_replace_bits(value, rxpbl, XGMAC_RxPBL);
        writel(value, ioaddr + XGMAC_DMA_CH_RX_CONTROL(chan));
 
        writel(upper_32_bits(phy), ioaddr + XGMAC_DMA_CH_RxDESC_HADDR(chan));
@@ -72,9 +71,7 @@ static void dwxgmac2_dma_init_tx_chan(struct stmmac_priv *priv,
        u32 value;
 
        value = readl(ioaddr + XGMAC_DMA_CH_TX_CONTROL(chan));
-       value &= ~XGMAC_TxPBL;
-       value |= (txpbl << XGMAC_TxPBL_SHIFT) & XGMAC_TxPBL;
-       value |= XGMAC_OSP;
+       value = u32_replace_bits(value, txpbl, XGMAC_TxPBL);
        writel(value, ioaddr + XGMAC_DMA_CH_TX_CONTROL(chan));
 
        writel(upper_32_bits(phy), ioaddr + XGMAC_DMA_CH_TxDESC_HADDR(chan));
@@ -90,13 +87,8 @@ static void dwxgmac2_dma_axi(void __iomem *ioaddr, struct stmmac_axi *axi)
        if (axi->axi_xit_frm)
                value |= XGMAC_LPI_XIT_PKT;
 
-       value &= ~XGMAC_WR_OSR_LMT;
-       value |= (axi->axi_wr_osr_lmt << XGMAC_WR_OSR_LMT_SHIFT) &
-               XGMAC_WR_OSR_LMT;
-
-       value &= ~XGMAC_RD_OSR_LMT;
-       value |= (axi->axi_rd_osr_lmt << XGMAC_RD_OSR_LMT_SHIFT) &
-               XGMAC_RD_OSR_LMT;
+       value = u32_replace_bits(value, axi->axi_wr_osr_lmt, XGMAC_WR_OSR_LMT);
+       value = u32_replace_bits(value, axi->axi_rd_osr_lmt, XGMAC_RD_OSR_LMT);
 
        if (!axi->axi_fb)
                value |= XGMAC_UNDEF;
@@ -127,23 +119,24 @@ static void dwxgmac2_dma_rx_mode(struct stmmac_priv *priv, void __iomem *ioaddr,
 {
        u32 value = readl(ioaddr + XGMAC_MTL_RXQ_OPMODE(channel));
        unsigned int rqs = fifosz / 256 - 1;
+       unsigned int rtc;
 
        if (mode == SF_DMA_MODE) {
                value |= XGMAC_RSF;
        } else {
                value &= ~XGMAC_RSF;
-               value &= ~XGMAC_RTC;
 
                if (mode <= 64)
-                       value |= 0x0 << XGMAC_RTC_SHIFT;
+                       rtc = 0x0;
                else if (mode <= 96)
-                       value |= 0x2 << XGMAC_RTC_SHIFT;
+                       rtc = 0x2;
                else
-                       value |= 0x3 << XGMAC_RTC_SHIFT;
+                       rtc = 0x3;
+
+               value = u32_replace_bits(value, rtc, XGMAC_RTC);
        }
 
-       value &= ~XGMAC_RQS;
-       value |= (rqs << XGMAC_RQS_SHIFT) & XGMAC_RQS;
+       value = u32_replace_bits(value, rqs, XGMAC_RQS);
 
        if ((fifosz >= 4096) && (qmode != MTL_QUEUE_AVB)) {
                u32 flow = readl(ioaddr + XGMAC_MTL_RXQ_FLOW_CONTROL(channel));
@@ -172,11 +165,8 @@ static void dwxgmac2_dma_rx_mode(struct stmmac_priv *priv, void __iomem *ioaddr,
                        break;
                }
 
-               flow &= ~XGMAC_RFD;
-               flow |= rfd << XGMAC_RFD_SHIFT;
-
-               flow &= ~XGMAC_RFA;
-               flow |= rfa << XGMAC_RFA_SHIFT;
+               flow = u32_replace_bits(flow, rfd, XGMAC_RFD);
+               flow = u32_replace_bits(flow, rfa, XGMAC_RFA);
 
                writel(flow, ioaddr + XGMAC_MTL_RXQ_FLOW_CONTROL(channel));
        }
@@ -189,40 +179,41 @@ static void dwxgmac2_dma_tx_mode(struct stmmac_priv *priv, void __iomem *ioaddr,
 {
        u32 value = readl(ioaddr + XGMAC_MTL_TXQ_OPMODE(channel));
        unsigned int tqs = fifosz / 256 - 1;
+       unsigned int ttc, txqen;
 
        if (mode == SF_DMA_MODE) {
                value |= XGMAC_TSF;
        } else {
                value &= ~XGMAC_TSF;
-               value &= ~XGMAC_TTC;
 
                if (mode <= 64)
-                       value |= 0x0 << XGMAC_TTC_SHIFT;
+                       ttc = 0x0;
                else if (mode <= 96)
-                       value |= 0x2 << XGMAC_TTC_SHIFT;
+                       ttc = 0x2;
                else if (mode <= 128)
-                       value |= 0x3 << XGMAC_TTC_SHIFT;
+                       ttc = 0x3;
                else if (mode <= 192)
-                       value |= 0x4 << XGMAC_TTC_SHIFT;
+                       ttc = 0x4;
                else if (mode <= 256)
-                       value |= 0x5 << XGMAC_TTC_SHIFT;
+                       ttc = 0x5;
                else if (mode <= 384)
-                       value |= 0x6 << XGMAC_TTC_SHIFT;
+                       ttc = 0x6;
                else
-                       value |= 0x7 << XGMAC_TTC_SHIFT;
+                       ttc = 0x7;
+
+               value = u32_replace_bits(value, ttc, XGMAC_TTC);
        }
 
        /* Use static TC to Queue mapping */
-       value |= (channel << XGMAC_Q2TCMAP_SHIFT) & XGMAC_Q2TCMAP;
+       value |= FIELD_PREP(XGMAC_Q2TCMAP, channel);
 
-       value &= ~XGMAC_TXQEN;
        if (qmode != MTL_QUEUE_AVB)
-               value |= 0x2 << XGMAC_TXQEN_SHIFT;
+               txqen = 0x2;
        else
-               value |= 0x1 << XGMAC_TXQEN_SHIFT;
+               txqen = 0x1;
 
-       value &= ~XGMAC_TQS;
-       value |= (tqs << XGMAC_TQS_SHIFT) & XGMAC_TQS;
+       value = u32_replace_bits(value, txqen, XGMAC_TXQEN);
+       value = u32_replace_bits(value, tqs, XGMAC_TQS);
 
        writel(value, ioaddr +  XGMAC_MTL_TXQ_OPMODE(channel));
 }
@@ -526,16 +517,17 @@ static void dwxgmac2_qmode(struct stmmac_priv *priv, void __iomem *ioaddr,
 {
        u32 value = readl(ioaddr + XGMAC_MTL_TXQ_OPMODE(channel));
        u32 flow = readl(ioaddr + XGMAC_RX_FLOW_CTRL);
+       unsigned int txqen;
 
-       value &= ~XGMAC_TXQEN;
        if (qmode != MTL_QUEUE_AVB) {
-               value |= 0x2 << XGMAC_TXQEN_SHIFT;
+               txqen = 0x2;
                writel(0, ioaddr + XGMAC_MTL_TCx_ETS_CONTROL(channel));
        } else {
-               value |= 0x1 << XGMAC_TXQEN_SHIFT;
+               txqen = 0x1;
                writel(flow & (~XGMAC_RFE), ioaddr + XGMAC_RX_FLOW_CTRL);
        }
 
+       value = u32_replace_bits(value, txqen, XGMAC_TXQEN);
        writel(value, ioaddr +  XGMAC_MTL_TXQ_OPMODE(channel));
 }
 
@@ -545,8 +537,7 @@ static void dwxgmac2_set_bfsize(struct stmmac_priv *priv, void __iomem *ioaddr,
        u32 value;
 
        value = readl(ioaddr + XGMAC_DMA_CH_RX_CONTROL(chan));
-       value &= ~XGMAC_RBSZ;
-       value |= bfsize << XGMAC_RBSZ_SHIFT;
+       value = u32_replace_bits(value, bfsize, XGMAC_RBSZ);
        writel(value, ioaddr + XGMAC_DMA_CH_RX_CONTROL(chan));
 }