diff options
| -rw-r--r-- | mpm/python/usrp_mpm/eeprom.py | 3 | ||||
| -rw-r--r-- | mpm/python/usrp_mpm/periph_manager/base.py | 14 | ||||
| -rw-r--r-- | mpm/python/usrp_mpm/periph_manager/n3xx.py | 2 | 
3 files changed, 18 insertions, 1 deletions
diff --git a/mpm/python/usrp_mpm/eeprom.py b/mpm/python/usrp_mpm/eeprom.py index 543823cbb..79532f9f8 100644 --- a/mpm/python/usrp_mpm/eeprom.py +++ b/mpm/python/usrp_mpm/eeprom.py @@ -88,6 +88,7 @@ class DboardEEPROM(object):  def read_eeprom(          nvmem_path, +        offset,          eeprom_header_format,          eeprom_header_keys,          expected_magic, @@ -130,7 +131,7 @@ def read_eeprom(      # Dawaj, dawaj      max_size = max_size or -1      with open(nvmem_path, "rb") as nvmem_file: -        data = nvmem_file.read(max_size) +        data = nvmem_file.read(max_size)[offset:]      eeprom_magic, eeprom_version = EEPROM_DEFAULT_HEADER.unpack_from(data)      if eeprom_magic != expected_magic:          raise RuntimeError( diff --git a/mpm/python/usrp_mpm/periph_manager/base.py b/mpm/python/usrp_mpm/periph_manager/base.py index f2b2aeb37..3ded0d3c2 100644 --- a/mpm/python/usrp_mpm/periph_manager/base.py +++ b/mpm/python/usrp_mpm/periph_manager/base.py @@ -62,6 +62,11 @@ class PeriphManagerBase(object):      # If empty, this will be ignored and no EEPROM info for the device is read      # out.      mboard_eeprom_addr = "" +    # Offset of the motherboard EEPROM. All accesses to this EEPROM will be +    # offset by this amount. In many cases, this value will be 0. But in some +    # situations, we may want to use the offset as a way of partitioning +    # access to an EEPROM. +    mboard_eeprom_offset = 0      # The EEPROM code checks for this word to see if the readout was valid.      # Typically, devices should not override this unless their EEPROM follows a      # different standard. @@ -96,6 +101,13 @@ class PeriphManagerBase(object):      # out.      # If this is a list of EEPROMs, paths will be concatenated.      dboard_eeprom_addr = None +    # Offset of the daughterboard EEPROM. All accesses to this EEPROM will be +    # offset by this amount. In many cases, this value will be 0. But in some +    # situations, we may want to use the offset as a way of partitioning +    # access to an EEPROM. +    # Assume that all dboard offsets are the same for a given device. That is, +    # the offset of DBoard 0 == offset of DBoard 1 +    dboard_eeprom_offset = 0      # The EEPROM code checks for this word to see if the readout was valid.      # Typically, devices should not override this unless their EEPROM follows a      # different standard. @@ -175,6 +187,7 @@ class PeriphManagerBase(object):                             .format(self.mboard_eeprom_addr))              (self._eeprom_head, self._eeprom_rawdata) = eeprom.read_eeprom(                  get_eeprom_paths(self.mboard_eeprom_addr)[0], +                self.mboard_eeprom_offset,                  eeprom.MboardEEPROM.eeprom_header_format,                  eeprom.MboardEEPROM.eeprom_header_keys,                  self.mboard_eeprom_magic, @@ -298,6 +311,7 @@ class PeriphManagerBase(object):              self.log.debug("Initializing dboard %d...", dboard_idx)              dboard_eeprom_md, dboard_eeprom_rawdata = eeprom.read_eeprom(                  dboard_eeprom_path, +                self.dboard_eeprom_offset,                  eeprom.DboardEEPROM.eeprom_header_format,                  eeprom.DboardEEPROM.eeprom_header_keys,                  self.dboard_eeprom_magic, diff --git a/mpm/python/usrp_mpm/periph_manager/n3xx.py b/mpm/python/usrp_mpm/periph_manager/n3xx.py index 6926ee1d7..373689521 100644 --- a/mpm/python/usrp_mpm/periph_manager/n3xx.py +++ b/mpm/python/usrp_mpm/periph_manager/n3xx.py @@ -458,6 +458,7 @@ class n3xx(PeriphManagerBase):      description = "N300-Series Device"      pids = {0x4242: 'n310', 0x4240: 'n300'}      mboard_eeprom_addr = "e0005000.i2c" +    mboard_eeprom_offset = 0      mboard_eeprom_max_len = 256      mboard_info = {"type": "n3xx",                     "product": "unknown", @@ -473,6 +474,7 @@ class n3xx(PeriphManagerBase):          'fan': 'get_fan_sensor',      }      dboard_eeprom_addr = "e0004000.i2c" +    dboard_eeprom_offset = 0      dboard_eeprom_max_len = 64      # We're on a Zynq target, so the following two come from the Zynq standard  | 
