Lines Matching full:vsc8531
508 struct vsc8531_private *vsc8531 = phydev->priv;
509 bool base = phydev->mdio.addr == vsc8531->ts_base_addr;
542 struct vsc8531_private *vsc8531 = phydev->priv;
543 bool base = phydev->mdio.addr == vsc8531->ts_base_addr;
574 struct vsc8531_private *vsc8531 = phydev->priv;
575 bool base = phydev->mdio.addr == vsc8531->ts_base_addr;
887 struct vsc8531_private *vsc8531 = phydev->priv;
890 if (vsc8531->ptp->rx_filter == HWTSTAMP_FILTER_PTP_V2_L2_EVENT) {
968 struct vsc8531_private *vsc8531 = phydev->priv;
969 bool ptp_l4, base = phydev->mdio.addr == vsc8531->ts_base_addr;
973 ptp_l4 = vsc8531->ptp->rx_filter == HWTSTAMP_FILTER_PTP_V2_L4_EVENT;
983 if (vsc8531->ptp->rx_filter == HWTSTAMP_FILTER_PTP_V2_L2_EVENT) {
1003 vsc8531->ptp->rx_filter != HWTSTAMP_FILTER_NONE);
1005 ptp_l4 && vsc8531->ptp->rx_filter != HWTSTAMP_FILTER_NONE);
1007 vsc8531->ptp->rx_filter != HWTSTAMP_FILTER_NONE);
1010 vsc8531->ptp->tx_type != HWTSTAMP_TX_OFF);
1012 ptp_l4 && vsc8531->ptp->tx_type != HWTSTAMP_TX_OFF);
1014 vsc8531->ptp->tx_type != HWTSTAMP_TX_OFF);
1017 if (vsc8531->ptp->tx_type != HWTSTAMP_TX_OFF)
1021 if (vsc8531->ptp->rx_filter != HWTSTAMP_FILTER_NONE)
1057 struct vsc8531_private *vsc8531 =
1060 cfg->tx_type = vsc8531->ptp->tx_type;
1061 cfg->rx_filter = vsc8531->ptp->rx_filter;
1070 struct vsc8531_private *vsc8531 =
1072 struct phy_device *phydev = vsc8531->ptp->phydev;
1083 skb_queue_purge(&vsc8531->ptp->tx_queue);
1089 vsc8531->ptp->tx_type = cfg->tx_type;
1104 vsc8531->ptp->rx_filter = cfg->rx_filter;
1106 mutex_lock(&vsc8531->ts_lock);
1123 if (vsc8531->ptp->tx_type == HWTSTAMP_TX_OFF)
1125 if (vsc8531->ptp->rx_filter == HWTSTAMP_FILTER_NONE)
1146 vsc8531->ptp->configured = 1;
1147 mutex_unlock(&vsc8531->ts_lock);
1155 struct vsc8531_private *vsc8531 =
1158 info->phc_index = ptp_clock_index(vsc8531->ptp->ptp_clock);
1178 struct vsc8531_private *vsc8531 =
1181 if (!vsc8531->ptp->configured)
1184 if (vsc8531->ptp->tx_type == HWTSTAMP_TX_OFF)
1187 if (vsc8531->ptp->tx_type == HWTSTAMP_TX_ONESTEP_SYNC)
1193 skb_queue_tail(&vsc8531->ptp->tx_queue, skb);
1203 struct vsc8531_private *vsc8531 =
1208 if (!vsc8531->ptp->configured)
1211 if (vsc8531->ptp->rx_filter == HWTSTAMP_FILTER_NONE ||
1215 ptphdr = get_ptp_header_rx(skb, vsc8531->ptp->rx_filter);
1222 skb_queue_tail(&vsc8531->rx_skbs_list, skb);
1224 ptp_schedule_worker(vsc8531->ptp->ptp_clock, 0);
1279 struct vsc8531_private *vsc8531 = phydev->priv;
1281 if (vsc8531->ts_base_addr != phydev->mdio.addr) {
1284 dev = phydev->mdio.bus->mdio_map[vsc8531->ts_base_addr];
1290 return vsc8531;
1295 struct vsc8531_private *vsc8531 = vsc8584_base_priv(phydev);
1297 return vsc8531->input_clk_init;
1302 struct vsc8531_private *vsc8531 = vsc8584_base_priv(phydev);
1304 vsc8531->input_clk_init = true;
1554 struct vsc8531_private *vsc8531 = phydev->priv;
1556 if (vsc8531->ptp->ptp_clock) {
1557 ptp_clock_unregister(vsc8531->ptp->ptp_clock);
1558 skb_queue_purge(&vsc8531->rx_skbs_list);
1559 skb_queue_purge(&vsc8531->ptp->tx_queue);
1593 struct vsc8531_private *vsc8531 = phydev->priv;
1595 vsc8531->ptp = devm_kzalloc(&phydev->mdio.dev, sizeof(*vsc8531->ptp),
1597 if (!vsc8531->ptp)
1600 mutex_init(&vsc8531->phc_lock);
1601 mutex_init(&vsc8531->ts_lock);
1602 skb_queue_head_init(&vsc8531->rx_skbs_list);
1603 skb_queue_head_init(&vsc8531->ptp->tx_queue);
1610 vsc8531->load_save = devm_gpiod_get_optional(&phydev->mdio.dev, "load-save",
1613 if (IS_ERR(vsc8531->load_save)) {
1615 PTR_ERR(vsc8531->load_save));
1616 return PTR_ERR(vsc8531->load_save);
1622 vsc8531->ptp->phydev = phydev;
1624 vsc8531->mii_ts.rxtstamp = vsc85xx_rxtstamp;
1625 vsc8531->mii_ts.txtstamp = vsc85xx_txtstamp;
1626 vsc8531->mii_ts.hwtstamp_set = vsc85xx_hwtstamp_set;
1627 vsc8531->mii_ts.hwtstamp_get = vsc85xx_hwtstamp_get;
1628 vsc8531->mii_ts.ts_info = vsc85xx_ts_info;
1629 phydev->mii_ts = &vsc8531->mii_ts;
1631 memcpy(&vsc8531->ptp->caps, &vsc85xx_clk_caps, sizeof(vsc85xx_clk_caps));
1632 vsc8531->ptp->ptp_clock = ptp_clock_register(&vsc8531->ptp->caps,
1634 return PTR_ERR_OR_ZERO(vsc8531->ptp->ptp_clock);