STAGING: Octeon: Use common helpers for determining interface and port
[linux-drm-fsl-dcu.git] / drivers / staging / octeon / ethernet-util.h
index 1ba789a7741bd2514c098ea4ffa8b828c11f6c07..45f024bc5e33f777d2a320633dff9eb55dfac64d 100644 (file)
@@ -8,6 +8,10 @@
  * published by the Free Software Foundation.
  */
 
  * published by the Free Software Foundation.
  */
 
+#include <asm/octeon/cvmx-pip.h>
+#include <asm/octeon/cvmx-helper.h>
+#include <asm/octeon/cvmx-helper-util.h>
+
 /**
  * cvm_oct_get_buffer_ptr - convert packet data address to pointer
  * @packet_ptr: Packet data hardware address
 /**
  * cvm_oct_get_buffer_ptr - convert packet data address to pointer
  * @packet_ptr: Packet data hardware address
@@ -28,14 +32,12 @@ static inline void *cvm_oct_get_buffer_ptr(union cvmx_buf_ptr packet_ptr)
  */
 static inline int INTERFACE(int ipd_port)
 {
  */
 static inline int INTERFACE(int ipd_port)
 {
-       if (ipd_port < 32)      /* Interface 0 or 1 for RGMII,GMII,SPI, etc */
-               return ipd_port >> 4;
-       else if (ipd_port < 36) /* Interface 2 for NPI */
-               return 2;
-       else if (ipd_port < 40) /* Interface 3 for loopback */
-               return 3;
-       else if (ipd_port == 40)        /* Non existent interface for POW0 */
-               return 4;
+       int interface = cvmx_helper_get_interface_num(ipd_port);
+
+       if (interface >= 0)
+               return interface;
+       else if (ipd_port == CVMX_PIP_NUM_INPUT_PORTS)
+               return 10;
        panic("Illegal ipd_port %d passed to INTERFACE\n", ipd_port);
 }
 
        panic("Illegal ipd_port %d passed to INTERFACE\n", ipd_port);
 }
 
@@ -47,7 +49,5 @@ static inline int INTERFACE(int ipd_port)
  */
 static inline int INDEX(int ipd_port)
 {
  */
 static inline int INDEX(int ipd_port)
 {
-       if (ipd_port < 32)
-               return ipd_port & 15;
-       return ipd_port & 3;
+       return cvmx_helper_get_interface_index_num(ipd_port);
 }
 }