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:
		
					parent
					
						
							
								7dff349988
							
						
					
				
			
			
				commit
				
					
						6663628729
					
				
			
		
					 3 changed files with 34 additions and 0 deletions
				
			
		|  | @ -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); | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Richard Cochran
				Richard Cochran