summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorManivannan Sadhasivam <manivannan.sadhasivam@oss.qualcomm.com>2026-07-25 10:59:16 +0200
committerBjorn Helgaas <bhelgaas@google.com>2026-07-28 11:01:35 -0500
commitb859b9366b44e48461724c19dd42cd4a05b6f49c (patch)
tree4ec6c5dd90add768533ea0f71a649abb42c35a3f
parente41bbfc4c109f2db741eef5cd0ac55600930c449 (diff)
downloadlinux-next-b859b9366b44e48461724c19dd42cd4a05b6f49c.tar.gz
linux-next-b859b9366b44e48461724c19dd42cd4a05b6f49c.zip
PCI/pwrctrl: tc9563: Skip Tx amplitude and DFE tuning for DSP3
DSP3 doesn't support tuning Tx amplitude and DFE settings. Skip the setting if DT has passed the tuning properties. There is no need to error out the whole driver because of it. Fixes: 4c9c7be47310 ("PCI: pwrctrl: Add power control driver for TC9563") Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@oss.qualcomm.com> [bhelgaas: squash https://lore.kernel.org/all/oefxm7olagbd3dby2npgly7ausiz3g6cvls5igaxdzvlbr3wrv@rjlfebi2p36j] Signed-off-by: Bjorn Helgaas <bhelgaas@google.com> Reviewed-by: Alex Elder <elder@riscstar.com> Reviewed-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com> Link: https://patch.msgid.link/20260725-tc9563-fix-v1-4-ec4286e31331@oss.qualcomm.com
-rw-r--r--drivers/pci/pwrctrl/pci-pwrctrl-tc9563.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/drivers/pci/pwrctrl/pci-pwrctrl-tc9563.c b/drivers/pci/pwrctrl/pci-pwrctrl-tc9563.c
index c1cb867ea47e..d7c5cc406d10 100644
--- a/drivers/pci/pwrctrl/pci-pwrctrl-tc9563.c
+++ b/drivers/pci/pwrctrl/pci-pwrctrl-tc9563.c
@@ -308,6 +308,7 @@ static int tc9563_pwrctrl_set_l0s_l1_entry_delay(struct tc9563_pwrctrl *tc9563,
static int tc9563_pwrctrl_set_tx_amplitude(struct tc9563_pwrctrl *tc9563,
enum tc9563_pwrctrl_ports port)
{
+ struct device *dev = tc9563->pwrctrl.dev;
u32 amp = tc9563->cfg[port].tx_amp;
int port_access;
@@ -327,6 +328,9 @@ static int tc9563_pwrctrl_set_tx_amplitude(struct tc9563_pwrctrl *tc9563,
case TC9563_DSP2:
port_access = 0x8;
break;
+ case TC9563_DSP3:
+ dev_dbg(dev, "Tx amplitude tuning not supported for DSP3\n");
+ return 0;
default:
return -EINVAL;
}
@@ -345,6 +349,7 @@ static int tc9563_pwrctrl_disable_dfe(struct tc9563_pwrctrl *tc9563,
enum tc9563_pwrctrl_ports port)
{
struct tc9563_pwrctrl_cfg *cfg = &tc9563->cfg[port];
+ struct device *dev = tc9563->pwrctrl.dev;
int port_access, lane_access = 0x3;
u32 phy_rate = 0x21;
@@ -363,6 +368,9 @@ static int tc9563_pwrctrl_disable_dfe(struct tc9563_pwrctrl *tc9563,
port_access = 0x8;
lane_access = 0x1;
break;
+ case TC9563_DSP3:
+ dev_dbg(dev, "DFE tuning not supported for DSP3\n");
+ return 0;
default:
return -EINVAL;
}
@@ -393,11 +401,17 @@ static int tc9563_pwrctrl_set_nfts(struct tc9563_pwrctrl *tc9563,
{TC9563_NFTS_2_5_GT, nfts[0]},
{TC9563_NFTS_5_GT, nfts[1]},
};
+ struct device *dev = tc9563->pwrctrl.dev;
int ret;
if (!nfts[0])
return 0;
+ if (port == TC9563_VDSP) {
+ dev_dbg(dev, "N_FTS tuning not supported for VDSP\n");
+ return 0;
+ }
+
ret = tc9563_pwrctrl_i2c_write(tc9563->client, TC9563_PORT_SELECT,
BIT(port));
if (ret)