[reggen] Headers for non-homogenous multiregs

Rather than emitting a warning we can generate the defines for
non-homogeneous multiregs, with the exception of the NUMBER_OF_*_PER_REG
field which doesn't appear to be functioning properly or to be used by
OpenTitan.

(A similar structure is used in pmp.c where it's defined without any
autogeneration, These mostly indicate that there are 32 of a certian
kind of 1 bit field in a way that doesn't appear to get initialized or
really to make sense, so I'm fairly certian it's done in error.)

Removed apparently unused and poorly behaved NUMBER_OF_*_PER_REG from
the headers until we have a usecase to add and validate it.

Signed-off-by: Drew Macrae <drewmacrae@google.com>
diff --git a/util/reggen/gen_cheader.py b/util/reggen/gen_cheader.py
index 530b617..be87a2f 100644
--- a/util/reggen/gen_cheader.py
+++ b/util/reggen/gen_cheader.py
@@ -244,20 +244,17 @@
 
 def gen_multireg_field_defines(outstr: TextIO,
                                regname: str,
-                               field: Field,
+                               fields: List[Field],
                                subreg_num: int,
                                regwidth: int,
                                existing_defines: Set[str]) -> None:
-    field_width = field.bits.width()
-    fields_per_reg = regwidth // field_width
 
-    define_name = regname + '_' + as_define(field.name + "_FIELD_WIDTH")
-    define = gen_define(define_name, [], str(field_width), existing_defines)
-    genout(outstr, define)
+    for each_field in fields:
+        field_width = each_field.bits.width()
 
-    define_name = regname + '_' + as_define(field.name + "_FIELDS_PER_REG")
-    define = gen_define(define_name, [], str(fields_per_reg), existing_defines)
-    genout(outstr, define)
+        define_name = regname + '_' + as_define(each_field.name + "_FIELD_WIDTH")
+        define = gen_define(define_name, [], str(field_width), existing_defines)
+        genout(outstr, define)
 
     define_name = regname + "_MULTIREG_COUNT"
     define = gen_define(define_name, [], str(subreg_num), existing_defines)
@@ -274,12 +271,12 @@
                          existing_defines: Set[str]) -> None:
     comment = multireg.reg.desc + " (common parameters)"
     genout(outstr, format_comment(first_line(comment)))
-    if len(multireg.reg.fields) == 1:
+    if len(multireg.reg.fields) >= 1:
         regname = as_define(component + '_' + multireg.reg.name)
-        gen_multireg_field_defines(outstr, regname, multireg.reg.fields[0],
+        gen_multireg_field_defines(outstr, regname, multireg.reg.fields,
                                    len(multireg.regs), regwidth, existing_defines)
     else:
-        log.warn("Non-homogeneous multireg " + multireg.reg.name +
+        log.warn("Fieldless multireg " + multireg.reg.name +
                  " skip multireg specific data generation.")
 
     for subreg in multireg.regs: