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 D5605CD4F3D for ; Wed, 20 May 2026 19:16:56 +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=9thTtvWieIy5w7pGzIsEzUHC37oPanAJ5SCRvPg4reM=; b=X6TTtRX1R9inYu laTXPkM29DqIKvHBxZuBcchyieKFh2lUyeuYarEupsIXvcThlZWaT3AwSrwe0gwfJH1x/jGl1Fed4 cRoLR0kG7luc/7QvoyV2I1FZirRTyruVRIJQtEIb4qsXFb0g1/jR/c37HOItO01bLO69gBvKj+4NJ rBZ91JNpm28picgzCYx7PeHLaHzedxmG3yGz8dQmYr7EvdRYstaIfKny3UR46wsfAdHf7z1faWC7Z LDhpAyRmzqFc5S0ycJwy3VsF87uuo2a1y+FbtgGmr2o8z+fuzkPLzBtJbrwvsCwjI3BGo6hyenlQ3 OzUFa2RUhx5p6IQG4+Lw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1wPmPY-00000005Zwd-0jMY; Wed, 20 May 2026 19:16:56 +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 1wPmPV-00000005Zvo-0YG1 for linux-phy@lists.infradead.org; Wed, 20 May 2026 19:16:54 +0000 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by sea.source.kernel.org (Postfix) with ESMTP id 94CA5418BC; Wed, 20 May 2026 19:16:52 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 2227B1F000E9; Wed, 20 May 2026 19:16:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1779304612; bh=ZufmQbkp+l9Qe756vPAdTNkGrC4zMSgQy6UsHl4hI3c=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=gpBUS93FfJTCYs9Kqmu0q1JoXhXorpTqLS+HHTvgdtGtB/XdtWeVKG82prixZrfP1 UlleZwJP+OQV/xoJn2nEPJtWokp7p7mZrfMqJI4/nSRiG7UbZpJ/QRaRmIyP+9xQ3Q lI56/ijMc7Jzks8kPdwoJ0yN3ZfOhuE5L5JgJMeVMwIgtgbR+w0wcMJNRx4dOOQSPH gGPVW0/YEjzFSTDvTA9YySihjhwPWeENHIs41Og7OS3jqel8sVyT9FNnQzj/HzbplO kiDrQ//2y9zlz+rPQ4qB6C3tznMHdsQjAH4vkdMezu8FIFXr9HVNGFXorTM81IOH16 5v+fWBYgBVg/w== From: sashiko-bot@kernel.org Subject: Re: [PATCH v6 4/6] phy: realtek: usb2: introduce reset controller struct To: "Rustam Adilov" Cc: olteanv@gmail.com, neil.armstrong@linaro.org, linux-phy@lists.infradead.org, devicetree@vger.kernel.org, vkoul@kernel.org, conor+dt@kernel.org, robh@kernel.org In-Reply-To: <20260520175728.720877-5-adilov@disroot.org> References: <20260520175728.720877-5-adilov@disroot.org> Date: Wed, 20 May 2026 19:16:51 +0000 Message-Id: <20260520191652.2227B1F000E9@smtp.kernel.org> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.9.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20260520_121653_209382_B5D914C8 X-CRM114-Status: GOOD ( 19.40 ) 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 NSBwb3RlbnRpYWwgaXNzdWUocykgdG8gY29uc2lkZXI6CgpOZXcgaXNzdWVzOgotIFtIaWdoXSBU aGUgZHJpdmVyIGF0dGVtcHRzIHRvIGFjY2VzcyB0aGUgUEhZJ3MgbWVtb3J5LW1hcHBlZCByZWdp c3RlcnMgaW4gYHByb2JlKClgIGJlZm9yZSB0aGUgbmV3bHkgaW50cm9kdWNlZCByZXNldCBjb250 cm9sIGlzIGRlYXNzZXJ0ZWQuCgpQcmUtZXhpc3RpbmcgaXNzdWVzOgotIFtDcml0aWNhbF0gQW4g b2ZmLWJ5LW9uZSBlcnJvciBpbiBgcnRrX3BoeV90b2dnbGVgIGFsbG93cyBvdXQtb2YtYm91bmRz IGFjY2VzcyB0byB0aGUgYHBoeV9wYXJhbWV0ZXJgIGFycmF5LgotIFtIaWdoXSBUaGUgbG9vcCBp biBgcnRrX3BoeV9pbml0KClgIHNpbGVudGx5IGlnbm9yZXMgaW5pdGlhbGl6YXRpb24gZXJyb3Jz IGZyb20gYWxsIGJ1dCB0aGUgbGFzdCBQSFkuCi0gW0hpZ2hdIFBvaW50ZXIgYXJpdGhtZXRpYyBv biBgdm9pZCBfX2lvbWVtICpgIGxlYWRzIHRvIHVuYWxpZ25lZCBJL08gYWNjZXNzIGFuZCBkdXBs aWNhdGVkIG1lbW9yeSBtYXBwaW5ncy4KLSBbSGlnaF0gUGVyLXBvcnQgUEhZIHByb3BlcnRpZXMg YXJlIHBhcnNlZCBpbiBhIGxvb3AgYW5kIHdyaXR0ZW4gZGlyZWN0bHkgaW50byB0aGUgZ2xvYmFs bHkgc2hhcmVkIGBydGtfcGh5LT5waHlfY2ZnYCBhcnJheSwgb3ZlcndyaXRpbmcgc2V0dGluZ3Mg ZnJvbSBlYXJsaWVyIHBvcnRzLgotLQoKY29tbWl0IGFkYmY4YjA4MzUzMjQ4YzY0OWUzZTg3ZTY4 MTZjYmM5ZjU3YWJmYWIKQXV0aG9yOiBSdXN0YW0gQWRpbG92IDxhZGlsb3ZAZGlzcm9vdC5vcmc+ CgpwaHk6IHJlYWx0ZWs6IHVzYjI6IGludHJvZHVjZSByZXNldCBjb250cm9sbGVyIHN0cnVjdAoK SW4gUlRMOTYwN0MsIHRoZXJlIGlzIGFuIElQIEVuYWJsZSBDb250cm9sbGVyIHdoaWNoIGFjdHMg bGlrZSBhCnJlc2V0IGNvbnRyb2xsZXIuIFRoaXMgaW50cm9kdWNlcyBhIHJlc2V0X2NvbnRyb2wg c3RydWN0IHRvIGhhbmRsZQpkZWFzc2VydGluZyB0aGUgdXNiMiBwaHkgcmVzZXQgbGluZSB1c2lu ZyB0aGUgcmVzZXQgZnJhbWV3b3JrLgoKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9waHkvcmVhbHRl ay9waHktcnRrLXVzYjIuYyBiL2RyaXZlcnMvcGh5L3JlYWx0ZWsvcGh5LXJ0ay11c2IyLmMKPiBp bmRleCBhOWUyOWQyZjdlNmZkLi4xNmM1ZmMzMTkxZGVjIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv cGh5L3JlYWx0ZWsvcGh5LXJ0ay11c2IyLmMKPiArKysgYi9kcml2ZXJzL3BoeS9yZWFsdGVrL3Bo eS1ydGstdXNiMi5jCgpbIC4uLiBdCgo+IEBAIC02NzYsNiArNjc4LDE1IEBAIHN0YXRpYyBpbnQg cnRrX3BoeV9pbml0KHN0cnVjdCBwaHkgKnBoeSkKPiAgCWlmICghcnRrX3BoeSkKPiAgCQlyZXR1 cm4gLUVJTlZBTDsKPiAgCj4gKwlpZiAocnRrX3BoeS0+cGh5X3JzdCkgewo+ICsJCXJldCA9IHJl c2V0X2NvbnRyb2xfZGVhc3NlcnQocnRrX3BoeS0+cGh5X3JzdCk7Cj4gKwo+ICsJCWlmIChyZXQp Cj4gKwkJCXJldHVybiByZXQ7Cj4gKwo+ICsJCXVzbGVlcF9yYW5nZSg1MDAwLCA2MDAwKTsKPiAr CX0KPiArCj4gIAlmb3IgKGkgPSAwOyBpIDwgcnRrX3BoeS0+bnVtX3BoeTsgaSsrKQo+ICAJCXJl dCA9IGRvX3J0a19waHlfaW5pdChydGtfcGh5LCBpKTsKCltTZXZlcml0eTogSGlnaF0KVGhpcyBp cyBhIHByZS1leGlzdGluZyBpc3N1ZSwgYnV0IGRvZXMgdGhpcyBsb29wIHNpbGVudGx5IGlnbm9y ZQppbml0aWFsaXphdGlvbiBlcnJvcnMgZnJvbSBhbGwgYnV0IHRoZSBsYXN0IFBIWT8KCklmIGFu IGVycm9yIG9jY3VycyBvbiBhbnkgUEhZIG90aGVyIHRoYW4gdGhlIGxhc3Qgb25lLCB0aGUgcmV0 IHZhcmlhYmxlCmlzIG92ZXJ3cml0dGVuIGJ5IHRoZSByZXN1bHQgb2YgdGhlIHN1YnNlcXVlbnQg aXRlcmF0aW9uLiBDb3VsZCB0aGlzCmZhbHNlbHkgcmV0dXJuIHN1Y2Nlc3MgZXZlbiBpZiBlYXJs aWVyIHBvcnRzIGZhaWxlZCB0byBpbml0aWFsaXplPwoKW1NldmVyaXR5OiBDcml0aWNhbF0KVGhp cyBpcyBhIHByZS1leGlzdGluZyBpc3N1ZSwgYnV0IGlzIHRoZXJlIGFuIG91dC1vZi1ib3VuZHMg YWNjZXNzCmluIHRoZSB0b2dnbGUgZnVuY3Rpb24gY2FsbGVkIGR1cmluZyBpbml0aWFsaXphdGlv bj8KCldoZW4gZG9fcnRrX3BoeV9pbml0KCkgY2FsbHMgdGhlIHRvZ2dsZSBmdW5jdGlvbiBmb3Ig YSBnaXZlbiBpbmRleCwgdGhlCnRhcmdldCBmdW5jdGlvbiBjaGVja3MgaWYgaW5kZXggPiBydGtf cGh5LT5udW1fcGh5IGluc3RlYWQgb2YKaW5kZXggPj0gcnRrX3BoeS0+bnVtX3BoeS4gU2luY2Ug dGhlIHBoeV9wYXJhbWV0ZXIgYXJyYXkgaXMgYWxsb2NhdGVkCndpdGggcnRrX3BoeS0+bnVtX3Bo eSBlbGVtZW50cywgY291bGQgcGFzc2luZyBpbmRleCA9PSBudW1fcGh5IGJ5cGFzcwp0aGUgYm91 bmRzIGNoZWNrIGFuZCBsZWFkIHRvIG1lbW9yeSBjb3JydXB0aW9uIG9yIGFyYml0cmFyeSBtZW1v cnkKYWNjZXNzIHZpYSBJL08gb3BlcmF0aW9ucz8KClsgLi4uIF0KCj4gQEAgLTEwNTksNiArMTA3 MCwxMSBAQCBzdGF0aWMgaW50IHJ0a191c2IycGh5X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZp Y2UgKnBkZXYpCj4gIAo+ICAJcnRrX3BoeS0+bnVtX3BoeSA9IHBoeV9jZmctPm51bV9waHk7Cj4g IAo+ICsJcnRrX3BoeS0+cGh5X3JzdCA9IGRldm1fcmVzZXRfY29udHJvbF9hcnJheV9nZXRfb3B0 aW9uYWxfZXhjbHVzaXZlKGRldik7Cj4gKwlpZiAoSVNfRVJSKHJ0a19waHktPnBoeV9yc3QpKQo+ ICsJCXJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUihydGtfcGh5LT5waHlfcnN0KSwK PiArCQkJCSAgICAgInVzYjIgcGh5IHJlc2V0cyBhcmUgbm90IHdvcmtpbmdcbiIpOwo+ICsKPiAg CXJldCA9IHBhcnNlX3BoeV9kYXRhKHJ0a19waHkpOwoKW1NldmVyaXR5OiBIaWdoXQpEb2VzIHBh cnNlX3BoeV9kYXRhKCkgYXR0ZW1wdCB0byBhY2Nlc3MgdGhlIFBIWSdzIG1lbW9yeS1tYXBwZWQg cmVnaXN0ZXJzCmJlZm9yZSB0aGUgbmV3bHkgaW50cm9kdWNlZCByZXNldCBjb250cm9sIGlzIGRl YXNzZXJ0ZWQ/CgpJdCBhcHBlYXJzIHRoYXQgdGhlIGRyaXZlciBhY3F1aXJlcyB0aGUgcmVzZXQg aW4gcHJvYmUoKSBhbmQgdGhlbgppbW1lZGlhdGVseSBjYWxscyBwYXJzZV9waHlfZGF0YSgpLCB3 aGljaCBleGVjdXRlcyBoYXJkd2FyZSByZWFkL3dyaXRlCm9wZXJhdGlvbnMgdmlhIHVwZGF0ZV9k Y19kcml2aW5nX2xldmVsKCkgYW5kIHVwZGF0ZV9oc19jbGtfc2VsZWN0KCkuCgpCZWNhdXNlIHRo ZSByZXNldCBpcyBvbmx5IGRlYXNzZXJ0ZWQgbGF0ZXIgaW4gcnRrX3BoeV9pbml0KCksIGNvdWxk CmFjY2Vzc2luZyByZWdpc3RlcnMgb2YgYW4gSVAgYmxvY2sgaGVsZCBpbiByZXNldCB0cmlnZ2Vy IGEgc3luY2hyb25vdXMKYnVzIGVycm9yIG9yIHNpbGVudGx5IHJldHVybiB6ZXJvZXMsIHByZXZl bnRpbmcgcHJvcGVyIGluaXRpYWxpemF0aW9uPwoKW1NldmVyaXR5OiBIaWdoXQpUaGlzIGlzIGEg cHJlLWV4aXN0aW5nIGlzc3VlLCBidXQgZG9lcyBwb2ludGVyIGFyaXRobWV0aWMgb24gdm9pZCBf X2lvbWVtICoKbGVhZCB0byB1bmFsaWduZWQgSS9PIGFjY2VzcyBhbmQgZHVwbGljYXRlZCBtZW1v cnkgbWFwcGluZ3MgaW4KcGFyc2VfcGh5X2RhdGEoKT8KCkxvb2tpbmcgYXQgdGhlIGxvb3AgaW4g cGFyc2VfcGh5X2RhdGEoKToKCglmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBydGtfcGh5LT5udW1f cGh5OyBpbmRleCsrKSB7CgkJLi4uCgkJcGh5X3BhcmFtZXRlci0+cGh5X3JlZy5yZWdfZ3VzYjJw aHlhY2MwID0gb2ZfaW9tYXAobnAsIDEpICsgaW5kZXg7CgkJLi4uCgl9CgpTaW5jZSBvZl9pb21h cCgpIHJldHVybnMgYSB2b2lkIF9faW9tZW0gKiwgZG9lcyBhZGRpbmcgaW5kZXggYWR2YW5jZSB0 aGUKcG9pbnRlciBieSBleGFjdGx5IDEgYnl0ZT8gQ291bGQgdGhpcyByZXN1bHQgaW4gYW4gdW5h bGlnbmVkIHBvaW50ZXIgZm9yCnN1YnNlcXVlbnQgMzItYml0IHJlYWRsKCkgb3Igd3JpdGVsKCkg b3BlcmF0aW9ucyBhbmQgdHJpZ2dlciBhbiBhbGlnbm1lbnQKZmF1bHQ/CgpBbHNvLCBkb2VzIGNh bGxpbmcgb2ZfaW9tYXAoKSByZXBlYXRlZGx5IGluc2lkZSB0aGUgbG9vcCBjcmVhdGUgcmVkdW5k YW50LApkdXBsaWNhdGUgbWFwcGluZ3Mgb2YgdGhlIGV4YWN0IHNhbWUgcGh5c2ljYWwgcmVzb3Vy Y2U/CgpbU2V2ZXJpdHk6IEhpZ2hdClRoaXMgaXMgYSBwcmUtZXhpc3RpbmcgaXNzdWUsIGJ1dCBh cmUgcGVyLXBvcnQgUEhZIHByb3BlcnRpZXMgcGFyc2VkIGluIGEKbG9vcCBhbmQgd3JpdHRlbiBk aXJlY3RseSBpbnRvIHRoZSBnbG9iYWxseSBzaGFyZWQgcnRrX3BoeS0+cGh5X2NmZyBhcnJheSwK b3ZlcndyaXRpbmcgc2V0dGluZ3MgZnJvbSBlYXJsaWVyIHBvcnRzPwoKSW4gcGFyc2VfcGh5X2Rh dGEoKSwgdGhlIGRyaXZlciBpdGVyYXRlcyBvdmVyIGFsbCBQSFkgcG9ydHMgYW5kIHJldHJpZXZl cwpwb3J0LXNwZWNpZmljIHBhcmFtZXRlcnMuIEZ1bmN0aW9ucyBsaWtlIHVwZGF0ZV9kY19kcml2 aW5nX2xldmVsKCkgbW9kaWZ5CnRoZSBnbG9iYWxseSBzaGFyZWQgYXJyYXkuCgpXaWxsIHByb3Bl cnRpZXMgY29tcHV0ZWQgZm9yIHBvcnQgMSBzaWxlbnRseSBvdmVyd3JpdGUgdGhvc2UgY29tcHV0 ZWQKZm9yIHBvcnQgMD8gV2hlbiBydGtfcGh5X2luaXQoKSBpcyBsYXRlciBjYWxsZWQsIGRvX3J0 a19waHlfaW5pdCgpIGFwcGxpZXMKdGhpcyBnbG9iYWxseSBzaGFyZWQgYXJyYXkgdG8gYWxsIHBv cnRzLCB3aGljaCBzZWVtcyBsaWtlIGl0IG1pZ2h0IGJyZWFrCnBlci1wb3J0IGNvbmZpZ3VyYXRp b25zIGZvciBhbnkgU29DIHdpdGggbnVtX3BoeSA+IDEuCgo+ICAJaWYgKHJldCkKPiAgCQlnb3Rv IGVycjsKCi0tIApTYXNoaWtvIEFJIHJldmlldyDCtyBodHRwczovL3Nhc2hpa28uZGV2LyMvcGF0 Y2hzZXQvMjAyNjA1MjAxNzU3MjguNzIwODc3LTEtYWRpbG92QGRpc3Jvb3Qub3JnP3BhcnQ9NAoK LS0gCmxpbnV4LXBoeSBtYWlsaW5nIGxpc3QKbGludXgtcGh5QGxpc3RzLmluZnJhZGVhZC5vcmcK aHR0cHM6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtcGh5Cg== 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 EB61533B97D for ; Wed, 20 May 2026 19:16:52 +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=1779304614; cv=none; b=UjYX+LPqtWrXvAjPYep1ZFlhT26iZ/8A+I/arOlJ44RM+YuaPlgKEtrzz44Yui5pwiMjLB1B3EmChdDAJVTLiXe9A2qGqBDd5FJJX6aMLOzv3Gglmo4ZpO9sNCAi5oIdBlLdXIELwQeeglMFeIE4Ke+b3SjeMbPEOUHwe9jZzDg= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779304614; c=relaxed/simple; bh=YzmybcpxXpY+MBkfwGDWXSLBUDrl1pFXZKFToXfK2vo=; h=From:Subject:To:Cc:In-Reply-To:References:Content-Type:Date: Message-Id; b=tfShojkj4ixVHj8Jweht2q4/c1/rtILiaaIdnH9qKGVZg+vlMsp3TqKEdqanYse3k+lf69lsVOccEWDUecmQoLMIcVvXsjR34Ibp24gjaUj6xoCLQx1g17T5XiNw3EOytaUD40jVBK31qtc/DrA7JZnGBNXG23D72B6lVVzeZWg= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=gpBUS93F; 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="gpBUS93F" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 2227B1F000E9; Wed, 20 May 2026 19:16:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1779304612; bh=ZufmQbkp+l9Qe756vPAdTNkGrC4zMSgQy6UsHl4hI3c=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=gpBUS93FfJTCYs9Kqmu0q1JoXhXorpTqLS+HHTvgdtGtB/XdtWeVKG82prixZrfP1 UlleZwJP+OQV/xoJn2nEPJtWokp7p7mZrfMqJI4/nSRiG7UbZpJ/QRaRmIyP+9xQ3Q lI56/ijMc7Jzks8kPdwoJ0yN3ZfOhuE5L5JgJMeVMwIgtgbR+w0wcMJNRx4dOOQSPH gGPVW0/YEjzFSTDvTA9YySihjhwPWeENHIs41Og7OS3jqel8sVyT9FNnQzj/HzbplO kiDrQ//2y9zlz+rPQ4qB6C3tznMHdsQjAH4vkdMezu8FIFXr9HVNGFXorTM81IOH16 5v+fWBYgBVg/w== From: sashiko-bot@kernel.org Subject: Re: [PATCH v6 4/6] phy: realtek: usb2: introduce reset controller struct Reply-To: sashiko-reviews@lists.linux.dev To: "Rustam Adilov" Cc: olteanv@gmail.com, neil.armstrong@linaro.org, linux-phy@lists.infradead.org, devicetree@vger.kernel.org, vkoul@kernel.org, conor+dt@kernel.org, robh@kernel.org In-Reply-To: <20260520175728.720877-5-adilov@disroot.org> References: <20260520175728.720877-5-adilov@disroot.org> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Date: Wed, 20 May 2026 19:16:51 +0000 Message-Id: <20260520191652.2227B1F000E9@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 5 potential issue(= s) to consider: New issues: - [High] The driver attempts to access the PHY's memory-mapped registers in= `probe()` before the newly introduced reset control is deasserted. Pre-existing issues: - [Critical] An off-by-one error in `rtk_phy_toggle` allows out-of-bounds a= ccess to the `phy_parameter` array. - [High] The loop in `rtk_phy_init()` silently ignores initialization error= s from all but the last PHY. - [High] Pointer arithmetic on `void __iomem *` leads to unaligned I/O acce= ss and duplicated memory mappings. - [High] Per-port PHY properties are parsed in a loop and written directly = into the globally shared `rtk_phy->phy_cfg` array, overwriting settings fro= m earlier ports. -- commit adbf8b08353248c649e3e87e6816cbc9f57abfab Author: Rustam Adilov phy: realtek: usb2: introduce reset controller struct In RTL9607C, there is an IP Enable Controller which acts like a reset controller. This introduces a reset_control struct to handle deasserting the usb2 phy reset line using the reset framework. > diff --git a/drivers/phy/realtek/phy-rtk-usb2.c b/drivers/phy/realtek/phy= -rtk-usb2.c > index a9e29d2f7e6fd..16c5fc3191dec 100644 > --- a/drivers/phy/realtek/phy-rtk-usb2.c > +++ b/drivers/phy/realtek/phy-rtk-usb2.c [ ... ] > @@ -676,6 +678,15 @@ static int rtk_phy_init(struct phy *phy) > if (!rtk_phy) > return -EINVAL; > =20 > + if (rtk_phy->phy_rst) { > + ret =3D reset_control_deassert(rtk_phy->phy_rst); > + > + if (ret) > + return ret; > + > + usleep_range(5000, 6000); > + } > + > for (i =3D 0; i < rtk_phy->num_phy; i++) > ret =3D do_rtk_phy_init(rtk_phy, i); [Severity: High] This is a pre-existing issue, but does this loop silently ignore initialization errors from all but the last PHY? If an error occurs on any PHY other than the last one, the ret variable is overwritten by the result of the subsequent iteration. Could this falsely return success even if earlier ports failed to initialize? [Severity: Critical] This is a pre-existing issue, but is there an out-of-bounds access in the toggle function called during initialization? When do_rtk_phy_init() calls the toggle function for a given index, the target function checks if index > rtk_phy->num_phy instead of index >=3D rtk_phy->num_phy. Since the phy_parameter array is allocated with rtk_phy->num_phy elements, could passing index =3D=3D num_phy bypass the bounds check and lead to memory corruption or arbitrary memory access via I/O operations? [ ... ] > @@ -1059,6 +1070,11 @@ static int rtk_usb2phy_probe(struct platform_devic= e *pdev) > =20 > rtk_phy->num_phy =3D phy_cfg->num_phy; > =20 > + rtk_phy->phy_rst =3D devm_reset_control_array_get_optional_exclusive(de= v); > + if (IS_ERR(rtk_phy->phy_rst)) > + return dev_err_probe(dev, PTR_ERR(rtk_phy->phy_rst), > + "usb2 phy resets are not working\n"); > + > ret =3D parse_phy_data(rtk_phy); [Severity: High] Does parse_phy_data() attempt to access the PHY's memory-mapped registers before the newly introduced reset control is deasserted? It appears that the driver acquires the reset in probe() and then immediately calls parse_phy_data(), which executes hardware read/write operations via update_dc_driving_level() and update_hs_clk_select(). Because the reset is only deasserted later in rtk_phy_init(), could accessing registers of an IP block held in reset trigger a synchronous bus error or silently return zeroes, preventing proper initialization? [Severity: High] This is a pre-existing issue, but does pointer arithmetic on void __iomem * lead to unaligned I/O access and duplicated memory mappings in parse_phy_data()? Looking at the loop in parse_phy_data(): for (index =3D 0; index < rtk_phy->num_phy; index++) { ... phy_parameter->phy_reg.reg_gusb2phyacc0 =3D of_iomap(np, 1) + index; ... } Since of_iomap() returns a void __iomem *, does adding index advance the pointer by exactly 1 byte? Could this result in an unaligned pointer for subsequent 32-bit readl() or writel() operations and trigger an alignment fault? Also, does calling of_iomap() repeatedly inside the loop create redundant, duplicate mappings of the exact same physical resource? [Severity: High] This is a pre-existing issue, but are per-port PHY properties parsed in a loop and written directly into the globally shared rtk_phy->phy_cfg array, overwriting settings from earlier ports? In parse_phy_data(), the driver iterates over all PHY ports and retrieves port-specific parameters. Functions like update_dc_driving_level() modify the globally shared array. Will properties computed for port 1 silently overwrite those computed for port 0? When rtk_phy_init() is later called, do_rtk_phy_init() applies this globally shared array to all ports, which seems like it might break per-port configurations for any SoC with num_phy > 1. > if (ret) > goto err; --=20 Sashiko AI review =C2=B7 https://sashiko.dev/#/patchset/20260520175728.7208= 77-1-adilov@disroot.org?part=3D4