xref: /openbmc/linux/drivers/net/dsa/sja1105/sja1105_tas.h (revision 317ab5b86c8e15015efa208ec697affb9bd0b3f2)
1*317ab5b8SVladimir Oltean /* SPDX-License-Identifier: GPL-2.0
2*317ab5b8SVladimir Oltean  * Copyright (c) 2019, Vladimir Oltean <olteanv@gmail.com>
3*317ab5b8SVladimir Oltean  */
4*317ab5b8SVladimir Oltean #ifndef _SJA1105_TAS_H
5*317ab5b8SVladimir Oltean #define _SJA1105_TAS_H
6*317ab5b8SVladimir Oltean 
7*317ab5b8SVladimir Oltean #include <net/pkt_sched.h>
8*317ab5b8SVladimir Oltean 
9*317ab5b8SVladimir Oltean #if IS_ENABLED(CONFIG_NET_DSA_SJA1105_TAS)
10*317ab5b8SVladimir Oltean 
11*317ab5b8SVladimir Oltean struct sja1105_tas_data {
12*317ab5b8SVladimir Oltean 	struct tc_taprio_qopt_offload *offload[SJA1105_NUM_PORTS];
13*317ab5b8SVladimir Oltean };
14*317ab5b8SVladimir Oltean 
15*317ab5b8SVladimir Oltean int sja1105_setup_tc_taprio(struct dsa_switch *ds, int port,
16*317ab5b8SVladimir Oltean 			    struct tc_taprio_qopt_offload *admin);
17*317ab5b8SVladimir Oltean 
18*317ab5b8SVladimir Oltean void sja1105_tas_setup(struct dsa_switch *ds);
19*317ab5b8SVladimir Oltean 
20*317ab5b8SVladimir Oltean void sja1105_tas_teardown(struct dsa_switch *ds);
21*317ab5b8SVladimir Oltean 
22*317ab5b8SVladimir Oltean #else
23*317ab5b8SVladimir Oltean 
24*317ab5b8SVladimir Oltean /* C doesn't allow empty structures, bah! */
25*317ab5b8SVladimir Oltean struct sja1105_tas_data {
26*317ab5b8SVladimir Oltean 	u8 dummy;
27*317ab5b8SVladimir Oltean };
28*317ab5b8SVladimir Oltean 
29*317ab5b8SVladimir Oltean static inline int sja1105_setup_tc_taprio(struct dsa_switch *ds, int port,
30*317ab5b8SVladimir Oltean 					  struct tc_taprio_qopt_offload *admin)
31*317ab5b8SVladimir Oltean {
32*317ab5b8SVladimir Oltean 	return -EOPNOTSUPP;
33*317ab5b8SVladimir Oltean }
34*317ab5b8SVladimir Oltean 
35*317ab5b8SVladimir Oltean static inline void sja1105_tas_setup(struct dsa_switch *ds) { }
36*317ab5b8SVladimir Oltean 
37*317ab5b8SVladimir Oltean static inline void sja1105_tas_teardown(struct dsa_switch *ds) { }
38*317ab5b8SVladimir Oltean 
39*317ab5b8SVladimir Oltean #endif /* IS_ENABLED(CONFIG_NET_DSA_SJA1105_TAS) */
40*317ab5b8SVladimir Oltean 
41*317ab5b8SVladimir Oltean #endif /* _SJA1105_TAS_H */
42