From: Florent Kermarrec Date: Mon, 15 Dec 2014 12:38:50 +0000 (+0100) Subject: transport: add _get_item and simplify _encode_cmd/_decode_cmd X-Git-Tag: 24jan2021_ls180~2572^2~118 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=d970bfb1404c0ca92e2e2eb2ae20b3ca1981188a;p=litex.git transport: add _get_item and simplify _encode_cmd/_decode_cmd --- diff --git a/lib/sata/transport/__init__.py b/lib/sata/transport/__init__.py index 30baa052..f95fb393 100644 --- a/lib/sata/transport/__init__.py +++ b/lib/sata/transport/__init__.py @@ -3,17 +3,21 @@ from migen.genlib.fsm import FSM, NextState from lib.sata.common import * +def _get_item(obj, name, width): + if "_lsb" in name: + item = getattr(obj, name.replace("_lsb", ""))[:width] + elif "_msb" in name: + item = getattr(obj, name.replace("_msb", ""))[width:2*width] + else: + item = getattr(obj, name) + return item + def _encode_cmd(obj, description, signal): r = [] for k, v in sorted(description.items()): start = v.dword*32 + v.offset end = start + v.width - if "_lsb" in k: - item = getattr(obj, k.replace("_lsb", ""))[:v.width] - elif "_msb" in k: - item = getattr(obj, k.replace("_msb", ""))[v.width:2*v.width] - else: - item = getattr(obj, k) + item = _get_item(obj, k, v.width) r.append(signal[start:end].eq(item)) return r @@ -114,12 +118,7 @@ def _decode_cmd(signal, description, obj): for k, v in sorted(description.items()): start = v.dword*32+v.offset end = start+v.width - if "_lsb" in k: - item = getattr(obj, k.replace("_lsb", ""))[:v.width] - elif "_msb" in k: - item = getattr(obj, k.replace("_msb", ""))[v.width:2*v.width] - else: - item = getattr(obj, k) + item = _get_item(obj, k, v.width) r.append(item.eq(signal[start:end])) return r