From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5395D47140C; Tue, 21 Jul 2026 20:21:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784665306; cv=none; b=PsPCr9cdi85qB4+zi9uDaRnPigpwsiEHYVf80R9TCDtglaj4PYgS2vLdxUhwwPJRsCpqpbyoUXpEjPTb/s8M0Fyv9xsUp2aYvMtjEv6+2qf6e8Z6lxx6SISUAATqVDnmidS2R+0czlTuS57oZhWPO3zqpx00XNYBdqMmLzGxMN0= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784665306; c=relaxed/simple; bh=SMxDoVjk+Ys94M4FR7u9Pyp8Vqsdu5h8IwlAQxW2Ivk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=NLV/lD566Z+MqkHBkQXuMyj3tsmDGjsbaZSvum2ghCNtp9FgErcb10NmJuhuXoMFVRbcjr1t4s37lAaiAacpJxPwRp9RLuu2IE5iyDVPm6+J2XZ9qQ5q/7w3pZGhvkWbiSopQVRNDB4Ym9T4KU1ZbnMT6CWs7cP9pL+pvKH1TjU= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b=X0pSd61+; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b="X0pSd61+" Received: by smtp.kernel.org (Postfix) with ESMTPSA id B3C091F00A3A; Tue, 21 Jul 2026 20:21:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linuxfoundation.org; s=korg; t=1784665305; bh=4bMCTggKaFpoLE6JFxmIQ3nPH3IRbSMLAlcQj7hBViI=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=X0pSd61+DvbI7TiMpCLxbvDQ5U7Hrckq9+NvF9EL6b3clzX3Y/7Toohj8Wz8L0LWx tBuyh8uBB7zyFMBxwgvetOHZP5epAkZFi8l9qucgTLAOfASdDbQgzFuyJS+s5WAeUv Bkwio4mp/im9CDIWVM/1UGUAADG7I17qiKgUNBpU= From: Greg Kroah-Hartman To: stable@vger.kernel.org Cc: Greg Kroah-Hartman , patches@lists.linux.dev, stable , Andrei Kuchynski , Heikki Krogerus Subject: [PATCH 6.6 0254/1266] usb: typec: ucsi: Invert DisplayPort role assignment Date: Tue, 21 Jul 2026 17:11:31 +0200 Message-ID: <20260721152447.497663484@linuxfoundation.org> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260721152441.786066624@linuxfoundation.org> References: <20260721152441.786066624@linuxfoundation.org> User-Agent: quilt/0.69 X-stable: review X-Patchwork-Hint: ignore Precedence: bulk X-Mailing-List: patches@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit 6.6-stable review patch. If anyone has any objections, please let me know. ------------------ From: Andrei Kuchynski commit d092d7edf8faefa3e27b9fc7f0e7904b06c833a2 upstream. The existing implementation assigned these flags backwards, configuring the partner's DisplayPort role to match the port's role instead of complementing it. This prevents proper configuration during DP altmode activation, often causing `pin_assignment` to remain 0 in `dp_altmode_configure()` and resulting in VDM negotiation failures: [ 583.328246] typec port1.1: VDM 0xff01a150 failed Additionally, the fix ensures that the `pin_assignment` sysfs attribute displays the correct values. Cc: stable Fixes: af8622f6a585 ("usb: typec: ucsi: Support for DisplayPort alt mode") Signed-off-by: Andrei Kuchynski Reviewed-by: Heikki Krogerus Link: https://patch.msgid.link/20260601142837.3240207-1-akuchynski@chromium.org Signed-off-by: Greg Kroah-Hartman --- drivers/usb/typec/ucsi/displayport.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --- a/drivers/usb/typec/ucsi/displayport.c +++ b/drivers/usb/typec/ucsi/displayport.c @@ -166,12 +166,12 @@ static int ucsi_displayport_status_updat * that Multi-function is preferred. */ if (DP_CAP_CAPABILITY(cap) & DP_CAP_UFP_D) { - dp->data.status |= DP_STATUS_CON_UFP_D; + dp->data.status |= DP_STATUS_CON_DFP_D; if (DP_CAP_UFP_D_PIN_ASSIGN(cap) & BIT(DP_PIN_ASSIGN_D)) dp->data.status |= DP_STATUS_PREFER_MULTI_FUNC; } else { - dp->data.status |= DP_STATUS_CON_DFP_D; + dp->data.status |= DP_STATUS_CON_UFP_D; if (DP_CAP_DFP_D_PIN_ASSIGN(cap) & BIT(DP_PIN_ASSIGN_D)) dp->data.status |= DP_STATUS_PREFER_MULTI_FUNC;