From 83001959f170fc0ad67fbee7df84df39ee0e0a1f Mon Sep 17 00:00:00 2001 From: Kevin O'Connor Date: Sun, 3 Feb 2019 12:22:12 -0500 Subject: tmc2208: Use field definitions during driver init Reduce the amount of bit manipulations by using the FieldHelper class. Signed-off-by: Kevin O'Connor --- klippy/extras/tmc2130.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'klippy/extras/tmc2130.py') diff --git a/klippy/extras/tmc2130.py b/klippy/extras/tmc2130.py index a49d55df..061e9271 100644 --- a/klippy/extras/tmc2130.py +++ b/klippy/extras/tmc2130.py @@ -45,13 +45,18 @@ class FieldHelper: def __init__(self, all_fields, field_formatters={}): self.all_fields = all_fields self.field_formatters = field_formatters + self.field_to_register = { f: r for r, fields in self.all_fields.items() + for f in fields } + def lookup_register(self, field_name): + # Return the name of the register containing the given field + return self.field_to_register[field_name] def get_field(self, reg_name, field_name, reg_value): # Returns value of the register field - mask = self.all_fields.get(reg_name, {})[field_name] + mask = self.all_fields[reg_name][field_name] return (reg_value & mask) >> ffs(mask) def set_field(self, reg_name, field_name, reg_value, field_value): # Returns register value with field bits filled with supplied value - mask = self.all_fields.get(reg_name, {})[field_name] + mask = self.all_fields[reg_name][field_name] return (reg_value & ~mask) | ((field_value << ffs(mask)) & mask) def pretty_format(self, reg_name, value): # Provide a string description of a register -- cgit v1.2.3-70-g09d2