diff options
Diffstat (limited to 'mpm/python/usrp_mpm')
| -rw-r--r-- | mpm/python/usrp_mpm/periph_manager/x4xx_dio_control.py | 19 | 
1 files changed, 13 insertions, 6 deletions
diff --git a/mpm/python/usrp_mpm/periph_manager/x4xx_dio_control.py b/mpm/python/usrp_mpm/periph_manager/x4xx_dio_control.py index 3c001be5c..93ef0ba94 100644 --- a/mpm/python/usrp_mpm/periph_manager/x4xx_dio_control.py +++ b/mpm/python/usrp_mpm/periph_manager/x4xx_dio_control.py @@ -147,6 +147,7 @@ class DioControl:      FPGA_DIO_SW_DIO_CONTROL_REGISTER       = FPGA_DIO_REGISTER_BASE + 0x20      FULL_DIO_FPGA_COMPAT = (7, 5) +    FULL_SPI_FPGA_COMPAT = (7, 7)      # DIO registers addresses in CPLD      CPLD_DIO_DIRECTION_REGISTER = 0x30 @@ -157,9 +158,10 @@ class DioControl:      X4XX_GPIO_SRC_MPM      = "MPM"      X4XX_GPIO_SRC_USER_APP = "USER_APP"      X4XX_GPIO_SRC_RADIO = [ -        ["DB0_RF0", "DB0_RF1", "DB0_SPI"], -        ["DB1_RF0", "DB1_RF1", "DB1_SPI"] +        ["DB0_RF0", "DB0_RF1"], +        ["DB1_RF0", "DB1_RF1"]      ] +    X4XX_GPIO_SPI_SRC_RADIO = [["DB0_SPI"], ["DB1_SPI"]]      X4XX_GPIO_WIDTH = 12      # pylint: enable=bad-whitespace @@ -227,6 +229,8 @@ class DioControl:          self.mboard_cpld = mboard_cpld          if self.mboard_regs.get_compat_number() < self.FULL_DIO_FPGA_COMPAT:              self.log.warning("DIO board does not support the full feature set.") +        if self.mboard_regs.get_compat_number() < self.FULL_SPI_FPGA_COMPAT: +            self.log.warning("DIO board does not support SPI.")          # initialize port mapping for HDMI and DIO          self.port_mappings = {}          self.mapping = None @@ -263,6 +267,9 @@ class DioControl:          ]          for dboard in dboards:              gpio_srcs.extend(self.X4XX_GPIO_SRC_RADIO[dboard.slot_idx]) +            # Only add SPI if FPGA version is high enough +            if self.mboard_regs.get_compat_number() >= self.FULL_SPI_FPGA_COMPAT: +                gpio_srcs.extend(self.X4XX_GPIO_SPI_SRC_RADIO[dboard.slot_idx])          self._gpio_srcs = {              gpio_bank : gpio_srcs for gpio_bank in self.X4XX_GPIO_BANKS @@ -895,10 +902,10 @@ class DioControl:          :return: board status          """          result = "\n" \ -               + self._format_row(["%s mapping" % self.mapping.name, self.DIO_PORTS[0], self.DIO_PORTS[1]]) \ -               + self._format_row(["", "", ""], "-", "+") \ -               + self._format_row(["voltage"] + self._get_voltage()) \ -               + self._format_row(["", "", ""], "-", "+") +            + self._format_row(["%s mapping" % self.mapping.name, self.DIO_PORTS[0], self.DIO_PORTS[1]]) \ +            + self._format_row(["", "", ""], "-", "+") \ +            + self._format_row(["voltage"] + self._get_voltage()) \ +            + self._format_row(["", "", ""], "-", "+")          register = self.mboard_regs.peek32(self.FPGA_DIO_MASTER_REGISTER)          result += self._format_row(["master"] + self._format_registers(register))  | 
