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 067F1C43458 for ; Fri, 10 Jul 2026 21:15:37 +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=+Z4l+Qd5G3wL0Ru+GA5dP5itK6qhm3F/iKw3hDeavgQ=; b=B0ZJdcOMCgpwXO PFzm9rX69eeDCudv/KzOGsHyllXA0vtwleYIGocX3GheO8FzljTJK70otwAbMZmJDuyXbp/t3/TCh 4acW8nkfpZX2JmOFJHCQtiPUQ2YjuqH1lPuItJsZu4N5EzzAd+027bhXkVf84MDHwsclDBfh4Wg8Y YjLiT91KPNmHvRX0Ohwvx2eveAeMbRXd3JdgaxsSf5XZOuYjXBP8U6i2r12v6hDQkXi5SKUHtQlLp qVb2u/nxbIGi6GgB3uvo33AY3Ps0OlyzKjX4r6brP9uWhAfz+Rmiv0XovFFEqAENIdPbUWUCSEF8y f1G8hNLj78TegDFULz8Q==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1wiIZM-00000005mng-3G8A; Fri, 10 Jul 2026 21:15:36 +0000 Received: from tor.source.kernel.org ([2600:3c04:e001:324:0:1991:8:25]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1wiIZK-00000005mnI-3XqN for linux-phy@lists.infradead.org; Fri, 10 Jul 2026 21:15:34 +0000 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by tor.source.kernel.org (Postfix) with ESMTP id 02DB260051; Fri, 10 Jul 2026 21:15:34 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 460201F000E9; Fri, 10 Jul 2026 21:15:33 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1783718133; bh=mSMn8ktTR1mf/DKEwlzAsknkClUSx+l2ubdqBKejdFQ=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=Ji/gZ+NvlGKnZEG1wlrriS0LSF1cIzsQvOXTkQzq7CEQrWHs/gi683wZ3vbKctxA0 QFQ9R3qfc6yOuEZXKAUyNtm6o14O6DF+FXVnTti/Bwyw4U50xD6SgGNTS8dxKcsqSw V/3d6HtRO0sYnt0jALXuaWympDnSBJdXiXZsX5FN/FBfBzpAOCwzRam8Gpr7ukPjNK RjUzbBe4bwyAzTWeZVZxYdEMxWIQvmvsmsddtCYI0Q8s2zZ2KYD/VCNS8JFEvcD3aq aQUblbqlyVBdldQ2sRH/tXPDlb2xp4jfTIFnSzGsI42nBcgLlEd/AvDZk/Th9Mh0Va B2TghSBSlsR4w== From: sashiko-bot@kernel.org Subject: Re: [PATCH v12 02/36] phy: rockchip: usbdp: Update mode_change after error handling To: "Sebastian Reichel" Cc: conor+dt@kernel.org, olteanv@gmail.com, neil.armstrong@linaro.org, linux-phy@lists.infradead.org, vkoul@kernel.org, robh@kernel.org, devicetree@vger.kernel.org In-Reply-To: <20260710-rockchip-usbdp-cleanup-v12-2-8b41a9a9bef0@collabora.com> References: <20260710-rockchip-usbdp-cleanup-v12-0-8b41a9a9bef0@collabora.com> <20260710-rockchip-usbdp-cleanup-v12-2-8b41a9a9bef0@collabora.com> Date: Fri, 10 Jul 2026 21:15:32 +0000 Message-Id: <20260710211533.460201F000E9@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 OCBwb3RlbnRpYWwgaXNzdWUocykgdG8gY29uc2lkZXI6CgpQcmUtZXhpc3RpbmcgaXNzdWVzOgot IFtDcml0aWNhbF0gQXN5bmNocm9ub3VzIFBIWSBtb2RlIGNoYW5nZXMgd2hpbGUgVVNCIGlzIGFj dGl2ZSBjYXVzZSBmYXRhbCBTRXJyb3JzIChrZXJuZWwgcGFuaWNzKSBiZWNhdXNlIFBIWSBjbG9j a3MgYXJlIGRpc2FibGVkIHdpdGhvdXQgbm90aWZ5aW5nIHRoZSBhY3RpdmUgRFdDMyBjb250cm9s bGVyLgotIFtIaWdoXSBgcmtfdWRwaHlfcG93ZXJfb24oKWAgaW5jb3JyZWN0bHkgZHJvcHMgYWN0 aXZlIGNvbnN1bWVyIHRyYWNraW5nIGluIGB1ZHBoeS0+c3RhdHVzYCBkdXJpbmcgYSBtb2RlIGNo YW5nZSwgcG90ZW50aWFsbHkgY2F1c2luZyB0aGUgUEhZIHRvIGJlIGRpc2FibGVkIHdoaWxlIHN0 aWxsIGluIHVzZS4KLSBbSGlnaF0gVGhlIFUzIChVU0IzKSBwb3J0IGlzIG5vdCByZS1lbmFibGVk IHdoZW4gdHJhbnNpdGlvbmluZyBmcm9tIERQLW9ubHkgbW9kZSB0byBEUCtVU0IgbW9kZSwgY2F1 c2luZyBVU0IzIHRvIHJlbWFpbiBicm9rZW4uCi0gW0hpZ2hdIGBya191ZHBoeV9jbGtfaW5pdCgp YCBzaGFkb3dzIHRoZSBlcnJvciBjb2RlIGZyb20gYGRldm1fY2xrX2J1bGtfZ2V0X2FsbCgpYCwg YnJlYWtpbmcgZGVmZXJyZWQgcHJvYmluZy4KLSBbSGlnaF0gVGhlIGRyaXZlciBsZWFrcyBjbG9j ayBlbmFibGUgY291bnRzIGFuZCBoYXJkd2FyZSByZXNldCBzdGF0ZXMgb24gcHJvYmUgZXJyb3Ig cGF0aHMgaWYgdGhlIGluaXRpYWwgaGFyZHdhcmUgc3RhdHVzIGlzIGFjdGl2ZS4KLSBbSGlnaF0g VGhlIGBya191ZHBoeV9kcF9waHlfY29uZmlndXJlYCBmdW5jdGlvbiBhY2Nlc3NlcyBzaGFyZWQg YXJyYXlzIGFuZCBtb2RpZmllcyBoYXJkd2FyZSByZWdpc3RlcnMgd2l0aG91dCBhY3F1aXJpbmcg YHVkcGh5LT5tdXRleGAsIGxlYWRpbmcgdG8gcmFjZSBjb25kaXRpb25zLgotIFtIaWdoXSBOb24t RFAgQWx0ZXJuYXRlIE1vZGUgZXZlbnRzIGNvcnJ1cHQgdGhlIFBIWSBsYW5lIG11eCBjb25maWd1 cmF0aW9uLCBzaWxlbnRseSBicmVha2luZyBVU0IzIGZ1bmN0aW9uYWxpdHkuCi0gW0hpZ2hdIERp c3BsYXlQb3J0IEhQRCAoSG90IFBsdWcgRGV0ZWN0KSBldmVudHMgcmVjZWl2ZWQgYmVmb3JlIHRo ZSBEUCBQSFkgaXMgaW5pdGlhbGl6ZWQgYXJlIHBlcm1hbmVudGx5IGxvc3QsIHByZXZlbnRpbmcg ZGlzcGxheSBkZXRlY3Rpb24uCi0tCgotLS0gUGF0Y2ggWzJdOiBbUEFUQ0ggdjEyIDAyLzM2XSBw aHk6IHJvY2tjaGlwOiB1c2JkcDogVXBkYXRlIG1vZGVfY2hhbmdlIGFmdGVyIGVycm9yIGhhbmRs aW5nIC0tLQpjb21taXQgNDRhM2U2NTE3NDhkNTNhNDk3ZTdiYjIxMDYxYmYzY2I4NmQ2N2ZiZApB dXRob3I6IFNlYmFzdGlhbiBSZWljaGVsIDxzZWJhc3RpYW4ucmVpY2hlbEBjb2xsYWJvcmEuY29t PgoKcGh5OiByb2NrY2hpcDogdXNiZHA6IFVwZGF0ZSBtb2RlX2NoYW5nZSBhZnRlciBlcnJvciBo YW5kbGluZwoKSWYgcmtfdWRwaHlfaW5pdCgpIG9yIHJrX3VkcGh5X3NldHVwKCkgZmFpbHMsIHRo ZSByZWluaXQgd2lsbCBub3QgYmUKdHJpZWQgYWdhaW4uIEZpeCB0aGlzIGJ5IG9ubHkgdXBkYXRp bmcgdGhlIHZhcmlhYmxlIGFmdGVyIGFsbCBwb3RlbnRpYWwKZXJyb3JzIGhhdmUgYmVlbiBoYW5k bGVkLgoKTGluazogaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvbGludXgtcGh5LzIwMjYwNjEyMTYz ODM1LjhENTQ3MUYwMDBFOUBzbXRwLmtlcm5lbC5vcmcvCgo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L3BoeS9yb2NrY2hpcC9waHktcm9ja2NoaXAtdXNiZHAuYyBiL2RyaXZlcnMvcGh5L3JvY2tjaGlw L3BoeS1yb2NrY2hpcC11c2JkcC5jCj4gaW5kZXggZmJhMzU1MTBkODhjZS4uYTVmZmRmN2E2ZTc2 YiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3BoeS9yb2NrY2hpcC9waHktcm9ja2NoaXAtdXNiZHAu Ywo+ICsrKyBiL2RyaXZlcnMvcGh5L3JvY2tjaGlwL3BoeS1yb2NrY2hpcC11c2JkcC5jCj4gQEAg LTEwMDAsMTUgKzEwMDAsMTQgQEAgc3RhdGljIGludCBya191ZHBoeV9wb3dlcl9vbihzdHJ1Y3Qg cmtfdWRwaHkgKnVkcGh5LCB1OCBtb2RlKQo+ICAJfQo+ICAKPiAgCWlmICh1ZHBoeS0+c3RhdHVz ID09IFVEUEhZX01PREVfTk9ORSkgewo+IC0JCXVkcGh5LT5tb2RlX2NoYW5nZSA9IGZhbHNlOwo+ ICAJCXJldCA9IHJrX3VkcGh5X3NldHVwKHVkcGh5KTsKPiAgCQlpZiAocmV0KQo+ICAJCQlyZXR1 cm4gcmV0Owo+ICAKPiAgCQlpZiAodWRwaHktPm1vZGUgJiBVRFBIWV9NT0RFX1VTQikKPiAgCQkJ cmtfdWRwaHlfdTNfcG9ydF9kaXNhYmxlKHVkcGh5LCBmYWxzZSk7Cj4gLQl9IGVsc2UgaWYgKHVk cGh5LT5tb2RlX2NoYW5nZSkgewo+ICAJCXVkcGh5LT5tb2RlX2NoYW5nZSA9IGZhbHNlOwo+ICsJ fSBlbHNlIGlmICh1ZHBoeS0+bW9kZV9jaGFuZ2UpIHsKCltTZXZlcml0eTogSGlnaF0KVGhpcyBp c24ndCBhIGJ1ZyBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2gsIGJ1dCBkb2VzIHRoaXMgbW9kZSBj aGFuZ2UgYmxvY2sKbmVnbGVjdCB0byBjb25kaXRpb25hbGx5IHJlLWVuYWJsZSB0aGUgVTMgcG9y dCBmb3IgVVNCIG1vZGVzPwoKSWYgdGhlIFBIWSBpcyBhY3RpdmUgaW4gRFAtb25seSBtb2RlIGFu ZCB0cmFuc2l0aW9ucyB0byBEUCtVU0IsIHRoaXMKZWxzZSBpZiAodWRwaHktPm1vZGVfY2hhbmdl KSBibG9jayBpcyB0YWtlbi4gVW5saWtlIHRoZSBpbml0aWFsaXphdGlvbgpibG9jaywgaXQgZmFp bHMgdG8gZXZhbHVhdGUgaWYgKHVkcGh5LT5tb2RlICYgVURQSFlfTU9ERV9VU0IpIGFuZCBjYWxs CnJrX3VkcGh5X3UzX3BvcnRfZGlzYWJsZSh1ZHBoeSwgZmFsc2UpLgoKRG9lcyB0aGlzIGNhdXNl IFVTQiAzLjAgdG8gZmFpbCB0byBpbml0aWFsaXplIHdoZW4gcGx1Z2dlZCBpbnRvIGFuIGFscmVh ZHkKYWN0aXZlIERpc3BsYXlQb3J0PwoKPiAgCQl1ZHBoeS0+c3RhdHVzID0gVURQSFlfTU9ERV9O T05FOwoKW1NldmVyaXR5OiBIaWdoXQpUaGlzIGlzIGEgcHJlLWV4aXN0aW5nIGlzc3VlLCBidXQg ZG9lcyB0aGlzIGZvcmNlZnVsbHkgZXJhc2UgdGhlIHRyYWNraW5nCm9mIGFsbCBjdXJyZW50bHkg YWN0aXZlIGNvbnN1bWVycyB3aXRob3V0IHRyYW5zZmVycmluZyB0aGVtIHRvIHRoZSBuZXcKc3Rh dGU/CgpJZiBEUCBpcyBhY3RpdmUsIHVkcGh5LT5zdGF0dXMgaG9sZHMgVURQSFlfTU9ERV9EUC4g V2hlbiBhIFVTQiBkZXZpY2UgaXMKcGx1Z2dlZCBpbiwgcmtfdWRwaHlfcG93ZXJfb24gaXMgY2Fs bGVkIGZvciBVRFBIWV9NT0RFX1VTQiB3aXRoIG1vZGVfY2hhbmdlCnRydWUuIFRoZSBjb2RlIGNs ZWFycyB1ZHBoeS0+c3RhdHVzIHRvIFVEUEhZX01PREVfTk9ORSBoZXJlLgoKRG9lcyB0aGlzIHBl cm1hbmVudGx5IGxvc2UgdGhlIHByZXZpb3VzbHkgYWN0aXZlIFVEUEhZX01PREVfRFAgYml0PyBX aGVuClVTQiBpcyBsYXRlciB1bnBsdWdnZWQsIHBvd2VyX29mZiBjbGVhcnMgdGhlIFVTQiBiaXQs IGRyb3BwaW5nIHN0YXR1cyB0byAwLAp3aGljaCBtaWdodCBwcmVtYXR1cmVseSBkaXNhYmxlIHRo ZSBQSFkgZGVzcGl0ZSBEUCBzdGlsbCBuZWVkaW5nIGl0LgoKPiAgCQlpZiAodWRwaHktPm1vZGUg PT0gVURQSFlfTU9ERV9EUCkKPiAgCQkJcmtfdWRwaHlfdTNfcG9ydF9kaXNhYmxlKHVkcGh5LCB0 cnVlKTsKCltTZXZlcml0eTogQ3JpdGljYWxdClRoaXMgaXNuJ3QgYSBidWcgaW50cm9kdWNlZCBi eSB0aGlzIHBhdGNoLCBidXQgZG9lcyB0aGUgYXN5bmNocm9ub3VzCmRpc2FibGluZyBvZiBQSFkg YnVsayBjbG9ja3MgYXJvdW5kIGhlcmUgY2F1c2UgZmF0YWwgU0Vycm9ycz8KCmRyaXZlcnMvcGh5 L3JvY2tjaGlwL3BoeS1yb2NrY2hpcC11c2JkcC5jOnJrX3VkcGh5X3Bvd2VyX29uKCkgewogICAg Li4uCiAgICB9IGVsc2UgaWYgKHVkcGh5LT5tb2RlX2NoYW5nZSkgewogICAgICAgIHVkcGh5LT5z dGF0dXMgPSBVRFBIWV9NT0RFX05PTkU7CiAgICAgICAgaWYgKHVkcGh5LT5tb2RlID09IFVEUEhZ X01PREVfRFApCiAgICAgICAgICAgIHJrX3VkcGh5X3UzX3BvcnRfZGlzYWJsZSh1ZHBoeSwgdHJ1 ZSk7CiAgICAgICAgcmtfdWRwaHlfZGlzYWJsZSh1ZHBoeSk7CiAgICAuLi4KfQoKSWYgRFdDMyBp cyBhY3RpdmVseSB0cmFuc2ZlcnJpbmcgVVNCIGRhdGEgYW5kIGEgRGlzcGxheVBvcnQgQWx0ZXJu YXRlIE1vZGUKZXZlbnQgYXJyaXZlcywgcmtfdWRwaHlfdHlwZWNfbXV4X3NldCB0cmlnZ2VycyBh IG1vZGUgY2hhbmdlLiBUaGUgY29kZQp1bmNvbmRpdGlvbmFsbHkgY2FsbHMgcmtfdWRwaHlfZGlz YWJsZSh1ZHBoeSkgd2hpY2ggYWJydXB0bHkgc2V2ZXJzIHRoZQpQSFkgY2xvY2tzLgoKU2luY2Ug dGhlIERXQzMgZHJpdmVyIGlzbid0IG5vdGlmaWVkLCBjb3VsZCBpdHMgbmV4dCByZWdpc3RlciBh Y2Nlc3MgaGFuZwp0aGUgc3lzdGVtIGJ1cz8KClsgLi4uIF0KCj4gQEAgLTEwMTcsNiArMTAxNiw3 IEBAIHN0YXRpYyBpbnQgcmtfdWRwaHlfcG93ZXJfb24oc3RydWN0IHJrX3VkcGh5ICp1ZHBoeSwg dTggbW9kZSkKPiAgCQlyZXQgPSBya191ZHBoeV9zZXR1cCh1ZHBoeSk7Cj4gIAkJaWYgKHJldCkK PiAgCQkJcmV0dXJuIHJldDsKPiArCQl1ZHBoeS0+bW9kZV9jaGFuZ2UgPSBmYWxzZTsKPiAgCX0K PiAgCj4gIAl1ZHBoeS0+c3RhdHVzIHw9IG1vZGU7CgpbU2V2ZXJpdHk6IEhpZ2hdClRoaXMgaXMg YSBwcmUtZXhpc3RpbmcgaXNzdWUsIGJ1dCBkb2VzIHNldHRpbmcgdGhlIHN0YXR1cyBiaXQgaGVy ZSBvbmx5CnJlZ2lzdGVyIHRoZSBjb25zdW1lciB0aGF0IHRyaWdnZXJlZCB0aGUgZnVuY3Rpb24g Y2FsbCwgbGVhdmluZyBwcmV2aW91cwpjb25zdW1lcnMgdW50cmFja2VkPwoKClRoZXJlIGFyZSBh IGZldyBvdGhlciBwcmUtZXhpc3RpbmcgaXNzdWVzIGluIHRoaXMgZmlsZSB0aGF0IG1pZ2h0IGJl IHdvcnRoCmxvb2tpbmcgaW50bzoKCltTZXZlcml0eTogSGlnaF0KVGhpcyBpc24ndCBhIGJ1ZyBp bnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2gsIGJ1dCBkb2VzIHRoaXMgbG9naWMgc2hhZG93IHRoZQpl cnJvciBjb2RlIGZyb20gZGV2bV9jbGtfYnVsa19nZXRfYWxsIGFuZCBicmVhayBkZWZlcnJlZCBw cm9iaW5nPwoKZHJpdmVycy9waHkvcm9ja2NoaXAvcGh5LXJvY2tjaGlwLXVzYmRwLmM6cmtfdWRw aHlfY2xrX2luaXQoKSB7CiAgICAuLi4KICAgIGlmICh1ZHBoeS0+bnVtX2Nsa3MgPCAxKQogICAg ICAgIHJldHVybiAtRU5PREVWOwogICAgLi4uCn0KCklmIGRldm1fY2xrX2J1bGtfZ2V0X2FsbCBy ZXR1cm5zIC1FUFJPQkVfREVGRVIgd2hlbiBjbG9jayBwcm92aWRlcnMgYXJlbid0CnJlYWR5IHll dCwgdGhpcyBleHBsaWNpdGx5IGNoZWNrcyBpZiB1ZHBoeS0+bnVtX2Nsa3MgPCAxIGFuZCByZXR1 cm5zIGEKaGFyZGNvZGVkIC1FTk9ERVYuIFdpbGwgdGhpcyBjYXVzZSB0aGUgUEhZIGRyaXZlciB0 byBmYWlsIHRvIHByb2JlCnBlcm1hbmVudGx5IGlmIGNsb2NrcyBhcmUgbm90IGltbWVkaWF0ZWx5 IGF2YWlsYWJsZSBkdXJpbmcgZWFybHkgYm9vdD8KCgpbU2V2ZXJpdHk6IEhpZ2hdClRoaXMgaXMg YSBwcmUtZXhpc3RpbmcgaXNzdWUsIGJ1dCBkb2VzIHRoZSBkcml2ZXIgbGVhayBjbG9jayBlbmFi bGUgY291bnRzCmFuZCBoYXJkd2FyZSByZXNldCBzdGF0ZXMgb24gcHJvYmUgZXJyb3IgcGF0aHMg aWYgdGhlIGluaXRpYWwgaGFyZHdhcmUKc3RhdHVzIGlzIGFjdGl2ZT8KCmRyaXZlcnMvcGh5L3Jv Y2tjaGlwL3BoeS1yb2NrY2hpcC11c2JkcC5jOnJrX3VkcGh5X3Byb2JlKCkgewogICAgLi4uCiAg ICB1ZHBoeS0+cGh5X3UzID0gZGV2bV9waHlfY3JlYXRlKGRldiwgZGV2LT5vZl9ub2RlLCAmcmtf dWRwaHlfdXNiM19waHlfb3BzKTsKICAgIGlmIChJU19FUlIodWRwaHktPnBoeV91MykpIHsKICAg ICAgICByZXQgPSBQVFJfRVJSKHVkcGh5LT5waHlfdTMpOwogICAgICAgIHJldHVybiBkZXZfZXJy X3Byb2JlKGRldiwgcmV0LCAiZmFpbGVkIHRvIGNyZWF0ZSBVU0IzIHBoeVxuIik7CiAgICB9CiAg ICAuLi4KfQoKcmtfdWRwaHlfZ2V0X2luaXRpYWxfc3RhdHVzIGNhbGxzIGNsa19idWxrX3ByZXBh cmVfZW5hYmxlLiBJZiBpdCBkZXRlY3RzCmFjdGl2ZSBEUCBoYXJkd2FyZSwgaXQgbGVhdmVzIHRo ZSBjbG9ja3MgZW5hYmxlZCBhbmQgc2V0cyB1ZHBoeS0+c3RhdHVzIHRvClVEUEhZX01PREVfRFAu CgpJZiBhbnkgc3Vic2VxdWVudCBzdGVwIGluIHJrX3VkcGh5X3Byb2JlIGZhaWxzLCB0aGUgZHJp dmVyIHJldHVybnMgdGhlIGVycm9yCndpdGhvdXQgZGlzYWJsaW5nIHRoZSBjbG9ja3MuIFdpdGhv dXQgYSBkZXZtLWFjdGlvbiByZWdpc3RlcmVkIHRvIGNsZWFuIHRoaXMKdXAsIGRvZXMgdGhpcyBj bG9jayBlbmFibGUgcmVmY291bnQgbGVhayBwcmV2ZW50IHRoZSBzeXN0ZW0gZnJvbSBldmVyCnBv d2VyaW5nIGRvd24gdGhlIGNsb2NrPwoKCltTZXZlcml0eTogSGlnaF0KVGhpcyBpc24ndCBhIGJ1 ZyBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2gsIGJ1dCBkb2VzIHJrX3VkcGh5X2RwX3BoeV9jb25m aWd1cmUKYWNjZXNzIHNoYXJlZCBhcnJheXMgYW5kIG1vZGlmeSBoYXJkd2FyZSByZWdpc3RlcnMg d2l0aG91dCBhY3F1aXJpbmcKdWRwaHktPm11dGV4LCBsZWFkaW5nIHRvIHJhY2UgY29uZGl0aW9u cz8KCmRyaXZlcnMvcGh5L3JvY2tjaGlwL3BoeS1yb2NrY2hpcC11c2JkcC5jOnJrX3VkcGh5X2Rw X3BoeV9jb25maWd1cmUoKSB7CiAgICAuLi4KICAgIGxhbmUgPSB1ZHBoeS0+ZHBfbGFuZV9zZWxb aV07CiAgICAuLi4KfQoKVGhpcyByZWFkcyBhIHNoYXJlZCBhcnJheSB0aGF0IGlzIGFjdGl2ZWx5 IG1vZGlmaWVkIGJ5IFR5cGUtQyBldmVudApoYW5kbGVycy4gQXQgdGhlIHNhbWUgdGltZSwgVHlw ZS1DIG9yaWVudGF0aW9uIHN3aXRjaCBjYWxsYmFja3MgbGlrZQpya191ZHBoeV90eXBlY19tdXhf c2V0IG9yIFVTQiBpbml0aWFsaXphdGlvbiBjYW4gbW9kaWZ5IHRoZXNlIGV4YWN0IHNhbWUKc3Ry dWN0dXJlcyBvciByZWdpc3RlcnMuCgpDb3VsZCB0aGlzIGNvbmN1cnJlbnQgYWNjZXNzIGNvcnJ1 cHQgaGFyZHdhcmUgcmVnaXN0ZXJzIG9yIHJlc3VsdCBpbgppbmNvbnNpc3RlbnQgbGFuZSBtYXBw aW5ncz8KCgpbU2V2ZXJpdHk6IEhpZ2hdClRoaXMgaXMgYSBwcmUtZXhpc3RpbmcgaXNzdWUsIGJ1 dCBkbyBub24tRFAgQWx0ZXJuYXRlIE1vZGUgZXZlbnRzIGNvcnJ1cHQKdGhlIFBIWSBsYW5lIG11 eCBjb25maWd1cmF0aW9uIGFuZCBzaWxlbnRseSBicmVhayBVU0IzIGZ1bmN0aW9uYWxpdHk/Cgpk cml2ZXJzL3BoeS9yb2NrY2hpcC9waHktcm9ja2NoaXAtdXNiZHAuYzpya191ZHBoeV90eXBlY19t dXhfc2V0KCkgewogICAgLi4uCiAgICBzd2l0Y2ggKHN0YXRlLT5tb2RlKSB7CiAgICBjYXNlIFRZ UEVDX0RQX1NUQVRFX0M6CiAgICBjYXNlIFRZUEVDX0RQX1NUQVRFX0U6CiAgICAgICAgdWRwaHkt PmxhbmVfbXV4X3NlbFswXSA9IFBIWV9MQU5FX01VWF9EUDsKICAgIC4uLgp9CgpUaGlzIGV4ZWN1 dGVzIHRoZSBzd2l0Y2ggYmxvY2sgYW5kIG92ZXJ3cml0ZXMgdWRwaHktPmxhbmVfbXV4X3NlbCBi ZWZvcmUKdmVyaWZ5aW5nIHN0YXRlLT5hbHQtPnN2aWQgPT0gVVNCX1RZUEVDX0RQX1NJRC4KCkJl Y2F1c2UgVFlQRUNfRFBfU1RBVEVfQyBpcyBkZWZpbmVkIGFzIFRZUEVDX1NUQVRFX01PREFMLCBh bnkgb3RoZXIKQWx0ZXJuYXRlIE1vZGUgdGhhdCB0cmFuc2l0aW9ucyBpbnRvIGl0cyBtb2RhbCBz dGF0ZSB3aWxsIGluYWR2ZXJ0ZW50bHkKbWF0Y2ggdGhpcyBjYXNlLiBXaWxsIHRoaXMgZXJyb25l b3VzbHkgcm91dGUgYWxsIFBIWSBsYW5lcyB0byBEaXNwbGF5UG9ydAppZiBhIG5vbi1EUCBUeXBl LUMgQWx0ZXJuYXRlIE1vZGUgZGV2aWNlIGlzIGF0dGFjaGVkPwoKCltTZXZlcml0eTogSGlnaF0K VGhpcyBpc24ndCBhIGJ1ZyBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2gsIGJ1dCBhcmUgRGlzcGxh eVBvcnQgSFBEIGV2ZW50cwpyZWNlaXZlZCBiZWZvcmUgdGhlIERQIFBIWSBpcyBpbml0aWFsaXpl ZCBwZXJtYW5lbnRseSBsb3N0LCBwcmV2ZW50aW5nCmRpc3BsYXkgZGV0ZWN0aW9uPwoKZHJpdmVy cy9waHkvcm9ja2NoaXAvcGh5LXJvY2tjaGlwLXVzYmRwLmM6cmtfdWRwaHlfZHBfcGh5X2luaXQo KSB7CiAgICAuLi4KICAgIHVkcGh5LT5kcF9pbl91c2UgPSB0cnVlOwogICAgLi4uCn0KCnJrX3Vk cGh5X2RwX2hwZF9ldmVudF90cmlnZ2VyIGNhY2hlcyB0aGUgSFBEIHN0YXRlIGluCnVkcGh5LT5k cF9zaW5rX2hwZF9jZmcgaWYgdWRwaHktPmRwX2luX3VzZSBpcyBmYWxzZS4gTGF0ZXIsIHdoZW4g dGhlIERQCkRSTSBkcml2ZXIgY2FsbHMgcmtfdWRwaHlfZHBfcGh5X2luaXQsIHVkcGh5LT5kcF9p bl91c2UgaXMgc2V0IHRvIHRydWUuCgpIb3dldmVyLCB0aGUgZnVuY3Rpb24gZmFpbHMgdG8gd3Jp dGUgdGhlIGNhY2hlZCBIUEQgY29uZmlndXJhdGlvbiBvdXQgdG8KdGhlIGhhcmR3YXJlIHJlZ2lz dGVycy4gRG9lcyB0aGlzIHJlc3VsdCBpbiBhbiBhdHRhY2hlZCBEaXNwbGF5UG9ydCBtb25pdG9y Cm5vdCBiZWluZyBkZXRlY3RlZCBieSB0aGUgc3lzdGVtPwoKLS0gClNhc2hpa28gQUkgcmV2aWV3 IMK3IGh0dHBzOi8vc2FzaGlrby5kZXYvIy9wYXRjaHNldC8yMDI2MDcxMC1yb2NrY2hpcC11c2Jk cC1jbGVhbnVwLXYxMi0wLThiNDFhOWE5YmVmMEBjb2xsYWJvcmEuY29tP3BhcnQ9MgoKLS0gCmxp bnV4LXBoeSBtYWlsaW5nIGxpc3QKbGludXgtcGh5QGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cHM6 Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtcGh5Cg== 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 03D601BD9D0 for ; Fri, 10 Jul 2026 21:15:33 +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=1783718135; cv=none; b=qxSOMTyHZYERYpsdTCZ0Hr4g7DHQsZl0064xx4E0MilJZk4hJF/tY9LRFG9ThtH2MmcEiAEvRwMoTrXgDB41nPPNucZHXfkb21esJZLOIg1vb14nUUT0NfqhHgsKS4HU9lnU0Et9Zg+uC0EYFRBxiYkM/zCArbnT8PfAPxivWDE= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783718135; c=relaxed/simple; bh=Oakaw5s3yHwNbZPAfk1YImztPtmz55AJx/848z+G2Mg=; h=From:Subject:To:Cc:In-Reply-To:References:Content-Type:Date: Message-Id; b=AqckAY9x19L57bLCC8p/q+7ycIVR0eceW+1a6LvLIuqe9VP7t5vlSghrBAOmItzCtkBXJKTvYgshcMEVA9TGNyxJWGJbs4qg8PU0v/LavHas1b61PFRrikSJiwG3MPfpaoZlvuHQvfTGkjHM1epyKXUaDLKRLMQ/76pKWN7XNg8= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Ji/gZ+Nv; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="Ji/gZ+Nv" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 460201F000E9; Fri, 10 Jul 2026 21:15:33 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1783718133; bh=mSMn8ktTR1mf/DKEwlzAsknkClUSx+l2ubdqBKejdFQ=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=Ji/gZ+NvlGKnZEG1wlrriS0LSF1cIzsQvOXTkQzq7CEQrWHs/gi683wZ3vbKctxA0 QFQ9R3qfc6yOuEZXKAUyNtm6o14O6DF+FXVnTti/Bwyw4U50xD6SgGNTS8dxKcsqSw V/3d6HtRO0sYnt0jALXuaWympDnSBJdXiXZsX5FN/FBfBzpAOCwzRam8Gpr7ukPjNK RjUzbBe4bwyAzTWeZVZxYdEMxWIQvmvsmsddtCYI0Q8s2zZ2KYD/VCNS8JFEvcD3aq aQUblbqlyVBdldQ2sRH/tXPDlb2xp4jfTIFnSzGsI42nBcgLlEd/AvDZk/Th9Mh0Va B2TghSBSlsR4w== From: sashiko-bot@kernel.org Subject: Re: [PATCH v12 02/36] phy: rockchip: usbdp: Update mode_change after error handling Reply-To: sashiko-reviews@lists.linux.dev To: "Sebastian Reichel" Cc: conor+dt@kernel.org, olteanv@gmail.com, neil.armstrong@linaro.org, linux-phy@lists.infradead.org, vkoul@kernel.org, robh@kernel.org, devicetree@vger.kernel.org In-Reply-To: <20260710-rockchip-usbdp-cleanup-v12-2-8b41a9a9bef0@collabora.com> References: <20260710-rockchip-usbdp-cleanup-v12-0-8b41a9a9bef0@collabora.com> <20260710-rockchip-usbdp-cleanup-v12-2-8b41a9a9bef0@collabora.com> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Date: Fri, 10 Jul 2026 21:15:32 +0000 Message-Id: <20260710211533.460201F000E9@smtp.kernel.org> Precedence: bulk X-Mailing-List: devicetree@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Thank you for your contribution! Sashiko AI review found 8 potential issue(= s) to consider: Pre-existing issues: - [Critical] Asynchronous PHY mode changes while USB is active cause fatal = SErrors (kernel panics) because PHY clocks are disabled without notifying t= he active DWC3 controller. - [High] `rk_udphy_power_on()` incorrectly drops active consumer tracking i= n `udphy->status` during a mode change, potentially causing the PHY to be d= isabled while still in use. - [High] The U3 (USB3) port is not re-enabled when transitioning from DP-on= ly mode to DP+USB mode, causing USB3 to remain broken. - [High] `rk_udphy_clk_init()` shadows the error code from `devm_clk_bulk_g= et_all()`, breaking deferred probing. - [High] The driver leaks clock enable counts and hardware reset states on = probe error paths if the initial hardware status is active. - [High] The `rk_udphy_dp_phy_configure` function accesses shared arrays an= d modifies hardware registers without acquiring `udphy->mutex`, leading to = race conditions. - [High] Non-DP Alternate Mode events corrupt the PHY lane mux configuratio= n, silently breaking USB3 functionality. - [High] DisplayPort HPD (Hot Plug Detect) events received before the DP PH= Y is initialized are permanently lost, preventing display detection. -- --- Patch [2]: [PATCH v12 02/36] phy: rockchip: usbdp: Update mode_change a= fter error handling --- commit 44a3e651748d53a497e7bb21061bf3cb86d67fbd Author: Sebastian Reichel phy: rockchip: usbdp: Update mode_change after error handling If rk_udphy_init() or rk_udphy_setup() fails, the reinit will not be tried again. Fix this by only updating the variable after all potential errors have been handled. Link: https://lore.kernel.org/linux-phy/20260612163835.8D5471F000E9@smtp.ke= rnel.org/ > diff --git a/drivers/phy/rockchip/phy-rockchip-usbdp.c b/drivers/phy/rock= chip/phy-rockchip-usbdp.c > index fba35510d88ce..a5ffdf7a6e76b 100644 > --- a/drivers/phy/rockchip/phy-rockchip-usbdp.c > +++ b/drivers/phy/rockchip/phy-rockchip-usbdp.c > @@ -1000,15 +1000,14 @@ static int rk_udphy_power_on(struct rk_udphy *udp= hy, u8 mode) > } > =20 > if (udphy->status =3D=3D UDPHY_MODE_NONE) { > - udphy->mode_change =3D false; > ret =3D rk_udphy_setup(udphy); > if (ret) > return ret; > =20 > if (udphy->mode & UDPHY_MODE_USB) > rk_udphy_u3_port_disable(udphy, false); > - } else if (udphy->mode_change) { > udphy->mode_change =3D false; > + } else if (udphy->mode_change) { [Severity: High] This isn't a bug introduced by this patch, but does this mode change block neglect to conditionally re-enable the U3 port for USB modes? If the PHY is active in DP-only mode and transitions to DP+USB, this else if (udphy->mode_change) block is taken. Unlike the initialization block, it fails to evaluate if (udphy->mode & UDPHY_MODE_USB) and call rk_udphy_u3_port_disable(udphy, false). Does this cause USB 3.0 to fail to initialize when plugged into an already active DisplayPort? > udphy->status =3D UDPHY_MODE_NONE; [Severity: High] This is a pre-existing issue, but does this forcefully erase the tracking of all currently active consumers without transferring them to the new state? If DP is active, udphy->status holds UDPHY_MODE_DP. When a USB device is plugged in, rk_udphy_power_on is called for UDPHY_MODE_USB with mode_change true. The code clears udphy->status to UDPHY_MODE_NONE here. Does this permanently lose the previously active UDPHY_MODE_DP bit? When USB is later unplugged, power_off clears the USB bit, dropping status to 0, which might prematurely disable the PHY despite DP still needing it. > if (udphy->mode =3D=3D UDPHY_MODE_DP) > rk_udphy_u3_port_disable(udphy, true); [Severity: Critical] This isn't a bug introduced by this patch, but does the asynchronous disabling of PHY bulk clocks around here cause fatal SErrors? drivers/phy/rockchip/phy-rockchip-usbdp.c:rk_udphy_power_on() { ... } else if (udphy->mode_change) { udphy->status =3D UDPHY_MODE_NONE; if (udphy->mode =3D=3D UDPHY_MODE_DP) rk_udphy_u3_port_disable(udphy, true); rk_udphy_disable(udphy); ... } If DWC3 is actively transferring USB data and a DisplayPort Alternate Mode event arrives, rk_udphy_typec_mux_set triggers a mode change. The code unconditionally calls rk_udphy_disable(udphy) which abruptly severs the PHY clocks. Since the DWC3 driver isn't notified, could its next register access hang the system bus? [ ... ] > @@ -1017,6 +1016,7 @@ static int rk_udphy_power_on(struct rk_udphy *udphy= , u8 mode) > ret =3D rk_udphy_setup(udphy); > if (ret) > return ret; > + udphy->mode_change =3D false; > } > =20 > udphy->status |=3D mode; [Severity: High] This is a pre-existing issue, but does setting the status bit here only register the consumer that triggered the function call, leaving previous consumers untracked? There are a few other pre-existing issues in this file that might be worth looking into: [Severity: High] This isn't a bug introduced by this patch, but does this logic shadow the error code from devm_clk_bulk_get_all and break deferred probing? drivers/phy/rockchip/phy-rockchip-usbdp.c:rk_udphy_clk_init() { ... if (udphy->num_clks < 1) return -ENODEV; ... } If devm_clk_bulk_get_all returns -EPROBE_DEFER when clock providers aren't ready yet, this explicitly checks if udphy->num_clks < 1 and returns a hardcoded -ENODEV. Will this cause the PHY driver to fail to probe permanently if clocks are not immediately available during early boot? [Severity: High] This is a pre-existing issue, but does the driver leak clock enable counts and hardware reset states on probe error paths if the initial hardware status is active? drivers/phy/rockchip/phy-rockchip-usbdp.c:rk_udphy_probe() { ... udphy->phy_u3 =3D devm_phy_create(dev, dev->of_node, &rk_udphy_usb3_phy= _ops); if (IS_ERR(udphy->phy_u3)) { ret =3D PTR_ERR(udphy->phy_u3); return dev_err_probe(dev, ret, "failed to create USB3 phy\n"); } ... } rk_udphy_get_initial_status calls clk_bulk_prepare_enable. If it detects active DP hardware, it leaves the clocks enabled and sets udphy->status to UDPHY_MODE_DP. If any subsequent step in rk_udphy_probe fails, the driver returns the error without disabling the clocks. Without a devm-action registered to clean this up, does this clock enable refcount leak prevent the system from ever powering down the clock? [Severity: High] This isn't a bug introduced by this patch, but does rk_udphy_dp_phy_configu= re access shared arrays and modify hardware registers without acquiring udphy->mutex, leading to race conditions? drivers/phy/rockchip/phy-rockchip-usbdp.c:rk_udphy_dp_phy_configure() { ... lane =3D udphy->dp_lane_sel[i]; ... } This reads a shared array that is actively modified by Type-C event handlers. At the same time, Type-C orientation switch callbacks like rk_udphy_typec_mux_set or USB initialization can modify these exact same structures or registers. Could this concurrent access corrupt hardware registers or result in inconsistent lane mappings? [Severity: High] This is a pre-existing issue, but do non-DP Alternate Mode events corrupt the PHY lane mux configuration and silently break USB3 functionality? drivers/phy/rockchip/phy-rockchip-usbdp.c:rk_udphy_typec_mux_set() { ... switch (state->mode) { case TYPEC_DP_STATE_C: case TYPEC_DP_STATE_E: udphy->lane_mux_sel[0] =3D PHY_LANE_MUX_DP; ... } This executes the switch block and overwrites udphy->lane_mux_sel before verifying state->alt->svid =3D=3D USB_TYPEC_DP_SID. Because TYPEC_DP_STATE_C is defined as TYPEC_STATE_MODAL, any other Alternate Mode that transitions into its modal state will inadvertently match this case. Will this erroneously route all PHY lanes to DisplayPort if a non-DP Type-C Alternate Mode device is attached? [Severity: High] This isn't a bug introduced by this patch, but are DisplayPort HPD events received before the DP PHY is initialized permanently lost, preventing display detection? drivers/phy/rockchip/phy-rockchip-usbdp.c:rk_udphy_dp_phy_init() { ... udphy->dp_in_use =3D true; ... } rk_udphy_dp_hpd_event_trigger caches the HPD state in udphy->dp_sink_hpd_cfg if udphy->dp_in_use is false. Later, when the DP DRM driver calls rk_udphy_dp_phy_init, udphy->dp_in_use is set to true. However, the function fails to write the cached HPD configuration out to the hardware registers. Does this result in an attached DisplayPort monitor not being detected by the system? --=20 Sashiko AI review =C2=B7 https://sashiko.dev/#/patchset/20260710-rockchip-u= sbdp-cleanup-v12-0-8b41a9a9bef0@collabora.com?part=3D2