aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKonrad Dybcio <konrad.dybcio@oss.qualcomm.com>2026-04-13 11:02:43 +0200
committerMika Westerberg <mika.westerberg@linux.intel.com>2026-04-27 07:12:55 +0200
commitbabaad95670d1871860306beddd7ef1c4f114ffe (patch)
tree449f3a90c6c4ab380feea14b715ab246e6b7fded
parent254f49634ee16a731174d2ae34bc50bd5f45e731 (diff)
thunderbolt: debugfs: Don't stop reading SB registers if just one fails
The GEN4 TxFFE register is not part of the USB4 v1.0 specification, so understandably some pre-USB4v2 retimers (like the Parade PS8830) don't seem to implement it. The immediate idea to counter this would be to introduce a version check for that specific register, but on a second thought, the current flow only returns a quiet -EIO if there's any failures, without hinting at what the actual problem is. To take care of both of these issues, simply print an error line for each SB register read that fails and go on with attempting to read the others. Note that this is not quite in-spec behavior ("The SB Register Space registers shall have the structure and fields described in Table 4-17. Registers not listed in Table 4-20 are undefined and shall not be used."), but it's the easiest fix that shouldn't have real-world bad side effects. Fixes: 6d241fa00159 ("thunderbolt: Add sideband register access to debugfs") Signed-off-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
-rw-r--r--drivers/thunderbolt/debugfs.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/thunderbolt/debugfs.c b/drivers/thunderbolt/debugfs.c
index 042f6a0d0f7f..d089d2decedd 100644
--- a/drivers/thunderbolt/debugfs.c
+++ b/drivers/thunderbolt/debugfs.c
@@ -2361,8 +2361,10 @@ static int sb_regs_show(struct tb_port *port, const struct sb_reg *sb_regs,
memset(data, 0, sizeof(data));
ret = usb4_port_sb_read(port, target, index, regs->reg, data,
regs->size);
- if (ret)
- return ret;
+ if (ret) {
+ seq_printf(s, "0x%02x <not accessible>\n", regs->reg);
+ continue;
+ }
seq_printf(s, "0x%02x", regs->reg);
for (j = 0; j < regs->size; j++)