From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from bali.collaboradmins.com (bali.collaboradmins.com [148.251.105.195]) (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 AA80E37D10A; Tue, 24 Feb 2026 11:33:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.251.105.195 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771932819; cv=none; b=ByJxgKy5MBr/u+ip+LpHhq42ly3xi/56lilHOUWzjvln7rv9Sr88tVtjZft5niP8+kSLp9D1d70S5eWvmlQSVtN5R6x4qddaCrZ3bB35vL622hDefmuAy7RG0um7RFyyHfy3N9tTVT1TfYe+097JfijqSeHLqSFFfhZtV6kuxmg= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771932819; c=relaxed/simple; bh=ViFWYQQRZYNLeGhLYzhL/VKNYQiAGk3Jy3razAENlmw=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=i0h544LVGS75K35fYxZIJTBXT84eXUl/iZ/Ia450/9TH4YuX/z7WLkjVTHhBR6jfwR4cJz1LAg5vXWQb8BIe6sA7AainnLa8p87+3sgDzrSYL+AOGYlXWfxBNQdaKnpRbRrK/mROdfxZFDHxVJ+7/PnnakKpIXG5+AYGDikQrro= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b=gh5+St6S; arc=none smtp.client-ip=148.251.105.195 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b="gh5+St6S" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1771932816; bh=ViFWYQQRZYNLeGhLYzhL/VKNYQiAGk3Jy3razAENlmw=; h=Date:Subject:To:Cc:References:From:In-Reply-To:From; b=gh5+St6SGnu8AD94/BuNXZe1T1VphAruy5XD3/aswoOZs1Bj2QvU2+o6SqZ60cfGz OrVftyAzQXJYxxVcOQ7cVN2mTsDldDvG8TXv7WgCGDn+U0q9D6+2h8uAk3rZUI9zU/ fBrF6oAIjnEo5CoACl4PHzmJoeYNVRNdjnQbgrRGogHjOSz4jVjM1SEXLihkcFI11c OBzROU7GWl1WZTFVtbYoCMxeGeluEAZkPdf2/1Ma6EKMuSjUx90+ChCXlamqQl/gTy fJslWDQ/38g2uwV3HQlvnWo7Eh3a6i2hECZp5fDlsYlrUXbccKpb6kkxBasumP5j0i 4wHupLdCTLVSw== Received: from [IPV6:2a01:e0a:212:79f0:be92:a52a:153f:7a60] (unknown [IPv6:2a01:e0a:212:79f0:be92:a52a:153f:7a60]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: aferraris) by bali.collaboradmins.com (Postfix) with ESMTPSA id 9AFC017E03E5; Tue, 24 Feb 2026 12:33:35 +0100 (CET) Message-ID: <30bc5aeb-382b-49e0-824a-303230110313@collabora.com> Date: Tue, 24 Feb 2026 12:33:33 +0100 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH] Revert "tcpm: allow looking for role_sw device in the main node" To: Xu Yang , badhri@google.com, heikki.krogerus@linux.intel.com, gregkh@linuxfoundation.org, dsimic@manjaro.org Cc: linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, imx@lists.linux.dev, jun.li@nxp.com References: <20260224110139.3812757-1-xu.yang_2@nxp.com> From: Arnaud Ferraris Content-Language: en-US, fr Autocrypt: addr=arnaud.ferraris@collabora.com; keydata= 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 L9jD4jU= In-Reply-To: <20260224110139.3812757-1-xu.yang_2@nxp.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Hi, Le 24/02/2026 à 12:01, Xu Yang a écrit : > This reverts commit 1366cd228b0c67b60a2c0c26ef37fe9f7cfedb7f. I believe a plain revert isn't the right solution here, as we'll get to the same point as we were before 1366cd228b0c, where some devices stopped working properly with newer kernels. > > The fwnode_usb_role_switch_get() returns NULL only if no connection is > found, returns ERR_PTR(-EPROBE_DEFER) if connection is found but deferred > probe is needed, or a valid pointer of usb_role_switch. > > When switching from NULL check to IS_ERR_OR_NULL(), usb_role_switch_get() > will return NULL pointer which will override ERR_PTR(-EPROBE_DEFER) which > is returned by fwnode_usb_role_switch_get(). Then usb role switch can't be > obtained because the defer probe info is lost. So the unique error should > not be regarded the same as NULL. > > Fixes: 1366cd228b0c ("tcpm: allow looking for role_sw device in the main node") > Cc: stable@vger.kernel.org > Signed-off-by: Xu Yang > > --- > Also correct a description in 1366cd228b0c ("tcpm: allow looking for > role_sw device in the main node"), if the ports are defined in the tcpc > main node, NULL pointer is returned by fwnode_usb_role_switch_get() > instead of an error. > --- > drivers/usb/typec/tcpm/tcpm.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/usb/typec/tcpm/tcpm.c b/drivers/usb/typec/tcpm/tcpm.c > index 1d2f3af034c5..8e0e14a2704e 100644 > --- a/drivers/usb/typec/tcpm/tcpm.c > +++ b/drivers/usb/typec/tcpm/tcpm.c > @@ -7890,7 +7890,7 @@ struct tcpm_port *tcpm_register_port(struct device *dev, struct tcpc_dev *tcpc) > port->partner_desc.identity = &port->partner_ident; > > port->role_sw = fwnode_usb_role_switch_get(tcpc->fwnode); > - if (IS_ERR_OR_NULL(port->role_sw)) > + if (!port->role_sw) It might be worth saving the error and restoring it after the call to usb_role_switch_get() instead, something like: if (IS_ERR_OR_NULL(port->role_sw)) { err = PTR_ERR(port->role_sw); port->role_sw = usb_role_switch_get(port->dev); if (!port->role_sw) port->role_sw = ERR_PTR(err); } > port->role_sw = usb_role_switch_get(port->dev); > if (IS_ERR(port->role_sw)) { > err = PTR_ERR(port->role_sw); Best regards, Arnaud