#define GEM_SA4B               0x00A0 /* Specific4 Bottom */
 #define GEM_SA4T               0x00A4 /* Specific4 Top */
 #define GEM_WOL                        0x00b8 /* Wake on LAN */
+#define GEM_RXPTPUNI           0x00D4 /* PTP RX Unicast address */
+#define GEM_TXPTPUNI           0x00D8 /* PTP TX Unicast address */
 #define GEM_EFTSH              0x00e8 /* PTP Event Frame Transmitted Seconds Register 47:32 */
 #define GEM_EFRSH              0x00ec /* PTP Event Frame Received Seconds Register 47:32 */
 #define GEM_PEFTSH             0x00f0 /* PTP Peer Event Frame Transmitted Seconds Register 47:32 */
 #define MACB_TZQ_OFFSET                12 /* Transmit zero quantum pause frame */
 #define MACB_TZQ_SIZE          1
 #define MACB_SRTSM_OFFSET      15 /* Store Receive Timestamp to Memory */
+#define MACB_PTPUNI_OFFSET     20 /* PTP Unicast packet enable */
+#define MACB_PTPUNI_SIZE       1
 #define MACB_OSSMODE_OFFSET    24 /* Enable One Step Synchro Mode */
 #define MACB_OSSMODE_SIZE      1
 #define MACB_MIIONRGMII_OFFSET 28 /* MII Usage on RGMII Interface */
 
        top = cpu_to_le16(*((u16 *)(bp->dev->dev_addr + 4)));
        macb_or_gem_writel(bp, SA1T, top);
 
+       if (gem_has_ptp(bp)) {
+               gem_writel(bp, RXPTPUNI, bottom);
+               gem_writel(bp, TXPTPUNI, bottom);
+       }
+
        /* Clear unused address register sets */
        macb_or_gem_writel(bp, SA2B, 0);
        macb_or_gem_writel(bp, SA2T, 0);
 
        spin_unlock_irqrestore(&bp->lock, flags);
 
-       /* Enable Rx and Tx */
-       macb_writel(bp, NCR, macb_readl(bp, NCR) | MACB_BIT(RE) | MACB_BIT(TE));
+       /* Enable Rx and Tx; Enable PTP unicast */
+       ctrl = macb_readl(bp, NCR);
+       if (gem_has_ptp(bp))
+               ctrl |= MACB_BIT(PTPUNI);
+
+       macb_writel(bp, NCR, ctrl | MACB_BIT(RE) | MACB_BIT(TE));
 
        netif_tx_wake_all_queues(ndev);
 }