From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 7AFE3C5DF94 for ; Mon, 24 Aug 2026 11:44:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:MIME-Version:Reply-To:List-Subscribe: List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id:Message-Id:Date: References:In-Reply-To:Cc:To:Subject:From:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=9Pfry7LDu73yjnCmbjUmA6zuqTGoKQFe5gu3x10eU4k=; b=07GWTFEl2XmAz7 qBr/Qk/IEYkiXwCltZJNo8wD+hZ8W4jfCUNFEHWh16Ha0QUR/xbttfMVD3YRFKDvCMks07BnC8Zpi VdVE5FDWYEaXFNODQHc3Qn1lHKlYvzHyW904XMW4QEHuJvwPgYzxOpgjXzoCIH06K1UJUqi4/r7nq E11OLOpZNzmgfLpvl7YxDDFCaOUTpWdrL1eRvGnV4QSPY+vRmCZ/dpTvXbrYFqBJcd8YawaJNdUrJ vkH1rlj7WX4oQ3yCedgEu18YdyfQWVf7dXJW1vVCKo8ORQTpplIN46pMn2ehgyU2BdaF1cNeJN4mQ 2DCflXumGcYPLe7zEirg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1wyT5v-0000000GXQR-0qRt; Mon, 24 Aug 2026 11:44:03 +0000 Received: from sea.source.kernel.org ([2600:3c0a:e001:78e:0:1991:8:25]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1wyT5u-0000000GXQH-2zZ3 for linux-phy@lists.infradead.org; Mon, 24 Aug 2026 11:44:02 +0000 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by sea.source.kernel.org (Postfix) with ESMTP id 63628401FA; Mon, 24 Aug 2026 11:44:02 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 128B01F00A3D; Mon, 24 Aug 2026 11:44:02 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1787571842; bh=FNjUI1xb/mI1XLPALLA6UhvSP4BLItEmo52d5RUEXzo=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=FoJ/GwLChuqQmg1pbQqmhgSnU1YW5zfUgBDDZDI5b4p/LX8vapXV7CYT2CD1rCHUn N1juf8sGEzxcy6zUHJhnlJ3eqElMDzDWXUsAJeQA8UxT5S4LwD/4WE8+UzwmrdWFbm nCyXqj+bxS1K8XrQf0Vq9H/LX8CPW2Z6XknoLQU7R4wswBi+Wy67MsJehSiFjyMq/a nlFwl0N91WvQjYM6PWBsSMHVJVoUgv93Due7b8Ilu+w3H91HMSp7zt7nCq6NJOdjjy x3llgHbkYOJhxjC1ikYTqKjrkb1nLhEY5eB8HoGv5vMDf76ZL+UUr5G7f8djFlNXtx NrN1qzoEFQilg== From: sashiko-bot@kernel.org Subject: Re: [PATCH 1/4] phy: qcom: qmp-combo: delay Type-C mux switch while DP PHY is initializing To: "Saurabh Anand" Cc: dri-devel@lists.freedesktop.org, vkoul@kernel.org, neil.armstrong@linaro.org, linux-phy@lists.infradead.org, olteanv@gmail.com In-Reply-To: <20260824-qcom-dp-typec-reconnect-fixes-v1-1-2825e5bf8a96@oss.qualcomm.com> References: <20260824-qcom-dp-typec-reconnect-fixes-v1-0-2825e5bf8a96@oss.qualcomm.com> <20260824-qcom-dp-typec-reconnect-fixes-v1-1-2825e5bf8a96@oss.qualcomm.com> Date: Mon, 24 Aug 2026 11:44:01 +0000 Message-Id: <20260824114402.128B01F00A3D@smtp.kernel.org> X-BeenThere: linux-phy@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux Phy Mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: sashiko-reviews@lists.linux.dev MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-phy" Errors-To: linux-phy-bounces+linux-phy=archiver.kernel.org@lists.infradead.org VGhhbmsgeW91IGZvciB5b3VyIGNvbnRyaWJ1dGlvbiEgU2FzaGlrbyBBSSByZXZpZXcgZm91bmQg MyBwb3RlbnRpYWwgaXNzdWUocykgdG8gY29uc2lkZXI6CgpQcmUtZXhpc3RpbmcgaXNzdWVzOgot IFtIaWdoXSBJbmNvbXBsZXRlIGZpeCBmb3IgRFAgUEhZIHN0YXRlIGNvcnJ1cHRpb24gZHVyaW5n IFR5cGUtQyBvcmllbnRhdGlvbiBjaGFuZ2VzLgotIFtIaWdoXSBUeXBlLUMgbXV4IHN0YXRlIHVw ZGF0ZXMgYXJlIHNpbGVudGx5IGRyb3BwZWQgd2hlbiBEUCBQSFkgaXMgYWN0aXZlLCBicmVha2lu ZyBkeW5hbWljIHBpbiBhc3NpZ25tZW50LgotIFtIaWdoXSBJbnRlZ2VyIHVuZGVyZmxvdyBvZiBg dXNiX2luaXRfY291bnRgIGJyZWFrcyBVU0IgUEhZIHN0YXRlIHRyYWNraW5nLgotLQoKLS0tIFBh dGNoIFsxXTogW1BBVENIIDEvNF0gcGh5OiBxY29tOiBxbXAtY29tYm86IGRlbGF5IFR5cGUtQyBt dXggc3dpdGNoIHdoaWxlIERQIFBIWSBpcyBpbml0aWFsaXppbmcgLS0tCmNvbW1pdCAzNTQ1NmZm ZjQ3MGM5NGQxZTc1YjlmMTZjNDM4ZTFlOGNmNWRmNDBmCkF1dGhvcjogU2F1cmFiaCBBbmFuZCA8 c2F1cmFiaC5hbmFuZEBvc3MucXVhbGNvbW0uY29tPgoKcGh5OiBxY29tOiBxbXAtY29tYm86IGRl bGF5IFR5cGUtQyBtdXggc3dpdGNoIHdoaWxlIERQIFBIWSBpcyBpbml0aWFsaXppbmcKClRoaXMg Y29tbWl0IGV4dGVuZHMgdGhlIFR5cGUtQyBtdXggc3dpdGNoIGd1YXJkIHRvIGNoZWNrIGRwX2lu aXRfY291bnQgaW4KYWRkaXRpb24gdG8gZHBfcG93ZXJlZF9vbi4gVGhpcyBwcmV2ZW50cyBhIHJh Y2Ugd2luZG93IGR1cmluZyBEUCBQSFkKaW5pdGlhbGl6YXRpb24gd2hlcmUgYSBUeXBlLUMgb3Jp ZW50YXRpb24gY2hhbmdlIGNvdWxkIGNvcnJ1cHQgdGhlIFBIWSBzdGF0ZS4KCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvcGh5L3F1YWxjb21tL3BoeS1xY29tLXFtcC1jb21iby5jIGIvZHJpdmVycy9w aHkvcXVhbGNvbW0vcGh5LXFjb20tcW1wLWNvbWJvLmMKPiBpbmRleCBjMzljZWQxNjhkMDM1Li5m MjNhZmY3OWNhMDhmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvcGh5L3F1YWxjb21tL3BoeS1xY29t LXFtcC1jb21iby5jCj4gKysrIGIvZHJpdmVycy9waHkvcXVhbGNvbW0vcGh5LXFjb20tcW1wLWNv bWJvLmMKPiBAQCAtNDg0Miw3ICs0ODQyLDggQEAgc3RhdGljIGludCBxbXBfY29tYm9fdHlwZWNf bXV4X3NldChzdHJ1Y3QgdHlwZWNfbXV4X2RldiAqbXV4LCBzdHJ1Y3QgdHlwZWNfbXV4X3MKPiAg CQlyZXR1cm4gMDsKPiAgCX0KPiAgCj4gLQlpZiAocW1wLT5xbXBwaHlfbW9kZSAhPSBRTVBQSFlf TU9ERV9VU0IzX09OTFkgJiYgcW1wLT5kcF9wb3dlcmVkX29uKSB7Cj4gKwlpZiAocW1wLT5xbXBw aHlfbW9kZSAhPSBRTVBQSFlfTU9ERV9VU0IzX09OTFkgJiYKPiArCSAgICAocW1wLT5kcF9wb3dl cmVkX29uIHx8IHFtcC0+ZHBfaW5pdF9jb3VudCkpIHsKPiAgCQlkZXZfZGJnKHFtcC0+ZGV2LCAi dHlwZWNfbXV4X3NldDogRFAgUEhZIGlzIHN0aWxsIGluIHVzZSwgZGVsYXlpbmcgc3dpdGNoXG4i KTsKPiAgCQlyZXR1cm4gMDsKPiAgCX0KCltTZXZlcml0eTogSGlnaF0KVGhpcyBpcyBhIHByZS1l eGlzdGluZyBpc3N1ZSwgYnV0IGRvZXMgdGhpcyBlYXJseSByZXR1cm4gY2F1c2UgdGhlIGRyaXZl ciB0bwpzaWxlbnRseSBkcm9wIGxlZ2l0aW1hdGUgbXV4IHN0YXRlIHVwZGF0ZXM/CgpXaGVuIHRo ZSBUeXBlLUMgZnJhbWV3b3JrIG5lZ290aWF0ZXMgYSBkeW5hbWljIHBpbiBhc3NpZ25tZW50IGFu ZCBjYWxscwpxbXBfY29tYm9fdHlwZWNfbXV4X3NldCgpLCByZXR1cm5pbmcgMCBoZXJlIHdpdGhv dXQgc2F2aW5nIHRoZSByZXF1ZXN0ZWQKbW9kZSB0byBxbXAtPnFtcHBoeV9tb2RlIG9yIHF1ZXVp bmcgaXQgbWVhbnMgdGhlIGhhcmR3YXJlIGNvdWxkIHJlbWFpbgpzdHVjayBpbiB0aGUgb2xkIGxh bmUgY29uZmlndXJhdGlvbiwgY2F1c2luZyBzdWJzZXF1ZW50IERSTSBsaW5rCnJldHJhaW5pbmcg dG8gZmFpbC4KCltTZXZlcml0eTogSGlnaF0KVGhpcyBpcyBhIHByZS1leGlzdGluZyBpc3N1ZSwg YnV0IGlzIGEgc2ltaWxhciBndWFyZCBuZWVkZWQgaW4KcW1wX2NvbWJvX3R5cGVjX3N3aXRjaF9z ZXQoKT8KClRoZSBjdXJyZW50IHBhdGNoIGZpeGVzIHRoZSByYWNlIGluIHFtcF9jb21ib190eXBl Y19tdXhfc2V0KCksIGJ1dCBhClR5cGUtQyBvcmllbnRhdGlvbiBjaGFuZ2UgYWxzbyB0cmlnZ2Vy cyBxbXBfY29tYm9fdHlwZWNfc3dpdGNoX3NldCgpLgpJZiBEUCBpcyBhY3RpdmUgb3IgaW5pdGlh bGl6aW5nLCBxbXBfY29tYm9fdHlwZWNfc3dpdGNoX3NldCgpIGZvcmNlZnVsbHkKcmVzZXRzIHRo ZSBDT00gYmxvY2s6Cgpkcml2ZXJzL3BoeS9xdWFsY29tbS9waHktcWNvbS1xbXAtY29tYm8uYzpx bXBfY29tYm9fdHlwZWNfc3dpdGNoX3NldCgpIHsKICAgICAgICAuLi4KICAgICAgICBxbXBfY29t Ym9fY29tX2V4aXQocW1wLCB0cnVlKTsKICAgICAgICBxbXBfY29tYm9fY29tX2luaXQocW1wLCB0 cnVlKTsKICAgICAgICAuLi4KfQoKRG9lcyB0aGlzIGhhcmR3YXJlIHJlc2V0IHdpcGUgb3V0IHRo ZSBEUCBQSFkgbGFuZSBhbmQgbGluayByYXRlCmNvbmZpZ3VyYXRpb25zIGFwcGxpZWQgYnkgcW1w X2NvbWJvX2RwX3Bvd2VyX29uKCksIGxlYXZpbmcgdGhlCnNvZnR3YXJlIHN0YXRlIChkcF9wb3dl cmVkX29uKSBkZXN5bmNocm9uaXplZCBmcm9tIHRoZSBoYXJkd2FyZT8KCltTZXZlcml0eTogSGln aF0KVGhpcyBpcyBhIHByZS1leGlzdGluZyBpc3N1ZSwgYnV0IGlzIHRoZXJlIGEgcmlzayBvZiBh biBpbnRlZ2VyCnVuZGVyZmxvdyB3aXRoIHVzYl9pbml0X2NvdW50IGlmIHRoZSBVU0Igc3Vic3lz dGVtIGFsc28gZGVjcmVtZW50cyBpdD8KCldoZW4gdGhlIFR5cGUtQyBtdXggc3dpdGNoZXMgdG8g UU1QUEhZX01PREVfRFBfT05MWSwKcW1wX2NvbWJvX3R5cGVjX211eF9zZXQoKSBtYW51YWxseSBk ZWNyZW1lbnRzIHRoZSBjb3VudGVyOgoKZHJpdmVycy9waHkvcXVhbGNvbW0vcGh5LXFjb20tcW1w LWNvbWJvLmM6cW1wX2NvbWJvX3R5cGVjX211eF9zZXQoKSB7CiAgICAgICAgLi4uCiAgICAgICAg aWYgKHFtcC0+dXNiX2luaXRfY291bnQpCiAgICAgICAgICAgICAgICBxbXAtPnVzYl9pbml0X2Nv dW50LS07CiAgICAgICAgLi4uCn0KCklmIHRoZSBVU0IgY29udHJvbGxlciBsYXRlciB1bmRlcmdv ZXMgYSBzdXNwZW5kIG9yIHJvbGUgc3dpdGNoIGFuZApjYWxscyBwaHlfZXhpdCgpLCBxbXBfY29t Ym9fdXNiX2V4aXQoKSB3aWxsIGRlY3JlbWVudCBpdCBhZ2FpbjoKCmRyaXZlcnMvcGh5L3F1YWxj b21tL3BoeS1xY29tLXFtcC1jb21iby5jOnFtcF9jb21ib191c2JfZXhpdCgpIHsKICAgICAgICAu Li4KICAgICAgICBxbXAtPnVzYl9pbml0X2NvdW50LS07CiAgICAgICAgLi4uCn0KCkNvdWxkIHRo aXMgdW5kZXJmbG93IHVzYl9pbml0X2NvdW50IHRvIFVJTlRfTUFYLCBjYXVzaW5nIGEgc3Vic2Vx dWVudApUeXBlLUMgb3JpZW50YXRpb24gZmxpcCB0byBmYWlsIHRvIHBvd2VyIHRoZSBVU0IgUEhZ IGJhY2sgb24/CgotLSAKU2FzaGlrbyBBSSByZXZpZXcgwrcgaHR0cHM6Ly9zYXNoaWtvLmRldi8j L3BhdGNoc2V0LzIwMjYwODI0LXFjb20tZHAtdHlwZWMtcmVjb25uZWN0LWZpeGVzLXYxLTAtMjgy NWU1YmY4YTk2QG9zcy5xdWFsY29tbS5jb20/cGFydD0xCgotLSAKbGludXgtcGh5IG1haWxpbmcg bGlzdApsaW51eC1waHlAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwczovL2xpc3RzLmluZnJhZGVh ZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1waHkK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id B60D2C5DF81 for ; Mon, 24 Aug 2026 11:44:04 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id DF2E510E758; Mon, 24 Aug 2026 11:44:03 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=kernel.org header.i=@kernel.org header.b="FoJ/GwLC"; dkim-atps=neutral Received: from sea.source.kernel.org (sea.source.kernel.org [172.234.252.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9998210E758 for ; Mon, 24 Aug 2026 11:44:02 +0000 (UTC) Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by sea.source.kernel.org (Postfix) with ESMTP id 63628401FA; Mon, 24 Aug 2026 11:44:02 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 128B01F00A3D; Mon, 24 Aug 2026 11:44:02 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1787571842; bh=FNjUI1xb/mI1XLPALLA6UhvSP4BLItEmo52d5RUEXzo=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=FoJ/GwLChuqQmg1pbQqmhgSnU1YW5zfUgBDDZDI5b4p/LX8vapXV7CYT2CD1rCHUn N1juf8sGEzxcy6zUHJhnlJ3eqElMDzDWXUsAJeQA8UxT5S4LwD/4WE8+UzwmrdWFbm nCyXqj+bxS1K8XrQf0Vq9H/LX8CPW2Z6XknoLQU7R4wswBi+Wy67MsJehSiFjyMq/a nlFwl0N91WvQjYM6PWBsSMHVJVoUgv93Due7b8Ilu+w3H91HMSp7zt7nCq6NJOdjjy x3llgHbkYOJhxjC1ikYTqKjrkb1nLhEY5eB8HoGv5vMDf76ZL+UUr5G7f8djFlNXtx NrN1qzoEFQilg== From: sashiko-bot@kernel.org Subject: Re: [PATCH 1/4] phy: qcom: qmp-combo: delay Type-C mux switch while DP PHY is initializing To: "Saurabh Anand" Cc: dri-devel@lists.freedesktop.org, vkoul@kernel.org, neil.armstrong@linaro.org, linux-phy@lists.infradead.org, olteanv@gmail.com In-Reply-To: <20260824-qcom-dp-typec-reconnect-fixes-v1-1-2825e5bf8a96@oss.qualcomm.com> References: <20260824-qcom-dp-typec-reconnect-fixes-v1-0-2825e5bf8a96@oss.qualcomm.com> <20260824-qcom-dp-typec-reconnect-fixes-v1-1-2825e5bf8a96@oss.qualcomm.com> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Date: Mon, 24 Aug 2026 11:44:01 +0000 Message-Id: <20260824114402.128B01F00A3D@smtp.kernel.org> X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: sashiko-reviews@lists.linux.dev Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Thank you for your contribution! Sashiko AI review found 3 potential issue(= s) to consider: Pre-existing issues: - [High] Incomplete fix for DP PHY state corruption during Type-C orientati= on changes. - [High] Type-C mux state updates are silently dropped when DP PHY is activ= e, breaking dynamic pin assignment. - [High] Integer underflow of `usb_init_count` breaks USB PHY state trackin= g. -- --- Patch [1]: [PATCH 1/4] phy: qcom: qmp-combo: delay Type-C mux switch wh= ile DP PHY is initializing --- commit 35456fff470c94d1e75b9f16c438e1e8cf5df40f Author: Saurabh Anand phy: qcom: qmp-combo: delay Type-C mux switch while DP PHY is initializing This commit extends the Type-C mux switch guard to check dp_init_count in addition to dp_powered_on. This prevents a race window during DP PHY initialization where a Type-C orientation change could corrupt the PHY stat= e. > diff --git a/drivers/phy/qualcomm/phy-qcom-qmp-combo.c b/drivers/phy/qual= comm/phy-qcom-qmp-combo.c > index c39ced168d035..f23aff79ca08f 100644 > --- a/drivers/phy/qualcomm/phy-qcom-qmp-combo.c > +++ b/drivers/phy/qualcomm/phy-qcom-qmp-combo.c > @@ -4842,7 +4842,8 @@ static int qmp_combo_typec_mux_set(struct typec_mux= _dev *mux, struct typec_mux_s > return 0; > } > =20 > - if (qmp->qmpphy_mode !=3D QMPPHY_MODE_USB3_ONLY && qmp->dp_powered_on) { > + if (qmp->qmpphy_mode !=3D QMPPHY_MODE_USB3_ONLY && > + (qmp->dp_powered_on || qmp->dp_init_count)) { > dev_dbg(qmp->dev, "typec_mux_set: DP PHY is still in use, delaying swi= tch\n"); > return 0; > } [Severity: High] This is a pre-existing issue, but does this early return cause the driver to silently drop legitimate mux state updates? When the Type-C framework negotiates a dynamic pin assignment and calls qmp_combo_typec_mux_set(), returning 0 here without saving the requested mode to qmp->qmpphy_mode or queuing it means the hardware could remain stuck in the old lane configuration, causing subsequent DRM link retraining to fail. [Severity: High] This is a pre-existing issue, but is a similar guard needed in qmp_combo_typec_switch_set()? The current patch fixes the race in qmp_combo_typec_mux_set(), but a Type-C orientation change also triggers qmp_combo_typec_switch_set(). If DP is active or initializing, qmp_combo_typec_switch_set() forcefully resets the COM block: drivers/phy/qualcomm/phy-qcom-qmp-combo.c:qmp_combo_typec_switch_set() { ... qmp_combo_com_exit(qmp, true); qmp_combo_com_init(qmp, true); ... } Does this hardware reset wipe out the DP PHY lane and link rate configurations applied by qmp_combo_dp_power_on(), leaving the software state (dp_powered_on) desynchronized from the hardware? [Severity: High] This is a pre-existing issue, but is there a risk of an integer underflow with usb_init_count if the USB subsystem also decrements it? When the Type-C mux switches to QMPPHY_MODE_DP_ONLY, qmp_combo_typec_mux_set() manually decrements the counter: drivers/phy/qualcomm/phy-qcom-qmp-combo.c:qmp_combo_typec_mux_set() { ... if (qmp->usb_init_count) qmp->usb_init_count--; ... } If the USB controller later undergoes a suspend or role switch and calls phy_exit(), qmp_combo_usb_exit() will decrement it again: drivers/phy/qualcomm/phy-qcom-qmp-combo.c:qmp_combo_usb_exit() { ... qmp->usb_init_count--; ... } Could this underflow usb_init_count to UINT_MAX, causing a subsequent Type-C orientation flip to fail to power the USB PHY back on? --=20 Sashiko AI review =C2=B7 https://sashiko.dev/#/patchset/20260824-qcom-dp-ty= pec-reconnect-fixes-v1-0-2825e5bf8a96@oss.qualcomm.com?part=3D1