mirror of
https://github.com/torvalds/linux.git
synced 2026-11-07 06:17:02 +01:00
phy: apple: atc: Support DUMMY PIPEHANDLER state in configure_pipehandler
For both Thunderbolt and DisplayPort atcphy_configure_pipehandler is
reached with a request to switch to the DUMMY state (i.e. usb2 only).
With the current code this breaks USB2 when all four SS lanes are used
for DisplayPort AltMode because the -EINVAL is passed all the way back
to the phy_set_mode() call which results in tearing down xhci and dwc3
again.
Let's actually handle that case correctly and also drop the default from
the switch such that we get a compiler warning if another pipehandler
state is ever added and forgotten here.
Reported-by: Paul Cristian <p4ulcristian@gmail.com>
Closes: https://github.com/AsahiLinux/linux/pull/515
Fixes: 8e98ca1e74 ("phy: apple: Add Apple Type-C PHY")
Cc: stable@vger.kernel.org
Signed-off-by: Sven Peter <sven@kernel.org>
Reviewed-by: Janne Grunau <j@jannau.net>
Link: https://patch.msgid.link/20260821-b4-atcphy-usb4-v1-1-45c0b741e0c0@kernel.org
Signed-off-by: Vinod Koul <vkoul@kernel.org>
This commit is contained in:
parent
f1d07d242b
commit
a2fd3d1f4d
|
|
@ -1119,7 +1119,7 @@ static int atcphy_configure_pipehandler_dummy(struct apple_atcphy *atcphy)
|
|||
|
||||
static int atcphy_configure_pipehandler(struct apple_atcphy *atcphy, bool host)
|
||||
{
|
||||
int ret;
|
||||
int ret = -EINVAL;
|
||||
|
||||
lockdep_assert_held(&atcphy->lock);
|
||||
|
||||
|
|
@ -1134,8 +1134,10 @@ static int atcphy_configure_pipehandler(struct apple_atcphy *atcphy, bool host)
|
|||
ret = atcphy_configure_pipehandler_dummy(atcphy);
|
||||
atcphy->pipehandler_up = false;
|
||||
break;
|
||||
default:
|
||||
ret = -EINVAL;
|
||||
case ATCPHY_PIPEHANDLER_STATE_DUMMY:
|
||||
ret = atcphy_configure_pipehandler_dummy(atcphy);
|
||||
atcphy->pipehandler_up = false;
|
||||
break;
|
||||
}
|
||||
|
||||
return ret;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user