From: Florent Kermarrec Date: Sun, 22 Feb 2015 23:09:31 +0000 (+0100) Subject: host/driver/reg: use burst mode to speed up upload of data (useful with Etherbone) X-Git-Tag: 24jan2021_ls180~2575^2~7 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=861c54760ec99ab923a989e5a2486c1ba53b1233;p=litex.git host/driver/reg: use burst mode to speed up upload of data (useful with Etherbone) --- diff --git a/litescope/host/driver/reg.py b/litescope/host/driver/reg.py index 16a98d91..696a94e2 100644 --- a/litescope/host/driver/reg.py +++ b/litescope/host/driver/reg.py @@ -12,19 +12,24 @@ class MappedReg: def read(self): if self.mode not in ["rw", "ro"]: raise KeyError(name + "register not readable") - r = 0 - for i in range(self.length): - r |= self.readfn(self.addr + 4*i) - if i != (self.length-1): - r <<= self.busword - return r + datas = self.readfn(self.addr, burst_length=self.length) + if isinstance(datas, int): + return datas + else: + data = 0 + for i in range(self.length): + data |= datas[i] + if i != (self.length-1): + data <<= self.busword + return data def write(self, value): if self.mode not in ["rw", "wo"]: raise KeyError(name + "register not writable") + datas = [] for i in range(self.length): - dat = (value >> ((self.length-1-i)*self.busword)) & (2**self.busword-1) - self.writefn(self.addr + 4*i, dat) + datas.append((value >> ((self.length-1-i)*self.busword)) & (2**self.busword-1)) + self.writefn(self.addr, datas) class MappedRegs: def __init__(self, d):