gianfar: Support the get_ts_info ethtool method.
Signed-off-by: Richard Cochran <richardcochran@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Родитель
7dff349988
Коммит
6663628729
|
@ -1210,4 +1210,7 @@ struct filer_table {
|
|||
struct gfar_filer_entry fe[MAX_FILER_CACHE_IDX + 20];
|
||||
};
|
||||
|
||||
/* The gianfar_ptp module will set this variable */
|
||||
extern int gfar_phc_index;
|
||||
|
||||
#endif /* __GIANFAR_H */
|
||||
|
|
|
@ -1739,6 +1739,34 @@ static int gfar_get_nfc(struct net_device *dev, struct ethtool_rxnfc *cmd,
|
|||
return ret;
|
||||
}
|
||||
|
||||
int gfar_phc_index = -1;
|
||||
|
||||
static int gfar_get_ts_info(struct net_device *dev,
|
||||
struct ethtool_ts_info *info)
|
||||
{
|
||||
struct gfar_private *priv = netdev_priv(dev);
|
||||
|
||||
if (!(priv->device_flags & FSL_GIANFAR_DEV_HAS_TIMER)) {
|
||||
info->so_timestamping =
|
||||
SOF_TIMESTAMPING_RX_SOFTWARE |
|
||||
SOF_TIMESTAMPING_SOFTWARE;
|
||||
info->phc_index = -1;
|
||||
return 0;
|
||||
}
|
||||
info->so_timestamping =
|
||||
SOF_TIMESTAMPING_TX_HARDWARE |
|
||||
SOF_TIMESTAMPING_RX_HARDWARE |
|
||||
SOF_TIMESTAMPING_RAW_HARDWARE;
|
||||
info->phc_index = gfar_phc_index;
|
||||
info->tx_types =
|
||||
(1 << HWTSTAMP_TX_OFF) |
|
||||
(1 << HWTSTAMP_TX_ON);
|
||||
info->rx_filters =
|
||||
(1 << HWTSTAMP_FILTER_NONE) |
|
||||
(1 << HWTSTAMP_FILTER_ALL);
|
||||
return 0;
|
||||
}
|
||||
|
||||
const struct ethtool_ops gfar_ethtool_ops = {
|
||||
.get_settings = gfar_gsettings,
|
||||
.set_settings = gfar_ssettings,
|
||||
|
@ -1761,4 +1789,5 @@ const struct ethtool_ops gfar_ethtool_ops = {
|
|||
#endif
|
||||
.set_rxnfc = gfar_set_nfc,
|
||||
.get_rxnfc = gfar_get_nfc,
|
||||
.get_ts_info = gfar_get_ts_info,
|
||||
};
|
||||
|
|
|
@ -515,6 +515,7 @@ static int gianfar_ptp_probe(struct platform_device *dev)
|
|||
err = PTR_ERR(etsects->clock);
|
||||
goto no_clock;
|
||||
}
|
||||
gfar_phc_clock = ptp_clock_index(etsects->clock);
|
||||
|
||||
dev_set_drvdata(&dev->dev, etsects);
|
||||
|
||||
|
@ -538,6 +539,7 @@ static int gianfar_ptp_remove(struct platform_device *dev)
|
|||
gfar_write(&etsects->regs->tmr_temask, 0);
|
||||
gfar_write(&etsects->regs->tmr_ctrl, 0);
|
||||
|
||||
gfar_phc_clock = -1;
|
||||
ptp_clock_unregister(etsects->clock);
|
||||
iounmap(etsects->regs);
|
||||
release_resource(etsects->rsrc);
|
||||
|
|
Загрузка…
Ссылка в новой задаче