]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - drivers/infiniband/hw/ipath/ipath_iba6120.c
IB/ipath: control receive polarity inversion
[mv-sheeva.git] / drivers / infiniband / hw / ipath / ipath_iba6120.c
index 3a7640be25307e121e12b6070cb994933641b7da..d86516d23df618ef369fb183a061a8f761228754 100644 (file)
@@ -654,6 +654,15 @@ static int ipath_pe_bringup_serdes(struct ipath_devdata *dd)
                val &= ~INFINIPATH_XGXS_RESET;
                change = 1;
        }
+       if (((val >> INFINIPATH_XGXS_RX_POL_SHIFT) &
+            INFINIPATH_XGXS_RX_POL_MASK) != dd->ipath_rx_pol_inv ) {
+               /* need to compensate for Tx inversion in partner */
+               val &= ~(INFINIPATH_XGXS_RX_POL_MASK <<
+                        INFINIPATH_XGXS_RX_POL_SHIFT);
+               val |= dd->ipath_rx_pol_inv <<
+                       INFINIPATH_XGXS_RX_POL_SHIFT;
+               change = 1;
+       }
        if (change)
                ipath_write_kreg(dd, dd->ipath_kregs->kr_xgxsconfig, val);