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 6EB5AC5DF86 for ; Wed, 19 Aug 2026 12:46:29 +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:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=bxguEc86Gy23pRRcKFvk75Q/HpZXKgjHMFxvpgupA7Y=; b=w+hLizgWsMlIzx hhXed1RS9xd1lCaFb4tKH4zsHP98iloJRyh0OhRR8Okyg5KCXav1pCzxgwn/XYmLWqpxOZyztVxWx ZvjnH1JPiZL/ZlefTHiRgvOqH8GfbQcOUqYWITq34/dR0FDm/BuK15tCS6IS+Db6Uq7a4rMw4QHDV 3FzhljW2OPuE/QLugNuRurSfD+rzts1sN75SPgiEx/ePYKjJdCRFTzqJiQolItaL2GWz/yfQER5z+ UZqQI/iBBomm6PsGZ1E/9Mu+K7+axcCdXjk+oYVbL5lpovYF+2RL4VcREvPNKUhIFqZbyf8QH/KQl oCsGjou04L6QYVnhIWWw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1wwfgX-00000009n1I-3Ylo; Wed, 19 Aug 2026 12:46:25 +0000 Received: from casper.infradead.org ([2001:8b0:10b:1236::1]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1wwfgV-00000009n13-35dU; Wed, 19 Aug 2026 12:46:24 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=Content-Type:Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Sender :Reply-To:Content-ID:Content-Description; bh=tUgb1cSpQmg48mQ4LeBUx+FaaJ2tUQcxNw47rzDBl0M=; b=MpYZkuwX2iqHkyVBi+B8u8Ha/i EU/sdjPPYNtXAfqZa1zaPkvl5AXi1l42g8na6cORDyhWoNQTUsZLOOmbjOtc+k0TehdfmgtjGEFuB vgbacQN+W5QmsyBSJumg/7ZZ78jcbhj8AFNjfKvTjpacQicrzvE9/DtbXWNJsEC1mlJAK6/Tq710H fimifYCe2xkMs+/NBfMFoDDqT+MnxLYdbJLAB47fGzFArA6Vq8pX0Bj+hrCA2sZLDdMvTsmbRDmv7 Ochu//vM+1yQOroLVRmv4gWlmAgW1umP5/aOnyke6hq0CsOxc3Uf6amUkXVm+aoY+w1wI5vBB8OON lgu1f5qg==; Received: from gloria.sntech.de ([185.11.138.130]) by casper.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1wwfgS-0000000Dk7L-2kui; Wed, 19 Aug 2026 12:46:22 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sntech.de; s=gloria202408; h=Content-Type:Content-Transfer-Encoding:MIME-Version: References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Reply-To; bh=tUgb1cSpQmg48mQ4LeBUx+FaaJ2tUQcxNw47rzDBl0M=; b=c60JtS49PMHVt+c/VQa3RMOhX9 JKyBgGVwi/gCexVHLprpOqe2nC4fd5r4AVyZ2bJeQRrsdS9yz5zjC8dqjXG3bDnn9ICBfrmfEuFFe d4DeLFRKOxoRWHlDCtXYC7mPwlAdiaL8gR3CVuPEq6VAdsI7FS4FG33eydwTBpc7RXNPSyBML/nA5 d3hx4AGWwBOd4zClcdEpQBfTCT3x3jWSkvN4vq85KTbmdqAEas/djWDYFA3XQgvEednYBAjaMHFQg s28+3zbULNM4zJXO6ivQr/9rZkfLYJLaNd7o/yfgXdoy8o86c/jq28mwCtvqXyZVSvHS2yefvUyyA mayaMPOg==; From: Heiko =?UTF-8?B?U3TDvGJuZXI=?= To: Nicolas Dufresne , Benjamin Gaignard , Philipp Zabel , Mauro Carvalho Chehab , Ezequiel Garcia , Andrzej Pietrasiewicz , Hans Verkuil , Chen-Yu Tsai , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Lucas Sinn , Sascha Hauer Cc: Mauro Carvalho Chehab , linux-media@vger.kernel.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, Sascha Hauer Subject: Re: [PATCH 5/7] media: verisilicon: Add Rockchip VPU720 JPEG decoder Date: Wed, 19 Aug 2026 14:46:10 +0200 Message-ID: <5715409.BjyWNHgNrj@diego> In-Reply-To: <20260819-rk3588-jpegdec-v1-5-33d74cdf369c@pengutronix.de> References: <20260819-rk3588-jpegdec-v1-0-33d74cdf369c@pengutronix.de> <20260819-rk3588-jpegdec-v1-5-33d74cdf369c@pengutronix.de> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.9.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20260819_134620_853897_A0B2EA79 X-CRM114-Status: GOOD ( 46.36 ) X-BeenThere: linux-rockchip@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Upstream kernel work for Rockchip platforms List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "Linux-rockchip" Errors-To: linux-rockchip-bounces+linux-rockchip=archiver.kernel.org@lists.infradead.org SGksCgpBbSBNaXR0d29jaCwgMTkuIEF1Z3VzdCAyMDI2LCAxMjozNzozNCBNaXR0ZWxldXJvcMOk aXNjaGUgU29tbWVyemVpdCBzY2hyaWViIFNhc2NoYSBIYXVlcjoKPiBGcm9tOiBMdWNhcyBTaW5u IDxsdWNhcy5zaW5uQHdvbGZ2aXNpb24ubmV0Pgo+IAo+IEFkZCBzdXBwb3J0IGZvciB0aGUgUm9j a2NoaXAgVlBVNzIwIEpQRUcgaGFyZHdhcmUgZGVjb2RlciBvbiBSSzM1ODgKPiB0byB0aGUgdmVy aXNpbGljb24gaGFudHJvIGRyaXZlci4KPiAKPiBIYXJkd2FyZSByZXF1aXJlbWVudHM6Cj4gLSBD UFUtc2lkZSBKUEVHIGhlYWRlciBwYXJzaW5nIHZpYSB2NGwyX2pwZWdfcGFyc2VfaGVhZGVyKCkK PiAtIERNQSBzaWRlIGJ1ZmZlciB3aXRoIFEtdGFibGVzICh6aWd6YWctPnJhc3RlciksIEh1ZmZt YW4gbWluY29kZQo+ICAgYW5kIHZhbHVlIHRhYmxlcwo+IC0gVlBVNzIwLXNwZWNpZmljIHR3by1w aGFzZSBJUlEgY2xlYXIgc2VxdWVuY2UKPiAtIDE2LWJ5dGUgc3RyZWFtIGFsaWdubWVudCB3aXRo IHN0YXJ0LWJ5dGUgb2Zmc2V0Cj4gLSBNQ1UtYWxpZ25lZCBQSUNfSCAoZS5nLiAxMDgwcCBZVVY0 MjAgbmVlZHMgMTA4OCwgbm90IDEwODApCj4gLSBGSUxMX0RPV05fRSBvbiBldmVyeSBOVjEyIGNv bnZlcnNpb24sIHRoZSBvdXRwdXQgY2hyb21hIGlzIHZlcnRpY2FsbHkKPiAgIHN1YnNhbXBsZWQg c28gdGhlIGhhcmR3YXJlIGNvbXBsZXRlcyB0aGUgYm90dG9tIG9mIHRoZSBwaWN0dXJlCj4gLSBE UkkgKHJlc3RhcnQgaW50ZXJ2YWwpIHN1cHBvcnQgd2hlbiBwcmVzZW50Cj4gCj4gSW1wbGVtZW50 YXRpb24gYWRkczoKPiAtIEhBTlRST19KUEVHX0RFQ09ERVIgY29kZWMgYW5kIEhBTlRST19NT0RF X0pQRUdfREVDIG1vZGUKPiAtIHN0cnVjdCBoYW50cm9fanBlZ19kZWNfaHdfY3R4IGhvbGRpbmcg dGhlIFEvSCB0YWJsZSBzaWRlIGJ1ZmZlciwKPiAgIHdoaWNoIGlzIHJlYnVpbHQgZnJvbSB0aGUg ZnJhbWUgaGVhZGVyIG9uIGV2ZXJ5IHJ1bgo+IC0gc3JjX25lZWRzX2ttYXAgYW5kIGRzdF9uZWVk c19rbWFwIGZsYWdzIGZvciB2YjJfcGxhbmVfdmFkZHIoKSB3aXRob3V0Cj4gICBETUFfQVRUUl9O T19LRVJORUxfTUFQUElORwo+IC0gYSBuZXV0cmFsIGNocm9tYSBwbGFuZSB3cml0dGVuIGJ5IHRo ZSBkcml2ZXIgZm9yIGEgZ3JheXNjYWxlIGZyYW1lLgo+ICAgVGhlIG91dHB1dCBmb3JtYXQgY29u dmVydGVyIGhhcyBubyBZVVY0MDAgcGF0aCwgc28gdGhlIGhhcmR3YXJlIHdyaXRlcwo+ICAgdGhl IGx1bWEgcGxhbmUgYW5kIGxlYXZlcyB0aGUgY2hyb21hIGFsb25lLCB3aGljaCBjb21lcyBvdXQg Z3JlZW4KPiAtIHJvY2tjaGlwX3ZwdTcyMF9qcGVnX2RlY19ydW4oKSBmb3IgcGFyc2UvZmlsbC9w cm9ncmFtL2tpY2sKPiAtIHJlamVjdGlvbiBvZiBhIGZyYW1lIHRoYXQgY2FycmllcyBubyBFT0kg bWFya2VyLCB3aGljaCBpcyB3aGF0IGEKPiAgIHNvdXJjZSBidWZmZXIgdG9vIHNtYWxsIGZvciB0 aGUgZnJhbWUgbG9va3MgbGlrZQo+IC0gcmVqZWN0aW9uIG9mIGEgZnJhbWUgbGFyZ2VyIHRoYW4g dGhlIG5lZ290aWF0ZWQgY2FwdHVyZSBmb3JtYXQsCj4gICB3aG9zZSBkaW1lbnNpb25zIHdvdWxk IG90aGVyd2lzZSBiZSBwcm9ncmFtbWVkIGFnYWluc3Qgc3RyaWRlcwo+ICAgdGFrZW4gZnJvbSB0 aGF0IGZvcm1hdAo+IC0gSVJRIGhhbmRsZXIgd2l0aCBkZXRhaWxlZCBlcnJvciBkaWFnbm9zdGlj cyAoUkVHMzIvMzM6Cj4gICBNQ1UgcG9zaXRpb24sIGVycm9yIGZsYWdzKSBhbmQgc29mdC1yZXNl dAo+IC0gQVhJIHBlcmYgY291bnRlciBzZXR1cCAoUkVHMzApCj4gCj4gRXhwb3NlcyBvbmUgVjRM MiBNMk0gZGV2aWNlOiBKUEVHIGlucHV0IC0+IE5WMTIgb3V0cHV0Lgo+IAo+IEFzc2lzdGVkLWJ5 OiBDbGF1ZGU6Y2xhdWRlLW9wdXMtNQo+IFNpZ25lZC1vZmYtYnk6IEx1Y2FzIFNpbm4gPGx1Y2Fz LnNpbm5Ad29sZnZpc2lvbi5uZXQ+Cj4gU2lnbmVkLW9mZi1ieTogU2FzY2hhIEhhdWVyIDxzLmhh dWVyQHBlbmd1dHJvbml4LmRlPgo+IC0tLQo+ICBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL3Zlcmlz aWxpY29uL01ha2VmaWxlICAgICAgICB8ICAgMSArCj4gIGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0v dmVyaXNpbGljb24vaGFudHJvLmggICAgICAgIHwgIDE3ICsKPiAgZHJpdmVycy9tZWRpYS9wbGF0 Zm9ybS92ZXJpc2lsaWNvbi9oYW50cm9fZHJ2LmMgICAgfCAgMTcgKy0KPiAgZHJpdmVycy9tZWRp YS9wbGF0Zm9ybS92ZXJpc2lsaWNvbi9oYW50cm9faHcuaCAgICAgfCAgMTcgKwo+ICBkcml2ZXJz L21lZGlhL3BsYXRmb3JtL3ZlcmlzaWxpY29uL2hhbnRyb192NGwyLmMgICB8ICAzOCArLQo+ICAu Li4vdmVyaXNpbGljb24vcm9ja2NoaXBfdnB1NzIwX2h3X2pwZWdfZGVjLmMgICAgICB8IDk2MiAr KysrKysrKysrKysrKysrKysrKysKPiAgLi4uL3BsYXRmb3JtL3ZlcmlzaWxpY29uL3JvY2tjaGlw X3ZwdTcyMF9yZWdzLmggICAgfCAyNjEgKysrKysrCj4gIC4uLi9tZWRpYS9wbGF0Zm9ybS92ZXJp c2lsaWNvbi9yb2NrY2hpcF92cHVfaHcuYyAgIHwgIDgwICsrCj4gIDggZmlsZXMgY2hhbmdlZCwg MTM4NSBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQo+IAoKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9tZWRpYS9wbGF0Zm9ybS92ZXJpc2lsaWNvbi9oYW50cm8uaCBiL2RyaXZlcnMvbWVkaWEv cGxhdGZvcm0vdmVyaXNpbGljb24vaGFudHJvLmgKPiBpbmRleCAwMzUzZGUxNTRhMWVjLi4wMGUw ZjU5ODFjY2EzIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vdmVyaXNpbGlj b24vaGFudHJvLmgKPiArKysgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3ZlcmlzaWxpY29uL2hh bnRyby5oCj4gQEAgLTM5LDYgKzM5LDcgQEAgc3RydWN0IGhhbnRyb19wb3N0cHJvY19vcHM7Cj4g ICNkZWZpbmUgSEFOVFJPX0hFVkNfREVDT0RFUglCSVQoMTkpCj4gICNkZWZpbmUgSEFOVFJPX1ZQ OV9ERUNPREVSCUJJVCgyMCkKPiAgI2RlZmluZSBIQU5UUk9fQVYxX0RFQ09ERVIJQklUKDIxKQo+ ICsjZGVmaW5lIEhBTlRST19KUEVHX0RFQ09ERVIJQklUKDIyKQo+ICAjZGVmaW5lIEhBTlRST19E RUNPREVSUwkJMHhmZmZmMDAwMAo+ICAKPiAgLyoqCj4gQEAgLTEwMiw2ICsxMDMsMTkgQEAgc3Ry dWN0IGhhbnRyb192YXJpYW50IHsKPiAgCXVuc2lnbmVkIGludCBkb3VibGVfYnVmZmVyIDogMTsK PiAgCXVuc2lnbmVkIGludCBsZWdhY3lfcmVncyA6IDE7Cj4gIAl1bnNpZ25lZCBpbnQgbGF0ZV9w b3N0cHJvYyA6IDE7Cj4gKwkvKgo+ICsJICogc3JjX25lZWRzX2ttYXA6IHdoZW4gc2V0LCB0aGUg c291cmNlIHF1ZXVlIHdpbGwgYmUgYWxsb2NhdGVkIHdpdGgKPiArCSAqIGEga2VybmVsIHZpcnR1 YWwgYWRkcmVzcyBzbyB0aGUgZHJpdmVyIGNhbiBDUFUtcGFyc2UgdGhlIGJpdHN0cmVhbQo+ICsJ ICogKGUuZy4gZm9yIEpQRUcgaGVhZGVyIHBhcnNpbmcpLgo+ICsJICovCgp0aGVyZSBpcyBhbHJl YWR5IGEgc3RydWN0IGRvY3VtZW50YXRpb24gcHJlc2VudCwgc28gdGhlcmUgaXMKLSBubyBuZWVk IHRvIHB1dCB0aGF0IGh1Z2UgY29tbWVudCBoZXJlLCB0aGlzIGNhbiBiZSBzaG9ydGVuZWQKLSB0 aGUgYWN0dWFsIGZpZWxkLWRvY3VtZW50YXRpb24gaXMgbWlzc2luZwoKcHJvYmFibHkgdHJ1ZSBm b3IgbW9yZSBwbGFjZXMKCgo+ICsJdW5zaWduZWQgaW50IHNyY19uZWVkc19rbWFwIDogMTsKPiAr CS8qCj4gKwkgKiBkc3RfbmVlZHNfa21hcDogd2hlbiBzZXQsIHRoZSBjYXB0dXJlIHF1ZXVlIHdp bGwgYmUgYWxsb2NhdGVkIHdpdGgKPiArCSAqIGEga2VybmVsIHZpcnR1YWwgYWRkcmVzcyBzbyB0 aGUgZHJpdmVyIGNhbiB3cml0ZSB0aGUgcGFydHMgb2YgYQo+ICsJICogZnJhbWUgdGhlIGhhcmR3 YXJlIGRvZXMgbm90IHByb2R1Y2UgKGUuZy4gdGhlIGNocm9tYSBwbGFuZSBvZiBhCj4gKwkgKiBn cmF5c2NhbGUgSlBFRykuCj4gKwkgKi8KPiArCXVuc2lnbmVkIGludCBkc3RfbmVlZHNfa21hcCA6 IDE7Cj4gIAljb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkICpzaGFyZWRfZGV2aWNlczsKPiAgfTsK PiAgCj4gQEAgLTExNSw2ICsxMjksNyBAQCBzdHJ1Y3QgaGFudHJvX3ZhcmlhbnQgewo+ICAgKiBA SEFOVFJPX01PREVfSEVWQ19ERUM6IEhFVkMgZGVjb2Rlci4KPiAgICogQEhBTlRST19NT0RFX1ZQ OV9ERUM6IFZQOSBkZWNvZGVyLgo+ICAgKiBASEFOVFJPX01PREVfQVYxX0RFQzogQVYxIGRlY29k ZXIKPiArICogQEhBTlRST19NT0RFX0pQRUdfREVDOiBWUFU3MjAgSlBFRyBkZWNvZGVyCgpoZXJl IGl0IHdvcmtlZCBjb3JyZWN0bHksIGl0IHNlZW1zLgoKPiAgICovCj4gIGVudW0gaGFudHJvX2Nv ZGVjX21vZGUgewo+ICAJSEFOVFJPX01PREVfTk9ORSA9IC0xLAo+IEBAIC0xMjUsNiArMTQwLDcg QEAgZW51bSBoYW50cm9fY29kZWNfbW9kZSB7Cj4gIAlIQU5UUk9fTU9ERV9IRVZDX0RFQywKPiAg CUhBTlRST19NT0RFX1ZQOV9ERUMsCj4gIAlIQU5UUk9fTU9ERV9BVjFfREVDLAo+ICsJSEFOVFJP X01PREVfSlBFR19ERUMsCj4gIH07Cj4gIAo+ICAvKgo+IEBAIC0yNzYsNiArMjkyLDcgQEAgc3Ry dWN0IGhhbnRyb19jdHggewo+ICAJCXN0cnVjdCBoYW50cm9faGV2Y19kZWNfaHdfY3R4IGhldmNf ZGVjOwo+ICAJCXN0cnVjdCBoYW50cm9fdnA5X2RlY19od19jdHggdnA5X2RlYzsKPiAgCQlzdHJ1 Y3QgaGFudHJvX2F2MV9kZWNfaHdfY3R4IGF2MV9kZWM7Cj4gKwkJc3RydWN0IGhhbnRyb19qcGVn X2RlY19od19jdHgganBlZ19kZWM7CgpoZXJlIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgbmV3 IGZpZWxkIGlzIG1pc3NpbmcgY29tcGxldGVseQoKPiAgCX07Cj4gIH07Cj4gIAoKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS92ZXJpc2lsaWNvbi9yb2NrY2hpcF92cHU3MjBf aHdfanBlZ19kZWMuYyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vdmVyaXNpbGljb24vcm9ja2No aXBfdnB1NzIwX2h3X2pwZWdfZGVjLmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAw MDAwMDAwMDAwMDAuLjgxZmQ3OTkxMWQ2OTQKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVy cy9tZWRpYS9wbGF0Zm9ybS92ZXJpc2lsaWNvbi9yb2NrY2hpcF92cHU3MjBfaHdfanBlZ19kZWMu Ywo+IEBAIC0wLDAgKzEsOTYyIEBACgo+ICsJLyoKPiArCSAqIFJFRzI6IHN5c3RlbSBjb25maWcg 4oCTIGFsd2F5cyBvdXRwdXQgTlYxMi4KPiArCSAqCj4gKwkgKiBGSUxMX0RPV05fRSBiZWxvbmdz IHRvIHRoZSBOVjEyIGNvbnZlcnNpb24gcmF0aGVyIHRoYW4gdG8gYQo+ICsJICogcGFydGljdWxh ciBwYWlyIG9mIGhlaWdodHM6IHRoZSBvdXRwdXQgY2hyb21hIGlzIHZlcnRpY2FsbHkKPiArCSAq IHN1YnNhbXBsZWQsIHNvIHRoZSBoYXJkd2FyZSBoYXMgdG8gY29tcGxldGUgdGhlIGJvdHRvbSBv ZiB0aGUKPiArCSAqIHBpY3R1cmUuICBUd28gY2FzZXMgbmVlZCBpdDoKPiArCSAqCj4gKwkgKiAg YSkganBlZ19oZWlnaHQgaXMgbm90IG9uIGFuIE1DVSBib3VuZGFyeSAoZS5nLiBZVVY0MjAgMTA4 MHA6Cj4gKwkgKiAgICAganBlZ19oZWlnaHQ9MTA4MCwganBlZ19oZWlnaHRfYWxpZ25lZD0xMDg4 LCBidWZfaGVpZ2h0PTEwODgpLgo+ICsJICogICAgIFRoZSBWUFU3MjAgbmVlZHMgRklMTF9ET1dO X0UgdG8gY29tcGxldGUgdGhlIGxhc3QgTUNVIHJvdydzCj4gKwkgKiAgICAgY2hyb21hIHJlY29u c3RydWN0aW9uLiAgV2l0aG91dCBpdCB0aGUgYm90dG9tIHJvd3MgYXJlIGNvcnJ1cHQKPiArCSAq ICAgICBldmVuIHRob3VnaCBQSUNfSCBpcyBhbHJlYWR5IHNldCB0byB0aGUgTUNVLWFsaWduZWQg aGVpZ2h0Lgo+ICsJICoKPiArCSAqICBiKSBNQ1UtYWxpZ25lZCBoZWlnaHQgPCBidWZfaGVpZ2h0 IChlLmcuIFlVVjQyMiAxMDgwcDogbWN1X2g9OCwKPiArCSAqICAgICBqcGVnX2hlaWdodF9hbGln bmVkPTEwODAsIGJ1Zl9oZWlnaHQ9MTA4OCkuICBUaGUgaGFyZHdhcmUgZmlsbHMKPiArCSAqICAg ICByb3dzIDEwODAuLjEwODcgYnkgcmVwZWF0aW5nIHRoZSBsYXN0IHZhbGlkIHJvdy4KPiArCSAq Cj4gKwkgKiBBIGhlaWdodCB0aGF0IGlzIGEgbXVsdGlwbGUgb2YgMTYgbGVhdmVzIG5vdGhpbmcg dG8gZmlsbCwgYnV0IHRoZQo+ICsJICogYml0IGlzIHNldCB0aGVyZSBhcyB3ZWxsOiB0aGUgcmVm ZXJlbmNlIGRyaXZlciBlbmFibGVzIGl0IGZvciBldmVyeQo+ICsJICogTlYxMiBjb252ZXJzaW9u LCB3aGF0ZXZlciB0aGUgcGljdHVyZSBhbmQgYnVmZmVyIGhlaWdodHMgYXJlLgo+ICsJICoKPiAr CSAqIEZJTExfUklHSFRfRSBkb2VzIHRoZSBzYW1lIGZvciB0aGUgcmlnaHQgaGFuZCBlZGdlLCBi dXQgdGhlcmUgaXQKPiArCSAqIGRlcGVuZHMgb24gdGhlIG1vZGUuICBUaGUgZGVjb2RlciB3cml0 ZXMgd2hvbGUgTUNVcywgc28gdGhlIGxhc3QKPiArCSAqIE1DVSBjb2x1bW4gZW5kcyBhdCBBTElH TihqcGVnX3dpZHRoLCBtY3Vfd2lkdGgpIHdoaWxlIHRoZSBidWZmZXIgaXMKPiArCSAqIDE2IHBp eGVsIGFsaWduZWQuICBPbmx5IHRoZSA4IHBpeGVsIE1DVSB3aWR0aHMgY2FuIHN0b3Agc2hvcnQg b2YKPiArCSAqIHRoYXQgYW5kIG5lZWQgdGhlIGNvbHVtbnMgaW4gYmV0d2VlbiBmaWxsZWQ7IGEg MTYgb3IgMzIgcGl4ZWwgTUNVCj4gKwkgKiBhbHJlYWR5IHJlYWNoZXMgYXQgbGVhc3QgYXMgZmFy LiAgVGhlIHJlZmVyZW5jZSBkcml2ZXIgYXJyaXZlcyBhdAo+ICsJICogdGhlIHNhbWUgc2V0IHRo cm91Z2ggYSBwZXIgbW9kZSB0ZXN0IG9uICh3aWR0aCAmIDB4ZikgPD0gOC4KPiArCSAqLwo+ICsJ cmVnID0gRklFTERfUFJFUChWRFBVNzIwX1lVVl9PVVRfRk1ULCBWRFBVNzIwX1lVVl9PVVRfRk1U X05WMTIpIHwKPiArCSAgICAgIFZEUFU3MjBfRklMTF9ET1dOX0U7Cj4gKwlpZiAoQUxJR04oanBl Z193aWR0aCwgbWN1X3dpZHRoKSA8IEFMSUdOKGpwZWdfd2lkdGgsIDE2KSkKPiArCQlyZWcgfD0g VkRQVTcyMF9GSUxMX1JJR0hUX0U7Cj4gKwl2ZHB1X3dyaXRlX3JlbGF4ZWQodnB1LCByZWcsIFZE UFU3MjBfUkVHX1NZUyk7Cj4gKwo+ICsJLyoKPiArCSAqIC0tLSBSRUczOiBwaWN0dXJlIGRpbWVu c2lvbnMgLS0tCgpjYW4gd2UgaGF2ZSBvbmUgY29uc2lzdGVudCBjb21tZW50IHN0eWxlIHBsZWFz ZT8KCj4gKwkgKgo+ICsJICogUElDX1cgc3RheXMgYXQgdGhlIHJhdyBoZWFkZXIgd2lkdGggd2hp bGUgUElDX0ggaXMgcm91bmRlZCB1cCB0bwo+ICsJICogdGhlIE1DVSBib3VuZGFyeS4gIFJvdW5k aW5nIHRoZSB3aWR0aCB1cCB0aGUgc2FtZSB3YXkgaXMgbm90IHNhZmU6Cj4gKwkgKiBtY3Vfd2lk dGggcmVhY2hlcyAzMiBmb3IgWVVWNDExLCBzbyBBTElHTihqcGVnX3dpZHRoLCBtY3Vfd2lkdGgp Cj4gKwkgKiBjYW4gbGFuZCBiZXlvbmQgdGhlIDE2IHBpeGVsIGFsaWduZWQgYnVmZmVyIHdpZHRo IGFuZCBwb2ludCB0aGUKPiArCSAqIGRlY29kZXIgcGFzdCB0aGUgZW5kIG9mIGEgcm93LiAgRklM TF9SSUdIVF9FIGFib3ZlIGNvdmVycyB0aGUgY2FzZXMKPiArCSAqIHdoZXJlIHRoZSBNQ1UgY29s dW1uIHN0b3BzIHNob3J0IGluc3RlYWQuICBUaGUgcmVmZXJlbmNlIGRyaXZlcgo+ICsJICogcHJv Z3JhbXMgdGhlIHJhdyB3aWR0aCBoZXJlIHRvby4KPiArCSAqLwo+ICsJdmRwdV93cml0ZV9yZWxh eGVkKHZwdSwKPiArCQkJICAgRklFTERfUFJFUChWRFBVNzIwX1BJQ19XX00xLCBqcGVnX3dpZHRo IC0gMSkgfAo+ICsJCQkgICBGSUVMRF9QUkVQKFZEUFU3MjBfUElDX0hfTTEsIGpwZWdfaGVpZ2h0 X2FsaWduZWQgLSAxKSwKPiArCQkJICAgVkRQVTcyMF9SRUdfUElDX1NJWkUpOwo+ICsKClsuLi5d Cgo+ICsvKgo+ICsgKiB2ZHB1NzIwX2ZpbGxfY2hyb21hIC0gd3JpdGUgbmV1dHJhbCBjaHJvbWEg Zm9yIGEgZ3JheXNjYWxlIGZyYW1lLgo+ICsgKgo+ICsgKiBUaGUgb3V0cHV0IGZvcm1hdCBjb252 ZXJ0ZXIgaGFzIG5vIFlVVjQwMCBwYXRoOiBWRFBVNzIwX1lVVl9PVVRfRk1UX05WMTIKPiArICog b25seSBjb3ZlcnMgdGhlIHN1YnNhbXBsZWQgY29sb3VyIG1vZGVzLCBhbmQgZm9yIGEgc2luZ2xl IGNvbXBvbmVudCBmcmFtZQo+ICsgKiB0aGUgaGFyZHdhcmUgd3JpdGVzIHRoZSBsdW1hIHBsYW5l IGFuZCBsZWF2ZXMgdGhlIGNocm9tYSBwbGFuZSB1bnRvdWNoZWQuCj4gKyAqCj4gKyAqIEZpbGwg dGhlIHBsYW5lIGhlcmUsIGJlZm9yZSB0aGUgaGFyZHdhcmUgaXMgc3RhcnRlZDogb25jZSB0aGUg ZGVjb2RlIGlzCj4gKyAqIHJ1bm5pbmcgdGhlIGludGVycnVwdCBjYW4gY29tcGxldGUgdGhlIGpv YiBhbmQgaGFuZCB0aGUgYnVmZmVyIHRvCj4gKyAqIHVzZXJzcGFjZSBhdCBhbnkgdGltZS4KPiAr ICovCj4gK3N0YXRpYyBpbnQgdmRwdTcyMF9maWxsX2Nocm9tYShzdHJ1Y3QgaGFudHJvX2N0eCAq Y3R4LAo+ICsJCQkgICAgICAgc3RydWN0IHZiMl92NGwyX2J1ZmZlciAqZHN0X2J1ZikKClsuLi5d Cgo+ICsvKioKPiArICogcm9ja2NoaXBfdnB1NzIwX2pwZWdfZGVjX2luaXQoKSAtIGFsbG9jYXRl IHRoZSBwZXItY29udGV4dCBETUEgc2lkZSBidWZmZXIKPiArICogQGN0eDoJY29udGV4dCB0byBh bGxvY2F0ZSB0aGUgUS9IdWZmbWFuIHRhYmxlIGJ1ZmZlciBmb3IKPiArICoKPiArICogUmV0dXJu OiAwIG9uIHN1Y2Nlc3MsIC1FTk9NRU0gaWYgdGhlIGJ1ZmZlciBjb3VsZCBub3QgYmUgYWxsb2Nh dGVkLgo+ICsgKi8KCmFnYWluIGNvbW1lbnQgc3R5bGUgKCAiLyoqIiwgYWxzbyB0aGUgY3R4IGxp bmUgY291bGQgdXNlIGEgYmxhbmsgbGluZSBhYm92ZSBpdCkKU2VlbWluZ2x5IG9uZSBmdW5jdGlv biBiZWZvcmUgdGhpcyB0aGUgTExNIGRpZCBnZXQgaXQgcmlnaHQ/CgpTYW1lIGFwcGxpZXMgZm9y IHJlcGVhdHMgYmVsb3cuCgo+ICtpbnQgcm9ja2NoaXBfdnB1NzIwX2pwZWdfZGVjX2luaXQoc3Ry dWN0IGhhbnRyb19jdHggKmN0eCkKPiArewo+ICsJc3RydWN0IGhhbnRyb19kZXYgKnZwdSA9IGN0 eC0+ZGV2Owo+ICsJc3RydWN0IGhhbnRyb19qcGVnX2RlY19od19jdHggKmpwZWdfY3R4ID0ganBl Z19kZWNfY3R4KGN0eCk7Cj4gKwo+ICsJanBlZ19jdHgtPnRhYmxlX2Jhc2Uuc2l6ZSA9IFZEUFU3 MjBfVEFCTEVfQlVGX1NJWkU7Cj4gKwlqcGVnX2N0eC0+dGFibGVfYmFzZS5jcHUgID0KPiArCQlk bWFfYWxsb2Nfbm9uY29oZXJlbnQodnB1LT5kZXYsCj4gKwkJCQkgICAgICBqcGVnX2N0eC0+dGFi bGVfYmFzZS5zaXplLAo+ICsJCQkJICAgICAgJmpwZWdfY3R4LT50YWJsZV9iYXNlLmRtYSwKPiAr CQkJCSAgICAgIERNQV9UT19ERVZJQ0UsIEdGUF9LRVJORUwpOwo+ICsJaWYgKCFqcGVnX2N0eC0+ dGFibGVfYmFzZS5jcHUpCj4gKwkJcmV0dXJuIC1FTk9NRU07Cj4gKwo+ICsJcmV0dXJuIDA7Cj4g K30KPiArCgpbLi4uXQoKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS92ZXJp c2lsaWNvbi9yb2NrY2hpcF92cHU3MjBfcmVncy5oIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS92 ZXJpc2lsaWNvbi9yb2NrY2hpcF92cHU3MjBfcmVncy5oCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQK PiBpbmRleCAwMDAwMDAwMDAwMDAwLi5jYWU5MDUyMTI2YmUxCj4gLS0tIC9kZXYvbnVsbAo+ICsr KyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vdmVyaXNpbGljb24vcm9ja2NoaXBfdnB1NzIwX3Jl Z3MuaAo+IEBAIC0wLDAgKzEsMjYxIEBACj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBH UEwtMi4wICovCj4gKy8qCj4gKyAqIFJvY2tjaGlwIFZQVTcyMCBKUEVHIGRlY29kZXIgcmVnaXN0 ZXIgZGVmaW5pdGlvbnMKPiArICoKPiArICogRGVyaXZlZCBmcm9tIGRvd25zdHJlYW0gUm9ja2No aXAgTVBQIEhBTCAoaGFsX2pwZWdkX3Jrdl9yZWcuaCkuCj4gKyAqIENvcHlyaWdodCAoQykgMjAy MCBSb2NrY2hpcCBFbGVjdHJvbmljcyBDby4sIEx0ZC4KPiArICogQ29weXJpZ2h0IChDKSAyMDI2 IFdvbGZWaXNpb24gR21iSAo+ICsgKi8KPiArI2lmbmRlZiBST0NLQ0hJUF9WUFU3MjBfUkVHU19I Xwo+ICsjZGVmaW5lIFJPQ0tDSElQX1ZQVTcyMF9SRUdTX0hfCj4gKwo+ICsjaW5jbHVkZSA8bGlu dXgvYml0ZmllbGQuaD4KPiArI2luY2x1ZGUgPGxpbnV4L2JpdHMuaD4KPiArI2luY2x1ZGUgPGxp bnV4L2FsaWduLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgo+ICsKPiArLyogLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tICovCj4gKy8qIFJlZ2lzdGVyIGJ5dGUgb2Zmc2V0cyBmcm9tIGRlY19iYXNlICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKi8KPiArLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCgpsZXNzIGRhc2hl ZCBsaW5lcyBtYXliZT8gOy0pCgo+ICsKPiArLyogUkVHMDogSVAgdmVyc2lvbiAvIHByb2R1Y3Qg SUQgKi8KCm5vIG5lZWQgdGhlIHNhbWUgaW5mb3JtYXRpb24gd2hlbiB0aGUgcmVnaXN0ZXIgbmFt aW5nIGlzIG9idmlvdXMuClNhbWUgZm9yIHRoZSBiZWxvdyByZWdpc3RlcnMKCj4gKyNkZWZpbmUg VkRQVTcyMF9SRUdfVkVSU0lPTgkJMHgwMDAKPiArI2RlZmluZSBWRFBVNzIwX1BST0RfTlVNCQlH RU5NQVNLKDMxLCAxNikKPiArI2RlZmluZSBWRFBVNzIwX0JJVF9ERVBUSAkJQklUKDgpCj4gKwo+ ICsvKiBSRUcxOiBJbnRlcnJ1cHQgY29udHJvbCBhbmQgc3RhdHVzICovCj4gKyNkZWZpbmUgVkRQ VTcyMF9SRUdfSU5UCQkJMHgwMDQKClsuLi5dCgo+ICsvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KPiArLyogU2lk ZS1idWZmZXIgbGF5b3V0IGZvciBRLXRhYmxlcyBhbmQgSHVmZm1hbiB0YWJsZXMgICAgICAgICAg ICAgICAgICAqLwo+ICsvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCj4gKy8qIFRoZSBWUFU3MjAgSlBFRyBkZWNv ZGVyIHJlYWRzIHF1YW50aXNhdGlvbiB0YWJsZXMgYW5kIEh1ZmZtYW4gICAgICAgKi8KPiArLyog dGFibGVzIGZyb20gYSBjb250aWd1b3VzIERNQSBidWZmZXIgd2l0aCB0aGUgZm9sbG93aW5nIGxh eW91dDogICAgICAqLwo+ICsvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCj4gKy8qICAgWzAsICAgICAgICAgUVRC TF9TSVpFKTogICAgUS10YWJsZSBkYXRhICh1MTYsIHJhc3Rlci1zY2FuIG9yZGVyKSAqLwo+ICsv KiAgIFtITUlOQ09ERV9PRkYsICtITUlOX1NaKTogIEh1ZmZtYW4gbWluY29kZSB0YWJsZSAgICAg ICAgICAgICAgICAgKi8KPiArLyogICBbSFZBTFVFX09GRiwgICtIVkFMX1NaKTogICBIdWZmbWFu IHZhbHVlIHRhYmxlICAgICAgICAgICAgICAgICAgICovCj4gKy8qIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwo+ICsv KiBUaGUgUS10YWJsZXMgYXJlIHBlciBjb21wb25lbnQsIG9uZSBlbnRyeSBlYWNoICovCgphZ2Fp biwgdGhlIGNvbW1lbnQgc3R5bGUgaXMgdmVyeSBzdHJhbmdlCgpbLi4uXQoKPiBAQCAtODE2LDMg KzgzMSw2OCBAQCBjb25zdCBzdHJ1Y3QgaGFudHJvX3ZhcmlhbnQgcmszNTg4X3ZwdTk4MV92YXJp YW50ID0gewo+ICAJLmNsa19uYW1lcyA9IHJrMzU4OF92cHU5ODFfdnB1X2Nsa19uYW1lcywKPiAg CS5udW1fY2xvY2tzID0gQVJSQVlfU0laRShyazM1ODhfdnB1OTgxX3ZwdV9jbGtfbmFtZXMpCj4g IH07Cj4gKwo+ICsvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KPiArLyogUkszNTg4IFZQVTcyMCBKUEVHIGRlY29k ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwo+ICsvKiAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0gKi8KPiArCj4gKy8qCj4gKyAqIENhcHR1cmUgZm9ybWF0OiBOVjEyLiAgVGhlIEpQRUcg Y29kZWMgZW50cnkgaXMgbGlzdGVkIGxhc3QuCj4gKyAqLwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0 IGhhbnRyb19mbXQgcmszNTg4X3ZwdTcyMF9kZWNfZm10c1tdID0gewo+ICsJewo+ICsJCS5mb3Vy Y2MgICAgPSBWNEwyX1BJWF9GTVRfTlYxMiwKPiArCQkuY29kZWNfbW9kZSA9IEhBTlRST19NT0RF X05PTkUsCj4gKwkJLmZybXNpemUgICA9IHsKPiArCQkJLm1pbl93aWR0aCAgPSBGTVRfTUlOX1dJ RFRILAo+ICsJCQkubWF4X3dpZHRoICA9IFZQVTcyMF9KUEVHRF9NQVhfU0laRSwKPiArCQkJLnN0 ZXBfd2lkdGggPSBNQl9ESU0sCj4gKwkJCS5taW5faGVpZ2h0ID0gRk1UX01JTl9IRUlHSFQsCj4g KwkJCS5tYXhfaGVpZ2h0ID0gVlBVNzIwX0pQRUdEX01BWF9TSVpFLAo+ICsJCQkuc3RlcF9oZWln aHQgPSBNQl9ESU0sCj4gKwkJfSwKPiArCX0sCj4gKwl7Cj4gKwkJLmZvdXJjYyAgICA9IFY0TDJf UElYX0ZNVF9KUEVHLAo+ICsJCS5jb2RlY19tb2RlID0gSEFOVFJPX01PREVfSlBFR19ERUMsCj4g KwkJLm1heF9kZXB0aCAgPSAyLAo+ICsJCS5mcm1zaXplICAgPSB7Cj4gKwkJCS5taW5fd2lkdGgg ID0gRk1UX01JTl9XSURUSCwKPiArCQkJLm1heF93aWR0aCAgPSBWUFU3MjBfSlBFR0RfTUFYX1NJ WkUsCj4gKwkJCS5zdGVwX3dpZHRoID0gVlBVNzIwX0pQRUdEX1NURVAsCj4gKwkJCS5taW5faGVp Z2h0ID0gRk1UX01JTl9IRUlHSFQsCj4gKwkJCS5tYXhfaGVpZ2h0ID0gVlBVNzIwX0pQRUdEX01B WF9TSVpFLAo+ICsJCQkuc3RlcF9oZWlnaHQgPSBWUFU3MjBfSlBFR0RfU1RFUCwKPiArCQl9LAo+ ICsJfSwKPiArfTsKPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaGFudHJvX2NvZGVjX29wcyBy azM1ODhfdnB1NzIwX2NvZGVjX29wc1tdID0gewo+ICsJW0hBTlRST19NT0RFX0pQRUdfREVDXSA9 IHsKPiArCQkucnVuICAgPSByb2NrY2hpcF92cHU3MjBfanBlZ19kZWNfcnVuLAo+ICsJCS5yZXNl dCA9IHJvY2tjaGlwX3ZwdTcyMF9yZXNldCwKPiArCQkuaW5pdCAgPSByb2NrY2hpcF92cHU3MjBf anBlZ19kZWNfaW5pdCwKPiArCQkuZXhpdCAgPSByb2NrY2hpcF92cHU3MjBfanBlZ19kZWNfZXhp dCwKPiArCX0sCj4gK307Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGhhbnRyb19pcnEgcmsz NTg4X3ZwdTcyMF9pcnFzW10gPSB7Cj4gKwl7ICJ2ZHB1Iiwgcm9ja2NoaXBfdnB1NzIwX2lycSB9 LAo+ICt9Owo+ICsKPiArc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCByazM1ODhfdnB1NzIwX2Ns a19uYW1lc1tdID0gewo+ICsJImFjbGsiLCAiaGNsayIsCj4gK307Cj4gKwo+ICtjb25zdCBzdHJ1 Y3QgaGFudHJvX3ZhcmlhbnQgcmszNTg4X3ZwdTcyMF92YXJpYW50ID0gewo+ICsJLmRlY19mbXRz ICAgICA9IHJrMzU4OF92cHU3MjBfZGVjX2ZtdHMsCj4gKwkubnVtX2RlY19mbXRzID0gQVJSQVlf U0laRShyazM1ODhfdnB1NzIwX2RlY19mbXRzKSwKPiArCS5jb2RlYyAgICAgICAgPSBIQU5UUk9f SlBFR19ERUNPREVSLAo+ICsJLmNvZGVjX29wcyAgICA9IHJrMzU4OF92cHU3MjBfY29kZWNfb3Bz LAo+ICsJLmlycXMgICAgICAgICA9IHJrMzU4OF92cHU3MjBfaXJxcywKPiArCS5udW1faXJxcyAg ICAgPSBBUlJBWV9TSVpFKHJrMzU4OF92cHU3MjBfaXJxcyksCj4gKwkuY2xrX25hbWVzICAgID0g cmszNTg4X3ZwdTcyMF9jbGtfbmFtZXMsCj4gKwkubnVtX2Nsb2NrcyAgID0gQVJSQVlfU0laRShy azM1ODhfdnB1NzIwX2Nsa19uYW1lcyksCj4gKwkuc3JjX25lZWRzX2ttYXAgPSAxLAo+ICsJLmRz dF9uZWVkc19rbWFwID0gMSwKPiArfTsKCmNvdWxkIHlvdSBtb3ZlIHRoZSBpbmRpdmlkdWFsIHBh cnRzIHRvIHRoZSBjb3JyZWN0IHBsYWNlcyBpbiB0aGUgZmlsZT8KQWxsIHRoZSBvdGhlciB2YXJp YW50cyBhcmUgY2x1c3RlcmVkIHRvZ2V0aGVyLCB3aXRoIHRoZWlyIHNwZWNpZmljCmZtdCwgZXRj IGRlZmluaXRpb25zIGJlaW5nIGluIG90aGVyIGNsdXN0ZXJzIGFib3ZlIHRoYXQuCgoKSGVpa28K CgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkxpbnV4 LXJvY2tjaGlwIG1haWxpbmcgbGlzdApMaW51eC1yb2NrY2hpcEBsaXN0cy5pbmZyYWRlYWQub3Jn Cmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtcm9ja2No aXAK 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 06793C5DF6D for ; Wed, 19 Aug 2026 12:46:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Content-Type: Content-Transfer-Encoding:MIME-Version:References:In-Reply-To:Message-ID:Date :Subject:Cc:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=tUgb1cSpQmg48mQ4LeBUx+FaaJ2tUQcxNw47rzDBl0M=; b=n2Gc2aUj+IuJoKpFECa7YzFWYn nCgN0nc6iwsBLnBGeb/t5C3kiiV3gGYQx6u05VsjW6vyT6+3zUITtV5oGx5zc5Ck957hvMFf4qnld 5puDmYE0rmm1ppcgl2j3YHWJpQkSMfX1+fBw2qlbsdbLUg/NFjmUJNo5izWJMomfyi4GNuUOBchoz hH6enXTbXkSDzg93Y2JxFMQ+keINKZuhCgXi44jo736Xq7swjeio8nnrfxOzAr7iWEBbnjBm7YuO5 XVaF3YiYrO9CYzL8qC4Gmjpr3r8DgEzTi8ILqVw8WFy+n+LIAeCEME4Up+RglIFgsoU49E1a5oCA1 mmHybbsQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1wwfgY-00000009n1O-0U3C; Wed, 19 Aug 2026 12:46:26 +0000 Received: from casper.infradead.org ([2001:8b0:10b:1236::1]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1wwfgV-00000009n13-35dU; Wed, 19 Aug 2026 12:46:24 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=Content-Type:Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Sender :Reply-To:Content-ID:Content-Description; bh=tUgb1cSpQmg48mQ4LeBUx+FaaJ2tUQcxNw47rzDBl0M=; b=MpYZkuwX2iqHkyVBi+B8u8Ha/i EU/sdjPPYNtXAfqZa1zaPkvl5AXi1l42g8na6cORDyhWoNQTUsZLOOmbjOtc+k0TehdfmgtjGEFuB vgbacQN+W5QmsyBSJumg/7ZZ78jcbhj8AFNjfKvTjpacQicrzvE9/DtbXWNJsEC1mlJAK6/Tq710H fimifYCe2xkMs+/NBfMFoDDqT+MnxLYdbJLAB47fGzFArA6Vq8pX0Bj+hrCA2sZLDdMvTsmbRDmv7 Ochu//vM+1yQOroLVRmv4gWlmAgW1umP5/aOnyke6hq0CsOxc3Uf6amUkXVm+aoY+w1wI5vBB8OON lgu1f5qg==; Received: from gloria.sntech.de ([185.11.138.130]) by casper.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1wwfgS-0000000Dk7L-2kui; Wed, 19 Aug 2026 12:46:22 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sntech.de; s=gloria202408; h=Content-Type:Content-Transfer-Encoding:MIME-Version: References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Reply-To; bh=tUgb1cSpQmg48mQ4LeBUx+FaaJ2tUQcxNw47rzDBl0M=; b=c60JtS49PMHVt+c/VQa3RMOhX9 JKyBgGVwi/gCexVHLprpOqe2nC4fd5r4AVyZ2bJeQRrsdS9yz5zjC8dqjXG3bDnn9ICBfrmfEuFFe d4DeLFRKOxoRWHlDCtXYC7mPwlAdiaL8gR3CVuPEq6VAdsI7FS4FG33eydwTBpc7RXNPSyBML/nA5 d3hx4AGWwBOd4zClcdEpQBfTCT3x3jWSkvN4vq85KTbmdqAEas/djWDYFA3XQgvEednYBAjaMHFQg s28+3zbULNM4zJXO6ivQr/9rZkfLYJLaNd7o/yfgXdoy8o86c/jq28mwCtvqXyZVSvHS2yefvUyyA mayaMPOg==; From: Heiko =?UTF-8?B?U3TDvGJuZXI=?= To: Nicolas Dufresne , Benjamin Gaignard , Philipp Zabel , Mauro Carvalho Chehab , Ezequiel Garcia , Andrzej Pietrasiewicz , Hans Verkuil , Chen-Yu Tsai , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Lucas Sinn , Sascha Hauer Cc: Mauro Carvalho Chehab , linux-media@vger.kernel.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, Sascha Hauer Subject: Re: [PATCH 5/7] media: verisilicon: Add Rockchip VPU720 JPEG decoder Date: Wed, 19 Aug 2026 14:46:10 +0200 Message-ID: <5715409.BjyWNHgNrj@diego> In-Reply-To: <20260819-rk3588-jpegdec-v1-5-33d74cdf369c@pengutronix.de> References: <20260819-rk3588-jpegdec-v1-0-33d74cdf369c@pengutronix.de> <20260819-rk3588-jpegdec-v1-5-33d74cdf369c@pengutronix.de> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.9.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20260819_134620_853897_A0B2EA79 X-CRM114-Status: GOOD ( 46.36 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Hi, Am Mittwoch, 19. August 2026, 12:37:34 Mitteleurop=C3=A4ische Sommerzeit sc= hrieb Sascha Hauer: > From: Lucas Sinn >=20 > Add support for the Rockchip VPU720 JPEG hardware decoder on RK3588 > to the verisilicon hantro driver. >=20 > Hardware requirements: > - CPU-side JPEG header parsing via v4l2_jpeg_parse_header() > - DMA side buffer with Q-tables (zigzag->raster), Huffman mincode > and value tables > - VPU720-specific two-phase IRQ clear sequence > - 16-byte stream alignment with start-byte offset > - MCU-aligned PIC_H (e.g. 1080p YUV420 needs 1088, not 1080) > - FILL_DOWN_E on every NV12 conversion, the output chroma is vertically > subsampled so the hardware completes the bottom of the picture > - DRI (restart interval) support when present >=20 > Implementation adds: > - HANTRO_JPEG_DECODER codec and HANTRO_MODE_JPEG_DEC mode > - struct hantro_jpeg_dec_hw_ctx holding the Q/H table side buffer, > which is rebuilt from the frame header on every run > - src_needs_kmap and dst_needs_kmap flags for vb2_plane_vaddr() without > DMA_ATTR_NO_KERNEL_MAPPING > - a neutral chroma plane written by the driver for a grayscale frame. > The output format converter has no YUV400 path, so the hardware writes > the luma plane and leaves the chroma alone, which comes out green > - rockchip_vpu720_jpeg_dec_run() for parse/fill/program/kick > - rejection of a frame that carries no EOI marker, which is what a > source buffer too small for the frame looks like > - rejection of a frame larger than the negotiated capture format, > whose dimensions would otherwise be programmed against strides > taken from that format > - IRQ handler with detailed error diagnostics (REG32/33: > MCU position, error flags) and soft-reset > - AXI perf counter setup (REG30) >=20 > Exposes one V4L2 M2M device: JPEG input -> NV12 output. >=20 > Assisted-by: Claude:claude-opus-5 > Signed-off-by: Lucas Sinn > Signed-off-by: Sascha Hauer > --- > drivers/media/platform/verisilicon/Makefile | 1 + > drivers/media/platform/verisilicon/hantro.h | 17 + > drivers/media/platform/verisilicon/hantro_drv.c | 17 +- > drivers/media/platform/verisilicon/hantro_hw.h | 17 + > drivers/media/platform/verisilicon/hantro_v4l2.c | 38 +- > .../verisilicon/rockchip_vpu720_hw_jpeg_dec.c | 962 +++++++++++++++= ++++++ > .../platform/verisilicon/rockchip_vpu720_regs.h | 261 ++++++ > .../media/platform/verisilicon/rockchip_vpu_hw.c | 80 ++ > 8 files changed, 1385 insertions(+), 8 deletions(-) >=20 > diff --git a/drivers/media/platform/verisilicon/hantro.h b/drivers/media/= platform/verisilicon/hantro.h > index 0353de154a1ec..00e0f5981cca3 100644 > --- a/drivers/media/platform/verisilicon/hantro.h > +++ b/drivers/media/platform/verisilicon/hantro.h > @@ -39,6 +39,7 @@ struct hantro_postproc_ops; > #define HANTRO_HEVC_DECODER BIT(19) > #define HANTRO_VP9_DECODER BIT(20) > #define HANTRO_AV1_DECODER BIT(21) > +#define HANTRO_JPEG_DECODER BIT(22) > #define HANTRO_DECODERS 0xffff0000 > =20 > /** > @@ -102,6 +103,19 @@ struct hantro_variant { > unsigned int double_buffer : 1; > unsigned int legacy_regs : 1; > unsigned int late_postproc : 1; > + /* > + * src_needs_kmap: when set, the source queue will be allocated with > + * a kernel virtual address so the driver can CPU-parse the bitstream > + * (e.g. for JPEG header parsing). > + */ there is already a struct documentation present, so there is =2D no need to put that huge comment here, this can be shortened =2D the actual field-documentation is missing probably true for more places > + unsigned int src_needs_kmap : 1; > + /* > + * dst_needs_kmap: when set, the capture queue will be allocated with > + * a kernel virtual address so the driver can write the parts of a > + * frame the hardware does not produce (e.g. the chroma plane of a > + * grayscale JPEG). > + */ > + unsigned int dst_needs_kmap : 1; > const struct of_device_id *shared_devices; > }; > =20 > @@ -115,6 +129,7 @@ struct hantro_variant { > * @HANTRO_MODE_HEVC_DEC: HEVC decoder. > * @HANTRO_MODE_VP9_DEC: VP9 decoder. > * @HANTRO_MODE_AV1_DEC: AV1 decoder > + * @HANTRO_MODE_JPEG_DEC: VPU720 JPEG decoder here it worked correctly, it seems. > */ > enum hantro_codec_mode { > HANTRO_MODE_NONE =3D -1, > @@ -125,6 +140,7 @@ enum hantro_codec_mode { > HANTRO_MODE_HEVC_DEC, > HANTRO_MODE_VP9_DEC, > HANTRO_MODE_AV1_DEC, > + HANTRO_MODE_JPEG_DEC, > }; > =20 > /* > @@ -276,6 +292,7 @@ struct hantro_ctx { > struct hantro_hevc_dec_hw_ctx hevc_dec; > struct hantro_vp9_dec_hw_ctx vp9_dec; > struct hantro_av1_dec_hw_ctx av1_dec; > + struct hantro_jpeg_dec_hw_ctx jpeg_dec; here the documentation for the new field is missing completely > }; > }; > =20 > diff --git a/drivers/media/platform/verisilicon/rockchip_vpu720_hw_jpeg_d= ec.c b/drivers/media/platform/verisilicon/rockchip_vpu720_hw_jpeg_dec.c > new file mode 100644 > index 0000000000000..81fd79911d694 > --- /dev/null > +++ b/drivers/media/platform/verisilicon/rockchip_vpu720_hw_jpeg_dec.c > @@ -0,0 +1,962 @@ > + /* > + * REG2: system config =E2=80=93 always output NV12. > + * > + * FILL_DOWN_E belongs to the NV12 conversion rather than to a > + * particular pair of heights: the output chroma is vertically > + * subsampled, so the hardware has to complete the bottom of the > + * picture. Two cases need it: > + * > + * a) jpeg_height is not on an MCU boundary (e.g. YUV420 1080p: > + * jpeg_height=3D1080, jpeg_height_aligned=3D1088, buf_height=3D108= 8). > + * The VPU720 needs FILL_DOWN_E to complete the last MCU row's > + * chroma reconstruction. Without it the bottom rows are corrupt > + * even though PIC_H is already set to the MCU-aligned height. > + * > + * b) MCU-aligned height < buf_height (e.g. YUV422 1080p: mcu_h=3D8, > + * jpeg_height_aligned=3D1080, buf_height=3D1088). The hardware fi= lls > + * rows 1080..1087 by repeating the last valid row. > + * > + * A height that is a multiple of 16 leaves nothing to fill, but the > + * bit is set there as well: the reference driver enables it for every > + * NV12 conversion, whatever the picture and buffer heights are. > + * > + * FILL_RIGHT_E does the same for the right hand edge, but there it > + * depends on the mode. The decoder writes whole MCUs, so the last > + * MCU column ends at ALIGN(jpeg_width, mcu_width) while the buffer is > + * 16 pixel aligned. Only the 8 pixel MCU widths can stop short of > + * that and need the columns in between filled; a 16 or 32 pixel MCU > + * already reaches at least as far. The reference driver arrives at > + * the same set through a per mode test on (width & 0xf) <=3D 8. > + */ > + reg =3D FIELD_PREP(VDPU720_YUV_OUT_FMT, VDPU720_YUV_OUT_FMT_NV12) | > + VDPU720_FILL_DOWN_E; > + if (ALIGN(jpeg_width, mcu_width) < ALIGN(jpeg_width, 16)) > + reg |=3D VDPU720_FILL_RIGHT_E; > + vdpu_write_relaxed(vpu, reg, VDPU720_REG_SYS); > + > + /* > + * --- REG3: picture dimensions --- can we have one consistent comment style please? > + * > + * PIC_W stays at the raw header width while PIC_H is rounded up to > + * the MCU boundary. Rounding the width up the same way is not safe: > + * mcu_width reaches 32 for YUV411, so ALIGN(jpeg_width, mcu_width) > + * can land beyond the 16 pixel aligned buffer width and point the > + * decoder past the end of a row. FILL_RIGHT_E above covers the cases > + * where the MCU column stops short instead. The reference driver > + * programs the raw width here too. > + */ > + vdpu_write_relaxed(vpu, > + FIELD_PREP(VDPU720_PIC_W_M1, jpeg_width - 1) | > + FIELD_PREP(VDPU720_PIC_H_M1, jpeg_height_aligned - 1), > + VDPU720_REG_PIC_SIZE); > + [...] > +/* > + * vdpu720_fill_chroma - write neutral chroma for a grayscale frame. > + * > + * The output format converter has no YUV400 path: VDPU720_YUV_OUT_FMT_N= V12 > + * only covers the subsampled colour modes, and for a single component f= rame > + * the hardware writes the luma plane and leaves the chroma plane untouc= hed. > + * > + * Fill the plane here, before the hardware is started: once the decode = is > + * running the interrupt can complete the job and hand the buffer to > + * userspace at any time. > + */ > +static int vdpu720_fill_chroma(struct hantro_ctx *ctx, > + struct vb2_v4l2_buffer *dst_buf) [...] > +/** > + * rockchip_vpu720_jpeg_dec_init() - allocate the per-context DMA side b= uffer > + * @ctx: context to allocate the Q/Huffman table buffer for > + * > + * Return: 0 on success, -ENOMEM if the buffer could not be allocated. > + */ again comment style ( "/**", also the ctx line could use a blank line above= it) Seemingly one function before this the LLM did get it right? Same applies for repeats below. > +int rockchip_vpu720_jpeg_dec_init(struct hantro_ctx *ctx) > +{ > + struct hantro_dev *vpu =3D ctx->dev; > + struct hantro_jpeg_dec_hw_ctx *jpeg_ctx =3D jpeg_dec_ctx(ctx); > + > + jpeg_ctx->table_base.size =3D VDPU720_TABLE_BUF_SIZE; > + jpeg_ctx->table_base.cpu =3D > + dma_alloc_noncoherent(vpu->dev, > + jpeg_ctx->table_base.size, > + &jpeg_ctx->table_base.dma, > + DMA_TO_DEVICE, GFP_KERNEL); > + if (!jpeg_ctx->table_base.cpu) > + return -ENOMEM; > + > + return 0; > +} > + [...] > diff --git a/drivers/media/platform/verisilicon/rockchip_vpu720_regs.h b/= drivers/media/platform/verisilicon/rockchip_vpu720_regs.h > new file mode 100644 > index 0000000000000..cae9052126be1 > --- /dev/null > +++ b/drivers/media/platform/verisilicon/rockchip_vpu720_regs.h > @@ -0,0 +1,261 @@ > +/* SPDX-License-Identifier: GPL-2.0 */ > +/* > + * Rockchip VPU720 JPEG decoder register definitions > + * > + * Derived from downstream Rockchip MPP HAL (hal_jpegd_rkv_reg.h). > + * Copyright (C) 2020 Rockchip Electronics Co., Ltd. > + * Copyright (C) 2026 WolfVision GmbH > + */ > +#ifndef ROCKCHIP_VPU720_REGS_H_ > +#define ROCKCHIP_VPU720_REGS_H_ > + > +#include > +#include > +#include > +#include > + > +/* ------------------------------------------------------------------ */ > +/* Register byte offsets from dec_base */ > +/* ------------------------------------------------------------------ */ less dashed lines maybe? ;-) > + > +/* REG0: IP version / product ID */ no need the same information when the register naming is obvious. Same for the below registers > +#define VDPU720_REG_VERSION 0x000 > +#define VDPU720_PROD_NUM GENMASK(31, 16) > +#define VDPU720_BIT_DEPTH BIT(8) > + > +/* REG1: Interrupt control and status */ > +#define VDPU720_REG_INT 0x004 [...] > +/* ------------------------------------------------------------------ */ > +/* Side-buffer layout for Q-tables and Huffman tables */ > +/* */ > +/* The VPU720 JPEG decoder reads quantisation tables and Huffman */ > +/* tables from a contiguous DMA buffer with the following layout: */ > +/* */ > +/* [0, QTBL_SIZE): Q-table data (u16, raster-scan order) */ > +/* [HMINCODE_OFF, +HMIN_SZ): Huffman mincode table */ > +/* [HVALUE_OFF, +HVAL_SZ): Huffman value table */ > +/* ------------------------------------------------------------------ */ > +/* The Q-tables are per component, one entry each */ again, the comment style is very strange [...] > @@ -816,3 +831,68 @@ const struct hantro_variant rk3588_vpu981_variant = =3D { > .clk_names =3D rk3588_vpu981_vpu_clk_names, > .num_clocks =3D ARRAY_SIZE(rk3588_vpu981_vpu_clk_names) > }; > + > +/* ------------------------------------------------------------------ */ > +/* RK3588 VPU720 JPEG decoder */ > +/* ------------------------------------------------------------------ */ > + > +/* > + * Capture format: NV12. The JPEG codec entry is listed last. > + */ > +static const struct hantro_fmt rk3588_vpu720_dec_fmts[] =3D { > + { > + .fourcc =3D V4L2_PIX_FMT_NV12, > + .codec_mode =3D HANTRO_MODE_NONE, > + .frmsize =3D { > + .min_width =3D FMT_MIN_WIDTH, > + .max_width =3D VPU720_JPEGD_MAX_SIZE, > + .step_width =3D MB_DIM, > + .min_height =3D FMT_MIN_HEIGHT, > + .max_height =3D VPU720_JPEGD_MAX_SIZE, > + .step_height =3D MB_DIM, > + }, > + }, > + { > + .fourcc =3D V4L2_PIX_FMT_JPEG, > + .codec_mode =3D HANTRO_MODE_JPEG_DEC, > + .max_depth =3D 2, > + .frmsize =3D { > + .min_width =3D FMT_MIN_WIDTH, > + .max_width =3D VPU720_JPEGD_MAX_SIZE, > + .step_width =3D VPU720_JPEGD_STEP, > + .min_height =3D FMT_MIN_HEIGHT, > + .max_height =3D VPU720_JPEGD_MAX_SIZE, > + .step_height =3D VPU720_JPEGD_STEP, > + }, > + }, > +}; > + > +static const struct hantro_codec_ops rk3588_vpu720_codec_ops[] =3D { > + [HANTRO_MODE_JPEG_DEC] =3D { > + .run =3D rockchip_vpu720_jpeg_dec_run, > + .reset =3D rockchip_vpu720_reset, > + .init =3D rockchip_vpu720_jpeg_dec_init, > + .exit =3D rockchip_vpu720_jpeg_dec_exit, > + }, > +}; > + > +static const struct hantro_irq rk3588_vpu720_irqs[] =3D { > + { "vdpu", rockchip_vpu720_irq }, > +}; > + > +static const char * const rk3588_vpu720_clk_names[] =3D { > + "aclk", "hclk", > +}; > + > +const struct hantro_variant rk3588_vpu720_variant =3D { > + .dec_fmts =3D rk3588_vpu720_dec_fmts, > + .num_dec_fmts =3D ARRAY_SIZE(rk3588_vpu720_dec_fmts), > + .codec =3D HANTRO_JPEG_DECODER, > + .codec_ops =3D rk3588_vpu720_codec_ops, > + .irqs =3D rk3588_vpu720_irqs, > + .num_irqs =3D ARRAY_SIZE(rk3588_vpu720_irqs), > + .clk_names =3D rk3588_vpu720_clk_names, > + .num_clocks =3D ARRAY_SIZE(rk3588_vpu720_clk_names), > + .src_needs_kmap =3D 1, > + .dst_needs_kmap =3D 1, > +}; could you move the individual parts to the correct places in the file? All the other variants are clustered together, with their specific fmt, etc definitions being in other clusters above that. Heiko