forked from mirrors/linux
		
	net: ti: icssg-prueth: Move common functions into a separate file
In order to allow code sharing between Silicon Revisions 1.0 and 2.0 move all functions that can be shared into a common file. This commit introduces no functional changes. Signed-off-by: Diogo Ivo <diogo.ivo@siemens.com> Reviewed-by: MD Danish Anwar <danishanwar@ti.com> Signed-off-by: Paolo Abeni <pabeni@redhat.com>
This commit is contained in:
		
							parent
							
								
									e1900d7ba9
								
							
						
					
					
						commit
						e2dc7bfd67
					
				
					 4 changed files with 1258 additions and 1183 deletions
				
			
		|  | @ -33,6 +33,7 @@ obj-$(CONFIG_TI_K3_AM65_CPTS) += am65-cpts.o | ||||||
| 
 | 
 | ||||||
| obj-$(CONFIG_TI_ICSSG_PRUETH) += icssg-prueth.o | obj-$(CONFIG_TI_ICSSG_PRUETH) += icssg-prueth.o | ||||||
| icssg-prueth-y := icssg/icssg_prueth.o \
 | icssg-prueth-y := icssg/icssg_prueth.o \
 | ||||||
|  | 		  icssg/icssg_common.o \
 | ||||||
| 		  icssg/icssg_classifier.o \
 | 		  icssg/icssg_classifier.o \
 | ||||||
| 		  icssg/icssg_queues.o \
 | 		  icssg/icssg_queues.o \
 | ||||||
| 		  icssg/icssg_config.o \
 | 		  icssg/icssg_config.o \
 | ||||||
|  |  | ||||||
							
								
								
									
										1198
									
								
								drivers/net/ethernet/ti/icssg/icssg_common.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1198
									
								
								drivers/net/ethernet/ti/icssg/icssg_common.c
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							|  | @ -55,6 +55,8 @@ | ||||||
| #define ICSSG_NUM_STANDARD_STATS 31 | #define ICSSG_NUM_STANDARD_STATS 31 | ||||||
| #define ICSSG_NUM_ETHTOOL_STATS (ICSSG_NUM_STATS - ICSSG_NUM_STANDARD_STATS) | #define ICSSG_NUM_ETHTOOL_STATS (ICSSG_NUM_STATS - ICSSG_NUM_STANDARD_STATS) | ||||||
| 
 | 
 | ||||||
|  | #define IEP_DEFAULT_CYCLE_TIME_NS	1000000	/* 1 ms */ | ||||||
|  | 
 | ||||||
| /* Firmware status codes */ | /* Firmware status codes */ | ||||||
| #define ICSS_HS_FW_READY 0x55555555 | #define ICSS_HS_FW_READY 0x55555555 | ||||||
| #define ICSS_HS_FW_DEAD 0xDEAD0000	/* lower 16 bits contain error code */ | #define ICSS_HS_FW_DEAD 0xDEAD0000	/* lower 16 bits contain error code */ | ||||||
|  | @ -188,6 +190,12 @@ struct prueth_pdata { | ||||||
| 	u32	quirk_10m_link_issue:1; | 	u32	quirk_10m_link_issue:1; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | struct icssg_firmwares { | ||||||
|  | 	char *pru; | ||||||
|  | 	char *rtu; | ||||||
|  | 	char *txpru; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
| /**
 | /**
 | ||||||
|  * struct prueth - PRUeth structure |  * struct prueth - PRUeth structure | ||||||
|  * @dev: device |  * @dev: device | ||||||
|  | @ -257,6 +265,7 @@ static inline int prueth_emac_slice(struct prueth_emac *emac) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| extern const struct ethtool_ops icssg_ethtool_ops; | extern const struct ethtool_ops icssg_ethtool_ops; | ||||||
|  | extern const struct dev_pm_ops prueth_dev_pm_ops; | ||||||
| 
 | 
 | ||||||
| /* Classifier helpers */ | /* Classifier helpers */ | ||||||
| void icssg_class_set_mac_addr(struct regmap *miig_rt, int slice, u8 *mac); | void icssg_class_set_mac_addr(struct regmap *miig_rt, int slice, u8 *mac); | ||||||
|  | @ -285,4 +294,54 @@ u32 icssg_queue_level(struct prueth *prueth, int queue); | ||||||
| void emac_stats_work_handler(struct work_struct *work); | void emac_stats_work_handler(struct work_struct *work); | ||||||
| void emac_update_hardware_stats(struct prueth_emac *emac); | void emac_update_hardware_stats(struct prueth_emac *emac); | ||||||
| int emac_get_stat_by_name(struct prueth_emac *emac, char *stat_name); | int emac_get_stat_by_name(struct prueth_emac *emac, char *stat_name); | ||||||
|  | 
 | ||||||
|  | /* Common functions */ | ||||||
|  | void prueth_cleanup_rx_chns(struct prueth_emac *emac, | ||||||
|  | 			    struct prueth_rx_chn *rx_chn, | ||||||
|  | 			    int max_rflows); | ||||||
|  | void prueth_cleanup_tx_chns(struct prueth_emac *emac); | ||||||
|  | void prueth_ndev_del_tx_napi(struct prueth_emac *emac, int num); | ||||||
|  | void prueth_xmit_free(struct prueth_tx_chn *tx_chn, | ||||||
|  | 		      struct cppi5_host_desc_t *desc); | ||||||
|  | int emac_tx_complete_packets(struct prueth_emac *emac, int chn, | ||||||
|  | 			     int budget); | ||||||
|  | int prueth_ndev_add_tx_napi(struct prueth_emac *emac); | ||||||
|  | int prueth_init_tx_chns(struct prueth_emac *emac); | ||||||
|  | int prueth_init_rx_chns(struct prueth_emac *emac, | ||||||
|  | 			struct prueth_rx_chn *rx_chn, | ||||||
|  | 			char *name, u32 max_rflows, | ||||||
|  | 			u32 max_desc_num); | ||||||
|  | int prueth_dma_rx_push(struct prueth_emac *emac, | ||||||
|  | 		       struct sk_buff *skb, | ||||||
|  | 		       struct prueth_rx_chn *rx_chn); | ||||||
|  | void emac_rx_timestamp(struct prueth_emac *emac, | ||||||
|  | 		       struct sk_buff *skb, u32 *psdata); | ||||||
|  | enum netdev_tx emac_ndo_start_xmit(struct sk_buff *skb, struct net_device *ndev); | ||||||
|  | irqreturn_t prueth_rx_irq(int irq, void *dev_id); | ||||||
|  | void prueth_emac_stop(struct prueth_emac *emac); | ||||||
|  | void prueth_cleanup_tx_ts(struct prueth_emac *emac); | ||||||
|  | int emac_napi_rx_poll(struct napi_struct *napi_rx, int budget); | ||||||
|  | int prueth_prepare_rx_chan(struct prueth_emac *emac, | ||||||
|  | 			   struct prueth_rx_chn *chn, | ||||||
|  | 			   int buf_size); | ||||||
|  | void prueth_reset_tx_chan(struct prueth_emac *emac, int ch_num, | ||||||
|  | 			  bool free_skb); | ||||||
|  | void prueth_reset_rx_chan(struct prueth_rx_chn *chn, | ||||||
|  | 			  int num_flows, bool disable); | ||||||
|  | void emac_ndo_tx_timeout(struct net_device *ndev, unsigned int txqueue); | ||||||
|  | int emac_ndo_ioctl(struct net_device *ndev, struct ifreq *ifr, int cmd); | ||||||
|  | void emac_ndo_get_stats64(struct net_device *ndev, | ||||||
|  | 			  struct rtnl_link_stats64 *stats); | ||||||
|  | int emac_ndo_get_phys_port_name(struct net_device *ndev, char *name, | ||||||
|  | 				size_t len); | ||||||
|  | int prueth_node_port(struct device_node *eth_node); | ||||||
|  | int prueth_node_mac(struct device_node *eth_node); | ||||||
|  | void prueth_netdev_exit(struct prueth *prueth, | ||||||
|  | 			struct device_node *eth_node); | ||||||
|  | int prueth_get_cores(struct prueth *prueth, int slice); | ||||||
|  | void prueth_put_cores(struct prueth *prueth, int slice); | ||||||
|  | 
 | ||||||
|  | /* Revision specific helper */ | ||||||
|  | u64 icssg_ts_to_ns(u32 hi_sw, u32 hi, u32 lo, u32 cycle_time_ns); | ||||||
|  | 
 | ||||||
| #endif /* __NET_TI_ICSSG_PRUETH_H */ | #endif /* __NET_TI_ICSSG_PRUETH_H */ | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue
	
	 Diogo Ivo
						Diogo Ivo