diff options
| -rwxr-xr-x | host/lib/ic_reg_maps/gen_zbx_cpld_regs.py | 25 | 
1 files changed, 17 insertions, 8 deletions
| diff --git a/host/lib/ic_reg_maps/gen_zbx_cpld_regs.py b/host/lib/ic_reg_maps/gen_zbx_cpld_regs.py index fce051d53..5e5274930 100755 --- a/host/lib/ic_reg_maps/gen_zbx_cpld_regs.py +++ b/host/lib/ic_reg_maps/gen_zbx_cpld_regs.py @@ -399,19 +399,28 @@ void set_reg(uint16_t addr, uint32_t val)      }  } +<% +    ro_regs = set() +    for reg in filter(lambda reg: reg.is_readonly(), filter(all_addr_filter, regs)): +        for index in range(reg.get_array_len() if reg.is_array else 1): +            ro_regs.add(reg.get_addr() + index * reg.get_addr_step_size()) + +    rw_regs = set() +    for reg in filter(lambda reg: not reg.is_readonly(), filter(all_addr_filter, regs)): +        for index in range(reg.get_array_len() if reg.is_array else 1): +            rw_regs.add(reg.get_addr() + index * reg.get_addr_step_size()) +%> +  template<typename T> std::set<T> get_all_addrs(bool include_ro = false)  {      std::set<T> addrs; -    % for reg in filter(all_addr_filter, regs): -        % if reg.is_readonly():      if (include_ro) { -        % else: -    { -        % endif -        % for index in range(reg.get_array_len() if reg.is_array else 1): -        addrs.insert(${reg.get_addr() + index * reg.get_addr_step_size()}); -        % endfor +    % for reg in sorted(ro_regs): +        addrs.insert(${reg}); +    % endfor      } +    % for reg in sorted(rw_regs): +    addrs.insert(${reg});      % endfor      return addrs;  } | 
