/
txt_ver_emif.go
74 lines (60 loc) · 1.53 KB
/
txt_ver_emif.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
package registers
import (
"bytes"
"encoding/binary"
)
func init() {
registry.AddRegister(TXTVerEMIF(0))
}
const TXTVerEMIfRegisterID RegisterID = "TXT.VER.EMIF"
const TXTVerEMIfRegisterOffset = 0x200
type TXTVerEMIF uint32
func (reg TXTVerEMIF) ID() RegisterID {
return TXTVerEMIfRegisterID
}
// Value returns the raw value wrapped into an interface.
func (reg TXTVerEMIF) Value() interface{} {
return reg.Raw()
}
func (reg TXTVerEMIF) Raw() uint32 {
return uint32(reg)
}
func (reg TXTVerEMIF) BitSize() uint8 {
return uint8(binary.Size(reg) * 8)
}
func (reg TXTVerEMIF) Address() uint64 {
return TxtPublicSpace + TXTVerEMIfRegisterOffset
}
func (reg TXTVerEMIF) Fields() []Field {
return []Field{
{
Name: "<reserved>",
BitOffset: 0,
BitSize: reg.BitSize(),
Value: NumberToFieldValue(uint64(reg)),
},
}
}
var _ RawRegister32 = ParseTXTVerEMIF(0)
// ReadTXTVerEMIF reads a TXTVerEMIF register from TXT config
func ReadTXTVerEMIF(data TXTConfigSpace) (TXTVerEMIF, error) {
var u32 uint32
buf := bytes.NewReader(data[TXTVerEMIfRegisterOffset:])
err := binary.Read(buf, binary.LittleEndian, &u32)
if err != nil {
return 0, err
}
return TXTVerEMIF(u32), nil
}
// ParseTXTVerEMIF returns TXTVerEMIF from a raw 64bit value
func ParseTXTVerEMIF(raw uint32) TXTVerEMIF {
return TXTVerEMIF(raw)
}
// FindTXTVerEMIF returns TXTVerEMIF register if found
func FindTXTVerEMIF(regs Registers) (TXTVerEMIF, bool) {
r := regs.Find(TXTVerEMIfRegisterID)
if r == nil {
return 0, false
}
return r.(TXTVerEMIF), true
}