mpm: n3xx: bist: Read mboard and dboard eeprom to determine product

The routine to identify products currently only reads the motherboard
EEPROM. The N310 and N320/N321 use the same motherboard so these devices
can't be distinguished using the motherboard EEPROM alone. This change
makes get_product_id() read both the motherboard and daughterboard
EEPROM in order to determine which N3xx it actually is.
This commit is contained in:
Steve Czabaniuk 2020-06-29 15:43:28 -05:00 committed by Aaron Rossetto
parent a68e710116
commit 5e0cebdc19
2 changed files with 14 additions and 5 deletions

View file

@ -111,7 +111,17 @@ class N3XXBIST(bist.UsrpBIST):
def get_product_id(self):
"""Return the mboard product ID (n310 or n300):"""
return bist.get_product_id_from_eeprom(valid_ids=['n300', 'n310', 'n320'])
product_map = {
#(mboard, dboard): product
('n300', 'magnesium'): 'n300',
('n300', ''): 'n300', # n300 mboard with no dboard
('n310', 'magnesium'): 'n310',
('n310', ''): 'n310', # n310 mboard with no dboard
('n310', 'rhodium'): 'n320',
}
mb_id = bist.get_product_id_from_eeprom(valid_ids=['n300', 'n310'], cmd='eeprom-id')
db_id = bist.get_product_id_from_eeprom(valid_ids=['magnesium', 'rhodium', ''], cmd='db-id')
return product_map[(mb_id, db_id)]
#############################################################################
# BISTS
@ -154,7 +164,7 @@ class N3XXBIST(bist.UsrpBIST):
self.get_product_id(),
)
except Exception as ex:
return {
return False, {
'throughput': 0,
'error_msg': "Failed to load AA image: {}".format(str(ex)),
}

View file

@ -216,14 +216,13 @@ def filter_results_for_lv(results, lv_compat_format):
}
return results
def get_product_id_from_eeprom(valid_ids):
def get_product_id_from_eeprom(valid_ids, cmd='eeprom-id'):
"""Return the mboard product ID
Returns something like n300, n310, e320...
"""
cmd = ['eeprom-id']
output = subprocess.check_output(
cmd,
[cmd],
stderr=subprocess.STDOUT,
shell=True,
).decode('utf-8')