From db7f21daa22464b7312070555caf3a2f53e10de2 Mon Sep 17 00:00:00 2001 From: Andrew Dennison Date: Mon, 8 Apr 2024 17:40:11 +1000 Subject: [PATCH] tools/litex_json2dts_linux: add *-endian to support csr ordering csr_ordering default is "big" but there was no way for software to detect if csr_ordering was changed to "little" to match the cpu. --- litex/tools/litex_json2dts_linux.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/litex/tools/litex_json2dts_linux.py b/litex/tools/litex_json2dts_linux.py index 8d1c215fb4..f2131690ba 100755 --- a/litex/tools/litex_json2dts_linux.py +++ b/litex/tools/litex_json2dts_linux.py @@ -54,6 +54,11 @@ def generate_dts(d, initrd_start=None, initrd_size=None, initrd=None, root_devic cpu_mmu = d["constants"].get("config_cpu_mmu", None) + # CSR Parameters ------------------------------------------------------------------------------- + csr_ordering = d["constants"].get("config_csr_ordering", "big") + assert csr_ordering in ["big", "little"] + dts_endian = f"{csr_ordering}-endian;" + # Header --------------------------------------------------------------------------------------- dts = """ /dts-v1/; @@ -517,6 +522,7 @@ def generate_dts(d, initrd_start=None, initrd_size=None, initrd=None, root_devic vmmc-supply = <&vreg_mmc>; bus-width = <0x04>; {sdcard_irq_interrupt} + {dts_endian} status = "okay"; }}; """.format( @@ -526,6 +532,7 @@ def generate_dts(d, initrd_start=None, initrd_size=None, initrd=None, root_devic sdcard_block2mem = d["csr_bases"]["sdcard_block2mem"], sdcard_mem2block = d["csr_bases"]["sdcard_mem2block"], sdcard_irq = d["csr_bases"]["sdcard_irq"], + dts_endian = dts_endian, sdcard_irq_interrupt = "" if polling else "interrupts = <{}>;".format(d["constants"]["sdcard_irq_interrupt"]) ) # Leds -----------------------------------------------------------------------------------------