aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/octeon/patches-4.4/110-er200-ethernet_probe_order.patch
blob: 71d45a0f51aeb0fc328eda9507298c268b741a88 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
--- a/drivers/staging/octeon/ethernet.c
+++ b/drivers/staging/octeon/ethernet.c
@@ -667,6 +667,7 @@ static int cvm_oct_probe(struct platform
 	int interface;
 	int fau = FAU_NUM_PACKET_BUFFERS_TO_FREE;
 	int qos;
+	int i;
 	struct device_node *pip;
 
 	octeon_mdiobus_force_mod_depencency();
@@ -751,13 +752,19 @@ static int cvm_oct_probe(struct platform
 	}
 
 	num_interfaces = cvmx_helper_get_number_of_interfaces();
-	for (interface = 0; interface < num_interfaces; interface++) {
-		cvmx_helper_interface_mode_t imode =
-		    cvmx_helper_interface_get_mode(interface);
-		int num_ports = cvmx_helper_ports_on_interface(interface);
+	for (i = 0; i < num_interfaces; i++) {
+		cvmx_helper_interface_mode_t imode;
+		int interface;
+		int num_ports;
 		int port;
 		int port_index;
 
+		interface = i;
+		if (cvmx_sysinfo_get()->board_type == CVMX_BOARD_TYPE_UBNT_E200)
+			interface = num_interfaces - (i + 1);
+
+		num_ports = cvmx_helper_ports_on_interface(interface);
+		imode = cvmx_helper_interface_get_mode(interface);
 		for (port_index = 0,
 		     port = cvmx_helper_get_ipd_port(interface, 0);
 		     port < cvmx_helper_get_ipd_port(interface, num_ports);