]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
thunderbolt: debugfs: Use FIELD_GET()
authorAapo Vienamo <aapo.vienamo@linux.intel.com>
Tue, 21 May 2024 08:02:13 +0000 (11:02 +0300)
committerMika Westerberg <mika.westerberg@linux.intel.com>
Wed, 19 Jun 2024 04:30:20 +0000 (07:30 +0300)
Use the FIELD_GET() macro instead of open coding the masks and shifts.
This makes the code more compact and improves readability as it avoids
the need to wrap excessively long lines.

Signed-off-by: Aapo Vienamo <aapo.vienamo@linux.intel.com>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Reviewed-by: Yehezkel Bernat <YehezkelShB@gmail.com>
Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
drivers/thunderbolt/debugfs.c
drivers/thunderbolt/sb_regs.h

index c2a73542160922316fa67aa1169ec64f073378b5..11185cc1db92994c5b2db3b1b21b3ed8848b4347 100644 (file)
@@ -7,6 +7,7 @@
  *         Mika Westerberg <mika.westerberg@linux.intel.com>
  */
 
+#include <linux/bitfield.h>
 #include <linux/debugfs.h>
 #include <linux/pm_runtime.h>
 #include <linux/uaccess.h>
@@ -436,8 +437,7 @@ static bool both_lanes(const struct tb_margining *margining)
 static unsigned int
 independent_voltage_margins(const struct tb_margining *margining)
 {
-       return (margining->caps[0] & USB4_MARGIN_CAP_0_VOLTAGE_INDP_MASK) >>
-               USB4_MARGIN_CAP_0_VOLTAGE_INDP_SHIFT;
+       return FIELD_GET(USB4_MARGIN_CAP_0_VOLTAGE_INDP_MASK, margining->caps[0]);
 }
 
 static bool supports_time(const struct tb_margining *margining)
@@ -449,8 +449,7 @@ static bool supports_time(const struct tb_margining *margining)
 static unsigned int
 independent_time_margins(const struct tb_margining *margining)
 {
-       return (margining->caps[1] & USB4_MARGIN_CAP_1_TIME_INDP_MASK) >>
-               USB4_MARGIN_CAP_1_TIME_INDP_SHIFT;
+       return FIELD_GET(USB4_MARGIN_CAP_1_TIME_INDP_MASK, margining->caps[1]);
 }
 
 static ssize_t
@@ -845,7 +844,7 @@ static void voltage_margin_show(struct seq_file *s,
 {
        unsigned int tmp, voltage;
 
-       tmp = val & USB4_MARGIN_HW_RES_1_MARGIN_MASK;
+       tmp = FIELD_GET(USB4_MARGIN_HW_RES_1_MARGIN_MASK, val);
        voltage = tmp * margining->max_voltage_offset / margining->voltage_steps;
        seq_printf(s, "%u mV (%u)", voltage, tmp);
        if (val & USB4_MARGIN_HW_RES_1_EXCEEDS)
@@ -858,7 +857,7 @@ static void time_margin_show(struct seq_file *s,
 {
        unsigned int tmp, interval;
 
-       tmp = val & USB4_MARGIN_HW_RES_1_MARGIN_MASK;
+       tmp = FIELD_GET(USB4_MARGIN_HW_RES_1_MARGIN_MASK, val);
        interval = tmp * margining->max_time_offset / margining->time_steps;
        seq_printf(s, "%u mUI (%u)", interval, tmp);
        if (val & USB4_MARGIN_HW_RES_1_EXCEEDS)
@@ -1085,19 +1084,15 @@ static struct tb_margining *margining_alloc(struct tb_port *port,
        if (supports_software(margining))
                margining->software = true;
 
-       val = (margining->caps[0] & USB4_MARGIN_CAP_0_VOLTAGE_STEPS_MASK) >>
-               USB4_MARGIN_CAP_0_VOLTAGE_STEPS_SHIFT;
+       val = FIELD_GET(USB4_MARGIN_CAP_0_VOLTAGE_STEPS_MASK, margining->caps[0]);
        margining->voltage_steps = val;
-       val = (margining->caps[0] & USB4_MARGIN_CAP_0_MAX_VOLTAGE_OFFSET_MASK) >>
-               USB4_MARGIN_CAP_0_MAX_VOLTAGE_OFFSET_SHIFT;
+       val = FIELD_GET(USB4_MARGIN_CAP_0_MAX_VOLTAGE_OFFSET_MASK, margining->caps[0]);
        margining->max_voltage_offset = 74 + val * 2;
 
        if (supports_time(margining)) {
-               val = (margining->caps[1] & USB4_MARGIN_CAP_1_TIME_STEPS_MASK) >>
-                       USB4_MARGIN_CAP_1_TIME_STEPS_SHIFT;
+               val = FIELD_GET(USB4_MARGIN_CAP_1_TIME_STEPS_MASK, margining->caps[1]);
                margining->time_steps = val;
-               val = (margining->caps[1] & USB4_MARGIN_CAP_1_TIME_OFFSET_MASK) >>
-                       USB4_MARGIN_CAP_1_TIME_OFFSET_SHIFT;
+               val = FIELD_GET(USB4_MARGIN_CAP_1_TIME_OFFSET_MASK, margining->caps[1]);
                /*
                 * Store it as mUI (milli Unit Interval) because we want
                 * to keep it as integer.
@@ -1107,11 +1102,9 @@ static struct tb_margining *margining_alloc(struct tb_port *port,
 
        dir = debugfs_create_dir("margining", parent);
        if (supports_hardware(margining)) {
-               val = (margining->caps[1] & USB4_MARGIN_CAP_1_MIN_BER_MASK) >>
-                       USB4_MARGIN_CAP_1_MIN_BER_SHIFT;
+               val = FIELD_GET(USB4_MARGIN_CAP_1_MIN_BER_MASK, margining->caps[1]);
                margining->min_ber_level = val;
-               val = (margining->caps[1] & USB4_MARGIN_CAP_1_MAX_BER_MASK) >>
-                       USB4_MARGIN_CAP_1_MAX_BER_SHIFT;
+               val = FIELD_GET(USB4_MARGIN_CAP_1_MAX_BER_MASK, margining->caps[1]);
                margining->max_ber_level = val;
 
                /* Set the default to minimum */
index a29ef3c19422613cd9bbf543beb6d8c8f3d1dfc3..2a88edfc97b2bafb1dbbfe7b75183d886ea1547c 100644 (file)
@@ -51,30 +51,21 @@ enum usb4_sb_opcode {
 #define USB4_MARGIN_CAP_0_MODES_SW             BIT(1)
 #define USB4_MARGIN_CAP_0_2_LANES              BIT(2)
 #define USB4_MARGIN_CAP_0_VOLTAGE_INDP_MASK    GENMASK(4, 3)
-#define USB4_MARGIN_CAP_0_VOLTAGE_INDP_SHIFT   3
 #define USB4_MARGIN_CAP_0_VOLTAGE_MIN          0x0
 #define USB4_MARGIN_CAP_0_VOLTAGE_HL           0x1
 #define USB4_MARGIN_CAP_0_VOLTAGE_BOTH         0x2
 #define USB4_MARGIN_CAP_0_TIME                 BIT(5)
 #define USB4_MARGIN_CAP_0_VOLTAGE_STEPS_MASK   GENMASK(12, 6)
-#define USB4_MARGIN_CAP_0_VOLTAGE_STEPS_SHIFT  6
 #define USB4_MARGIN_CAP_0_MAX_VOLTAGE_OFFSET_MASK GENMASK(18, 13)
-#define USB4_MARGIN_CAP_0_MAX_VOLTAGE_OFFSET_SHIFT 13
 #define USB4_MARGIN_CAP_1_TIME_DESTR           BIT(8)
 #define USB4_MARGIN_CAP_1_TIME_INDP_MASK       GENMASK(10, 9)
-#define USB4_MARGIN_CAP_1_TIME_INDP_SHIFT      9
 #define USB4_MARGIN_CAP_1_TIME_MIN             0x0
 #define USB4_MARGIN_CAP_1_TIME_LR              0x1
 #define USB4_MARGIN_CAP_1_TIME_BOTH            0x2
 #define USB4_MARGIN_CAP_1_TIME_STEPS_MASK      GENMASK(15, 11)
-#define USB4_MARGIN_CAP_1_TIME_STEPS_SHIFT     11
 #define USB4_MARGIN_CAP_1_TIME_OFFSET_MASK     GENMASK(20, 16)
-#define USB4_MARGIN_CAP_1_TIME_OFFSET_SHIFT    16
 #define USB4_MARGIN_CAP_1_MIN_BER_MASK         GENMASK(25, 21)
-#define USB4_MARGIN_CAP_1_MIN_BER_SHIFT                21
 #define USB4_MARGIN_CAP_1_MAX_BER_MASK         GENMASK(30, 26)
-#define USB4_MARGIN_CAP_1_MAX_BER_SHIFT                26
-#define USB4_MARGIN_CAP_1_MAX_BER_SHIFT                26
 
 /* USB4_SB_OPCODE_RUN_HW_LANE_MARGINING */
 #define USB4_MARGIN_HW_TIME                    BIT(3)