From 7ffea3746be77cf926db946987ee83d48a33c798 Mon Sep 17 00:00:00 2001
From: Trung N Tran <trung.tran@ettus.com>
Date: Thu, 11 Jan 2018 10:57:07 -0800
Subject: mpm: mg: Pass deserializer_lane_xbar to ad937x_config

Slot A and Slot B are different in how the JESD lanes are connected.
We now pass in different deserializer_lane_xbar config values for each slot.

Reviewed-by: Martin Braun <martin.braun@ettus.com>
Reviewed-by: Daniel Jepson <daniel.jepson@ettus.com>
Reviewed-by: Mark Meserve <mark.meserve@ni.com>
---
 mpm/python/usrp_mpm/dboard_manager/magnesium.py | 8 ++++++++
 1 file changed, 8 insertions(+)

(limited to 'mpm/python')

diff --git a/mpm/python/usrp_mpm/dboard_manager/magnesium.py b/mpm/python/usrp_mpm/dboard_manager/magnesium.py
index 1c46d134b..24a728ba1 100644
--- a/mpm/python/usrp_mpm/dboard_manager/magnesium.py
+++ b/mpm/python/usrp_mpm/dboard_manager/magnesium.py
@@ -352,8 +352,16 @@ class Magnesium(DboardManagerBase):
         self._port_expander = TCA6408(self._get_i2c_dev(self.slot_idx))
         self._power_on()
         self.log.debug("Loading C++ drivers...")
+
+        # The Mykonos TX DeFramer lane crossbar requires configuration on a per-slot
+        # basis due to motherboard MGT lane swapping.
+        # The RX framer lane crossbar configuration
+        # is identical for both slots and is hard-coded within the Mykonos API.
+        deserializer_lane_xbar = 0xD2 if self.slot_idx == 0 else 0x72
+
         self._device = lib.dboards.magnesium_manager(
             self._spi_nodes['mykonos'],
+            deserializer_lane_xbar
         )
         self.mykonos = self._device.get_radio_ctrl()
         self.spi_lock = self._device.get_spi_lock()
-- 
cgit v1.2.3