summaryrefslogtreecommitdiff
path: root/drivers/thunderbolt/debugfs.c
diff options
context:
space:
mode:
authorRene Sapiens <rene.sapiens@intel.com>2024-07-19 21:37:18 +0300
committerMika Westerberg <mika.westerberg@linux.intel.com>2024-08-22 07:32:06 +0300
commit81f848d28787b1f98f0526345c8f45f6dc1baf9e (patch)
tree874c9fd87d2a0622f5df06845f09290819a3d67b /drivers/thunderbolt/debugfs.c
parent24edc397047180210ace0da60577b4a3e3d2af39 (diff)
thunderbolt: Consolidate margining parameters into a structure
Consolidate the hardware and software margining parameters into a single structure to reduce the number of parameters passed to the margining functions. Signed-off-by: Rene Sapiens <rene.sapiens@intel.com> Co-developed-by: Aapo Vienamo <aapo.vienamo@linux.intel.com> Signed-off-by: Aapo Vienamo <aapo.vienamo@linux.intel.com> Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Diffstat (limited to 'drivers/thunderbolt/debugfs.c')
-rw-r--r--drivers/thunderbolt/debugfs.c32
1 files changed, 23 insertions, 9 deletions
diff --git a/drivers/thunderbolt/debugfs.c b/drivers/thunderbolt/debugfs.c
index a0d07887990e..5d1588baea6a 100644
--- a/drivers/thunderbolt/debugfs.c
+++ b/drivers/thunderbolt/debugfs.c
@@ -780,13 +780,20 @@ static int margining_run_write(void *data, u64 val)
}
if (margining->software) {
+ struct usb4_port_margining_params params = {
+ .error_counter = USB4_MARGIN_SW_ERROR_COUNTER_CLEAR,
+ .lanes = margining->lanes,
+ .time = margining->time,
+ .right_high = margining->right_high,
+ };
+
tb_port_dbg(port,
"running software %s lane margining for %s lanes %u\n",
margining->time ? "time" : "voltage", dev_name(dev),
margining->lanes);
- ret = usb4_port_sw_margin(port, margining->target, margining->index,
- margining->lanes, margining->time, margining->right_high,
- USB4_MARGIN_SW_COUNTER_CLEAR, &margining->results[0]);
+
+ ret = usb4_port_sw_margin(port, margining->target, margining->index, &params,
+ &margining->results[0]);
if (ret)
goto out_clx;
@@ -794,16 +801,23 @@ static int margining_run_write(void *data, u64 val)
margining->index,
&margining->results[0]);
} else {
+ struct usb4_port_margining_params params = {
+ .ber_level = margining->ber_level,
+ .lanes = margining->lanes,
+ .time = margining->time,
+ .right_high = margining->right_high,
+ };
+
+ /* Clear the results */
+ margining->results[0] = 0;
+ margining->results[1] = 0;
+
tb_port_dbg(port,
"running hardware %s lane margining for %s lanes %u\n",
margining->time ? "time" : "voltage", dev_name(dev),
margining->lanes);
- /* Clear the results */
- margining->results[0] = 0;
- margining->results[1] = 0;
- ret = usb4_port_hw_margin(port, margining->target, margining->index,
- margining->lanes, margining->ber_level,
- margining->time, margining->right_high,
+
+ ret = usb4_port_hw_margin(port, margining->target, margining->index, &params,
margining->results);
}