From ddc521b0338abfba390efe91a487c24384030f2d Mon Sep 17 00:00:00 2001 From: Andrew Dennison Date: Tue, 21 May 2024 10:05:06 +1000 Subject: [PATCH 1/2] tools/litex_json2dts_linux: fix tlb-split This is also relevant to vexriscv_smp, not rocket specific. Fixes these dt-schema validation errors: cpus: cpu@0: 'tlb-split' is a dependency of 'd-tlb-size' from schema : http://devicetree.org/schemas/cpus.yaml# cpus: cpu@0: 'tlb-split' is a dependency of 'd-tlb-sets' from schema : http://devicetree.org/schemas/cpus.yaml# cpus: cpu@0: 'tlb-split' is a dependency of 'i-tlb-size' from schema : http://devicetree.org/schemas/cpus.yaml# cpus: cpu@0: 'tlb-split' is a dependency of 'i-tlb-sets' from schema : http://devicetree.org/schemas/cpus.yaml# --- litex/tools/litex_json2dts_linux.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/litex/tools/litex_json2dts_linux.py b/litex/tools/litex_json2dts_linux.py index 140ea9575..d83df1a50 100755 --- a/litex/tools/litex_json2dts_linux.py +++ b/litex/tools/litex_json2dts_linux.py @@ -161,6 +161,7 @@ def generate_dts(d, initrd_start=None, initrd_size=None, initrd=None, root_devic tlb_desc = "" if "config_cpu_dtlb_size" in d["constants"]: tlb_desc += """ + tlb-split; d-tlb-size = <{d_tlb_size}>; d-tlb-sets = <{d_tlb_ways}>; """.format( @@ -181,7 +182,6 @@ def generate_dts(d, initrd_start=None, initrd_size=None, initrd=None, root_devic next-level-cache = <&memory>; riscv,pmpgranularity = <4>; riscv,pmpregions = <8>; - tlb-split; """ else: extra_attr = "" From 5e0c3f0a04a1cf17a3f898db9b2382144cc52f4a Mon Sep 17 00:00:00 2001 From: Andrew Dennison Date: Tue, 21 May 2024 10:37:42 +1000 Subject: [PATCH 2/2] tools/litex_json2dts_linux: add compatible, model Fixes these dt-schema validation errors: /: 'compatible' is a required property from schema $id: http://devicetree.org/schemas/root-node.yaml# /: 'model' is a required property from schema $id: http://devicetree.org/schemas/root-node.yaml# --- litex/soc/integration/soc.py | 1 + litex/soc/integration/soc_core.py | 1 + litex/tools/litex_json2dts_linux.py | 10 ++++++++-- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/litex/soc/integration/soc.py b/litex/soc/integration/soc.py index 7bcdfdd8a..8fc806fa2 100644 --- a/litex/soc/integration/soc.py +++ b/litex/soc/integration/soc.py @@ -944,6 +944,7 @@ class SoC(LiteXModule, SoCCoreCompat): self.sys_clk_freq = int(sys_clk_freq) # Do conversion to int here to allow passing float to SoC. self.constants = {} self.csr_regions = {} + self.add_constant("platform", platform.name) # Set Top-Level to LiteXContext. LiteXContext.top = self diff --git a/litex/soc/integration/soc_core.py b/litex/soc/integration/soc_core.py index 34a430bfc..14e3b53be 100644 --- a/litex/soc/integration/soc_core.py +++ b/litex/soc/integration/soc_core.py @@ -247,6 +247,7 @@ class SoCCore(LiteXSoC): # Add Identifier. if ident != "": self.add_identifier("identifier", identifier=ident, with_build_time=ident_version) + self.add_constant("identifier", ident) # Add UARTBone. if with_uartbone: diff --git a/litex/tools/litex_json2dts_linux.py b/litex/tools/litex_json2dts_linux.py index d83df1a50..185b7613c 100755 --- a/litex/tools/litex_json2dts_linux.py +++ b/litex/tools/litex_json2dts_linux.py @@ -55,14 +55,20 @@ def generate_dts(d, initrd_start=None, initrd_size=None, initrd=None, root_devic cpu_mmu = d["constants"].get("config_cpu_mmu", None) # Header --------------------------------------------------------------------------------------- + platform = d["constants"]["platform"] dts = """ /dts-v1/; -/ { +/ {{ + compatible = "litex,{platform}", "litex,soc"; + model = "{identifier}"; #address-cells = <1>; #size-cells = <1>; -""" +""".format( + platform=platform, + identifier=d["constants"].get("identifier", platform), + ) # Boot Arguments -------------------------------------------------------------------------------