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 A56F5CCF2D6 for ; Mon, 19 Oct 2026 10:37:33 +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:Date:References: In-Reply-To:Cc:To:Subject:From:Message-ID:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=g0Z6hr1ACFrr6iC8spdtPhhdmRo9tT1Jf/itNvYEGVo=; b=qH2KYXW8QZ8Ocx sChi12cjjsrgsEdibYCaxkOkis5vATQUT6t09+tbBZexMCbdQ4N1hmiTX6mKoKGpCKWDaZyX1kV6B Z4X3gWfaWus/uEnLPf7UrfQcqWxCvtLCeW2izO1yrE9HM5ZBg556Hr3mRazDEf1KU596uoki5yVps 1OKAdLoRsKA1qWtOiA/HFor9rKzrkZb3EhIuLY6X9U2uFq21ef2assn55FpDAoAiydcoMxjp/mAoB U2Fdrdogwgrnr72/xvc/ELBIO+E4Rdk7LGsk+5SRkSXrCdo/KOtwZyIgCmyuPUN1qZ7eFPJcMkSqy bjLRlyRz+Z71tPqdLEbg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1xIkkH-00000007DWv-1TLN; Mon, 19 Oct 2026 10:37:33 +0000 Received: from sea.source.kernel.org ([172.234.252.31]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1xIkkG-00000007DWi-2GgV for linux-phy@lists.infradead.org; Mon, 19 Oct 2026 10:37:32 +0000 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by sea.source.kernel.org (Postfix) with ESMTP id 435094163D; Mon, 19 Oct 2026 10:37:32 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id ABF7C1F000C4; Mon, 19 Oct 2026 10:37:31 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1792406252; bh=/oHQ4bdH43j1fuumTS02Am3jQZBjLwwUEwkgUZPR6zI=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=Naa44i3bJPqsT7f0nOe/lglmj1/NFLsOEbmh3rbA62SBQLNYlWu4pf5JVcf5Pu6SF Xb91lgPSM8eWmMTsQCfAz+/s9E/JnZr1vlYbH+FWualm8lAI08BBYyU9cOeoU0cDaP CcRq0dsVSudcSYuhS1VU/8lOtimRIMGm34W/5WbpqxxMi4qmaFYFDWPaO4hYysnpVM MEnxtdnAslBCPYyvrvjNXiveQi5b7QqYWKCwOzDICPLznqjp/gSK67dhWJAEgPkBww Fy1MxG8r42DWrT7VhqI32XHwE5nL0Vh6xewUBOdcWvjXEcK+Ql3sI5XK7HNPfi7ZGA fRpMwogchSsow== Message-ID: From: sashiko-bot@kernel.org Subject: Re: [PATCH v2 4/6] phy: rockchip: Add support for Naneng eDP phy To: "Damon Ding" Cc: dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-phy@lists.infradead.org, robh@kernel.org, conor+dt@kernel.org, vkoul@kernel.org, neil.armstrong@linaro.org, olteanv@gmail.com In-Reply-To: <20261019102824.3157044-5-damon.ding@rock-chips.com> References: <20261019102824.3157044-1-damon.ding@rock-chips.com> <20261019102824.3157044-5-damon.ding@rock-chips.com> Date: Mon, 19 Oct 2026 10:37:31 +0000 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 MiBwb3RlbnRpYWwgaXNzdWUocykgdG8gY29uc2lkZXI6Ci0gW0hpZ2hdIHBoeTogcm9ja2NoaXA6 IG1pc3Npbmcgc2V0X2xhbmVzIGhhbmRsaW5nIGluIHJvY2tjaGlwX2VkcF9waHlfY29uZmlndXJl KCkKLSBbTWVkaXVtXSBwaHk6IHJvY2tjaGlwOiB1bmluaXRpYWxpemVkIHZhbCByZWFkIGluIHJv Y2tjaGlwX2VkcF9waHlfZW5hYmxlZCgpCi0tCgpjb21taXQgZDA3YTNhMGUzNTMzYjg0Y2RjNjdi NmRlNDVkYjM0MGU5ZDk4OThjOQpBdXRob3I6IERhbW9uIERpbmcgPGRhbW9uLmRpbmdAcm9jay1j aGlwcy5jb20+CgpwaHk6IHJvY2tjaGlwOiBBZGQgc3VwcG9ydCBmb3IgTmFuZW5nIGVEUCBwaHkK ClRoaXMgY29tbWl0IGFkZHMgYSBkcml2ZXIgZm9yIHRoZSBSb2NrY2hpcCBlRFAgdHJhbnNtaXR0 ZXIgUEhZIHdpdGggdGhlCk5hTmVuZyBJUCBibG9jayBmb3VuZCBvbiB0aGUgUkszNTY4IFNvQywg Y29udHJvbGxlZCB2aWEgdGhlIGVEUCBQSFkgR1JGCnN5c2NvbiByZWdtYXAuCgo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL3BoeS9yb2NrY2hpcC9waHktcm9ja2NoaXAtbmFuZW5nLWVkcC5jIGIvZHJp dmVycy9waHkvcm9ja2NoaXAvcGh5LXJvY2tjaGlwLW5hbmVuZy1lZHAuYwo+IG5ldyBmaWxlIG1v ZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMDAwMC4uYTQwNzcxNGY2MzlhNwo+IC0tLSAvZGV2 L251bGwKPiArKysgYi9kcml2ZXJzL3BoeS9yb2NrY2hpcC9waHktcm9ja2NoaXAtbmFuZW5nLWVk cC5jCgpbIC4uLiBdCgo+ICtzdGF0aWMgaW50IHJvY2tjaGlwX2VkcF9waHlfc2V0X3ZvbHRhZ2Vz KHN0cnVjdCByb2NrY2hpcF9lZHBfcGh5ICplZHBwaHksCj4gKwkJCQkJIHN0cnVjdCBwaHlfY29u ZmlndXJlX29wdHNfZHAgKmRwKQo+ICt7Cj4gKwl1OCBsYW5lOwo+ICsKPiArCWZvciAobGFuZSA9 IDA7IGxhbmUgPCBkcC0+bGFuZXM7IGxhbmUrKykKPiArCQlyb2NrY2hpcF9lZHBfcGh5X3NldF92 b2x0YWdlKGVkcHBoeSwgZHAsIGxhbmUpOwo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtz dGF0aWMgaW50IHJvY2tjaGlwX2VkcF9waHlfc2V0X3JhdGUoc3RydWN0IHJvY2tjaGlwX2VkcF9w aHkgKmVkcHBoeSwKPiArCQkJCSAgICAgc3RydWN0IHBoeV9jb25maWd1cmVfb3B0c19kcCAqZHAp Cj4gK3sKPiArCXUzMiB2YWx1ZTsKPiArCWludCByZXQ7CgpbIC4uLiBdCgo+ICsJcmVnbWFwX3dy aXRlKGVkcHBoeS0+Z3JmLCBFRFBfUEhZX0dSRl9DT04wLCBGSUVMRF9QUkVQX1dNMTYoRURQX1BI WV9QRF9QTExfTUFTSywgMCkpOwo+ICsJcmVnbWFwX3dyaXRlKGVkcHBoeS0+Z3JmLCBFRFBfUEhZ X0dSRl9DT04wLAo+ICsJCSAgICAgRklFTERfUFJFUF9XTTE2KEVEUF9QSFlfVFhfUERfTUFTSywg fkdFTk1BU0soZHAtPmxhbmVzIC0gMSwgMCkpKTsKPiArCXJldCA9IHJlZ21hcF9yZWFkX3BvbGxf dGltZW91dChlZHBwaHktPmdyZiwgRURQX1BIWV9HUkZfU1RBVFVTMCwKPiArCQkJCSAgICAgICB2 YWx1ZSwgdmFsdWUgJiBQTExfUkRZLCAxMDAsIDEwMDApOwo+ICsJaWYgKHJldCkgewo+ICsJCWRl dl9lcnIoZWRwcGh5LT5kZXYsICJGYWlsZWQgdG8gd2FpdCBmb3IgUEhZIFBMTCByZWFkeTogJWRc biIsIHJldCk7Cj4gKwkJcmV0dXJuIHJldDsKPiArCX0KPiArCj4gKwlyZWdtYXBfd3JpdGUoZWRw cGh5LT5ncmYsIEVEUF9QSFlfR1JGX0NPTjUsIEZJRUxEX1BSRVBfV00xNihFRFBfUEhZX1RYX01P REVfTUFTSywgMHgwKSk7Cj4gKwlyZWdtYXBfd3JpdGUoZWRwcGh5LT5ncmYsIEVEUF9QSFlfR1JG X0NPTjAsCj4gKwkJICAgICBGSUVMRF9QUkVQX1dNMTYoRURQX1BIWV9UWF9JRExFX01BU0ssIH5H RU5NQVNLKGRwLT5sYW5lcyAtIDEsIDApKSk7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4g K3N0YXRpYyBpbnQgcm9ja2NoaXBfZWRwX3BoeV92ZXJpZnlfY29uZmlnKHN0cnVjdCByb2NrY2hp cF9lZHBfcGh5ICplZHBwaHksCj4gKwkJCQkJICBzdHJ1Y3QgcGh5X2NvbmZpZ3VyZV9vcHRzX2Rw ICpkcCkKPiArewo+ICsJaW50IGk7Cj4gKwo+ICsJLyogSWYgY2hhbmdpbmcgbGluayByYXRlIHdh cyByZXF1aXJlZCwgdmVyaWZ5IGl0J3Mgc3VwcG9ydGVkLiAqLwo+ICsJaWYgKGRwLT5zZXRfcmF0 ZSkgewo+ICsJCXN3aXRjaCAoZHAtPmxpbmtfcmF0ZSkgewo+ICsJCWNhc2UgMTYyMDoKPiArCQlj YXNlIDI3MDA6Cj4gKwkJCS8qIHZhbGlkIGJpdCByYXRlICovCj4gKwkJCWJyZWFrOwo+ICsJCWRl ZmF1bHQ6Cj4gKwkJCXJldHVybiAtRUlOVkFMOwo+ICsJCX0KPiArCX0KPiArCj4gKwlpZiAoZHAt PnNldF9sYW5lcykgewo+ICsJCS8qIFZlcmlmeSBsYW5lIGNvdW50LiAqLwo+ICsJCXN3aXRjaCAo ZHAtPmxhbmVzKSB7Cj4gKwkJY2FzZSAxOgo+ICsJCWNhc2UgMjoKPiArCQljYXNlIDQ6Cj4gKwkJ CS8qIHZhbGlkIGxhbmUgY291bnQuICovCj4gKwkJCWJyZWFrOwo+ICsJCWRlZmF1bHQ6Cj4gKwkJ CXJldHVybiAtRUlOVkFMOwo+ICsJCX0KPiArCX0KPiArCj4gKwkvKgo+ICsJICogSWYgY2hhbmdp bmcgdm9sdGFnZXMgaXMgcmVxdWlyZWQsIGNoZWNrIHN3aW5nIGFuZCBwcmUtZW1waGFzaXMKPiAr CSAqIGxldmVscywgcGVyLWxhbmUuCj4gKwkgKi8KPiArCWlmIChkcC0+c2V0X3ZvbHRhZ2VzKSB7 Cj4gKwkJLyogTGFuZSBjb3VudCB2ZXJpZmllZCBwcmV2aW91c2x5LiAqLwo+ICsJCWZvciAoaSA9 IDA7IGkgPCBkcC0+bGFuZXM7IGkrKykgewo+ICsJCQlpZiAoZHAtPnZvbHRhZ2VbaV0gPiAzIHx8 IGRwLT5wcmVbaV0gPiAzKQo+ICsJCQkJcmV0dXJuIC1FSU5WQUw7Cj4gKwo+ICsJCQkvKgo+ICsJ CQkgKiBTdW0gb2Ygdm9sdGFnZSBzd2luZyBhbmQgcHJlLWVtcGhhc2lzIGxldmVscyBjYW5ub3QK PiArCQkJICogZXhjZWVkIDMuCj4gKwkJCSAqLwo+ICsJCQlpZiAoZHAtPnZvbHRhZ2VbaV0gKyBk cC0+cHJlW2ldID4gMykKPiArCQkJCXJldHVybiAtRUlOVkFMOwo+ICsJCX0KPiArCX0KPiArCj4g KwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGludCByb2NrY2hpcF9lZHBfcGh5X2NvbmZp Z3VyZShzdHJ1Y3QgcGh5ICpwaHksIHVuaW9uIHBoeV9jb25maWd1cmVfb3B0cyAqb3B0cykKPiAr ewo+ICsJc3RydWN0IHJvY2tjaGlwX2VkcF9waHkgKmVkcHBoeSA9IHBoeV9nZXRfZHJ2ZGF0YShw aHkpOwo+ICsJaW50IHJldDsKPiArCj4gKwlyZXQgPSByb2NrY2hpcF9lZHBfcGh5X3ZlcmlmeV9j b25maWcoZWRwcGh5LCAmb3B0cy0+ZHApOwo+ICsJaWYgKHJldCkgewo+ICsJCWRldl9lcnIoZWRw cGh5LT5kZXYsICJJbnZhbGlkIHBhcmFtcyBmb3IgcGh5IGNvbmZpZ3VyZVxuIik7Cj4gKwkJcmV0 dXJuIHJldDsKPiArCX0KPiArCj4gKwlpZiAob3B0cy0+ZHAuc2V0X3JhdGUpIHsKPiArCQlyZXQg PSByb2NrY2hpcF9lZHBfcGh5X3NldF9yYXRlKGVkcHBoeSwgJm9wdHMtPmRwKTsKPiArCQlpZiAo cmV0KSB7Cj4gKwkJCWRldl9lcnIoZWRwcGh5LT5kZXYsICJGYWlsZWQgdG8gc2V0IHJhdGVcbiIp Owo+ICsJCQlyZXR1cm4gcmV0Owo+ICsJCX0KPiArCX0KPiArCj4gKwlpZiAob3B0cy0+ZHAuc2V0 X3ZvbHRhZ2VzKSB7Cj4gKwkJcmV0ID0gcm9ja2NoaXBfZWRwX3BoeV9zZXRfdm9sdGFnZXMoZWRw cGh5LCAmb3B0cy0+ZHApOwo+ICsJCWlmIChyZXQpIHsKPiArCQkJZGV2X2VycihlZHBwaHktPmRl diwgIkZhaWxlZCB0byBzZXQgdm9sdGFnZXNcbiIpOwo+ICsJCQlyZXR1cm4gcmV0Owo+ICsJCX0K PiArCX0KPiArCj4gKwlyZXR1cm4gMDsKPiArfQoKW1NldmVyaXR5OiBIaWdoXQpIb3cgZG9lcyBy b2NrY2hpcF9lZHBfcGh5X2NvbmZpZ3VyZSgpIGhhbmRsZSBjYWxsZXJzIHRoYXQgaXNzdWUgc2Vw YXJhdGUKcGh5X2NvbmZpZ3VyZSgpIGNhbGxzIGZvciByYXRlLCBsYW5lIGNvdW50LCBhbmQgdm9s dGFnZSBsZXZlbHM/CgpMb29raW5nIGF0IGRyaXZlcnMvZ3B1L2RybS9icmlkZ2UvYW5hbG9naXgv YW5hbG9naXhfZHBfcmVnLmMsIHRoZSBBbmFsb2dpeCBEUApicmlkZ2UgaXNzdWVzIHRocmVlIHNl cGFyYXRlIHBoeV9jb25maWd1cmUoKSBjYWxscywgZWFjaCB3aXRoIGEKemVyby1pbml0aWFsaXpl ZCB1bmlvbiBwaHlfY29uZmlndXJlX29wdHM6CgoxLiBhbmFsb2dpeF9kcF9zZXRfbGlua19iYW5k d2lkdGgoKSBzZXRzIG9ubHkgcGh5X2NmZy5kcC5saW5rX3JhdGUgYW5kCnBoeV9jZmcuZHAuc2V0 X3JhdGUgPSB0cnVlLCBsZWF2aW5nIHBoeV9jZmcuZHAubGFuZXMgPSAwOgoKICAgIHVuaW9uIHBo eV9jb25maWd1cmVfb3B0cyBwaHlfY2ZnID0gezB9OwoKICAgIHBoeV9jZmcuZHAubGlua19yYXRl ID0KICAgICAgICBkcm1fZHBfYndfY29kZV90b19saW5rX3JhdGUoZHAtPmxpbmtfdHJhaW4ubGlu a19yYXRlKSAvIDEwMDsKICAgIHBoeV9jZmcuZHAuc2V0X3JhdGUgPSB0cnVlOwogICAgcmV0ID0g cGh5X2NvbmZpZ3VyZShkcC0+cGh5LCAmcGh5X2NmZyk7CgpXaGVuIHJvY2tjaGlwX2VkcF9waHlf c2V0X3JhdGUoKSBydW5zLCBkcC0+bGFuZXMgaXMgMCAoYW5kIHVudmFsaWRhdGVkIHNpbmNlCmRw LT5zZXRfbGFuZXMgaXMgZmFsc2UpLCBzbyBHRU5NQVNLKGRwLT5sYW5lcyAtIDEsIDApIGV2YWx1 YXRlcwpHRU5NQVNLKFVJTlRfTUFYLCAwKSB3aGVuIHByb2dyYW1taW5nIEVEUF9QSFlfVFhfUERf TUFTSyBhbmQKRURQX1BIWV9UWF9JRExFX01BU0suCgoyLiBhbmFsb2dpeF9kcF9zZXRfbGFuZV9j b3VudCgpIHNldHMgcGh5X2NmZy5kcC5sYW5lcyBhbmQKcGh5X2NmZy5kcC5zZXRfbGFuZXMgPSB0 cnVlLCBidXQgcm9ja2NoaXBfZWRwX3BoeV9jb25maWd1cmUoKSBuZXZlciBjaGVja3MKb3B0cy0+ ZHAuc2V0X2xhbmVzLCBzbyB0aGUgbGFuZS1kZXBlbmRlbnQgVFggY29uZmlndXJhdGlvbiBpcyBu b3QgYXBwbGllZCBhbmQKdGhlIGFjdGl2ZSBsYW5lIGNvdW50IGlzIG5vdCBzdG9yZWQgaW4gc3Ry dWN0IHJvY2tjaGlwX2VkcF9waHkuCgozLiBhbmFsb2dpeF9kcF9zZXRfbGFuZV9saW5rX3RyYWlu aW5nKCkgc2V0cyBwaHlfY2ZnLmRwLnZvbHRhZ2VbXSwKcGh5X2NmZy5kcC5wcmVbXSwgYW5kIHBo eV9jZmcuZHAuc2V0X3ZvbHRhZ2VzID0gdHJ1ZSwgd2l0aCBwaHlfY2ZnLmRwLmxhbmVzCmxlZnQg YXQgMC4gQm90aCByb2NrY2hpcF9lZHBfcGh5X3ZlcmlmeV9jb25maWcoKSBhbmQKcm9ja2NoaXBf ZWRwX3BoeV9zZXRfdm9sdGFnZXMoKSBsb29wIHVwIHRvIGRwLT5sYW5lcywgc28gMCBpdGVyYXRp b25zIHJ1biBhbmQKbm8gdm9sdGFnZSBzd2luZyBvciBwcmUtZW1waGFzaXMgcmVnaXN0ZXJzIGFy ZSB3cml0dGVuIChvciBpZiBhIGNhbGxlciBwYXNzZXMKc2V0X3ZvbHRhZ2VzID0gdHJ1ZSB3aXRo IHNldF9sYW5lcyA9IGZhbHNlIGFuZCBhbiB1bnZhbGlkYXRlZCBkcC0+bGFuZXMgPiA0LAp0aGUg bG9vcHMgcmVhZCBwYXN0IHRoZSBlbmQgb2YgZHAtPnZvbHRhZ2VbNF0gYW5kIGRwLT5wcmVbNF0p LgoKU2hvdWxkIHRoZSBsYW5lLWRlcGVuZGVudCBUWCBjb25maWd1cmF0aW9uIGJlIGFwcGxpZWQg aW4gYSBzZXRfbGFuZXMgaGFuZGxlcgp0aGF0IGFsc28gc3RvcmVzIHRoZSBsYW5lIGNvdW50IGlu IHN0cnVjdCByb2NrY2hpcF9lZHBfcGh5IGZvciBzZXRfdm9sdGFnZXMKdG8gdXNlPwoKPiArc3Rh dGljIGJvb2wgcm9ja2NoaXBfZWRwX3BoeV9lbmFibGVkKHN0cnVjdCByb2NrY2hpcF9lZHBfcGh5 ICplZHBwaHkpCj4gK3sKPiArCXUzMiB2YWw7Cj4gKwo+ICsJcmVnbWFwX3JlYWQoZWRwcGh5LT5n cmYsIEVEUF9QSFlfR1JGX1NUQVRVUzAsICZ2YWwpOwo+ICsKPiArCXJldHVybiBGSUVMRF9HRVQo UExMX1JEWSwgdmFsKTsKPiArfQoKW1NldmVyaXR5OiBNZWRpdW1dCldoYXQgaGFwcGVucyBpbiBy b2NrY2hpcF9lZHBfcGh5X2VuYWJsZWQoKSBpZiByZWdtYXBfcmVhZCgpIGZhaWxzPwoKQmVjYXVz ZSB2YWwgaXMgdW5pbml0aWFsaXplZCBhbmQgdGhlIHJldHVybiB2YWx1ZSBvZiByZWdtYXBfcmVh ZCgpIGlzIG5vdApjaGVja2VkLCBGSUVMRF9HRVQoUExMX1JEWSwgdmFsKSB3aWxsIHJlYWQgYW4g dW5pbml0aWFsaXplZCBzdGFjayB2YXJpYWJsZSwKd2hpY2ggY2FuIGNhdXNlIHJvY2tjaGlwX2Vk cF9waHlfcG93ZXJfb24oKSB0byByZXR1cm4gMCBlYXJseSB3aXRob3V0CnBvd2VyaW5nIG9uIG9y IGNvbmZpZ3VyaW5nIHRoZSBQSFkgQVVYIGNoYW5uZWwuCgpTaG91bGQgdmFsIGJlIGluaXRpYWxp emVkIHRvIDAgKG9yIHRoZSByZWdtYXBfcmVhZCgpIGVycm9yIGNoZWNrZWQpPwoKWyAuLi4gXQoK PiAtLSAKPiAyLjM0LjEKCi0tIApTYXNoaWtvIEFJIHJldmlldyDCtyBodHRwczovL3Nhc2hpa28u ZGV2LyMvcGF0Y2hzZXQvMjAyNjEwMTkxMDI4MjQuMzE1NzA0NC0xLWRhbW9uLmRpbmdAcm9jay1j aGlwcy5jb20/cGFydD00CgotLSAKbGludXgtcGh5IG1haWxpbmcgbGlzdApsaW51eC1waHlAbGlz dHMuaW5mcmFkZWFkLm9yZwpodHRwczovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0 aW5mby9saW51eC1waHkK 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 8B19F48382F for ; Mon, 19 Oct 2026 10:37:32 +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=1792406253; cv=none; b=nFxzuUDwRahATMXiCQiDlFRXuQzTAgL8AIbMeGUC798Z6cAL4qy9Q6VtT6ra2XrqoIcceIsDCqI2Y5Q6S6C7wmmegd66cwuT4HsXtKdaQZeGH8F1rq0eoNmE0gN3MM6TVfLVwwoS//Z2Wwh1+ke2k0T7ejI59BSWz2QyqZwVr3I= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1792406253; c=relaxed/simple; bh=fDeMZfHk59IGhuQQqa3sf+ZsCIBFuAYw44gs/8KR7TU=; h=Message-ID:From:Subject:To:Cc:In-Reply-To:References:Content-Type: Date; b=OQTO29gsdhOhtBC4Dk3HoN2zVA4WkTerC6nsfF+UyWm2+lIiJe1lXygKoZ7V3OdIGc209UoErLPip3QC7POmNP9mm4++M2z0mNLyRbVlIJ8kyBSzTV3SGOLT3HdN5FS/bayU8zFppaFv/mgKRVJ+0wYSP28BNKoiEvIRyBdAWCY= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Naa44i3b; 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="Naa44i3b" Received: by smtp.kernel.org (Postfix) with ESMTPSA id ABF7C1F000C4; Mon, 19 Oct 2026 10:37:31 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1792406252; bh=/oHQ4bdH43j1fuumTS02Am3jQZBjLwwUEwkgUZPR6zI=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=Naa44i3bJPqsT7f0nOe/lglmj1/NFLsOEbmh3rbA62SBQLNYlWu4pf5JVcf5Pu6SF Xb91lgPSM8eWmMTsQCfAz+/s9E/JnZr1vlYbH+FWualm8lAI08BBYyU9cOeoU0cDaP CcRq0dsVSudcSYuhS1VU/8lOtimRIMGm34W/5WbpqxxMi4qmaFYFDWPaO4hYysnpVM MEnxtdnAslBCPYyvrvjNXiveQi5b7QqYWKCwOzDICPLznqjp/gSK67dhWJAEgPkBww Fy1MxG8r42DWrT7VhqI32XHwE5nL0Vh6xewUBOdcWvjXEcK+Ql3sI5XK7HNPfi7ZGA fRpMwogchSsow== Message-ID: From: sashiko-bot@kernel.org Subject: Re: [PATCH v2 4/6] phy: rockchip: Add support for Naneng eDP phy Reply-To: sashiko-reviews@lists.linux.dev To: "Damon Ding" Cc: dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-phy@lists.infradead.org, robh@kernel.org, conor+dt@kernel.org, vkoul@kernel.org, neil.armstrong@linaro.org, olteanv@gmail.com In-Reply-To: <20261019102824.3157044-5-damon.ding@rock-chips.com> References: <20261019102824.3157044-1-damon.ding@rock-chips.com> <20261019102824.3157044-5-damon.ding@rock-chips.com> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Date: Mon, 19 Oct 2026 10:37:31 +0000 Precedence: bulk X-Mailing-List: devicetree@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Thank you for your contribution! Sashiko AI review found 2 potential issue(= s) to consider: - [High] phy: rockchip: missing set_lanes handling in rockchip_edp_phy_conf= igure() - [Medium] phy: rockchip: uninitialized val read in rockchip_edp_phy_enable= d() -- commit d07a3a0e3533b84cdc67b6de45db340e9d9898c9 Author: Damon Ding phy: rockchip: Add support for Naneng eDP phy This commit adds a driver for the Rockchip eDP transmitter PHY with the NaNeng IP block found on the RK3568 SoC, controlled via the eDP PHY GRF syscon regmap. > diff --git a/drivers/phy/rockchip/phy-rockchip-naneng-edp.c b/drivers/phy= /rockchip/phy-rockchip-naneng-edp.c > new file mode 100644 > index 0000000000000..a407714f639a7 > --- /dev/null > +++ b/drivers/phy/rockchip/phy-rockchip-naneng-edp.c [ ... ] > +static int rockchip_edp_phy_set_voltages(struct rockchip_edp_phy *edpphy, > + struct phy_configure_opts_dp *dp) > +{ > + u8 lane; > + > + for (lane =3D 0; lane < dp->lanes; lane++) > + rockchip_edp_phy_set_voltage(edpphy, dp, lane); > + > + return 0; > +} > + > +static int rockchip_edp_phy_set_rate(struct rockchip_edp_phy *edpphy, > + struct phy_configure_opts_dp *dp) > +{ > + u32 value; > + int ret; [ ... ] > + regmap_write(edpphy->grf, EDP_PHY_GRF_CON0, FIELD_PREP_WM16(EDP_PHY_PD_= PLL_MASK, 0)); > + regmap_write(edpphy->grf, EDP_PHY_GRF_CON0, > + FIELD_PREP_WM16(EDP_PHY_TX_PD_MASK, ~GENMASK(dp->lanes - 1, 0))); > + ret =3D regmap_read_poll_timeout(edpphy->grf, EDP_PHY_GRF_STATUS0, > + value, value & PLL_RDY, 100, 1000); > + if (ret) { > + dev_err(edpphy->dev, "Failed to wait for PHY PLL ready: %d\n", ret); > + return ret; > + } > + > + regmap_write(edpphy->grf, EDP_PHY_GRF_CON5, FIELD_PREP_WM16(EDP_PHY_TX_= MODE_MASK, 0x0)); > + regmap_write(edpphy->grf, EDP_PHY_GRF_CON0, > + FIELD_PREP_WM16(EDP_PHY_TX_IDLE_MASK, ~GENMASK(dp->lanes - 1, 0))= ); > + > + return 0; > +} > + > +static int rockchip_edp_phy_verify_config(struct rockchip_edp_phy *edpph= y, > + struct phy_configure_opts_dp *dp) > +{ > + int i; > + > + /* If changing link rate was required, verify it's supported. */ > + if (dp->set_rate) { > + switch (dp->link_rate) { > + case 1620: > + case 2700: > + /* valid bit rate */ > + break; > + default: > + return -EINVAL; > + } > + } > + > + if (dp->set_lanes) { > + /* Verify lane count. */ > + switch (dp->lanes) { > + case 1: > + case 2: > + case 4: > + /* valid lane count. */ > + break; > + default: > + return -EINVAL; > + } > + } > + > + /* > + * If changing voltages is required, check swing and pre-emphasis > + * levels, per-lane. > + */ > + if (dp->set_voltages) { > + /* Lane count verified previously. */ > + for (i =3D 0; i < dp->lanes; i++) { > + if (dp->voltage[i] > 3 || dp->pre[i] > 3) > + return -EINVAL; > + > + /* > + * Sum of voltage swing and pre-emphasis levels cannot > + * exceed 3. > + */ > + if (dp->voltage[i] + dp->pre[i] > 3) > + return -EINVAL; > + } > + } > + > + return 0; > +} > + > +static int rockchip_edp_phy_configure(struct phy *phy, union phy_configu= re_opts *opts) > +{ > + struct rockchip_edp_phy *edpphy =3D phy_get_drvdata(phy); > + int ret; > + > + ret =3D rockchip_edp_phy_verify_config(edpphy, &opts->dp); > + if (ret) { > + dev_err(edpphy->dev, "Invalid params for phy configure\n"); > + return ret; > + } > + > + if (opts->dp.set_rate) { > + ret =3D rockchip_edp_phy_set_rate(edpphy, &opts->dp); > + if (ret) { > + dev_err(edpphy->dev, "Failed to set rate\n"); > + return ret; > + } > + } > + > + if (opts->dp.set_voltages) { > + ret =3D rockchip_edp_phy_set_voltages(edpphy, &opts->dp); > + if (ret) { > + dev_err(edpphy->dev, "Failed to set voltages\n"); > + return ret; > + } > + } > + > + return 0; > +} [Severity: High] How does rockchip_edp_phy_configure() handle callers that issue separate phy_configure() calls for rate, lane count, and voltage levels? Looking at drivers/gpu/drm/bridge/analogix/analogix_dp_reg.c, the Analogix = DP bridge issues three separate phy_configure() calls, each with a zero-initialized union phy_configure_opts: 1. analogix_dp_set_link_bandwidth() sets only phy_cfg.dp.link_rate and phy_cfg.dp.set_rate =3D true, leaving phy_cfg.dp.lanes =3D 0: union phy_configure_opts phy_cfg =3D {0}; phy_cfg.dp.link_rate =3D drm_dp_bw_code_to_link_rate(dp->link_train.link_rate) / 100; phy_cfg.dp.set_rate =3D true; ret =3D phy_configure(dp->phy, &phy_cfg); When rockchip_edp_phy_set_rate() runs, dp->lanes is 0 (and unvalidated since dp->set_lanes is false), so GENMASK(dp->lanes - 1, 0) evaluates GENMASK(UINT_MAX, 0) when programming EDP_PHY_TX_PD_MASK and EDP_PHY_TX_IDLE_MASK. 2. analogix_dp_set_lane_count() sets phy_cfg.dp.lanes and phy_cfg.dp.set_lanes =3D true, but rockchip_edp_phy_configure() never checks opts->dp.set_lanes, so the lane-dependent TX configuration is not applied a= nd the active lane count is not stored in struct rockchip_edp_phy. 3. analogix_dp_set_lane_link_training() sets phy_cfg.dp.voltage[], phy_cfg.dp.pre[], and phy_cfg.dp.set_voltages =3D true, with phy_cfg.dp.lan= es left at 0. Both rockchip_edp_phy_verify_config() and rockchip_edp_phy_set_voltages() loop up to dp->lanes, so 0 iterations run a= nd no voltage swing or pre-emphasis registers are written (or if a caller pass= es set_voltages =3D true with set_lanes =3D false and an unvalidated dp->lanes= > 4, the loops read past the end of dp->voltage[4] and dp->pre[4]). Should the lane-dependent TX configuration be applied in a set_lanes handler that also stores the lane count in struct rockchip_edp_phy for set_voltages to use? > +static bool rockchip_edp_phy_enabled(struct rockchip_edp_phy *edpphy) > +{ > + u32 val; > + > + regmap_read(edpphy->grf, EDP_PHY_GRF_STATUS0, &val); > + > + return FIELD_GET(PLL_RDY, val); > +} [Severity: Medium] What happens in rockchip_edp_phy_enabled() if regmap_read() fails? Because val is uninitialized and the return value of regmap_read() is not checked, FIELD_GET(PLL_RDY, val) will read an uninitialized stack variable, which can cause rockchip_edp_phy_power_on() to return 0 early without powering on or configuring the PHY AUX channel. Should val be initialized to 0 (or the regmap_read() error checked)? [ ... ] > --=20 > 2.34.1 --=20 Sashiko AI review =C2=B7 https://sashiko.dev/#/patchset/20261019102824.3157= 044-1-damon.ding@rock-chips.com?part=3D4