#define        GMAC_PCS_IRQ_DEFAULT    (GMAC_INT_RGSMIIS | GMAC_INT_PCS_LINK | \
                                 GMAC_INT_PCS_ANE)
 
-#define        GMAC_INT_DEFAULT_MASK   GMAC_INT_PMT_EN
+#define        GMAC_INT_DEFAULT_MASK   (GMAC_INT_PMT_EN | GMAC_INT_LPI_EN)
 
 enum dwmac4_irq_status {
        time_stamp_irq = 0x00001000,
        mmc_tx_irq = 0x00000400,
        mmc_rx_irq = 0x00000200,
        mmc_irq = 0x00000100,
+       lpi_irq = 0x00000020,
        pmt_irq = 0x00000010,
 };
 
 #define GMAC4_LPI_CTRL_STATUS_LPITXA   BIT(19) /* Enable LPI TX Automate */
 #define GMAC4_LPI_CTRL_STATUS_PLS      BIT(17) /* PHY Link Status */
 #define GMAC4_LPI_CTRL_STATUS_LPIEN    BIT(16) /* LPI Enable */
+#define GMAC4_LPI_CTRL_STATUS_RLPIEX   BIT(3) /* Receive LPI Exit */
+#define GMAC4_LPI_CTRL_STATUS_RLPIEN   BIT(2) /* Receive LPI Entry */
+#define GMAC4_LPI_CTRL_STATUS_TLPIEX   BIT(1) /* Transmit LPI Exit */
+#define GMAC4_LPI_CTRL_STATUS_TLPIEN   BIT(0) /* Transmit LPI Entry */
 
 /* MAC Debug bitmap */
 #define GMAC_DEBUG_TFCSTS_MASK         GENMASK(18, 17)
 
                x->irq_receive_pmt_irq_n++;
        }
 
+       /* MAC tx/rx EEE LPI entry/exit interrupts */
+       if (intr_status & lpi_irq) {
+               /* Clear LPI interrupt by reading MAC_LPI_Control_Status */
+               u32 status = readl(ioaddr + GMAC4_LPI_CTRL_STATUS);
+
+               if (status & GMAC4_LPI_CTRL_STATUS_TLPIEN) {
+                       ret |= CORE_IRQ_TX_PATH_IN_LPI_MODE;
+                       x->irq_tx_path_in_lpi_mode_n++;
+               }
+               if (status & GMAC4_LPI_CTRL_STATUS_TLPIEX) {
+                       ret |= CORE_IRQ_TX_PATH_EXIT_LPI_MODE;
+                       x->irq_tx_path_exit_lpi_mode_n++;
+               }
+               if (status & GMAC4_LPI_CTRL_STATUS_RLPIEN)
+                       x->irq_rx_path_in_lpi_mode_n++;
+               if (status & GMAC4_LPI_CTRL_STATUS_RLPIEX)
+                       x->irq_rx_path_exit_lpi_mode_n++;
+       }
+
        dwmac_pcs_isr(ioaddr, GMAC_PCS_BASE, intr_status, x);
        if (intr_status & PCS_RGSMIIIS_IRQ)
                dwmac4_phystatus(ioaddr, x);