1 | /* SPDX-License-Identifier: GPL-2.0 */ |
2 | #ifndef __DSA_PDATA_H |
3 | #define __DSA_PDATA_H |
4 | |
5 | struct device; |
6 | struct net_device; |
7 | |
8 | #define DSA_MAX_SWITCHES 4 |
9 | #define DSA_MAX_PORTS 12 |
10 | #define DSA_RTABLE_NONE -1 |
11 | |
12 | struct dsa_chip_data { |
13 | /* |
14 | * How to access the switch configuration registers. |
15 | */ |
16 | struct device *host_dev; |
17 | int sw_addr; |
18 | |
19 | /* |
20 | * Reference to network devices |
21 | */ |
22 | struct device *netdev[DSA_MAX_PORTS]; |
23 | |
24 | /* set to size of eeprom if supported by the switch */ |
25 | int eeprom_len; |
26 | |
27 | /* Device tree node pointer for this specific switch chip |
28 | * used during switch setup in case additional properties |
29 | * and resources needs to be used |
30 | */ |
31 | struct device_node *of_node; |
32 | |
33 | /* |
34 | * The names of the switch's ports. Use "cpu" to |
35 | * designate the switch port that the cpu is connected to, |
36 | * "dsa" to indicate that this port is a DSA link to |
37 | * another switch, NULL to indicate the port is unused, |
38 | * or any other string to indicate this is a physical port. |
39 | */ |
40 | char *port_names[DSA_MAX_PORTS]; |
41 | struct device_node *port_dn[DSA_MAX_PORTS]; |
42 | |
43 | /* |
44 | * An array of which element [a] indicates which port on this |
45 | * switch should be used to send packets to that are destined |
46 | * for switch a. Can be NULL if there is only one switch chip. |
47 | */ |
48 | s8 rtable[DSA_MAX_SWITCHES]; |
49 | }; |
50 | |
51 | struct dsa_platform_data { |
52 | /* |
53 | * Reference to a Linux network interface that connects |
54 | * to the root switch chip of the tree. |
55 | */ |
56 | struct device *netdev; |
57 | struct net_device *of_netdev; |
58 | |
59 | /* |
60 | * Info structs describing each of the switch chips |
61 | * connected via this network interface. |
62 | */ |
63 | int nr_chips; |
64 | struct dsa_chip_data *chip; |
65 | }; |
66 | |
67 | |
68 | #endif /* __DSA_PDATA_H */ |
69 | |