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 6B152E7F143 for ; Tue, 26 Sep 2023 23:30:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Date:Cc:To:From:Subject:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=7TsGLVsmDAYRCzHzD8gW5cX6sM2H943ANp5ryFlG4kQ=; b=u96O0iduhW19gK iUSa+RVYowazF1wetnhRqyutgDTxszIAfMaR7WPzQ4I6I270Bz3Knih90pgmaW4PNUbM7piavEdfN RZIgGOMA4MVCjs1QortwObDASLP3L30WRQINvAyzFQQuMGEBs3Lkjiwgmt/xbW7EU6US7JfMgWjZ/ hkhiWz60K+C+H7Zg9W6XiPN8a0JseHYa5Hq9IYoL7u1ER1MBKqz1uT26HlWW45nwTnLEeZb7e2qyR Tm829tHCYC2tiKN7re3P8Bkn9OwEcai9chzcqf/WDVxEYKZMK4UcVnGxkEgVjGKWjtdopEEN8/4sK Ng/knBA+lX8vC7jHqF7A==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qlHVF-00HB5N-2c; Tue, 26 Sep 2023 23:30:05 +0000 Received: from madras.collabora.co.uk ([46.235.227.172]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1qlHVA-00HB4A-1h for linux-arm-kernel@lists.infradead.org; Tue, 26 Sep 2023 23:30:04 +0000 Received: from nicolas-tpx395.localdomain (unknown [45.84.211.191]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: nicolas) by madras.collabora.co.uk (Postfix) with ESMTPSA id 17FCD660731C; Wed, 27 Sep 2023 00:29:54 +0100 (BST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1695770995; bh=KvkFiRPKdGvQj6Wwi6VvHejV7MQfknC6iOfkSZ6pmlE=; h=Subject:From:To:Cc:Date:In-Reply-To:References:From; b=LfBmxNENe/eR4pJ9lyOCjRMq+x7WuYXFbiKxTml38dPsrQMEqFaRtzEgGD1s5IhSH zXbf9W95YsRig7QHa2BGwVCKm76pJRZn1BGfSejxlwDB4dmUgTWObJtzTXPFL6t4ZW Trm8y9COhly+XRF/Vc4As0ZwgChdRFKOQ4gY2y3d/6a/5bCQzGIilz1kTK+a8t5NnY 0+QmMv9WdcnPWk81BQ4afIn377rIlDTcbQWAL/ORHTd8y3zdNGYmM7dEK7GOtcc606 Q9gzulHTxZfnOq+zD4suirgrC8DKRoWgU9ZCmEsidiCG1OSvWYQGydEnJNJ/+p4jw3 7wi79sNdbBYJw== Message-ID: <330a177320fd766af8eddb76f57ea728b2e36afe.camel@collabora.com> Subject: Re: [PATCH v12 5/7] media: chips-media: wave5: Add the v4l2 layer From: Nicolas Dufresne To: Hans Verkuil , Sebastian Fricke , Mauro Carvalho Chehab , Nas Chung , Sascha Hauer , Fabio Estevam , Rob Herring , Shawn Guo , Philipp Zabel , Jackson Lee , Krzysztof Kozlowski , NXP Linux Team , Conor Dooley , Pengutronix Kernel Team , Benjamin Gaignard Cc: devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Robert Beckett , linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, kernel@collabora.com Date: Wed, 27 Sep 2023 01:29:44 +0200 In-Reply-To: <6ae8a639-b9f5-4426-be49-5340a8b8b5e9@xs4all.nl> References: <20230915-wave5_v12_on_media_master-v12-0-92fc66cd685d@collabora.com> <20230915-wave5_v12_on_media_master-v12-5-92fc66cd685d@collabora.com> <7b159731dfbc2ab8243396eaec8f41be10af5160.camel@collabora.com> <6ae8a639-b9f5-4426-be49-5340a8b8b5e9@xs4all.nl> User-Agent: Evolution 3.48.4 (3.48.4-1.fc38) MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230926_163000_879505_273BFEA6 X-CRM114-Status: GOOD ( 61.49 ) 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: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org TGUgdmVuZHJlZGkgMjIgc2VwdGVtYnJlIDIwMjMgw6AgMDk6MzMgKzAyMDAsIEhhbnMgVmVya3Vp bCBhIMOpY3JpdMKgOgo+IE9uIDIxLzA5LzIwMjMgMjE6MTEsIE5pY29sYXMgRHVmcmVzbmUgd3Jv dGU6Cj4gPiBMZSBtZXJjcmVkaSAyMCBzZXB0ZW1icmUgMjAyMyDDoCAxNzoxMyArMDIwMCwgSGFu cyBWZXJrdWlsIGEgw6ljcml0wqA6Cj4gPiA+IE9uIDE1LzA5LzIwMjMgMjM6MTEsIFNlYmFzdGlh biBGcmlja2Ugd3JvdGU6Cj4gPiA+ID4gRnJvbTogTmFzIENodW5nIDxuYXMuY2h1bmdAY2hpcHNu bWVkaWEuY29tPgo+ID4gPiA+IAo+ID4gPiA+IEFkZCB0aGUgZGVjb2RlciBhbmQgZW5jb2RlciBp bXBsZW1lbnRpbmcgdGhlIHY0bDIKPiA+ID4gPiBBUEkuIFRoaXMgcGF0Y2ggYWxzbyBhZGRzIHRo ZSBNYWtlZmlsZSBhbmQgdGhlIFZJREVPX1dBVkVfVlBVIGNvbmZpZwo+ID4gPiA+IAo+ID4gPiA+ IFNpZ25lZC1vZmYtYnk6IFNlYmFzdGlhbiBGcmlja2UgPHNlYmFzdGlhbi5mcmlja2VAY29sbGFi b3JhLmNvbT4KPiA+ID4gPiBTaWduZWQtb2ZmLWJ5OiBOaWNvbGFzIER1ZnJlc25lIDxuaWNvbGFz LmR1ZnJlc25lQGNvbGxhYm9yYS5jb20+Cj4gPiA+ID4gU2lnbmVkLW9mZi1ieTogUm9iZXJ0IEJl Y2tldHQgPGJvYi5iZWNrZXR0QGNvbGxhYm9yYS5jb20+Cj4gPiA+ID4gU2lnbmVkLW9mZi1ieTog RGFmbmEgSGlyc2NoZmVsZCA8ZGFmbmEuaGlyc2NoZmVsZEBjb2xsYWJvcmEuY29tPgo+ID4gPiA+ IFNpZ25lZC1vZmYtYnk6IE5hcyBDaHVuZyA8bmFzLmNodW5nQGNoaXBzbm1lZGlhLmNvbT4KPiA+ ID4gPiAtLS0KPiA+ID4gPiAgZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9jaGlwcy1tZWRpYS9LY29u ZmlnICAgICAgICAgfCAgICAxICsKPiA+ID4gPiAgZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9jaGlw cy1tZWRpYS9NYWtlZmlsZSAgICAgICAgfCAgICAxICsKPiA+ID4gPiAgZHJpdmVycy9tZWRpYS9w bGF0Zm9ybS9jaGlwcy1tZWRpYS93YXZlNS9LY29uZmlnICAgfCAgIDEyICsKPiA+ID4gPiAgZHJp dmVycy9tZWRpYS9wbGF0Zm9ybS9jaGlwcy1tZWRpYS93YXZlNS9NYWtlZmlsZSAgfCAgIDEwICsK PiA+ID4gPiAgLi4uL3BsYXRmb3JtL2NoaXBzLW1lZGlhL3dhdmU1L3dhdmU1LWhlbHBlci5jICAg ICAgfCAgMTk2ICsrCj4gPiA+ID4gIC4uLi9wbGF0Zm9ybS9jaGlwcy1tZWRpYS93YXZlNS93YXZl NS1oZWxwZXIuaCAgICAgIHwgICAzMCArCj4gPiA+ID4gIC4uLi9wbGF0Zm9ybS9jaGlwcy1tZWRp YS93YXZlNS93YXZlNS12cHUtZGVjLmMgICAgIHwgMTk2NSArKysrKysrKysrKysrKysrKysrKwo+ ID4gPiA+ICAuLi4vcGxhdGZvcm0vY2hpcHMtbWVkaWEvd2F2ZTUvd2F2ZTUtdnB1LWVuYy5jICAg ICB8IDE4MjUgKysrKysrKysrKysrKysrKysrCj4gPiA+ID4gIC4uLi9tZWRpYS9wbGF0Zm9ybS9j aGlwcy1tZWRpYS93YXZlNS93YXZlNS12cHUuYyAgIHwgIDMzMSArKysrCj4gPiA+ID4gIC4uLi9t ZWRpYS9wbGF0Zm9ybS9jaGlwcy1tZWRpYS93YXZlNS93YXZlNS12cHUuaCAgIHwgICA4MyArCj4g PiA+ID4gIDEwIGZpbGVzIGNoYW5nZWQsIDQ0NTQgaW5zZXJ0aW9ucygrKQo+ID4gPiA+IAo+IAo+ IDxzbmlwPgo+IAo+ID4gPiA+ICtzdGF0aWMgaW50IHdhdmU1X3ZwdV9kZWNfc2V0X2Vvc19vbl9m aXJtd2FyZShzdHJ1Y3QgdnB1X2luc3RhbmNlICppbnN0KQo+ID4gPiA+ICt7Cj4gPiA+ID4gKwlp bnQgcmV0Owo+ID4gPiA+ICsKPiA+ID4gPiArCXJldCA9IHdhdmU1X3ZwdV9kZWNfdXBkYXRlX2Jp dHN0cmVhbV9idWZmZXIoaW5zdCwgMCk7Cj4gPiA+ID4gKwlpZiAocmV0KSB7Cj4gPiA+ID4gKwkJ ZGV2X2VycihpbnN0LT5kZXYtPmRldiwKPiA+ID4gPiArCQkJIlNldHRpbmcgRU9TIGZvciB0aGUg Yml0c3RyZWFtLCBmYWlsOiAlZFxuIiwgcmV0KTsKPiA+ID4gCj4gPiA+IElzIHRoaXMgYW4gZXJy b3IgZHVlIHRvIGEgZHJpdmVyIHByb2JsZW0sIG9yIGJlY2F1c2UgYSBiYWQgYml0c3RyZWFtIGlz Cj4gPiA+IGZlZCBmcm9tIHVzZXJzcGFjZT8gSW4gdGhlIGZpcnN0IGNhc2UsIGRldl9lcnIgd291 bGQgYmUgcmlnaHQsIGluIHRoZQo+ID4gPiBzZWNvbmQgZGV2X2RiZyB3b3VsZCBiZSBtb3JlIGFw cHJvcHJpYXRlLiBCYWQgdXNlcnNwYWNlIGlucHV0IHNob3VsZCBub3QKPiA+ID4gc3BhbSB0aGUg a2VybmVsIGxvZyBpbiBnZW5lcmFsLgo+ID4gCj4gPiBJdHMgdGhlIGZpcnN0LiBUbyBzZXQgdGhl IEVPUyBmbGFnLCBhIGNvbW1hbmQgaXMgc2VudCB0byB0aGUgZmlybXdhcmUuIFRoYXQKPiA+IGNv bW1hbmQgbWF5IG5ldmVyIHJldHVybiAodGltZW91dCkgb3IgbWF5IHJlcG9ydCBhbiBlcnJvci4g Rm9yIHRoaXMgc3BlY2lmaWMKPiA+IGNvbW1hbmQsIGlmIHRoYXQgaGFwcGVucyB3ZSBhcmUgbGlr ZWx5IGZhY2luZyBmaXJtd2FyZSBvZiBkcml2ZXIgcHJvYmxlbSAob3IKPiA+IGJvdGgpLgo+IAo+ IE9LLCBJJ2QgYWRkIHRoYXQgYXMgYSBjb21tZW50IGhlcmUgYXMgdGhpcyBpcyB1bmV4cGVjdGVk IGJlaGF2aW9yLgo+IAo+ID4gCj4gPiA+IAo+ID4gPiA+ICsJCXJldHVybiByZXQ7Cj4gPiA+ID4g Kwl9Cj4gPiA+ID4gKwlyZXR1cm4gMDsKPiA+ID4gPiArfQo+IAo+IDxzbmlwPgo+IAo+ID4gPiA+ ICtzdGF0aWMgaW50IHdhdmU1X3ZwdV9kZWNfY3JlYXRlX2J1ZnMoc3RydWN0IGZpbGUgKmZpbGUs IHZvaWQgKnByaXYsCj4gPiA+ID4gKwkJCQkgICAgIHN0cnVjdCB2NGwyX2NyZWF0ZV9idWZmZXJz ICpjcmVhdGUpCj4gPiA+ID4gK3sKPiA+ID4gPiArCXN0cnVjdCB2NGwyX2Zvcm1hdCAqZiA9ICZj cmVhdGUtPmZvcm1hdDsKPiA+ID4gPiArCj4gPiA+ID4gKwlpZiAoZi0+dHlwZSA9PSBWNEwyX0JV Rl9UWVBFX1ZJREVPX0NBUFRVUkUpCj4gPiA+ID4gKwkJcmV0dXJuIC1FTk9UVFk7Cj4gPiA+IAo+ ID4gPiBIdWg/IFdoeSBpcyB0aGlzIG5lZWRlZD8KPiA+IAo+ID4gTWluaW1hbGx5IGEgY29tbWVu dCBzaG91bGQgYmUgYWRkZWQuIFRoZSB3aHkgaXMgdGhhdCB3ZSBzdXBwb3J0IENSRUFURV9CVUYg Zm9yCj4gPiBPVVRQVVQgcXVldWUgKGJpdHN0cmVhbSkgYnV0IG5vdCBmb3IgQ0FQVFVSRSBxdWV1 ZXMuIFRoaXMgaXMgc2ltcGx5IG5vdAo+ID4gc3VwcG9ydGVkIGJ5IFdhdmU1IGZpcm13YXJlLiBE byB5b3UgaGF2ZSBhbnkgc3VnZ2VzdGlvbiBob3cgdGhpcyBhc3ltbWV0cnkgY2FuCj4gPiBiZSBp bXBsZW1lbnRlZCBiZXR0ZXIgPwo+IAo+IENlcnRhaW5seSBub3Qgd2l0aCBFTk9UVFk6IHRoZSBp b2N0bCBleGlzdHMsIGl0IGlzIGp1c3Qgbm90IHN1cHBvcnRlZCBmb3IKPiBDQVBUVVJFIHF1ZXVl cy4KPiAKPiBIb3cgYWJvdXQgLUVQRVJNPyBBbmQgZG9jdW1lbnQgdGhpcyBlcnJvciBhcyB3ZWxs IGluIHRoZSBWSURJT0NfQ1JFQVRFX0JVRlMKPiBkb2N1bWVudGF0aW9uLiBBbmQgeW91IHdhbnQg YSBkZXZfZGJnIGhlcmUgdG9vLgoKVGhlIHN1Z2dlc3Rpb24gY2Fubm90IGJlIHVzZWQgc2luY2Ug dGhlcmUgaXMgZG9jdW1lbnRhdGlvbiBmb3IgdGhhdCBvbmUgYWxyZWFkeSwKYW5kIGl0IGRvZXMg bm90IG1hdGNoICJ1bnN1cHBvcnRlZCIuCgoiUGVybWlzc2lvbiBkZW5pZWQuIENhbiBiZSByZXR1 cm5lZCBpZiB0aGUgZGV2aWNlIG5lZWRzIHdyaXRlIHBlcm1pc3Npb24sIG9yCnNvbWUgc3BlY2lh bCBjYXBhYmlsaXRpZXMgaXMgbmVlZGVkIChlLiBnLiByb290KSIKCldoYXQgYWJvdXQgdXNpbmcg dGhlIG1vc3QgbG9naWNhbCBlcnJvciBjb2RlLCB3aGljaCBuYW1lIGlzIGFjdHVhbGx5IG9idmlv dXMsCmxpa2UgRU5PVFNVUCA/CgogICAjZGVmaW5lIEVOT1RTVVBQCTUyNAkvKiBPcGVyYXRpb24g aXMgbm90IHN1cHBvcnRlZCAqLwoKPiAKPiBTbyBJIHdvdWxkIHByb3Bvc2UgdGhhdCBFUEVSTSBp cyByZXR1cm5lZCBpZiBDUkVBVEVfQlVGUyBpcyBvbmx5IHN1cHBvcnRlZAo+IGZvciBmb3Igb25l IG9mIHRoZSB0d28gcXVldWVzIG9mIGFuIE0yTSBkZXZpY2UuCgpOb3RlIHRoYXQgdXNlcnNwYWNl IGRvZXMgbm90IGNhcmUgb2YgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBhbiBpb2N0bCBub3QgYmVp bmcKaW1wbGVtZW50ZWQgYXQgYWxsIG9yIG5vdCBiZWluZyBpbXBsZW1lbnQgZm9yIG9uZSBxdWV1 ZS4gR1N0cmVhbWVyIGhhdmUgYmVlbgp0ZXN0aW5nIHdpdGggYm90aCBxdWV1ZSB0eXBlIGZvciBj b3VwbGUgb2YgeWVhcnMgbm93LiBBZGRpbmcgdGhpcyBkaXN0aW5jdGlvbiBpcwpqdXN0IGxlYWtp bmcgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlscyB0byB1c2Vyc3BhY2UuIEknbSBmaW5lIHRvIGp1 c3QgZG8gd2hhdAp5b3UnZCBsaWtlLCBqdXN0IHN0YXRpbmcgdGhlIG9idmlvdXMgdGhhdCB3aGls ZSBpdCBtYXkgbG9vayBsb2dpY2FsIGluc2lkZSB0aGUKa2VybmVsLCBpdHMgYSBiaXQgb2YgYSBu b24tc2Vuc2UgZm9yIG91ciB1c2Vycy4KCnJlZ2FyZHMsCk5pY29sYXMKCj4gCj4gPiAKPiA+ID4g Cj4gPiA+ID4gKwo+ID4gPiA+ICsJcmV0dXJuIHY0bDJfbTJtX2lvY3RsX2NyZWF0ZV9idWZzKGZp bGUsIHByaXYsIGNyZWF0ZSk7Cj4gPiA+ID4gK30KPiAKPiA8c25pcD4KPiAKPiA+ID4gPiArc3Rh dGljIGludCB3YXZlNV92cHVfZGVjX3F1ZXVlX3NldHVwKHN0cnVjdCB2YjJfcXVldWUgKnEsIHVu c2lnbmVkIGludCAqbnVtX2J1ZmZlcnMsCj4gPiA+ID4gKwkJCQkgICAgIHVuc2lnbmVkIGludCAq bnVtX3BsYW5lcywgdW5zaWduZWQgaW50IHNpemVzW10sCj4gPiA+ID4gKwkJCQkgICAgIHN0cnVj dCBkZXZpY2UgKmFsbG9jX2RldnNbXSkKPiA+ID4gPiArewo+ID4gPiA+ICsJc3RydWN0IHZwdV9p bnN0YW5jZSAqaW5zdCA9IHZiMl9nZXRfZHJ2X3ByaXYocSk7Cj4gPiA+ID4gKwlzdHJ1Y3QgdjRs Ml9waXhfZm9ybWF0X21wbGFuZSBpbnN0X2Zvcm1hdCA9Cj4gPiA+ID4gKwkJKHEtPnR5cGUgPT0g VjRMMl9CVUZfVFlQRV9WSURFT19PVVRQVVRfTVBMQU5FKSA/IGluc3QtPnNyY19mbXQgOiBpbnN0 LT5kc3RfZm10Owo+ID4gPiA+ICsJdW5zaWduZWQgaW50IGk7Cj4gPiA+ID4gKwo+ID4gPiA+ICsJ ZGV2X2RiZyhpbnN0LT5kZXYtPmRldiwgIiVzOiBudW1fYnVmZmVyczogJXUgfCBudW1fcGxhbmVz OiAldSB8IHR5cGU6ICV1XG4iLCBfX2Z1bmNfXywKPiA+ID4gPiArCQkqbnVtX2J1ZmZlcnMsICpu dW1fcGxhbmVzLCBxLT50eXBlKTsKPiA+ID4gPiArCj4gPiA+ID4gKwkvKiB0aGUgQ1JFQVRFX0JV RlMgY2FzZSAqLwo+ID4gPiA+ICsJaWYgKCpudW1fcGxhbmVzKSB7Cj4gPiA+ID4gKwkJaWYgKGlu c3RfZm9ybWF0Lm51bV9wbGFuZXMgIT0gKm51bV9wbGFuZXMpCj4gPiA+ID4gKwkJCXJldHVybiAt RUlOVkFMOwo+ID4gPiA+ICsKPiA+ID4gPiArCQlmb3IgKGkgPSAwOyBpIDwgKm51bV9wbGFuZXM7 IGkrKykgewo+ID4gPiA+ICsJCQlpZiAoc2l6ZXNbaV0gPCBpbnN0X2Zvcm1hdC5wbGFuZV9mbXRb aV0uc2l6ZWltYWdlKQo+ID4gPiA+ICsJCQkJcmV0dXJuIC1FSU5WQUw7Cj4gPiA+ID4gKwkJfQo+ ID4gPiA+ICsJLyogdGhlIFJFUUJVRlMgY2FzZSAqLwo+ID4gPiA+ICsJfSBlbHNlIHsKPiA+ID4g PiArCQkqbnVtX3BsYW5lcyA9IGluc3RfZm9ybWF0Lm51bV9wbGFuZXM7Cj4gPiA+ID4gKwo+ID4g PiA+ICsJCWlmIChxLT50eXBlID09IFY0TDJfQlVGX1RZUEVfVklERU9fT1VUUFVUX01QTEFORSkg ewo+ID4gPiA+ICsJCQlzaXplc1swXSA9IGluc3RfZm9ybWF0LnBsYW5lX2ZtdFswXS5zaXplaW1h Z2U7Cj4gPiA+ID4gKwkJCWRldl9kYmcoaW5zdC0+ZGV2LT5kZXYsICIlczogc2l6ZVswXTogJXVc biIsIF9fZnVuY19fLCBzaXplc1swXSk7Cj4gPiA+ID4gKwkJfSBlbHNlIGlmICgqbnVtX3BsYW5l cyA9PSAxKSB7Cj4gPiA+ID4gKwkJCWlmIChpbnN0LT5vdXRwdXRfZm9ybWF0ID09IEZPUk1BVF80 MjIpCj4gPiA+ID4gKwkJCQlzaXplc1swXSA9IGluc3RfZm9ybWF0LndpZHRoICogaW5zdF9mb3Jt YXQuaGVpZ2h0ICogMjsKPiA+ID4gPiArCQkJZWxzZQo+ID4gPiA+ICsJCQkJc2l6ZXNbMF0gPSBp bnN0X2Zvcm1hdC53aWR0aCAqIGluc3RfZm9ybWF0LmhlaWdodCAqIDMgLyAyOwo+ID4gPiA+ICsJ CQlkZXZfZGJnKGluc3QtPmRldi0+ZGV2LCAiJXM6IHNpemVbMF06ICV1XG4iLCBfX2Z1bmNfXywg c2l6ZXNbMF0pOwo+ID4gPiA+ICsJCX0gZWxzZSBpZiAoKm51bV9wbGFuZXMgPT0gMikgewo+ID4g PiA+ICsJCQlzaXplc1swXSA9IGluc3RfZm9ybWF0LndpZHRoICogaW5zdF9mb3JtYXQuaGVpZ2h0 Owo+ID4gPiA+ICsJCQlpZiAoaW5zdC0+b3V0cHV0X2Zvcm1hdCA9PSBGT1JNQVRfNDIyKQo+ID4g PiA+ICsJCQkJc2l6ZXNbMV0gPSBpbnN0X2Zvcm1hdC53aWR0aCAqIGluc3RfZm9ybWF0LmhlaWdo dDsKPiA+ID4gPiArCQkJZWxzZQo+ID4gPiA+ICsJCQkJc2l6ZXNbMV0gPSBpbnN0X2Zvcm1hdC53 aWR0aCAqIGluc3RfZm9ybWF0LmhlaWdodCAvIDI7Cj4gPiA+ID4gKwkJCWRldl9kYmcoaW5zdC0+ ZGV2LT5kZXYsICIlczogc2l6ZVswXTogJXUgfCBzaXplWzFdOiAldVxuIiwKPiA+ID4gPiArCQkJ CV9fZnVuY19fLCBzaXplc1swXSwgc2l6ZXNbMV0pOwo+ID4gPiA+ICsJCX0gZWxzZSBpZiAoKm51 bV9wbGFuZXMgPT0gMykgewo+ID4gPiA+ICsJCQlzaXplc1swXSA9IGluc3RfZm9ybWF0LndpZHRo ICogaW5zdF9mb3JtYXQuaGVpZ2h0Owo+ID4gPiA+ICsJCQlpZiAoaW5zdC0+b3V0cHV0X2Zvcm1h dCA9PSBGT1JNQVRfNDIyKSB7Cj4gPiA+ID4gKwkJCQlzaXplc1sxXSA9IGluc3RfZm9ybWF0Lndp ZHRoICogaW5zdF9mb3JtYXQuaGVpZ2h0IC8gMjsKPiA+ID4gPiArCQkJCXNpemVzWzJdID0gaW5z dF9mb3JtYXQud2lkdGggKiBpbnN0X2Zvcm1hdC5oZWlnaHQgLyAyOwo+ID4gPiA+ICsJCQl9IGVs c2Ugewo+ID4gPiA+ICsJCQkJc2l6ZXNbMV0gPSBpbnN0X2Zvcm1hdC53aWR0aCAqIGluc3RfZm9y bWF0LmhlaWdodCAvIDQ7Cj4gPiA+ID4gKwkJCQlzaXplc1syXSA9IGluc3RfZm9ybWF0LndpZHRo ICogaW5zdF9mb3JtYXQuaGVpZ2h0IC8gNDsKPiA+ID4gPiArCQkJfQo+ID4gPiA+ICsJCQlkZXZf ZGJnKGluc3QtPmRldi0+ZGV2LCAiJXM6IHNpemVbMF06ICV1IHwgc2l6ZVsxXTogJXUgfCBzaXpl WzJdOiAldVxuIiwKPiA+ID4gPiArCQkJCV9fZnVuY19fLCBzaXplc1swXSwgc2l6ZXNbMV0sIHNp emVzWzJdKTsKPiA+ID4gPiArCQl9Cj4gPiA+ID4gKwl9Cj4gPiA+ID4gKwo+ID4gPiA+ICsJaWYg KGluc3QtPnN0YXRlID09IFZQVV9JTlNUX1NUQVRFX0lOSVRfU0VRICYmCj4gPiA+ID4gKwkgICAg cS0+dHlwZSA9PSBWNEwyX0JVRl9UWVBFX1ZJREVPX0NBUFRVUkVfTVBMQU5FKSB7Cj4gPiA+ID4g KwkJaWYgKCpudW1fYnVmZmVycyA+IGluc3QtPmRzdF9idWZfY291bnQgJiYKPiA+ID4gPiArCQkg ICAgKm51bV9idWZmZXJzIDwgV0FWRTVfTUFYX0ZCUykKPiA+ID4gPiArCQkJaW5zdC0+ZHN0X2J1 Zl9jb3VudCA9ICpudW1fYnVmZmVyczsKPiA+ID4gCj4gPiA+IEluIHRoZSBjcmVhdGVfYnVmcyBj YXNlLCAqbnVtX2J1ZmZlcnMgaXMgdGhlIG51bWJlciBvZiBidWZmZXJzIHlvdSBhcmUKPiA+ID4g YWRkaW5nIHRvIHRoZSBhbHJlYWR5IGV4aXN0aW5nIGJ1ZmZlcnMuIEZyYW5rbHksIHRoZSBsb2dp YyBoZXJlIGlzCj4gPiA+IGR1YmlvdXMuIEknbSBub3Qgc3VyZSB3aGF0IHRoZSBpbnRlbnQgaXMu IFdoeSBkbyB5b3UgbmVlZCB0byBrZWVwIHRyYWNrCj4gPiA+IG9mIHRoZSBidWYgY291bnQgYXQg YWxsIHdoZW4gdGhlIHZiMl9xdWV1ZSBhbHJlYWR5IGRvZXMgdGhhdD8KPiA+IAo+ID4gVGhpcyBu ZWVkcyB0byBiZSBjbGVhbmVkIHVwLiBDUkVBVEVfQlVGUyBjYXNlIGlzIG5vdCBzdXBwb3J0ZWQg Zm9yIGNhcHR1cmUsIGFuZAo+ID4gc28gdGhlcmUgaXMgbm8gc3VjaCB3ZWlyZG8gY2FzZSBzZWNv bmQgY2FsbHMgZm9yIHRoYXQgcXVldWUgYXQgbGVhc3QuIE1lYW53aGlsZSwKPiA+IGluc3QtPmRz dF9idWZfY291bnQgaXMgdXNlZCBhIE1JTl9CVUZGRVJTX0ZPUl9DQVBUVVJFIGluaXRpYWxseSwg YW5kIHRoZSBudW1iZXIKPiA+IG9mIGFsbG9jYXRlZCBidWZmZXIgbGF0ZXIuIEkgdGhpbmsgaXQg d291bGQgYmUgYmV0dGVyIHRvIHNpbXBseSBzdG9yZSB0aGUgbWluLAo+ID4gYW5kIHVzZSB0aGUg cXVldWUgdG8gdHJhY2sgdGhlIG51bWJlciBvZiBhbGxvY2F0ZWQgYnVmZmVycy4KPiA+IAo+ID4g SW4gdGhpcyBkaXZlciwgdGhlIHJlZmVyZW5jZSBmcmFtZSBhcmUgc3RvcmVkIHNlcGFyYXRlbHks IGFuZCBjb21wcmVzc2VkLiBUaGUKPiA+IGNhcHR1cmUgcXVldWUgY29udGFpbnMgdGhlIGRpc3Bs YXkgZnJhbWUuIFRoZXJlIGlzIGEgZ2FwIHdoZW4gY29tZXMgdGltZSB0bwo+ID4gdHJhbnNmZXIg dGltZXN0YW1wLCBhbmQgZm9yIHRoaXMgcmVhc29uIHdlIGhhZCB0byBrZWVwIHRoZSB0d28gZmJj X2NvdW50IGVxdWFsLgo+ID4gV2UgY2xhc3NpZmllZCB0aGlzIGFzIGhhcmR3YXJlIGlzc3VlIGFu ZCBtb3ZlZCBvbi4KPiA+IAo+ID4gSSB0aGluayB0aGUgZHN0X2J1Zl9jb3VudCBjYW4gYmUgZHJv cHBlZCBub3cgYW5kIHRoZSAiKm51bV9idWZmZXJzID4gaW5zdC0KPiA+ID4gZHN0X2J1Zl9jb3Vu dCIgbm90IGxvbmdlciBtYWtlIGFueSBzZW5zZS4KPiA+IAo+ID4gPiAKPiA+ID4gV0FWRTVfTUFY X0ZCUyA9PSAzMiwgd2hpY2ggaXMgVklERU9fTUFYX0ZSQU1FUy4gWW91IGNhbiBqdXN0IGRyb3Ag dGhlIGNoZWNrCj4gPiA+IGFnYWluc3QgV0FWRTVfTUFYX0ZCUyBzaW5jZSB0aGUgY29yZSBlbnN1 cmVzIGFscmVhZHkgaXQgd2lsbCBuZXZlciBhbGxvY2F0ZQo+ID4gPiBtb3JlIHRoYW4gVklERU9f TUFYX0ZSQU1FUy4KPiA+ID4gCj4gPiA+IEknbSBub3Qgc3VyZSB3aHkgV0FWRTVfTUFYX0ZCUyBp cyBkZWZpbmVkIGF0IGFsbCwgd2hlbiBpdCBpcyBqdXN0IGVxdWFsIHRvCj4gPiA+IFZJREVPX01B WF9GUkFNRVMuIFBlcmhhcHMgaXQgY2FuIGJlIHJlcGxhY2VkIGV2ZXJ5d2hlcmUgd2l0aCBWSURF T19NQVhfRlJBTUVTPwo+ID4gCj4gPiBUaGF0IGlzIG1vcmUgY2hhbGxlbmdpbmcgY2hhbmdlcywg c2luY2UgVklERU9fTUFYX0ZSQU1FUyBpcyBhIHNvZnR3YXJlCj4gPiBsaW1pdGF0aW9uLCBidXQg V0FWRTVfTUFYX0ZCUyBpcyBhIGhhcmR3YXJlIGxpbWl0YXRpb24uIEJ1ZmZlciBpbmRleCBvbmx5 IGhhdmUgNAo+ID4gYml0cyBvbiB0aGlzIGhhcmR3YXJlLiBBbmQgdGhlIG1hcmtpbmcgb2YgZnJh bWUgYmVpbmcgdXNlZCBmb3IgZGlzcGxheSBpcyB1c2luZwo+ID4gYSAzMmJpdCBmbGFnLiBDb25z aWRlcmluZyB0aGVyZSBpcyBlZmZvcnQgdG8gbGlmdCB0aGF0IHNvZnR3YXJlIGxpbWl0YXRpb24s IGl0Cj4gPiBzZWVtcyBpbGwgYWR2aXNlZCB0byBjb21wbGV0ZWx5IHN0b3AgZW5zdXJpbmcgdGhp cyBIVyBsaW1pdCBpcyByZXNwZWN0ZWQuCj4gCj4gSWYgdGhlcmUgYXJlIG9ubHkgNCBiaXRzIGZv ciB0aGUgYnVmZmVyIGluZGV4LCBzaG91bGRuJ3QgV0FWRTVfTUFYX0ZCUyBiZSAxNj8gT3IKPiBk aWQgeW91IG1lYW4gJzUgYml0cyc/IEFzc3VtaW5nIHRoYXQgeW91IG1lYW50ICc1IGJpdHMnLCB0 aGVuIHRoYXQgbWFrZXMKPiBXQVZFNV9NQVhfRkJTIGlkZW50aWNhbCB0byBWSURFT19NQVhfRlJB TUVTLCBidXQgdGhhdCBpcyBqdXN0IGx1Y2ssIHJlYWxseS4KPiAKPiBJbiBhbnkgY2FzZSwgeW91 IHNob3VsZCBkb2N1bWVudCBhdCB0aGUgcGxhY2Ugd2hlcmUgV0FWRTVfTUFYX0ZCUyBpcyBkZWZp bmVkIHRoYXQKPiB0aGlzIGlzIGEgaGFyZHdhcmUgbGltaXRhdGlvbiwgYW5kIG5vdCBhIHJhbmRv bSBzb2Z0d2FyZSBsaW1pdC4KPiAKPiBJIGFsc28gdGhpbmsgdGhhdCB0aGUgREVMRVRFX0JVRlMg c2VyaWVzIHNob3VsZCBhbGxvdyBkcml2ZXJzIHRvIHNldCBtYXhfbnVtX2J1ZmZlcnMKPiB0byBh IHZhbHVlIGxlc3MgdGhhbiAzMiAoY3VycmVudGx5IHRoZSByZXF1aXJlbWVudCBpcyB0aGF0IGl0 IGlzIGF0IGxlYXN0IDMyKS4KPiAKPiBJIHNhdyBhIGZldyBtb3JlIGRyaXZlcnMgdGhhdCBsaW1p dCB0aGUgbnVtYmVyIG9mIGJ1ZmZlcnMsIHVzdWFsbHkgYmFzZWQgb24gdGhlCj4gZm9ybWF0IChh bmQgc28gdGhlIGJ1ZmZlciBzaXplKSBhbmQgc29tZSBIVyBtZW1vcnkgbGltaXRhdGlvbi4gSXQg bWlnaHQgYmUgaW50ZXJlc3RpbmcKPiB0byBhbGxvdyBkcml2ZXJzIHRvIGNoYW5nZSBtYXhfbnVt X2J1ZmZlcnMgb24gdGhlIGZseSAocHJvdmlkZWQgbm8gYnVmZmVycyBhcmUKPiBhbGxvY2F0ZWQs IG9mIGNvdXJzZSkuIExpbWl0IGNoZWNraW5nIGlzIHJlYWxseSBzb21ldGhpbmcgdGhhdCB2YjIg c2hvdWxkIGRvLCBhbmQKPiBub3QgdGhlIGRyaXZlci4KPiAKPiA+IAo+ID4gSSdtIG9wZW4gZm9y IHN1Z2dlc3Rpb25zLgo+ID4gCj4gPiA+IAo+ID4gPiA+ICsKPiA+ID4gPiArCQkqbnVtX2J1ZmZl cnMgPSBpbnN0LT5kc3RfYnVmX2NvdW50Owo+ID4gPiA+ICsJfQo+ID4gPiA+ICsKPiA+ID4gPiAr CXJldHVybiAwOwo+ID4gPiA+ICt9Cj4gCj4gUmVnYXJkcywKPiAKPiAJSGFucwoKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwg bWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8v bGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net [23.128.96.19]) (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 CE07C48EB2 for ; Tue, 26 Sep 2023 23:29:59 +0000 (UTC) Received: from madras.collabora.co.uk (madras.collabora.co.uk [IPv6:2a00:1098:0:82:1000:25:2eeb:e5ab]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C49FC46A3; Tue, 26 Sep 2023 16:29:56 -0700 (PDT) Received: from nicolas-tpx395.localdomain (unknown [45.84.211.191]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: nicolas) by madras.collabora.co.uk (Postfix) with ESMTPSA id 17FCD660731C; Wed, 27 Sep 2023 00:29:54 +0100 (BST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1695770995; bh=KvkFiRPKdGvQj6Wwi6VvHejV7MQfknC6iOfkSZ6pmlE=; h=Subject:From:To:Cc:Date:In-Reply-To:References:From; b=LfBmxNENe/eR4pJ9lyOCjRMq+x7WuYXFbiKxTml38dPsrQMEqFaRtzEgGD1s5IhSH zXbf9W95YsRig7QHa2BGwVCKm76pJRZn1BGfSejxlwDB4dmUgTWObJtzTXPFL6t4ZW Trm8y9COhly+XRF/Vc4As0ZwgChdRFKOQ4gY2y3d/6a/5bCQzGIilz1kTK+a8t5NnY 0+QmMv9WdcnPWk81BQ4afIn377rIlDTcbQWAL/ORHTd8y3zdNGYmM7dEK7GOtcc606 Q9gzulHTxZfnOq+zD4suirgrC8DKRoWgU9ZCmEsidiCG1OSvWYQGydEnJNJ/+p4jw3 7wi79sNdbBYJw== Message-ID: <330a177320fd766af8eddb76f57ea728b2e36afe.camel@collabora.com> Subject: Re: [PATCH v12 5/7] media: chips-media: wave5: Add the v4l2 layer From: Nicolas Dufresne To: Hans Verkuil , Sebastian Fricke , Mauro Carvalho Chehab , Nas Chung , Sascha Hauer , Fabio Estevam , Rob Herring , Shawn Guo , Philipp Zabel , Jackson Lee , Krzysztof Kozlowski , NXP Linux Team , Conor Dooley , Pengutronix Kernel Team , Benjamin Gaignard Cc: devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Robert Beckett , linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, kernel@collabora.com Date: Wed, 27 Sep 2023 01:29:44 +0200 In-Reply-To: <6ae8a639-b9f5-4426-be49-5340a8b8b5e9@xs4all.nl> References: <20230915-wave5_v12_on_media_master-v12-0-92fc66cd685d@collabora.com> <20230915-wave5_v12_on_media_master-v12-5-92fc66cd685d@collabora.com> <7b159731dfbc2ab8243396eaec8f41be10af5160.camel@collabora.com> <6ae8a639-b9f5-4426-be49-5340a8b8b5e9@xs4all.nl> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable User-Agent: Evolution 3.48.4 (3.48.4-1.fc38) Precedence: bulk X-Mailing-List: devicetree@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_BLOCKED, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Le vendredi 22 septembre 2023 =C3=A0 09:33 +0200, Hans Verkuil a =C3=A9crit= =C2=A0: > On 21/09/2023 21:11, Nicolas Dufresne wrote: > > Le mercredi 20 septembre 2023 =C3=A0 17:13 +0200, Hans Verkuil a =C3=A9= crit=C2=A0: > > > On 15/09/2023 23:11, Sebastian Fricke wrote: > > > > From: Nas Chung > > > >=20 > > > > Add the decoder and encoder implementing the v4l2 > > > > API. This patch also adds the Makefile and the VIDEO_WAVE_VPU confi= g > > > >=20 > > > > Signed-off-by: Sebastian Fricke > > > > Signed-off-by: Nicolas Dufresne > > > > Signed-off-by: Robert Beckett > > > > Signed-off-by: Dafna Hirschfeld > > > > Signed-off-by: Nas Chung > > > > --- > > > > drivers/media/platform/chips-media/Kconfig | 1 + > > > > drivers/media/platform/chips-media/Makefile | 1 + > > > > drivers/media/platform/chips-media/wave5/Kconfig | 12 + > > > > drivers/media/platform/chips-media/wave5/Makefile | 10 + > > > > .../platform/chips-media/wave5/wave5-helper.c | 196 ++ > > > > .../platform/chips-media/wave5/wave5-helper.h | 30 + > > > > .../platform/chips-media/wave5/wave5-vpu-dec.c | 1965 ++++++++= ++++++++++++ > > > > .../platform/chips-media/wave5/wave5-vpu-enc.c | 1825 ++++++++= ++++++++++ > > > > .../media/platform/chips-media/wave5/wave5-vpu.c | 331 ++++ > > > > .../media/platform/chips-media/wave5/wave5-vpu.h | 83 + > > > > 10 files changed, 4454 insertions(+) > > > >=20 >=20 > >=20 > > > > +static int wave5_vpu_dec_set_eos_on_firmware(struct vpu_instance *= inst) > > > > +{ > > > > + int ret; > > > > + > > > > + ret =3D wave5_vpu_dec_update_bitstream_buffer(inst, 0); > > > > + if (ret) { > > > > + dev_err(inst->dev->dev, > > > > + "Setting EOS for the bitstream, fail: %d\n", ret); > > >=20 > > > Is this an error due to a driver problem, or because a bad bitstream = is > > > fed from userspace? In the first case, dev_err would be right, in the > > > second dev_dbg would be more appropriate. Bad userspace input should = not > > > spam the kernel log in general. > >=20 > > Its the first. To set the EOS flag, a command is sent to the firmware. = That > > command may never return (timeout) or may report an error. For this spe= cific > > command, if that happens we are likely facing firmware of driver proble= m (or > > both). >=20 > OK, I'd add that as a comment here as this is unexpected behavior. >=20 > >=20 > > >=20 > > > > + return ret; > > > > + } > > > > + return 0; > > > > +} >=20 > >=20 > > > > +static int wave5_vpu_dec_create_bufs(struct file *file, void *priv= , > > > > + struct v4l2_create_buffers *create) > > > > +{ > > > > + struct v4l2_format *f =3D &create->format; > > > > + > > > > + if (f->type =3D=3D V4L2_BUF_TYPE_VIDEO_CAPTURE) > > > > + return -ENOTTY; > > >=20 > > > Huh? Why is this needed? > >=20 > > Minimally a comment should be added. The why is that we support CREATE_= BUF for > > OUTPUT queue (bitstream) but not for CAPTURE queues. This is simply not > > supported by Wave5 firmware. Do you have any suggestion how this asymme= try can > > be implemented better ? >=20 > Certainly not with ENOTTY: the ioctl exists, it is just not supported for > CAPTURE queues. >=20 > How about -EPERM? And document this error as well in the VIDIOC_CREATE_BU= FS > documentation. And you want a dev_dbg here too. The suggestion cannot be used since there is documentation for that one alr= eady, and it does not match "unsupported". "Permission denied. Can be returned if the device needs write permission, o= r some special capabilities is needed (e. g. root)" What about using the most logical error code, which name is actually obviou= s, like ENOTSUP ? #define ENOTSUPP 524 /* Operation is not supported */ >=20 > So I would propose that EPERM is returned if CREATE_BUFS is only supporte= d > for for one of the two queues of an M2M device. Note that userspace does not care of the difference between an ioctl not be= ing implemented at all or not being implement for one queue. GStreamer have bee= n testing with both queue type for couple of years now. Adding this distincti= on is just leaking an implementation details to userspace. I'm fine to just do wh= at you'd like, just stating the obvious that while it may look logical inside = the kernel, its a bit of a non-sense for our users. regards, Nicolas >=20 > >=20 > > >=20 > > > > + > > > > + return v4l2_m2m_ioctl_create_bufs(file, priv, create); > > > > +} >=20 > >=20 > > > > +static int wave5_vpu_dec_queue_setup(struct vb2_queue *q, unsigned= int *num_buffers, > > > > + unsigned int *num_planes, unsigned int sizes[], > > > > + struct device *alloc_devs[]) > > > > +{ > > > > + struct vpu_instance *inst =3D vb2_get_drv_priv(q); > > > > + struct v4l2_pix_format_mplane inst_format =3D > > > > + (q->type =3D=3D V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE) ? inst->src_f= mt : inst->dst_fmt; > > > > + unsigned int i; > > > > + > > > > + dev_dbg(inst->dev->dev, "%s: num_buffers: %u | num_planes: %u | t= ype: %u\n", __func__, > > > > + *num_buffers, *num_planes, q->type); > > > > + > > > > + /* the CREATE_BUFS case */ > > > > + if (*num_planes) { > > > > + if (inst_format.num_planes !=3D *num_planes) > > > > + return -EINVAL; > > > > + > > > > + for (i =3D 0; i < *num_planes; i++) { > > > > + if (sizes[i] < inst_format.plane_fmt[i].sizeimage) > > > > + return -EINVAL; > > > > + } > > > > + /* the REQBUFS case */ > > > > + } else { > > > > + *num_planes =3D inst_format.num_planes; > > > > + > > > > + if (q->type =3D=3D V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE) { > > > > + sizes[0] =3D inst_format.plane_fmt[0].sizeimage; > > > > + dev_dbg(inst->dev->dev, "%s: size[0]: %u\n", __func__, sizes[0]= ); > > > > + } else if (*num_planes =3D=3D 1) { > > > > + if (inst->output_format =3D=3D FORMAT_422) > > > > + sizes[0] =3D inst_format.width * inst_format.height * 2; > > > > + else > > > > + sizes[0] =3D inst_format.width * inst_format.height * 3 / 2; > > > > + dev_dbg(inst->dev->dev, "%s: size[0]: %u\n", __func__, sizes[0]= ); > > > > + } else if (*num_planes =3D=3D 2) { > > > > + sizes[0] =3D inst_format.width * inst_format.height; > > > > + if (inst->output_format =3D=3D FORMAT_422) > > > > + sizes[1] =3D inst_format.width * inst_format.height; > > > > + else > > > > + sizes[1] =3D inst_format.width * inst_format.height / 2; > > > > + dev_dbg(inst->dev->dev, "%s: size[0]: %u | size[1]: %u\n", > > > > + __func__, sizes[0], sizes[1]); > > > > + } else if (*num_planes =3D=3D 3) { > > > > + sizes[0] =3D inst_format.width * inst_format.height; > > > > + if (inst->output_format =3D=3D FORMAT_422) { > > > > + sizes[1] =3D inst_format.width * inst_format.height / 2; > > > > + sizes[2] =3D inst_format.width * inst_format.height / 2; > > > > + } else { > > > > + sizes[1] =3D inst_format.width * inst_format.height / 4; > > > > + sizes[2] =3D inst_format.width * inst_format.height / 4; > > > > + } > > > > + dev_dbg(inst->dev->dev, "%s: size[0]: %u | size[1]: %u | size[2= ]: %u\n", > > > > + __func__, sizes[0], sizes[1], sizes[2]); > > > > + } > > > > + } > > > > + > > > > + if (inst->state =3D=3D VPU_INST_STATE_INIT_SEQ && > > > > + q->type =3D=3D V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE) { > > > > + if (*num_buffers > inst->dst_buf_count && > > > > + *num_buffers < WAVE5_MAX_FBS) > > > > + inst->dst_buf_count =3D *num_buffers; > > >=20 > > > In the create_bufs case, *num_buffers is the number of buffers you ar= e > > > adding to the already existing buffers. Frankly, the logic here is > > > dubious. I'm not sure what the intent is. Why do you need to keep tra= ck > > > of the buf count at all when the vb2_queue already does that? > >=20 > > This needs to be cleaned up. CREATE_BUFS case is not supported for capt= ure, and > > so there is no such weirdo case second calls for that queue at least. M= eanwhile, > > inst->dst_buf_count is used a MIN_BUFFERS_FOR_CAPTURE initially, and th= e number > > of allocated buffer later. I think it would be better to simply store t= he min, > > and use the queue to track the number of allocated buffers. > >=20 > > In this diver, the reference frame are stored separately, and compresse= d. The > > capture queue contains the display frame. There is a gap when comes tim= e to > > transfer timestamp, and for this reason we had to keep the two fbc_coun= t equal. > > We classified this as hardware issue and moved on. > >=20 > > I think the dst_buf_count can be dropped now and the "*num_buffers > in= st- > > > dst_buf_count" not longer make any sense. > >=20 > > >=20 > > > WAVE5_MAX_FBS =3D=3D 32, which is VIDEO_MAX_FRAMES. You can just drop= the check > > > against WAVE5_MAX_FBS since the core ensures already it will never al= locate > > > more than VIDEO_MAX_FRAMES. > > >=20 > > > I'm not sure why WAVE5_MAX_FBS is defined at all, when it is just equ= al to > > > VIDEO_MAX_FRAMES. Perhaps it can be replaced everywhere with VIDEO_MA= X_FRAMES? > >=20 > > That is more challenging changes, since VIDEO_MAX_FRAMES is a software > > limitation, but WAVE5_MAX_FBS is a hardware limitation. Buffer index on= ly have 4 > > bits on this hardware. And the marking of frame being used for display = is using > > a 32bit flag. Considering there is effort to lift that software limitat= ion, it > > seems ill advised to completely stop ensuring this HW limit is respecte= d. >=20 > If there are only 4 bits for the buffer index, shouldn't WAVE5_MAX_FBS be= 16? Or > did you mean '5 bits'? Assuming that you meant '5 bits', then that makes > WAVE5_MAX_FBS identical to VIDEO_MAX_FRAMES, but that is just luck, reall= y. >=20 > In any case, you should document at the place where WAVE5_MAX_FBS is defi= ned that > this is a hardware limitation, and not a random software limit. >=20 > I also think that the DELETE_BUFS series should allow drivers to set max_= num_buffers > to a value less than 32 (currently the requirement is that it is at least= 32). >=20 > I saw a few more drivers that limit the number of buffers, usually based = on the > format (and so the buffer size) and some HW memory limitation. It might b= e interesting > to allow drivers to change max_num_buffers on the fly (provided no buffer= s are > allocated, of course). Limit checking is really something that vb2 should= do, and > not the driver. >=20 > >=20 > > I'm open for suggestions. > >=20 > > >=20 > > > > + > > > > + *num_buffers =3D inst->dst_buf_count; > > > > + } > > > > + > > > > + return 0; > > > > +} >=20 > Regards, >=20 > Hans