@@ -12,53 +12,39 @@ var hfstsOffset = []int{0x40, 0x48, 0x60, 0x64, 0x68, 0x6c}
1212
1313type FirmwareStatus struct {
1414 // ME 16
15- Status1v16 FirmwareStatus1v16
16- Status6v16 FirmwareStatus6v16
15+ Status1 * FirmwareStatus1
16+ Status6 * FirmwareStatus6
1717 // ME 18/21
18- Status1v21 FirmwareStatus1v21
19- Status5v21 FirmwareStatus5v21
20- Status6v21 FirmwareStatus6v21
18+ Status5 * FirmwareStatus5
2119}
2220
2321func NewFirmwareStatus (hw hwapi.LowLevelHardwareInterfaces ) (* FirmwareStatus , error ) {
2422 // ME 16
2523 hwsts1v16 , err := getHFSTS1 (hw )
2624 if err != nil {
27- return & FirmwareStatus {} , err
25+ return nil , err
2826 }
2927
30- hwsts6v16 , err := getHFSTS6 (hw )
28+ hwsts6 , err := getHFSTS6 (hw )
3129 if err != nil {
32- return & FirmwareStatus {} , err
30+ return nil , err
3331 }
3432
35- // ME 18/21
36- hwsts1v21 , err := getHFSTS121 (hw )
37- if err != nil {
38- return & FirmwareStatus {}, err
39- }
40- hwsts5v21 , err := getHFSTS521 (hw )
33+ hwsts5 , err := getHFSTS5 (hw )
4134 if err != nil {
42- return & FirmwareStatus {}, err
43- }
44-
45- hwsts6v21 , err := getHFSTS621 (hw )
46- if err != nil {
47- return & FirmwareStatus {}, err
35+ return nil , err
4836 }
4937
5038 return & FirmwareStatus {
5139 // ME 16
52- Status1v16 : * hwsts1v16 ,
53- Status6v16 : * hwsts6v16 ,
40+ Status1 : hwsts1v16 ,
41+ Status6 : hwsts6 ,
5442 // ME 18/21
55- Status1v21 : * hwsts1v21 ,
56- Status5v21 : * hwsts5v21 ,
57- Status6v21 : * hwsts6v21 ,
43+ Status5 : hwsts5 ,
5844 }, nil
5945}
6046
61- type FirmwareStatus1v16 struct {
47+ type FirmwareStatus1 struct {
6248 WorkingState uint32
6349 MfgMode bool
6450 FPTBad bool
@@ -75,7 +61,7 @@ type FirmwareStatus1v16 struct {
7561 BISTResetRequest bool
7662}
7763
78- type FirmwareStatus6v16 struct {
64+ type FirmwareStatus6 struct {
7965 ForceACMBootPolicy bool
8066 CPUDebugDisabled bool
8167 BSPInitDisabled bool
@@ -97,13 +83,13 @@ type FirmwareStatus6v16 struct {
9783 TXTSupported bool
9884}
9985
100- func getHFSTS1 (hw hwapi.LowLevelHardwareInterfaces ) (* FirmwareStatus1v16 , error ) {
86+ func getHFSTS1 (hw hwapi.LowLevelHardwareInterfaces ) (* FirmwareStatus1 , error ) {
10187 hfsts1 , err := readHFSTSFromPCIConfigSpace (hw , 1 )
10288 if err != nil {
10389 return nil , fmt .Errorf ("couldn't read HFSTS6 from PCI config space: %v" , err )
10490 }
10591
106- firmwareStatus := FirmwareStatus1v16 {}
92+ firmwareStatus := FirmwareStatus1 {}
10793
10894 configSpace := binary .LittleEndian .Uint32 (hfsts1 )
10995
@@ -125,13 +111,13 @@ func getHFSTS1(hw hwapi.LowLevelHardwareInterfaces) (*FirmwareStatus1v16, error)
125111 return & firmwareStatus , nil
126112}
127113
128- func getHFSTS6 (hw hwapi.LowLevelHardwareInterfaces ) (* FirmwareStatus6v16 , error ) {
114+ func getHFSTS6 (hw hwapi.LowLevelHardwareInterfaces ) (* FirmwareStatus6 , error ) {
129115 hfsts6 , err := readHFSTSFromPCIConfigSpace (hw , 6 )
130116 if err != nil {
131117 return nil , fmt .Errorf ("couldn't read HFSTS6 from PCI config space: %v" , err )
132118 }
133119
134- firmwareStatus := FirmwareStatus6v16 {}
120+ firmwareStatus := FirmwareStatus6 {}
135121
136122 configSpace := binary .LittleEndian .Uint32 (hfsts6 )
137123 firmwareStatus .ForceACMBootPolicy = (configSpace >> 0 )& 1 != 0
@@ -157,13 +143,7 @@ func getHFSTS6(hw hwapi.LowLevelHardwareInterfaces) (*FirmwareStatus6v16, error)
157143 return & firmwareStatus , nil
158144}
159145
160- type FirmwareStatus1v21 struct {
161- WorkingState uint32
162- MfgMode bool
163- OperatingMode uint32
164- }
165-
166- type FirmwareStatus5v21 struct {
146+ type FirmwareStatus5 struct {
167147 BgACMStatus bool
168148 VLD bool
169149 RCS bool
@@ -175,33 +155,14 @@ type FirmwareStatus5v21 struct {
175155 BgStatus uint32
176156}
177157
178- type FirmwareStatus6v21 struct {
179- FPFLock bool
180- }
181-
182- func getHFSTS121 (hw hwapi.LowLevelHardwareInterfaces ) (* FirmwareStatus1v21 , error ) {
183- hfsts1 , err := readHFSTSFromPCIConfigSpace (hw , 1 )
184- if err != nil {
185- return nil , fmt .Errorf ("couldn't read HFSTS5 from PCI config space: %v" , err )
186- }
187-
188- firmwareStatus := FirmwareStatus1v21 {}
189-
190- configSpace := binary .LittleEndian .Uint32 (hfsts1 )
191- firmwareStatus .WorkingState = (configSpace >> 0 ) & 15
192- firmwareStatus .MfgMode = (configSpace >> 4 )& 1 != 0
193- firmwareStatus .OperatingMode = (configSpace >> 16 ) & 15
194-
195- return & firmwareStatus , nil
196- }
197-
198- func getHFSTS521 (hw hwapi.LowLevelHardwareInterfaces ) (* FirmwareStatus5v21 , error ) {
158+ // ME 18/21
159+ func getHFSTS5 (hw hwapi.LowLevelHardwareInterfaces ) (* FirmwareStatus5 , error ) {
199160 hfsts5 , err := readHFSTSFromPCIConfigSpace (hw , 5 )
200161 if err != nil {
201162 return nil , fmt .Errorf ("couldn't read HFSTS5 from PCI config space: %v" , err )
202163 }
203164
204- firmwareStatus := FirmwareStatus5v21 {}
165+ firmwareStatus := FirmwareStatus5 {}
205166
206167 configSpace := binary .LittleEndian .Uint32 (hfsts5 )
207168 firmwareStatus .BgACMStatus = (configSpace >> 0 )& 1 != 0
@@ -217,20 +178,6 @@ func getHFSTS521(hw hwapi.LowLevelHardwareInterfaces) (*FirmwareStatus5v21, erro
217178 return & firmwareStatus , nil
218179}
219180
220- func getHFSTS621 (hw hwapi.LowLevelHardwareInterfaces ) (* FirmwareStatus6v21 , error ) {
221- hfsts6 , err := readHFSTSFromPCIConfigSpace (hw , 6 )
222- if err != nil {
223- return nil , fmt .Errorf ("couldn't read HFSTS6 from PCI config space: %v" , err )
224- }
225-
226- firmwareStatus := FirmwareStatus6v21 {}
227-
228- configSpace := binary .LittleEndian .Uint32 (hfsts6 )
229- firmwareStatus .FPFLock = (configSpace >> 30 )& 1 != 0
230-
231- return & firmwareStatus , nil
232- }
233-
234181func readHFSTSFromPCIConfigSpace (hw hwapi.LowLevelHardwareInterfaces , offset int ) ([]byte , error ) {
235182 if offset < 1 || offset > 6 {
236183 return nil , fmt .Errorf ("invalid HFSTS offset" )
0 commit comments