Fix for newer SMMv2 firmware

Power policy command has
changed.  Settings
are now relegated
to the last two bytes,
with status for the first two.

Change-Id: I6505d99fef357d7e2023b7393ad9ef8920b620c7
This commit is contained in:
Jarrod Johnson 2023-03-15 08:58:45 -04:00
parent bb46b94eab
commit 1757bcaca7
2 changed files with 8 additions and 3 deletions

View File

@ -1202,7 +1202,7 @@ class OEMHandler(generic.OEMHandler):
if self.has_xcc:
return self.immhandler.get_bmc_configuration()
if self.is_fpc:
return self.smmhandler.get_bmc_configuration()
return self.smmhandler.get_bmc_configuration(self._fpc_variant)
if self.has_tsma:
return self.tsmahandler.get_bmc_configuration()
return super(OEMHandler, self).get_bmc_configuration()

View File

@ -415,7 +415,7 @@ class SMMClient(object):
5: 'Boosted',
}
def get_bmc_configuration(self):
def get_bmc_configuration(self, variant):
settings = {}
wc = self.wc
wc.request(
@ -453,7 +453,10 @@ class SMMClient(object):
powercfg = self.ipmicmd.xraw_command(0x32, 0xa2)
powercfg = bytearray(powercfg['data'])
if len(powercfg) == 5:
powercfg = powercfg[1:]
if variant and variant >> 5:
powercfg = powercfg[-2:]
else:
powercfg = powercfg[1:]
val = powercfg[0]
if val == 2:
val = 'N+N'
@ -700,6 +703,8 @@ class SMMClient(object):
if None in powercfg:
currcfg = self.ipmicmd.xraw_command(0x32, 0xa2)
currcfg = bytearray(currcfg['data'])
if variant and variant >> 5 and len(currcfg) == 5:
currcfg = currcfg[-2:]
if powercfg[0] is None:
powercfg[0] = currcfg[0]
if powercfg[1] is None: