File: gen_reg_include.py

package info (click to toggle)
m1n1 1.5.2-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 5,468 kB
  • sloc: python: 42,002; ansic: 33,376; asm: 1,101; makefile: 271; xml: 177; sh: 116
file content (35 lines) | stat: -rw-r--r-- 912 bytes parent folder | download | duplicates (3)
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
import json, sys
import argparse

parser = argparse.ArgumentParser()
parser.add_argument("--imp-apl-prefix", action="store_true")
parser.add_argument("regfile")
args = parser.parse_args()

if args.imp_apl_prefix:
    prefix = "IMP_APL_"
else:
    prefix = ""

data = json.load(open(args.regfile))
for reg in data:
    name = reg['name']

    print(f"#define SYS_{prefix}{name} sys_reg({', '.join(str(i) for i in reg['enc'])})")

    if name[-4:-1] == "_EL":
        name = name[:-4]

    for fieldset in reg.get("fieldsets", []):
        if "instance" in fieldset:
            print(f"// {fieldset['instance']}")
        for f in fieldset["fields"]:
            fname = f["name"]
            msb, lsb = f["msb"], f["lsb"]

            if msb == lsb:
                print(f"#define {name}_{fname} BIT({lsb})")
            else:
                print(f"#define {name}_{fname} GENMASK({msb}, {lsb})")

    print()