Merge pull request #901 from stffrdhrn/litex-sdcard-irq

integration/soc: Wire up the sdirq to the CPU
This commit is contained in:
enjoy-digital 2021-04-30 12:30:35 +02:00 committed by GitHub
commit fb8f45be73
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 15 additions and 4 deletions

View File

@ -1070,12 +1070,17 @@ class SoC(Module):
continue
if hasattr(self, name):
module = getattr(self, name)
if not hasattr(module, "ev"):
ev = None
if hasattr(module, "ev"):
ev = module.ev
elif isinstance(module, EventManager):
ev = module
else:
self.logger.error("EventManager {} in {} SubModule.".format(
colorer("not found", color="red"),
colorer(name)))
raise
self.comb += self.cpu.interrupt[loc].eq(module.ev.irq)
self.comb += self.cpu.interrupt[loc].eq(ev.irq)
self.add_constant(name + "_INTERRUPT", loc)
# SoC Infos --------------------------------------------------------------------------------
@ -1558,6 +1563,8 @@ class LiteXSoC(SoC):
self.sdirq.mem2block_dma.trigger.eq(self.sdmem2block.irq),
self.sdirq.cmd_done.trigger.eq(self.sdcore.cmd_event.fields.done)
]
if self.irq.enabled:
self.irq.add("sdirq", use_loc_if_exists=True)
# Debug.
if software_debug:

View File

@ -283,8 +283,10 @@ def generate_dts(d, initrd_start=None, initrd_size=None, polling=False):
reg = <0x{sdphy_csr_base:x} 0x100>,
<0x{sdcore_csr_base:x} 0x100>,
<0x{sdblock2mem:x} 0x100>,
<0x{sdmem2block:x} 0x100>;
<0x{sdmem2block:x} 0x100>,
<0x{sdirq:x} 0x100>;
bus-width = <0x04>;
{sdirq_interrupt}
status = "okay";
}};
""".format(
@ -292,7 +294,9 @@ def generate_dts(d, initrd_start=None, initrd_size=None, polling=False):
sdphy_csr_base = d["csr_bases"]["sdphy"],
sdcore_csr_base = d["csr_bases"]["sdcore"],
sdblock2mem = d["csr_bases"]["sdblock2mem"],
sdmem2block = d["csr_bases"]["sdmem2block"]
sdmem2block = d["csr_bases"]["sdmem2block"],
sdirq = d["csr_bases"]["sdirq"],
sdirq_interrupt = "" if polling else "interrupts = <{}>;".format(d["constants"]["sdirq_interrupt"])
)
# Leds -----------------------------------------------------------------------------------------