From 861c54760ec99ab923a989e5a2486c1ba53b1233 Mon Sep 17 00:00:00 2001 From: Florent Kermarrec Date: Mon, 23 Feb 2015 00:09:31 +0100 Subject: [PATCH] host/driver/reg: use burst mode to speed up upload of data (useful with Etherbone) --- litescope/host/driver/reg.py | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) 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): -- 2.30.2