#include <linux/udp.h>
 #include <linux/unaligned.h>
 
+#include "../phylib.h"
 #include "mscc.h"
 #include "mscc_ptp.h"
 
 {
        struct vsc85xx_ptp *ptp = container_of(info, struct vsc85xx_ptp, caps);
        struct phy_device *phydev = ptp->phydev;
-       struct vsc85xx_shared_private *shared =
-               (struct vsc85xx_shared_private *)phydev->shared->priv;
        struct vsc8531_private *priv = phydev->priv;
+       struct vsc85xx_shared_private *shared;
        u32 val;
 
+       shared = phy_package_get_priv(phydev);
+
        val = vsc85xx_ts_read_csr(phydev, PROCESSOR, MSCC_PHY_PTP_LTC_CTRL);
        val |= PTP_LTC_CTRL_SAVE_ENA;
        vsc85xx_ts_write_csr(phydev, PROCESSOR, MSCC_PHY_PTP_LTC_CTRL, val);
 {
        struct vsc85xx_ptp *ptp = container_of(info, struct vsc85xx_ptp, caps);
        struct phy_device *phydev = ptp->phydev;
-       struct vsc85xx_shared_private *shared =
-               (struct vsc85xx_shared_private *)phydev->shared->priv;
        struct vsc8531_private *priv = phydev->priv;
+       struct vsc85xx_shared_private *shared;
        u32 val;
 
+       shared = phy_package_get_priv(phydev);
+
        vsc85xx_ts_write_csr(phydev, PROCESSOR, MSCC_PHY_PTP_LTC_LOAD_SEC_MSB,
                             PTP_LTC_LOAD_SEC_MSB(ts->tv_sec));
        vsc85xx_ts_write_csr(phydev, PROCESSOR, MSCC_PHY_PTP_LTC_LOAD_SEC_LSB,
 
 int vsc8584_ptp_probe_once(struct phy_device *phydev)
 {
-       struct vsc85xx_shared_private *shared =
-               (struct vsc85xx_shared_private *)phydev->shared->priv;
+       struct vsc85xx_shared_private *shared = phy_package_get_priv(phydev);
 
        /* Initialize shared GPIO lock */
        mutex_init(&shared->gpio_lock);