File: gen.py

package info (click to toggle)
hackrf 2026.01.3-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 38,216 kB
  • sloc: ansic: 60,696; python: 6,072; xml: 3,424; perl: 2,730; makefile: 601; asm: 514; vhdl: 319; sh: 179; awk: 20
file content (29 lines) | stat: -rwxr-xr-x 1,021 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
#!/usr/bin/env python

import sys
import yaml
import yaml_odict
from collections import OrderedDict

from pprint import pprint

registers = yaml.load(open(sys.argv[1], 'r'))

for register_name, register in registers.iteritems():
    print('/* --- %s values %s */' % (register_name, '-' * (50 - len(register_name))))
    print
    fields = register['fields']
    #for field_name, field in sorted(fields.items(), lambda x, y: cmp(x[1]['lsb'], y[1]['lsb'])):
    for field_name, field in fields.items():
        mask_bits = (1 << field['width']) - 1
        print('/* %s: %s */' % (field_name, field['description']))
        print('#define %s_%s_SHIFT (%d)' % (
            register_name, field_name, field['lsb'],
        ))
        print('#define %s_%s_MASK (0x%x << %s_%s_SHIFT)' % (
            register_name, field_name, mask_bits, register_name, field_name,
        ))
        print('#define %s_%s(x) ((x) << %s_%s_SHIFT)' % (
            register_name, field_name, register_name, field_name,
        ))
        print