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 8694EC44512 for ; Sun, 19 Jul 2026 12:41:30 +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=W4M/ri+Nbl9wksgasZiv6wILxZihWH9VDDgcNFupEs8=; b=XeFl41olCNyLax PAT9RmArcZuTjc/q7RUTCjuJKOc8Ax5zOecHGIZogN63U/8DNrcrX6kMx7HN/sNV3EDxKqVCwDKEF bYgwcyHvxu8l+Tk3z7chubgBPFfQODsx87hDJ5IYuQPbmI2ZAwXKGQ75gy4jiExZ33y7vjXg1JgUv fnU9gpYFQiev1PXU31VMhaNi0RKQw0ONYfI5gtRLwcnMpOxwOXrUsaAe+nuJW6N5iMoFGVYz/mpzP W6WdE74WLbCKTLaBkFEeMaUYpJHfaHsJbl+fZIRkwLL+XkTPfgwYNnNGHwgUXOGku8lMc9VX4Toa8 pHtOUkZ7S/FsGSSw+CYw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1wlQpl-0000000504D-226i; Sun, 19 Jul 2026 12:41:30 +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 1wlQpj-00000005047-2Ny7 for linux-phy@lists.infradead.org; Sun, 19 Jul 2026 12:41:27 +0000 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by sea.source.kernel.org (Postfix) with ESMTP id C71C9409A7; Sun, 19 Jul 2026 12:41:26 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 397901F000E9; Sun, 19 Jul 2026 12:41:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1784464886; bh=GeFBb3N9J34UxhGdOzpnMX394XWwhLeCIgGjXNPJDAg=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=lzcqtF82MLvka/W9fXL3v3J/L/8ourKoMKWZEbCExBHry7OG3xnGHyaT1of5RIdPc iMr/6KA4DMK463DpWDtKIkbH0fz2mhQtHxShL0mUKntp0wi6T4+yu8YyeLqLuRGH+Q kV5xRkBchyH0CTxLYzgU+6TqOYdI2D+YnLjCaCLZ7H1nHDRo5dJU5Q9fyM6M1lLf4S T5m1MFduFHEhNlA0ae0p1MP6Vmh4ymFS0ne4bkosVS9vjjPzq4AAlCzxlwFFV/HTNF 0grvp32iy4rEa1HhemDiqP7OLAi9iOyVgwayOg2/0efzKpQx50vJKPO1b89Hh1N85Q KnLXCe2dASUHA== From: sashiko-bot@kernel.org Subject: Re: [PATCH v11 2/2] phy: qcom-mipi-csi2: Add a CSI2 MIPI DPHY driver To: =?utf-8?b?QnJ5YW4gTydEb25vZ2h1ZQ==?= Cc: linux-phy@lists.infradead.org, conor+dt@kernel.org, neil.armstrong@linaro.org, vkoul@kernel.org, media-ci@linuxtv.org, olteanv@gmail.com, devicetree@vger.kernel.org, robh@kernel.org In-Reply-To: <20260719-x1e-csi2-phy-v11-2-9d0a1ed0632d@linaro.org> References: <20260719-x1e-csi2-phy-v11-0-9d0a1ed0632d@linaro.org> <20260719-x1e-csi2-phy-v11-2-9d0a1ed0632d@linaro.org> Date: Sun, 19 Jul 2026 12:41:25 +0000 Message-Id: <20260719124126.397901F000E9@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 NCBwb3RlbnRpYWwgaXNzdWUocykgdG8gY29uc2lkZXI6Ci0gW0hpZ2hdIEluc3VmZmljaWVudCB2 YWxpZGF0aW9uIG9mIHRoZSBgZGF0YS1sYW5lc2AgcHJvcGVydHkgYWxsb3dzIHZhbHVlcyB1cCB0 byA3LCBsZWFkaW5nIHRvIGludGVnZXIgdHJ1bmNhdGlvbiBhbmQgb3V0LW9mLWJvdW5kcyBNTUlP IHdyaXRlcyBpbnRvIGNvbW1vbiBQSFkgcmVnaXN0ZXJzLgotIFtNZWRpdW1dIFRoZSBkcml2ZXIg c3RhdGljYWxseSBjb25maWd1cmVzIGxhbmVzIGJhc2VkIG9uIHRoZSBkZXZpY2UgdHJlZSBpbnN0 ZWFkIG9mIHJlc3BlY3RpbmcgZHluYW1pYyBgZHBoeV9jZmctPmxhbmVzYCByZXF1ZXN0cywgdmlv bGF0aW5nIHRoZSBNSVBJIEQtUEhZIEFQSSBjb250cmFjdC4KLSBbTWVkaXVtXSBTZXR0aW5nIGxh bmUgcG9sYXJpdHkgdW5jb25kaXRpb25hbGx5IG92ZXJ3cml0ZXMgdGhlIGVudGlyZSBgQ1RSTDlg IHJlZ2lzdGVyIGluc3RlYWQgb2YgcGVyZm9ybWluZyBhIHJlYWQtbW9kaWZ5LXdyaXRlLgotIFtM b3ddIFVubWFza2VkIGFzc2lnbm1lbnQgb2YgdGhlIGZpcnN0IGJ5dGUgaW4gYGh3X3ZlcnNpb25g IG1heSBjb3JydXB0IHRoZSBmaW5hbCB2YWx1ZSB3aXRoIHVuZGVmaW5lZCB1cHBlciBiaXRzLgot LQoKLS0tIFBhdGNoIFsyXTogW1BBVENIIHYxMSAyLzJdIHBoeTogcWNvbS1taXBpLWNzaTI6IEFk ZCBhIENTSTIgTUlQSSBEUEhZIGRyaXZlciAtLS0KY29tbWl0IGNmZjAyZjY1MDgzOThkZjRmMjU0 YzY3NWIzNTgwYzNjODQ4ZTE3YzIKQXV0aG9yOiBCcnlhbiBPJ0Rvbm9naHVlIDxicnlhbi5vZG9u b2dodWVAbGluYXJvLm9yZz4KU3ViamVjdDogcGh5OiBxY29tLW1pcGktY3NpMjogQWRkIGEgQ1NJ MiBNSVBJIERQSFkgZHJpdmVyCgpUaGlzIGNvbW1pdCBhZGRzIGEgbmV3IE1JUEkgQ1NJMiBQSFkg ZHJpdmVyIGluIERQSFkgbW9kZSBmb3IgUXVhbGNvbW0KaGFyZHdhcmUuIEl0IHBvcnRzIGxvZ2lj IGZyb20gZXhpc3RpbmcgY2Ftc3MgZHJpdmVycyB0byBpbml0aWFsaXplIGFuZApjb25maWd1cmUg ZGF0YSBhbmQgY2xvY2sgbGFuZXMgYmFzZWQgb24gZGV2aWNlIHRyZWUgcHJvcGVydGllcy4KCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGh5L3F1YWxjb21tL3BoeS1xY29tLW1pcGktY3NpMi0zcGgt ZHBoeS5jIGIvZHJpdmVycy9waHkvcXVhbGNvbW0vcGh5LXFjb20tbWlwaS1jc2kyLTNwaC1kcGh5 LmMKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9waHkvcXVhbGNvbW0vcGh5LXFjb20t bWlwaS1jc2kyLTNwaC1kcGh5LmMKClsgLi4uIF0KCj4gK3N0YXRpYyB2b2lkIHBoeV9xY29tX21p cGlfY3NpMl9od192ZXJzaW9uX3JlYWQoc3RydWN0IG1pcGlfY3NpMnBoeV9kZXZpY2UgKmNzaTJw aHkpCj4gK3sKPiArCWNvbnN0IHN0cnVjdCBtaXBpX2NzaTJwaHlfZGV2aWNlX3JlZ3MgKnJlZ3Mg PSBjc2kycGh5X2Rldl90b19yZWdzKGNzaTJwaHkpOwo+ICsJdTMyIHRtcDsKPiArCj4gKwl3cml0 ZWwoQ1NJUEhZXzNQSF9DTU5fQ1NJX0NPTU1PTl9DVFJMNl9TSE9XX1JFVl9JRCwgY3NpMnBoeS0+ YmFzZSArCj4gKwkgICAgICAgQ1NJUEhZXzNQSF9DTU5fQ1NJX0NPTU1PTl9DVFJMbihyZWdzLT5j b21tb25fcmVnc19vZmZzZXQsIDYpKTsKPiArCj4gKwl0bXAgPSByZWFkbF9yZWxheGVkKGNzaTJw aHktPmJhc2UgKwo+ICsJCQkgICAgQ1NJUEhZXzNQSF9DTU5fQ1NJX0NPTU1PTl9TVEFUVVNuKHJl Z3MtPmNvbW1vbl9yZWdzX29mZnNldCwgMTIpKTsKPiArCWNzaTJwaHktPmh3X3ZlcnNpb24gPSB0 bXA7CgpbU2V2ZXJpdHk6IExvd10KRG9lcyB0aGlzIGFzc2lnbm1lbnQgdG8gY3NpMnBoeS0+aHdf dmVyc2lvbiBuZWVkIGEgbWFzayBsaWtlICYgMHhGRj8KCklmIHRoZSBoYXJkd2FyZSByZWdpc3Rl ciByZXR1cm5zIG5vbi16ZXJvIGdhcmJhZ2UgdmFsdWVzIGluIHRoZSB1cHBlciAyNApiaXRzLCB0 aG9zZSBiaXRzIG1pZ2h0IHJlbWFpbiBpbiBod192ZXJzaW9uIGFuZCBjb3JydXB0IHRoZSBmaW5h bCB2YWx1ZQp3aGVuIHRoZSBzdWJzZXF1ZW50IHNoaWZ0ZWQgYnl0ZXMgYXJlIE9SJ2VkIGluLgoK WyAuLi4gXQoKPiArc3RhdGljIGludCBwaHlfcWNvbV9taXBpX2NzaTJfbGFuZXNfZW5hYmxlKHN0 cnVjdCBtaXBpX2NzaTJwaHlfZGV2aWNlICpjc2kycGh5LAo+ICsJCQkJCSAgIHN0cnVjdCBtaXBp X2NzaTJwaHlfc3RyZWFtX2NmZyAqY2ZnKQo+ICt7Cj4gKwljb25zdCBzdHJ1Y3QgbWlwaV9jc2ky cGh5X2RldmljZV9yZWdzICpyZWdzID0gY3NpMnBoeV9kZXZfdG9fcmVncyhjc2kycGh5KTsKPiAr CXN0cnVjdCBtaXBpX2NzaTJwaHlfbGFuZXNfY2ZnICpsYW5lX2NmZyA9ICZjZmctPmxhbmVfY2Zn Owo+ICsJdTggc2V0dGxlX2NudDsKPiArCXU4IHZhbDsKPiArCWludCBpOwoKWyAuLi4gXQoKPiAr CS8qCj4gKwkgKiBDU0lfQ09NTU9OX0NUUkw1IGlzIGEgcGh5c2ljYWwgbGFuZSBwb3dlci11cCBi aXRtYXA6Cj4gKwkgKiAtIEJpdHMgWzAsMiw0LDZdIOKGkiBELVBIWSBkYXRhIGxhbmVzKExOMCwg TE4yLCBMTjQsIExONikKPiArCSAqIC0gQml0cyBbMSwzLDVdIOKGkiBDLVBIWSB0cmlvIGxhbmVz KExOMSwgTE4zLCBMTjUpCj4gKwkgKiAtIEJpdCBbN10g4oaSIEQtUEhZIGNsb2NrIGxhbmUoTE5D SykgZGVkaWNhdGVkIGNsb2NrIGVuYWJsZQo+ICsJICovCj4gKwl2YWwgPSBCSVQobGFuZV9jZmct PmNsay5wb3MpOwo+ICsJZm9yIChpID0gMDsgaSA8IGNmZy0+bnVtX2RhdGFfbGFuZXM7IGkrKykK PiArCQl2YWwgfD0gQklUKGxhbmVfY2ZnLT5kYXRhW2ldLnBvcyAqIDIpOwoKW1NldmVyaXR5OiBI aWdoXQpDb3VsZCB0aGlzIGNhdXNlIGFuIGludGVnZXIgdHJ1bmNhdGlvbj8KCkJlY2F1c2UgdGhl IHZhbCB2YXJpYWJsZSBpcyBkZWZpbmVkIGFzIGEgdTgsIHNoaWZ0aW5nIGJ5IDggb3IgbW9yZSB3 aWxsCnNpbGVudGx5IHRydW5jYXRlIHRvIDAuIElmIGEgbGFuZSBwb3NpdGlvbiBpcyA+PSA0LCBs YW5lX2NmZy0+ZGF0YVtpXS5wb3MgKiAyCmJlY29tZXMgPj0gOCwgd2hpY2ggbWVhbnMgdGhlIGRy aXZlciBtaWdodCBmYWlsIHRvIHBvd2VyIHVwIHRoZSBsYW5lLgoKPiArCXdyaXRlbCh2YWwsIGNz aTJwaHktPmJhc2UgKwo+ICsJICAgICAgIENTSVBIWV8zUEhfQ01OX0NTSV9DT01NT05fQ1RSTG4o cmVncy0+Y29tbW9uX3JlZ3Nfb2Zmc2V0LCA1KSk7Cj4gKwo+ICsJLyogTGFuZSBjb25maWd1cmF0 aW9uIGZvciBwb2xhcml0eSBAIENTSVBIWS1iYXNlICsgQ1RSTDkgKi8KPiArCWZvciAoaSA9IDA7 IGkgPCBjZmctPm51bV9kYXRhX2xhbmVzOyBpKyspIHsKPiArCQlpZiAobGFuZV9jZmctPmRhdGFb aV0ucG9sKSB7Cj4gKwkJCXU4IHBvcyA9IGxhbmVfY2ZnLT5kYXRhW2ldLnBvczsKPiArCj4gKwkJ CXdyaXRlbChCSVQoMiksIGNzaTJwaHktPmJhc2UgKyBDU0lQSFlfMlBIX0xOX0NTSV8yUEhBU0Vf Q1RSTDluKHBvcyAqIDIpKTsKCltTZXZlcml0eTogSGlnaF0KQ2FuIHRoaXMgcmVzdWx0IGluIGFu IG91dC1vZi1ib3VuZHMgbWVtb3J5IHdyaXRlPwoKSWYgcG9zIGlzID49IDQsIHBvcyAqIDIgaXMg Pj0gOC4gVGhlIENTSVBIWV8yUEhfTE5fQ1NJXzJQSEFTRV9DVFJMOW4gbWFjcm8Kd2lsbCBjb21w dXRlIGFuIG9mZnNldCB0aGF0IG92ZXJmbG93cyB0aGUgcGh5c2ljYWwgbGFuZSByZWdpc3RlciBz cGFjZSBhbmQKYWxpYXNlcyBkaXJlY3RseSBpbnRvIHRoZSBjb21tb24gUEhZIHJlZ2lzdGVyIGJs b2NrLCBwb3RlbnRpYWxseSBjbG9iYmVyaW5nCmNvbW1vbiByZWdpc3RlcnMuCgpbU2V2ZXJpdHk6 IE1lZGl1bV0KSXMgaXQgc2FmZSB0byB1c2UgYW4gYWJzb2x1dGUgd3JpdGVsKCkgaGVyZSBpbnN0 ZWFkIG9mIGEgcmVhZC1tb2RpZnktd3JpdGU/CgpXcml0aW5nIEJJVCgyKSBkaXJlY3RseSBjbGVh cnMgYW55IGhhcmR3YXJlIGRlZmF1bHRzIG9yIHJlc2VydmVkIGJpdHMgdGhhdAptaWdodCBiZSBw cmVzZW50IGluIHRoZSByZXN0IG9mIHRoZSByZWdpc3Rlci4gVGhpcyBhbHNvIGNyZWF0ZXMgYXN5 bW1ldHJpYwpoYW5kbGluZyBzaW5jZSB0aGUgcmVnaXN0ZXIgaXMgbGVmdCB1bnRvdWNoZWQgaWYg cG9sYXJpdHkgaXMgZmFsc2UuCgo+ICsJCX0KPiArCX0KPiArCj4gKwlpZiAobGFuZV9jZmctPmNs ay5wb2wpCj4gKwkJd3JpdGVsKEJJVCgyKSwgY3NpMnBoeS0+YmFzZSArIENTSVBIWV8yUEhfTE5f Q1NJXzJQSEFTRV9DVFJMOW4obGFuZV9jZmctPmNsay5wb3MpKTsKCltTZXZlcml0eTogTWVkaXVt XQpTaW1pbGFybHksIGNvdWxkIHRoaXMgYWJzb2x1dGUgd3JpdGUgY2xvYmJlciB0aGUgY2xvY2sg bGFuZSBDVFJMOSByZWdpc3Rlcj8KCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGh5L3F1YWxjb21t L3BoeS1xY29tLW1pcGktY3NpMi1jb3JlLmMgYi9kcml2ZXJzL3BoeS9xdWFsY29tbS9waHktcWNv bS1taXBpLWNzaTItY29yZS5jCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvcGh5L3F1 YWxjb21tL3BoeS1xY29tLW1pcGktY3NpMi1jb3JlLmMKClsgLi4uIF0KCj4gK3N0YXRpYyBpbnQg cGh5X3Fjb21fbWlwaV9jc2kyX2NvbmZpZ3VyZShzdHJ1Y3QgcGh5ICpwaHksCj4gKwkJCQkJdW5p b24gcGh5X2NvbmZpZ3VyZV9vcHRzICpvcHRzKQo+ICt7Cj4gKwlzdHJ1Y3QgbWlwaV9jc2kycGh5 X2RldmljZSAqY3NpMnBoeSA9IHBoeV9nZXRfZHJ2ZGF0YShwaHkpOwo+ICsJc3RydWN0IHBoeV9j b25maWd1cmVfb3B0c19taXBpX2RwaHkgKmRwaHlfY2ZnID0gJm9wdHMtPm1pcGlfZHBoeTsKPiAr CXN0cnVjdCBtaXBpX2NzaTJwaHlfc3RyZWFtX2NmZyAqc3RyZWFtX2NmZyA9ICZjc2kycGh5LT5z dHJlYW1fY2ZnOwo+ICsJaW50IHJldDsKPiArCj4gKwlyZXQgPSBwaHlfbWlwaV9kcGh5X2NvbmZp Z192YWxpZGF0ZShkcGh5X2NmZyk7Cj4gKwlpZiAocmV0KQo+ICsJCXJldHVybiByZXQ7Cj4gKwo+ ICsJaWYgKGRwaHlfY2ZnLT5sYW5lcyA8IDEgfHwgZHBoeV9jZmctPmxhbmVzID4gQ1NJMl9NQVhf REFUQV9MQU5FUykKPiArCQlyZXR1cm4gLUVJTlZBTDsKPiArCj4gKwlzdHJlYW1fY2ZnLT5saW5r X2ZyZXEgPSBkcGh5X2NmZy0+aHNfY2xrX3JhdGU7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KCltT ZXZlcml0eTogTWVkaXVtXQpTaG91bGQgdGhlIGR5bmFtaWNhbGx5IHJlcXVlc3RlZCBkcGh5X2Nm Zy0+bGFuZXMgdmFsdWUgYmUgc2F2ZWQgaW50byB0aGUKYWN0aXZlIGNvbmZpZ3VyYXRpb24gaGVy ZT8KClRoZSB2YWx1ZSBpcyB2YWxpZGF0ZWQgYnV0IGRpc2NhcmRlZCwgbWVhbmluZyB0aGUgZHJp dmVyIHdpbGwgYWx3YXlzCnN0YXRpY2FsbHkgcG93ZXIgdXAgdGhlIG1heGltdW0gbnVtYmVyIG9m IGxhbmVzIGNvbmZpZ3VyZWQgaW4gdGhlIGRldmljZQp0cmVlIGluc3RlYWQgb2YgcmVzcGVjdGlu ZyBkeW5hbWljIHJlcXVlc3RzIGZyb20gdGhlIGNvbnN1bWVyLiBEb2VzIHRoaXMKdmlvbGF0ZSB0 aGUgTUlQSSBELVBIWSBBUEkgY29udHJhY3QgZm9yIGR5bmFtaWMgbGFuZSBjb25maWd1cmF0aW9u PwoKWyAuLi4gXQoKPiArc3RhdGljIGludCBwaHlfcWNvbV9taXBpX2NzaTJfcGFyc2Vfcm91dGlu ZyhzdHJ1Y3QgbWlwaV9jc2kycGh5X2RldmljZSAqY3NpMnBoeSkKPiArewo+ICsJc3RydWN0IG1p cGlfY3NpMnBoeV9zdHJlYW1fY2ZnICpzdHJlYW1fY2ZnID0gJmNzaTJwaHktPnN0cmVhbV9jZmc7 CgpbIC4uLiBdCgo+ICsJY3NpMnBoeS0+c3RyZWFtX2NmZy5sYW5lX2NmZy5jbGsucG9zID0gQ1NJ Ml9ERUZBVUxUX0NMS19MQU5FOwo+ICsJY3NpMnBoeS0+c3RyZWFtX2NmZy5sYW5lX2NmZy5jbGsu cG9sID0gbGFuZV9wb2xhcml0aWVzWzBdOwo+ICsKPiArCWZvciAoaSA9IDA7IGkgPCBjc2kycGh5 LT5zdHJlYW1fY2ZnLm51bV9kYXRhX2xhbmVzOyBpKyspIHsKPiArCQlpZiAoZGF0YV9sYW5lc1tp XSA+IENTSTJfTUFYX0xBTkVfTlVNKSB7CgpbU2V2ZXJpdHk6IEhpZ2hdCklzIENTSTJfTUFYX0xB TkVfTlVNICg3KSB0b28gbGFyZ2UgZm9yIHRoaXMgYm91bmRzIGNoZWNrPwoKQXMgbm90ZWQgaW4g cGh5X3Fjb21fbWlwaV9jc2kyX2xhbmVzX2VuYWJsZSgpLCBhbGxvd2luZyBsYW5lIG51bWJlcnMg Pj0gNApyZXN1bHRzIGluIHBvcyAqIDIgYmVpbmcgPj0gOCBsYXRlciBvbiwgd2hpY2ggY2F1c2Vz IGJvdGggdHJ1bmNhdGlvbiBpbiB0aGUKdTggYml0bWFzayBhbmQgb3V0LW9mLWJvdW5kcyB3cml0 ZXMgaW50byB0aGUgY29tbW9uIFBIWSByZWdpc3RlciByZWdpb24uCgo+ICsJCQlkZXZfZXJyKGRl diwgIkludmFsaWQgbGFuZSAlZFxuIiwgZGF0YV9sYW5lc1tpXSk7Cj4gKwkJCXJldCA9IC1FSU5W QUw7Cj4gKwkJCWdvdG8gb3V0X3B1dDsKPiArCQl9Cj4gKwkJY3NpMnBoeS0+c3RyZWFtX2NmZy5s YW5lX2NmZy5kYXRhW2ldLnBvcyA9IGRhdGFfbGFuZXNbaV07Cj4gKwkJY3NpMnBoeS0+c3RyZWFt X2NmZy5sYW5lX2NmZy5kYXRhW2ldLnBvbCA9IGxhbmVfcG9sYXJpdGllc1tpICsgMV07Cj4gKwl9 CgotLSAKU2FzaGlrbyBBSSByZXZpZXcgwrcgaHR0cHM6Ly9zYXNoaWtvLmRldi8jL3BhdGNoc2V0 LzIwMjYwNzE5LXgxZS1jc2kyLXBoeS12MTEtMC05ZDBhMWVkMDYzMmRAbGluYXJvLm9yZz9wYXJ0 PTIKCi0tIApsaW51eC1waHkgbWFpbGluZyBsaXN0CmxpbnV4LXBoeUBsaXN0cy5pbmZyYWRlYWQu b3JnCmh0dHBzOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LXBo eQo= 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 5D1232FFFA5 for ; Sun, 19 Jul 2026 12:41:27 +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=1784464888; cv=none; b=osYWv3zAWDMu46f6WMnSjOOxQ+K1BdI0A17l5hWNtEuiaE9DnsPArF1p77GXxJUiQ42E9t6x9lYSNCf39gZwP5vLaCXhSONGEBLmo2/QzUtpjf2gtbOlLkPkSoAAC0i0RY8GFXj2qYIr9klhpWvv2VZkvw9x+V0zDqSaTvT7cO0= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784464888; c=relaxed/simple; bh=GCo6YJEygGPCyt/V4LFACkAEoRdXqXX0l8TXX85Kcpk=; h=From:Subject:To:Cc:In-Reply-To:References:Content-Type:Date: Message-Id; b=daP0QcvbPUctI+OBDTY+gT11respvrLJniuImHiDtqDtEFhMiewtHx7vhrNiNKH2uadoeCI7iIStCWaMrNF92EjFSd6boBYX9RrhI/kw4VYIyxkDXo4vTeppkrPVnf/WkSejDHbUzv0wUsi+RT1j49Nr6sQqwMB/KoZEQTrPZkk= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=lzcqtF82; 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="lzcqtF82" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 397901F000E9; Sun, 19 Jul 2026 12:41:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1784464886; bh=GeFBb3N9J34UxhGdOzpnMX394XWwhLeCIgGjXNPJDAg=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=lzcqtF82MLvka/W9fXL3v3J/L/8ourKoMKWZEbCExBHry7OG3xnGHyaT1of5RIdPc iMr/6KA4DMK463DpWDtKIkbH0fz2mhQtHxShL0mUKntp0wi6T4+yu8YyeLqLuRGH+Q kV5xRkBchyH0CTxLYzgU+6TqOYdI2D+YnLjCaCLZ7H1nHDRo5dJU5Q9fyM6M1lLf4S T5m1MFduFHEhNlA0ae0p1MP6Vmh4ymFS0ne4bkosVS9vjjPzq4AAlCzxlwFFV/HTNF 0grvp32iy4rEa1HhemDiqP7OLAi9iOyVgwayOg2/0efzKpQx50vJKPO1b89Hh1N85Q KnLXCe2dASUHA== From: sashiko-bot@kernel.org Subject: Re: [PATCH v11 2/2] phy: qcom-mipi-csi2: Add a CSI2 MIPI DPHY driver Reply-To: sashiko-reviews@lists.linux.dev To: =?utf-8?b?QnJ5YW4gTydEb25vZ2h1ZQ==?= Cc: linux-phy@lists.infradead.org, conor+dt@kernel.org, neil.armstrong@linaro.org, vkoul@kernel.org, media-ci@linuxtv.org, olteanv@gmail.com, devicetree@vger.kernel.org, robh@kernel.org In-Reply-To: <20260719-x1e-csi2-phy-v11-2-9d0a1ed0632d@linaro.org> References: <20260719-x1e-csi2-phy-v11-0-9d0a1ed0632d@linaro.org> <20260719-x1e-csi2-phy-v11-2-9d0a1ed0632d@linaro.org> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Date: Sun, 19 Jul 2026 12:41:25 +0000 Message-Id: <20260719124126.397901F000E9@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 4 potential issue(= s) to consider: - [High] Insufficient validation of the `data-lanes` property allows values= up to 7, leading to integer truncation and out-of-bounds MMIO writes into = common PHY registers. - [Medium] The driver statically configures lanes based on the device tree = instead of respecting dynamic `dphy_cfg->lanes` requests, violating the MIP= I D-PHY API contract. - [Medium] Setting lane polarity unconditionally overwrites the entire `CTR= L9` register instead of performing a read-modify-write. - [Low] Unmasked assignment of the first byte in `hw_version` may corrupt t= he final value with undefined upper bits. -- --- Patch [2]: [PATCH v11 2/2] phy: qcom-mipi-csi2: Add a CSI2 MIPI DPHY dr= iver --- commit cff02f6508398df4f254c675b3580c3c848e17c2 Author: Bryan O'Donoghue Subject: phy: qcom-mipi-csi2: Add a CSI2 MIPI DPHY driver This commit adds a new MIPI CSI2 PHY driver in DPHY mode for Qualcomm hardware. It ports logic from existing camss drivers to initialize and configure data and clock lanes based on device tree properties. > diff --git a/drivers/phy/qualcomm/phy-qcom-mipi-csi2-3ph-dphy.c b/drivers= /phy/qualcomm/phy-qcom-mipi-csi2-3ph-dphy.c > --- /dev/null > +++ b/drivers/phy/qualcomm/phy-qcom-mipi-csi2-3ph-dphy.c [ ... ] > +static void phy_qcom_mipi_csi2_hw_version_read(struct mipi_csi2phy_devic= e *csi2phy) > +{ > + const struct mipi_csi2phy_device_regs *regs =3D csi2phy_dev_to_regs(csi= 2phy); > + u32 tmp; > + > + writel(CSIPHY_3PH_CMN_CSI_COMMON_CTRL6_SHOW_REV_ID, csi2phy->base + > + CSIPHY_3PH_CMN_CSI_COMMON_CTRLn(regs->common_regs_offset, 6)); > + > + tmp =3D readl_relaxed(csi2phy->base + > + CSIPHY_3PH_CMN_CSI_COMMON_STATUSn(regs->common_regs_offset, 12)); > + csi2phy->hw_version =3D tmp; [Severity: Low] Does this assignment to csi2phy->hw_version need a mask like & 0xFF? If the hardware register returns non-zero garbage values in the upper 24 bits, those bits might remain in hw_version and corrupt the final value when the subsequent shifted bytes are OR'ed in. [ ... ] > +static int phy_qcom_mipi_csi2_lanes_enable(struct mipi_csi2phy_device *c= si2phy, > + struct mipi_csi2phy_stream_cfg *cfg) > +{ > + const struct mipi_csi2phy_device_regs *regs =3D csi2phy_dev_to_regs(csi= 2phy); > + struct mipi_csi2phy_lanes_cfg *lane_cfg =3D &cfg->lane_cfg; > + u8 settle_cnt; > + u8 val; > + int i; [ ... ] > + /* > + * CSI_COMMON_CTRL5 is a physical lane power-up bitmap: > + * - Bits [0,2,4,6] =E2=86=92 D-PHY data lanes(LN0, LN2, LN4, LN6) > + * - Bits [1,3,5] =E2=86=92 C-PHY trio lanes(LN1, LN3, LN5) > + * - Bit [7] =E2=86=92 D-PHY clock lane(LNCK) dedicated clock enable > + */ > + val =3D BIT(lane_cfg->clk.pos); > + for (i =3D 0; i < cfg->num_data_lanes; i++) > + val |=3D BIT(lane_cfg->data[i].pos * 2); [Severity: High] Could this cause an integer truncation? Because the val variable is defined as a u8, shifting by 8 or more will silently truncate to 0. If a lane position is >=3D 4, lane_cfg->data[i].pos= * 2 becomes >=3D 8, which means the driver might fail to power up the lane. > + writel(val, csi2phy->base + > + CSIPHY_3PH_CMN_CSI_COMMON_CTRLn(regs->common_regs_offset, 5)); > + > + /* Lane configuration for polarity @ CSIPHY-base + CTRL9 */ > + for (i =3D 0; i < cfg->num_data_lanes; i++) { > + if (lane_cfg->data[i].pol) { > + u8 pos =3D lane_cfg->data[i].pos; > + > + writel(BIT(2), csi2phy->base + CSIPHY_2PH_LN_CSI_2PHASE_CTRL9n(pos * = 2)); [Severity: High] Can this result in an out-of-bounds memory write? If pos is >=3D 4, pos * 2 is >=3D 8. The CSIPHY_2PH_LN_CSI_2PHASE_CTRL9n ma= cro will compute an offset that overflows the physical lane register space and aliases directly into the common PHY register block, potentially clobbering common registers. [Severity: Medium] Is it safe to use an absolute writel() here instead of a read-modify-write? Writing BIT(2) directly clears any hardware defaults or reserved bits that might be present in the rest of the register. This also creates asymmetric handling since the register is left untouched if polarity is false. > + } > + } > + > + if (lane_cfg->clk.pol) > + writel(BIT(2), csi2phy->base + CSIPHY_2PH_LN_CSI_2PHASE_CTRL9n(lane_cf= g->clk.pos)); [Severity: Medium] Similarly, could this absolute write clobber the clock lane CTRL9 register? > diff --git a/drivers/phy/qualcomm/phy-qcom-mipi-csi2-core.c b/drivers/phy= /qualcomm/phy-qcom-mipi-csi2-core.c > --- /dev/null > +++ b/drivers/phy/qualcomm/phy-qcom-mipi-csi2-core.c [ ... ] > +static int phy_qcom_mipi_csi2_configure(struct phy *phy, > + union phy_configure_opts *opts) > +{ > + struct mipi_csi2phy_device *csi2phy =3D phy_get_drvdata(phy); > + struct phy_configure_opts_mipi_dphy *dphy_cfg =3D &opts->mipi_dphy; > + struct mipi_csi2phy_stream_cfg *stream_cfg =3D &csi2phy->stream_cfg; > + int ret; > + > + ret =3D phy_mipi_dphy_config_validate(dphy_cfg); > + if (ret) > + return ret; > + > + if (dphy_cfg->lanes < 1 || dphy_cfg->lanes > CSI2_MAX_DATA_LANES) > + return -EINVAL; > + > + stream_cfg->link_freq =3D dphy_cfg->hs_clk_rate; > + > + return 0; > +} [Severity: Medium] Should the dynamically requested dphy_cfg->lanes value be saved into the active configuration here? The value is validated but discarded, meaning the driver will always statically power up the maximum number of lanes configured in the device tree instead of respecting dynamic requests from the consumer. Does this violate the MIPI D-PHY API contract for dynamic lane configuration? [ ... ] > +static int phy_qcom_mipi_csi2_parse_routing(struct mipi_csi2phy_device *= csi2phy) > +{ > + struct mipi_csi2phy_stream_cfg *stream_cfg =3D &csi2phy->stream_cfg; [ ... ] > + csi2phy->stream_cfg.lane_cfg.clk.pos =3D CSI2_DEFAULT_CLK_LANE; > + csi2phy->stream_cfg.lane_cfg.clk.pol =3D lane_polarities[0]; > + > + for (i =3D 0; i < csi2phy->stream_cfg.num_data_lanes; i++) { > + if (data_lanes[i] > CSI2_MAX_LANE_NUM) { [Severity: High] Is CSI2_MAX_LANE_NUM (7) too large for this bounds check? As noted in phy_qcom_mipi_csi2_lanes_enable(), allowing lane numbers >=3D 4 results in pos * 2 being >=3D 8 later on, which causes both truncation in t= he u8 bitmask and out-of-bounds writes into the common PHY register region. > + dev_err(dev, "Invalid lane %d\n", data_lanes[i]); > + ret =3D -EINVAL; > + goto out_put; > + } > + csi2phy->stream_cfg.lane_cfg.data[i].pos =3D data_lanes[i]; > + csi2phy->stream_cfg.lane_cfg.data[i].pol =3D lane_polarities[i + 1]; > + } --=20 Sashiko AI review =C2=B7 https://sashiko.dev/#/patchset/20260719-x1e-csi2-p= hy-v11-0-9d0a1ed0632d@linaro.org?part=3D2