| 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 |  | 
|---|