diff --git a/litex/tools/litex_json2dts_zephyr.py b/litex/tools/litex_json2dts_zephyr.py index 707e710c5..c29d9cabf 100755 --- a/litex/tools/litex_json2dts_zephyr.py +++ b/litex/tools/litex_json2dts_zephyr.py @@ -45,7 +45,7 @@ def indent(line, levels=1): def indent_all(text, levels=1): - return '\n'.join(map(indent, text.splitlines())) + return '\n'.join([indent(line, levels) for line in text.splitlines()]) def indent_all_but_first(text, levels=1): @@ -66,27 +66,26 @@ def dts_close(): return "};\n" -def dts_intr(name, csr): - return indent("interrupts = <{} 0>;\n".format( - hex(csr['constants'][name + '_interrupt']) - )) +def dts_intr(name, csr, levels=1): + irq = csr['constants'].get(name + '_interrupt', None) + return indent(f"interrupts = <{irq} 0>;\n" if irq else "", levels) -def dts_reg(regs): +def dts_reg(regs, levels=1): dtsi = 'reg = <' - formatted_registers = '\n'.join( + formatted_registers = '>,\n<'.join( '0x{:x} 0x{:x}'.format(reg['addr'], reg['size']) for reg in regs ) - dtsi += indent_all_but_first(formatted_registers) + dtsi += indent_all_but_first(formatted_registers, 1) dtsi += '>;' - return indent_all(dtsi) + '\n' + return indent_all(dtsi, levels) + '\n' -def dts_reg_names(regs): +def dts_reg_names(regs, levels=1): dtsi = 'reg-names = ' formatted_registers = ',\n'.join( @@ -94,10 +93,10 @@ def dts_reg_names(regs): for reg in regs ) - dtsi += indent_all_but_first(formatted_registers) + dtsi += indent_all_but_first(formatted_registers, 1) dtsi += ';' - return indent_all(dtsi) + '\n' + return indent_all(dtsi, levels) + '\n' # DTS handlers