tmc2130: Add support for two's complement signed fields to FieldHelper

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
This commit is contained in:
Kevin O'Connor 2019-05-29 09:14:21 -04:00
parent 2cff3291c0
commit 6903ab87ca
4 changed files with 31 additions and 24 deletions

View file

@ -168,12 +168,13 @@ Fields["PWM_AUTO"] = {
"PWM_GRAD_AUTO": 0xff << 16
}
SignedFields = ["CUR_A", "CUR_B", "PWM_SCALE_AUTO"]
FieldFormatters = dict(tmc2130.FieldFormatters)
FieldFormatters.update({
"SEL_A": (lambda v: "%d(%s)" % (v, ["TMC222x", "TMC220x"][v])),
"s2vsa": (lambda v: "1(LowSideShort_A!)" if v else ""),
"s2vsb": (lambda v: "1(LowSideShort_B!)" if v else ""),
"PWM_SCALE_AUTO": (lambda v: tmc2130.decode_signed_int(v, 9))
})
@ -284,7 +285,8 @@ class TMC2208:
# Setup basic register values
self.ifcnt = None
self.regs = collections.OrderedDict()
self.fields = tmc2130.FieldHelper(Fields, FieldFormatters, self.regs)
self.fields = tmc2130.FieldHelper(Fields, SignedFields, FieldFormatters,
self.regs)
self.fields.set_field("pdn_disable", True)
self.fields.set_field("mstep_reg_select", True)
self.fields.set_field("multistep_filt", True)