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