Merge tag 'trace-v5.15-3' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt...
[linux-2.6-microblaze.git] / include / linux / platform_data / dsa.h
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 */