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 29CDCC369AC for ; Tue, 8 Apr 2025 13:55:33 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:References:Cc:To:Subject: From:MIME-Version:Date:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=dN3oi1Fiso8WTw4MEZxrLiRAhUyfO4go8L5HszjV7Po=; b=Rk+HsVb+TQnS4B 6WwzHMsZn9o4i83SarCkfWlOYdZDJOoO924IcNo4tKNrHySeVgVOdsk/vX3ILvvjyfqFj2ddTa/Mn tYFvZ/CRuaHourIKFitTrcJWCeObX2yjfhsKuDBFeRQJzkm+zbANC/P1kGJvvd+GJlRSTDZrs/YPp O7ccf91g6eSKEw21c6xxa/3GxrF4igxLiuEMWqVWxxONlvfDaYMZXnyuHmp2JbvdARbdJ+A47RQ+J CuMXimo0xylFnin2NgV3fQxJjskA0Pr0Rb9/1otZCbteg1fSh4U1NECr+Tl1yRfmriCCxBfGll/6G j8Hg6talsKyiZhSBfP1A==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.1 #2 (Red Hat Linux)) id 1u29QK-00000004HO3-3IJM; Tue, 08 Apr 2025 13:55:32 +0000 Received: from out-177.mta1.migadu.com ([95.215.58.177]) by bombadil.infradead.org with esmtps (Exim 4.98.1 #2 (Red Hat Linux)) id 1u29Cl-00000004F8X-3KaF for linux-phy@lists.infradead.org; Tue, 08 Apr 2025 13:41:38 +0000 Message-ID: <94a1f5bf-5b6d-47cc-a344-753a8a5272bd@linux.dev> DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1744119688; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=UJ24xdldXfdfyi1hupLmHyJNywDoo6R03YHUziiP89M=; b=ndVeUD8/kmEJGa0tXr+U2XGei6GsKw6VxzY1HY/8dfxqLJXpDOk3JwaAWHvPTzlganu84O FTxfRsXeLa5VY5i5pvXul53pqFATDlZYfrWCQiynWbpVdOfLi9AY64rOMtFLNkbJ0n0S+b QCr/G4TBZyYWYZqUE4WroZ/OTQRGGM4= Date: Tue, 8 Apr 2025 19:10:34 +0530 MIME-Version: 1.0 X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. From: Aradhya Bhatia Subject: Re: [PATCH v2 12/18] drm/bridge: cdns-dsi: Drop checks that shouldn't be in .mode_valid() To: Tomi Valkeinen , Dmitry Baryshkov Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-phy@lists.infradead.org, Francesco Dolcini , Devarsh Thakkar , Jyri Sarha , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Vinod Koul , Kishon Vijay Abraham I , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec References: <20250402-cdns-dsi-impro-v2-0-4a093eaa5e27@ideasonboard.com> <20250402-cdns-dsi-impro-v2-12-4a093eaa5e27@ideasonboard.com> <46dc6803-47f0-4434-9794-08307604e450@linux.dev> <03142c89-fc5a-45cf-9233-549ec1b9a469@ideasonboard.com> Content-Language: en-US In-Reply-To: <03142c89-fc5a-45cf-9233-549ec1b9a469@ideasonboard.com> X-Migadu-Flow: FLOW_OUT X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250408_064132_353368_6DF1FC96 X-CRM114-Status: GOOD ( 28.67 ) 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: , 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 SGkgVG9taSwKCk9uIDA4LzA0LzI1IDEyOjM5LCBUb21pIFZhbGtlaW5lbiB3cm90ZToKPiBIaSwK PiAKPiBPbiAwOC8wNC8yMDI1IDA5OjA5LCBUb21pIFZhbGtlaW5lbiB3cm90ZToKPj4gSGksCj4+ Cj4+IE9uIDA3LzA0LzIwMjUgMjA6NTksIEFyYWRoeWEgQmhhdGlhIHdyb3RlOgo+Pj4gSGkgVG9t aSwKPj4+Cj4+PiBPbiAwMi8wNC8yNSAxOTowMCwgVG9taSBWYWxrZWluZW4gd3JvdGU6Cj4+Pj4g VGhlIGRvY3Mgc2F5IGFib3V0IG1vZGVfdmFsaWQoKToKPj4+Pgo+Pj4+ICJpdCBpcyBub3QgYWxs b3dlZCB0byBsb29rIGF0IGFueXRoaW5nIGVsc2UgYnV0IHRoZSBwYXNzZWQtaW4gbW9kZSwgYW5k Cj4+Pj4gdmFsaWRhdGUgaXQgYWdhaW5zdCBjb25maWd1cmF0aW9uLWludmFyaWFudCBoYXJkd2Fy ZSBjb25zdHJhaW50cyIKPj4+Pgo+Pj4+IFdlJ3JlIGRvaW5nIGEgbG90IG1vcmUgdGhhbiBqdXN0 IGxvb2tpbmcgYXQgdGhlIG1vZGUuIFRoZSBtYWluIGlzc3VlCj4+Pj4gaGVyZSBpcyB0aGF0IHdl J3JlIGRvaW5nIGNoZWNrcyBiYXNlZCBvbiB0aGUgcGl4ZWwgY2xvY2ssIGJlZm9yZSB3ZQo+Pj4+ IGtub3cKPj4+PiB3aGF0IHRoZSBwaXhlbCBjbG9jayBmcm9tIHRoZSBjcnRjIGFjdHVhbGx5IGlz Lgo+Pj4+Cj4+Pj4gU28sIGRyb3AgdGhlIGNoZWNrcyBmcm9tIC5tb2RlX3ZhbGlkKCkuIFRoaXMg YWxzbyBhbGxvd3MgdXMgdG8gcmVtb3ZlCj4+Pj4gdGhlICdtb2RlX3ZhbGlkX2NoZWNrJyBwYXJh bWV0ZXIgZnJvbSBpbnRlcm5hbCBmdW5jdGlvbnMsIGFuZCB0aGUKPj4+PiByZWxhdGVkIGNvZGUu Cj4+Pj4KPj4+PiBTaWduZWQtb2ZmLWJ5OiBUb21pIFZhbGtlaW5lbiA8dG9taS52YWxrZWluZW5A aWRlYXNvbmJvYXJkLmNvbT4KPj4+PiAtLS0KPj4+PiDCoCBkcml2ZXJzL2dwdS9kcm0vYnJpZGdl L2NhZGVuY2UvY2Rucy1kc2ktY29yZS5jIHwgNDQgKysrKysrKwo+Pj4+ICstLS0tLS0tLS0tLS0t LS0tLS0KPj4+PiDCoCAxIGZpbGUgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKSwgMzAgZGVsZXRp b25zKC0pCj4+Pj4KPj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9jYWRl bmNlL2NkbnMtZHNpLWNvcmUuYyBiLwo+Pj4+IGRyaXZlcnMvZ3B1L2RybS9icmlkZ2UvY2FkZW5j ZS9jZG5zLWRzaS1jb3JlLmMKPj4+PiBpbmRleCBlODVjODY1MmM5NmUuLmNmNzgzNjgwYjFiNCAx MDA2NDQKPj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2NhZGVuY2UvY2Rucy1kc2kt Y29yZS5jCj4+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9jYWRlbmNlL2NkbnMtZHNp LWNvcmUuYwo+Pj4+IEBAIC00NjksMjUgKzQ2OSwxNyBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGRw aV90b19kc2lfdGltaW5nKHVuc2lnbmVkCj4+Pj4gaW50IGRwaV90aW1pbmcsCj4+Pj4gwqAgc3Rh dGljIGludCBjZG5zX2RzaV9tb2RlMmNmZyhzdHJ1Y3QgY2Ruc19kc2kgKmRzaSwKPj4+PiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5 X21vZGUgKm1vZGUsCj4+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVj dCBjZG5zX2RzaV9jZmcgKmRzaV9jZmcsCj4+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIGJvb2wgbW9kZV92YWxpZF9jaGVjaykKPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgc3RydWN0IGNkbnNfZHNpX2NmZyAqZHNpX2NmZykKPj4+PiDCoCB7Cj4+Pj4g wqDCoMKgwqDCoCBzdHJ1Y3QgY2Ruc19kc2lfb3V0cHV0ICpvdXRwdXQgPSAmZHNpLT5vdXRwdXQ7 Cj4+Pj4gwqDCoMKgwqDCoCB1MzIgZHBpX2hzYSwgZHBpX2hicCwgZHBpX2hmcCwgZHBpX2hhY3Q7 Cj4+Pj4gwqDCoMKgwqDCoCBib29sIHN5bmNfcHVsc2U7Cj4+Pj4gwqDCoMKgwqDCoCBpbnQgYnBw Owo+Pj4+IC3CoMKgwqAgaWYgKG1vZGVfdmFsaWRfY2hlY2spIHsKPj4+PiAtwqDCoMKgwqDCoMKg wqAgZHBpX2hzYSA9IG1vZGUtPmhzeW5jX2VuZCAtIG1vZGUtPmhzeW5jX3N0YXJ0Owo+Pj4+IC3C oMKgwqDCoMKgwqDCoCBkcGlfaGJwID0gbW9kZS0+aHRvdGFsIC0gbW9kZS0+aHN5bmNfZW5kOwo+ Pj4+IC3CoMKgwqDCoMKgwqDCoCBkcGlfaGZwID0gbW9kZS0+aHN5bmNfc3RhcnQgLSBtb2RlLT5o ZGlzcGxheTsKPj4+PiAtwqDCoMKgwqDCoMKgwqAgZHBpX2hhY3QgPSBtb2RlLT5oZGlzcGxheTsK Pj4+PiAtwqDCoMKgIH0gZWxzZSB7Cj4+Pj4gLcKgwqDCoMKgwqDCoMKgIGRwaV9oc2EgPSBtb2Rl LT5jcnRjX2hzeW5jX2VuZCAtIG1vZGUtPmNydGNfaHN5bmNfc3RhcnQ7Cj4+Pj4gLcKgwqDCoMKg wqDCoMKgIGRwaV9oYnAgPSBtb2RlLT5jcnRjX2h0b3RhbCAtIG1vZGUtPmNydGNfaHN5bmNfZW5k Owo+Pj4+IC3CoMKgwqDCoMKgwqDCoCBkcGlfaGZwID3CoCBtb2RlLT5jcnRjX2hzeW5jX3N0YXJ0 IC0gbW9kZS0+Y3J0Y19oZGlzcGxheTsKPj4+PiAtwqDCoMKgwqDCoMKgwqAgZHBpX2hhY3QgPSBt b2RlLT5jcnRjX2hkaXNwbGF5Owo+Pj4+IC3CoMKgwqAgfQo+Pj4+ICvCoMKgwqAgZHBpX2hzYSA9 IG1vZGUtPmNydGNfaHN5bmNfZW5kIC0gbW9kZS0+Y3J0Y19oc3luY19zdGFydDsKPj4+PiArwqDC oMKgIGRwaV9oYnAgPSBtb2RlLT5jcnRjX2h0b3RhbCAtIG1vZGUtPmNydGNfaHN5bmNfZW5kOwo+ Pj4+ICvCoMKgwqAgZHBpX2hmcCA9wqAgbW9kZS0+Y3J0Y19oc3luY19zdGFydCAtIG1vZGUtPmNy dGNfaGRpc3BsYXk7Cj4+Pj4gK8KgwqDCoCBkcGlfaGFjdCA9IG1vZGUtPmNydGNfaGRpc3BsYXk7 Cj4+Pj4gwqDCoMKgwqDCoCBtZW1zZXQoZHNpX2NmZywgMCwgc2l6ZW9mKCpkc2lfY2ZnKSk7Cj4+ Pj4gQEAgLTUxOCw4ICs1MTAsNyBAQCBzdGF0aWMgaW50IGNkbnNfZHNpX21vZGUyY2ZnKHN0cnVj dCBjZG5zX2RzaSAqZHNpLAo+Pj4+IMKgIHN0YXRpYyBpbnQgY2Ruc19kc2lfYWRqdXN0X3BoeV9j b25maWcoc3RydWN0IGNkbnNfZHNpICpkc2ksCj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgc3RydWN0IGNkbnNfZHNpX2NmZyAqZHNpX2NmZywKPj4+PiDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgcGh5X2NvbmZpZ3VyZV9vcHRz X21pcGlfZHBoeSAqcGh5X2NmZywKPj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBjb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSwKPj4+PiAtwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBib29sIG1vZGVfdmFsaWRfY2hlY2spCj4+Pj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5 X21vZGUgKm1vZGUpCj4+Pj4gwqAgewo+Pj4+IMKgwqDCoMKgwqAgc3RydWN0IGNkbnNfZHNpX291 dHB1dCAqb3V0cHV0ID0gJmRzaS0+b3V0cHV0Owo+Pj4+IMKgwqDCoMKgwqAgdW5zaWduZWQgbG9u ZyBsb25nIGRsYW5lX2JwczsKPj4+PiBAQCAtNTQ5LDExICs1NDAsMTEgQEAgc3RhdGljIGludCBj ZG5zX2RzaV9hZGp1c3RfcGh5X2NvbmZpZyhzdHJ1Y3QKPj4+PiBjZG5zX2RzaSAqZHNpLAo+Pj4+ IMKgwqDCoMKgwqAgaWYgKGRzaV9odG90YWwgJSBsYW5lcykKPj4+PiDCoMKgwqDCoMKgwqDCoMKg wqAgYWRqX2RzaV9odG90YWwgKz0gbGFuZXMgLSAoZHNpX2h0b3RhbCAlIGxhbmVzKTsKPj4+PiAt wqDCoMKgIGRwaV9oeiA9IChtb2RlX3ZhbGlkX2NoZWNrID8gbW9kZS0+Y2xvY2sgOiBtb2RlLT5j cnRjX2Nsb2NrKSAqCj4+Pj4gMTAwMDsKPj4+PiArwqDCoMKgIGRwaV9oeiA9IG1vZGUtPmNydGNf Y2xvY2sgKiAxMDAwOwo+Pj4+IMKgwqDCoMKgwqAgZGxhbmVfYnBzID0gKHVuc2lnbmVkIGxvbmcg bG9uZylkcGlfaHogKiBhZGpfZHNpX2h0b3RhbDsKPj4+PiDCoMKgwqDCoMKgIC8qIGRhdGEgcmF0 ZSBpbiBieXRlcy9zZWMgaXMgbm90IGFuIGludGVnZXIsIHJlZnVzZSB0aGUgbW9kZS4gKi8KPj4+ PiAtwqDCoMKgIGRwaV9odG90YWwgPSBtb2RlX3ZhbGlkX2NoZWNrID8gbW9kZS0+aHRvdGFsIDog bW9kZS0+Y3J0Y19odG90YWw7Cj4+Pj4gK8KgwqDCoCBkcGlfaHRvdGFsID0gbW9kZS0+Y3J0Y19o dG90YWw7Cj4+Pj4gwqDCoMKgwqDCoCBpZiAoZG9fZGl2KGRsYW5lX2JwcywgbGFuZXMgKiBkcGlf aHRvdGFsKSkKPj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1FSU5WQUw7Cj4+Pj4gQEAg LTU2OSwyNyArNTYwLDI1IEBAIHN0YXRpYyBpbnQgY2Ruc19kc2lfYWRqdXN0X3BoeV9jb25maWco c3RydWN0Cj4+Pj4gY2Ruc19kc2kgKmRzaSwKPj4+PiDCoCBzdGF0aWMgaW50IGNkbnNfZHNpX2No ZWNrX2NvbmYoc3RydWN0IGNkbnNfZHNpICpkc2ksCj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBjb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSwK Pj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBjZG5zX2Rz aV9jZmcgKmRzaV9jZmcsCj4+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBib29sIG1vZGVfdmFsaWRfY2hlY2spCj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBzdHJ1Y3QgY2Ruc19kc2lfY2ZnICpkc2lfY2ZnKQo+Pj4+IMKgIHsKPj4+PiDC oMKgwqDCoMKgIHN0cnVjdCBjZG5zX2RzaV9vdXRwdXQgKm91dHB1dCA9ICZkc2ktPm91dHB1dDsK Pj4+PiDCoMKgwqDCoMKgIHN0cnVjdCBwaHlfY29uZmlndXJlX29wdHNfbWlwaV9kcGh5ICpwaHlf Y2ZnID0gJm91dHB1dC0KPj4+PiA+cGh5X29wdHMubWlwaV9kcGh5Owo+Pj4+IMKgwqDCoMKgwqAg dW5zaWduZWQgaW50IG5sYW5lcyA9IG91dHB1dC0+ZGV2LT5sYW5lczsKPj4+PiAtwqDCoMKgIGlu dCBtb2RlX2Nsb2NrID0gKG1vZGVfdmFsaWRfY2hlY2sgPyBtb2RlLT5jbG9jayA6IG1vZGUtCj4+ Pj4gPmNydGNfY2xvY2spOwo+Pj4+IMKgwqDCoMKgwqAgdW5zaWduZWQgbG9uZyByZXFfaHNfY2xr X3JhdGU7Cj4+Pj4gwqDCoMKgwqDCoCBpbnQgcmV0Owo+Pj4+IC3CoMKgwqAgcmV0ID0gY2Ruc19k c2lfbW9kZTJjZmcoZHNpLCBtb2RlLCBkc2lfY2ZnLCBtb2RlX3ZhbGlkX2NoZWNrKTsKPj4+PiAr wqDCoMKgIHJldCA9IGNkbnNfZHNpX21vZGUyY2ZnKGRzaSwgbW9kZSwgZHNpX2NmZyk7Cj4+Pj4g wqDCoMKgwqDCoCBpZiAocmV0KQo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gcmV0Owo+ Pj4+IC3CoMKgwqAgcmV0ID0gcGh5X21pcGlfZHBoeV9nZXRfZGVmYXVsdF9jb25maWcobW9kZV9j bG9jayAqIDEwMDAsCj4+Pj4gK8KgwqDCoCByZXQgPSBwaHlfbWlwaV9kcGh5X2dldF9kZWZhdWx0 X2NvbmZpZyhtb2RlLT5jcnRjX2Nsb2NrICogMTAwMCwKPj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBtaXBpX2RzaV9waXhlbF9mb3Jt YXRfdG9fYnBwKG91dHB1dC0KPj4+PiA+ZGV2LT5mb3JtYXQpLAo+Pj4+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG5sYW5lcywgcGh5X2Nm Zyk7Cj4+Pj4gwqDCoMKgwqDCoCBpZiAocmV0KQo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1 cm4gcmV0Owo+Pj4+IC3CoMKgwqAgcmV0ID0gY2Ruc19kc2lfYWRqdXN0X3BoeV9jb25maWcoZHNp LCBkc2lfY2ZnLCBwaHlfY2ZnLCBtb2RlLAo+Pj4+IG1vZGVfdmFsaWRfY2hlY2spOwo+Pj4+ICvC oMKgwqAgcmV0ID0gY2Ruc19kc2lfYWRqdXN0X3BoeV9jb25maWcoZHNpLCBkc2lfY2ZnLCBwaHlf Y2ZnLCBtb2RlKTsKPj4+PiDCoMKgwqDCoMKgIGlmIChyZXQpCj4+Pj4gwqDCoMKgwqDCoMKgwqDC oMKgIHJldHVybiByZXQ7Cj4+Pj4gQEAgLTYzNSw4ICs2MjQsNyBAQCBjZG5zX2RzaV9icmlkZ2Vf bW9kZV92YWxpZChzdHJ1Y3QgZHJtX2JyaWRnZQo+Pj4+ICpicmlkZ2UsCj4+Pj4gwqDCoMKgwqDC oCBzdHJ1Y3QgY2Ruc19kc2lfaW5wdXQgKmlucHV0ID0gYnJpZGdlX3RvX2NkbnNfZHNpX2lucHV0 KGJyaWRnZSk7Cj4+Pj4gwqDCoMKgwqDCoCBzdHJ1Y3QgY2Ruc19kc2kgKmRzaSA9IGlucHV0X3Rv X2RzaShpbnB1dCk7Cj4+Pj4gwqDCoMKgwqDCoCBzdHJ1Y3QgY2Ruc19kc2lfb3V0cHV0ICpvdXRw dXQgPSAmZHNpLT5vdXRwdXQ7Cj4+Pj4gLcKgwqDCoCBzdHJ1Y3QgY2Ruc19kc2lfY2ZnIGRzaV9j Zmc7Cj4+Pj4gLcKgwqDCoCBpbnQgYnBwLCByZXQ7Cj4+Pj4gK8KgwqDCoCBpbnQgYnBwOwo+Pj4+ IMKgwqDCoMKgwqAgLyoKPj4+PiDCoMKgwqDCoMKgwqAgKiBWRlBfRFNJIHNob3VsZCBiZSBsZXNz IHRoYW4gVkZQX0RQSSBhbmQgVkZQX0RTSSBzaG91bGQgYmUgYXQKPj4+PiBAQCAtNjU0LDEwICs2 NDIsNiBAQCBjZG5zX2RzaV9icmlkZ2VfbW9kZV92YWxpZChzdHJ1Y3QgZHJtX2JyaWRnZQo+Pj4+ ICpicmlkZ2UsCj4+Pj4gwqDCoMKgwqDCoCBpZiAoKG1vZGUtPmhkaXNwbGF5ICogYnBwKSAlIDMy KQo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gTU9ERV9IX0lMTEVHQUw7Cj4+Pj4gLcKg wqDCoCByZXQgPSBjZG5zX2RzaV9jaGVja19jb25mKGRzaSwgbW9kZSwgJmRzaV9jZmcsIHRydWUp Owo+Pj4+IC3CoMKgwqAgaWYgKHJldCkKPj4+PiAtwqDCoMKgwqDCoMKgwqAgcmV0dXJuIE1PREVf QkFEOwo+Pj4+IC0KPj4+PiDCoMKgwqDCoMKgIHJldHVybiBNT0RFX09LOwo+Pj4+IMKgIH0KPj4+ PiBAQCAtOTk2LDcgKzk4MCw3IEBAIHN0YXRpYyBpbnQgY2Ruc19kc2lfYnJpZGdlX2F0b21pY19j aGVjayhzdHJ1Y3QKPj4+PiBkcm1fYnJpZGdlICpicmlkZ2UsCj4+Pj4gwqDCoMKgwqDCoCBhZGp1 c3RlZF9jcnRjX21vZGUtPmZsYWdzICY9IH4oRFJNX01PREVfRkxBR19QSFNZTkMgfAo+Pj4+IERS TV9NT0RFX0ZMQUdfUFZTWU5DKTsKPj4+PiDCoMKgwqDCoMKgIGFkanVzdGVkX2NydGNfbW9kZS0+ ZmxhZ3MgfD0gRFJNX01PREVfRkxBR19OSFNZTkMgfAo+Pj4+IERSTV9NT0RFX0ZMQUdfTlZTWU5D Owo+Pj4+IC3CoMKgwqAgcmV0dXJuIGNkbnNfZHNpX2NoZWNrX2NvbmYoZHNpLCBtb2RlLCBkc2lf Y2ZnLCBmYWxzZSk7Cj4+Pj4gK8KgwqDCoCByZXR1cm4gY2Ruc19kc2lfY2hlY2tfY29uZihkc2ks IG1vZGUsIGRzaV9jZmcpOwo+Pj4KPj4+IFdpdGggdGhpcyBwYXRjaCwgdGhlIGRyaXZlciBzaGlm dHMgdG8gdXNpbmcgdGhlIGNydGNfKiB2YWx1ZXMgZHVyaW5nIHRoZQo+Pj4gY2hlY2sgcGhhc2Us IGFuZCB0aGVuLCBpdCBpcyBicm91Z2h0IGJhY2sgdG8gdXNpbmcgbm9uIGNydGNfKiB2YWx1ZXMg aW4KPj4+IHRoZSBuZXh0IHBhdGNoLgo+Pj4KPj4+IFNob3VsZCB0aGlzIHBhdGNoIGp1c3QgZHJv cCB0aGUgY2Ruc19kc2lfY2hlY2tfY29uZigpIGNoZWNrIGZyb20KPj4+IC5tb2RlX3ZhbGlkKCkg aW5zdGVhZCwgYW5kIGxldCB0aGUgbmV4dCBwYXRjaCBwaGFzZSBvdXQgdGhlCj4+PiBtZG9lX3Zh bGlkX2NoZWNrIHBhcmFtZXRlciBhcyB0aGUgZHJpdmVyIHNpbXVsdGFuZW91c2x5IHNoaWZ0cyB0 byB1c2luZwo+Pj4gdGhlIG5vbiBjcnRjXyogdmFsdWVzIHRocm91Z2hvdXQ/Cj4+Cj4+IFllcy4K PiAKPiBBY3R1YWxseSwgdGhpcyBwYXRjaCBkb2Vzbid0IGNoYW5nZSB0aGUgY3J0Y18qIHZzIG5v bi1jcnRjXyogYmVoYXZpb3IuCj4gQWZ0ZXIgZHJvcHBpbmcgdGhlIGNkbnNfZHNpX2NoZWNrX2Nv bmYoKSBjYWxsIGluIG1vZGVfdmFsaWQoKSwgdGhlCj4gJ21vZGVfdmFsaWRfY2hlY2snIGlzIGFs d2F5cyBmYWxzZS4gU28gdGhpcyBwYXRjaCByZW1vdmVzIHRoZSBwYXJhbWV0ZXIsCj4gYW5kIGFu eSBjb2RlIHBhdGhzIGZvciB0aGUgdHJ1ZS1jYXNlLgo+IAo+IFNob3VsZCB0aGUgYXRvbWljX2No ZWNrKCkgaGF2ZSBiZWVuIHVzaW5nICd0cnVlJyBmb3IgdGhlCj4gJ21vZGVfdmFsaWRfY2hlY2sn PyBUaGUgYXRvbWljX2NoZWNrIGNvZGUgd2FzIGFkZGVkIGluCj4gYTUzZDk4Nzc1NmVhYjQwNjc4 ZjI0MWQ3Y2QwZWI3ZTFjYTQyYmJhNy4KPiAKCllvdSBhcmUgcmlnaHQuIEkgaGFkIGxvc3QgYSBi aXQgb2YgY29udGV4dCB0aGVyZS4KClVwb24gc2VlaW5nIHRoZSBjaGFuZ2UgbG9ncywgYW5kIGhp c3RvcnkgZm9yIG15IERTSSBwYXRjaGVzLCBpdCBzZWVtcwp0aGF0IHRoZSBfYXRvbWljX2NoZWNr KCkgd2FzIGFkZGVkIGFzIGEgcmVwbGFjZW1lbnQgZm9yIHRoZSBjaGVjayB0aGF0CndhcyB0YWtp bmcgcGxhY2UgaW4gdGhlIF8oYXRvbWljKV9lbmFibGUoKSwgYmVjYXVzZSB0aGUgZW5hYmxlLXBh dGggd2FzCm5vdCB0aGUgcmlnaHQgcGxhY2UgdG8gZG8gc28uCgpTaW5jZSB0aGUgZW5hYmxlLXBh dGggd29ya2VkIG9uIGNydGNfKiB2YWx1ZXMsIHRoZSBjaGVjayB1c2VkIHRvIGhhcHBlbgp3aXRo IGNydGNfKiB2YWx1ZXMuIEFuZCB0aGVuIHRoZSBfYXRvbWljX2NoZWNrKCkgY29udGludWVkIHRv IHVzZSB0aGUKY3J0Y18qIHZhbHVlcyBhZnRlciB0aGUgcGF0Y2guCgpCdXQsIHNpbmNlIHRoZSBj cnRjXyogdmFsdWVzIGRvbid0IGdldCBwb3B1bGF0ZWQgYmVmb3JlIHRoZSBicmlkZ2UncwpjaGVj ay1waGFzZSwgdGhlIGNydGNfKiB2YWx1ZXMgc2hvdWxkbid0IGJlIHVzZWQgYXQgdGhpcyBzdGFn ZSBmb3IgYW55CmNoZWNrcy4KVGhleSBhcmUgZ2V0dGluZyBwb3B1bGF0ZWQgaW4gdGhpcyBjYXNl LCB2aWEgdGhlIGZiZGV2X2NsaWVudF9zZXR1cCwgaWYKSSB1bmRlcnN0YW5kIHRoYXQgcmlnaHQu IEJ1dCBpdCdzIG5vdCByaWdodCB0byBkZXBlbmQgb24gZmJkZXYgYXMgaXQgY2FuCmJlIGRpc2Fi bGVkLgoKU28sIGl0IHdvdWxkIG1ha2Ugc2Vuc2UgdG8gdXNlICd0cnVlJyBmb3IgdGhlIGBtb2Rl X3ZhbGlkX2NoZWNrYApwYXJhbWV0ZXIgaGVyZS4gQW5kLCBJIHdpbGwgcG9zdCBhIGZpeCBmb3Ig dGhpcy4KCgpIb3dldmVyLCB3ZSBoYXZlIGFub3RoZXIgcXVlc3Rpb24uIEhvdyB3b3VsZCB0aGUg ZHJpdmVyIHZlcmlmeSB0aGUKY3J0Y18qIHZhbHVlcyB0aGVuLCBpZiBub3QgZHVyaW5nIHRoZSBl bmFibGUtcGF0aD8gRWZmZWN0aXZlbHksIGl0IG1pZ2h0Cm5vdCBtYXR0ZXIgZm9yIHRoaXMgZHJp dmVyLCBidXQgdGhlcmUgc2hvdWxkIGJlIGEgZ2VuZXJhbCBndWlkZWxpbmUuCgoKLS0KUmVnYXJk cwpBcmFkaHlhCgotLSAKbGludXgtcGh5IG1haWxpbmcgbGlzdApsaW51eC1waHlAbGlzdHMuaW5m cmFkZWFkLm9yZwpodHRwczovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9s aW51eC1waHkK 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 gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (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 E9DEAC369A2 for ; Tue, 8 Apr 2025 13:41:43 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 4557410E6A6; Tue, 8 Apr 2025 13:41:43 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (1024-bit key; unprotected) header.d=linux.dev header.i=@linux.dev header.b="ndVeUD8/"; dkim-atps=neutral Received: from out-186.mta1.migadu.com (out-186.mta1.migadu.com [95.215.58.186]) by gabe.freedesktop.org (Postfix) with ESMTPS id 68C7610E6A6 for ; Tue, 8 Apr 2025 13:41:33 +0000 (UTC) Message-ID: <94a1f5bf-5b6d-47cc-a344-753a8a5272bd@linux.dev> DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1744119688; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=UJ24xdldXfdfyi1hupLmHyJNywDoo6R03YHUziiP89M=; b=ndVeUD8/kmEJGa0tXr+U2XGei6GsKw6VxzY1HY/8dfxqLJXpDOk3JwaAWHvPTzlganu84O FTxfRsXeLa5VY5i5pvXul53pqFATDlZYfrWCQiynWbpVdOfLi9AY64rOMtFLNkbJ0n0S+b QCr/G4TBZyYWYZqUE4WroZ/OTQRGGM4= Date: Tue, 8 Apr 2025 19:10:34 +0530 MIME-Version: 1.0 X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. From: Aradhya Bhatia Subject: Re: [PATCH v2 12/18] drm/bridge: cdns-dsi: Drop checks that shouldn't be in .mode_valid() To: Tomi Valkeinen , Dmitry Baryshkov Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-phy@lists.infradead.org, Francesco Dolcini , Devarsh Thakkar , Jyri Sarha , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Vinod Koul , Kishon Vijay Abraham I , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec References: <20250402-cdns-dsi-impro-v2-0-4a093eaa5e27@ideasonboard.com> <20250402-cdns-dsi-impro-v2-12-4a093eaa5e27@ideasonboard.com> <46dc6803-47f0-4434-9794-08307604e450@linux.dev> <03142c89-fc5a-45cf-9233-549ec1b9a469@ideasonboard.com> Content-Language: en-US In-Reply-To: <03142c89-fc5a-45cf-9233-549ec1b9a469@ideasonboard.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Migadu-Flow: FLOW_OUT X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Hi Tomi, On 08/04/25 12:39, Tomi Valkeinen wrote: > Hi, > > On 08/04/2025 09:09, Tomi Valkeinen wrote: >> Hi, >> >> On 07/04/2025 20:59, Aradhya Bhatia wrote: >>> Hi Tomi, >>> >>> On 02/04/25 19:00, Tomi Valkeinen wrote: >>>> The docs say about mode_valid(): >>>> >>>> "it is not allowed to look at anything else but the passed-in mode, and >>>> validate it against configuration-invariant hardware constraints" >>>> >>>> We're doing a lot more than just looking at the mode. The main issue >>>> here is that we're doing checks based on the pixel clock, before we >>>> know >>>> what the pixel clock from the crtc actually is. >>>> >>>> So, drop the checks from .mode_valid(). This also allows us to remove >>>> the 'mode_valid_check' parameter from internal functions, and the >>>> related code. >>>> >>>> Signed-off-by: Tomi Valkeinen >>>> --- >>>>   drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c | 44 +++++++ >>>> +------------------ >>>>   1 file changed, 14 insertions(+), 30 deletions(-) >>>> >>>> diff --git a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c b/ >>>> drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c >>>> index e85c8652c96e..cf783680b1b4 100644 >>>> --- a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c >>>> +++ b/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c >>>> @@ -469,25 +469,17 @@ static unsigned int dpi_to_dsi_timing(unsigned >>>> int dpi_timing, >>>>   static int cdns_dsi_mode2cfg(struct cdns_dsi *dsi, >>>>                    const struct drm_display_mode *mode, >>>> -                 struct cdns_dsi_cfg *dsi_cfg, >>>> -                 bool mode_valid_check) >>>> +                 struct cdns_dsi_cfg *dsi_cfg) >>>>   { >>>>       struct cdns_dsi_output *output = &dsi->output; >>>>       u32 dpi_hsa, dpi_hbp, dpi_hfp, dpi_hact; >>>>       bool sync_pulse; >>>>       int bpp; >>>> -    if (mode_valid_check) { >>>> -        dpi_hsa = mode->hsync_end - mode->hsync_start; >>>> -        dpi_hbp = mode->htotal - mode->hsync_end; >>>> -        dpi_hfp = mode->hsync_start - mode->hdisplay; >>>> -        dpi_hact = mode->hdisplay; >>>> -    } else { >>>> -        dpi_hsa = mode->crtc_hsync_end - mode->crtc_hsync_start; >>>> -        dpi_hbp = mode->crtc_htotal - mode->crtc_hsync_end; >>>> -        dpi_hfp =  mode->crtc_hsync_start - mode->crtc_hdisplay; >>>> -        dpi_hact = mode->crtc_hdisplay; >>>> -    } >>>> +    dpi_hsa = mode->crtc_hsync_end - mode->crtc_hsync_start; >>>> +    dpi_hbp = mode->crtc_htotal - mode->crtc_hsync_end; >>>> +    dpi_hfp =  mode->crtc_hsync_start - mode->crtc_hdisplay; >>>> +    dpi_hact = mode->crtc_hdisplay; >>>>       memset(dsi_cfg, 0, sizeof(*dsi_cfg)); >>>> @@ -518,8 +510,7 @@ static int cdns_dsi_mode2cfg(struct cdns_dsi *dsi, >>>>   static int cdns_dsi_adjust_phy_config(struct cdns_dsi *dsi, >>>>                     struct cdns_dsi_cfg *dsi_cfg, >>>>                     struct phy_configure_opts_mipi_dphy *phy_cfg, >>>> -                  const struct drm_display_mode *mode, >>>> -                  bool mode_valid_check) >>>> +                  const struct drm_display_mode *mode) >>>>   { >>>>       struct cdns_dsi_output *output = &dsi->output; >>>>       unsigned long long dlane_bps; >>>> @@ -549,11 +540,11 @@ static int cdns_dsi_adjust_phy_config(struct >>>> cdns_dsi *dsi, >>>>       if (dsi_htotal % lanes) >>>>           adj_dsi_htotal += lanes - (dsi_htotal % lanes); >>>> -    dpi_hz = (mode_valid_check ? mode->clock : mode->crtc_clock) * >>>> 1000; >>>> +    dpi_hz = mode->crtc_clock * 1000; >>>>       dlane_bps = (unsigned long long)dpi_hz * adj_dsi_htotal; >>>>       /* data rate in bytes/sec is not an integer, refuse the mode. */ >>>> -    dpi_htotal = mode_valid_check ? mode->htotal : mode->crtc_htotal; >>>> +    dpi_htotal = mode->crtc_htotal; >>>>       if (do_div(dlane_bps, lanes * dpi_htotal)) >>>>           return -EINVAL; >>>> @@ -569,27 +560,25 @@ static int cdns_dsi_adjust_phy_config(struct >>>> cdns_dsi *dsi, >>>>   static int cdns_dsi_check_conf(struct cdns_dsi *dsi, >>>>                      const struct drm_display_mode *mode, >>>> -                   struct cdns_dsi_cfg *dsi_cfg, >>>> -                   bool mode_valid_check) >>>> +                   struct cdns_dsi_cfg *dsi_cfg) >>>>   { >>>>       struct cdns_dsi_output *output = &dsi->output; >>>>       struct phy_configure_opts_mipi_dphy *phy_cfg = &output- >>>> >phy_opts.mipi_dphy; >>>>       unsigned int nlanes = output->dev->lanes; >>>> -    int mode_clock = (mode_valid_check ? mode->clock : mode- >>>> >crtc_clock); >>>>       unsigned long req_hs_clk_rate; >>>>       int ret; >>>> -    ret = cdns_dsi_mode2cfg(dsi, mode, dsi_cfg, mode_valid_check); >>>> +    ret = cdns_dsi_mode2cfg(dsi, mode, dsi_cfg); >>>>       if (ret) >>>>           return ret; >>>> -    ret = phy_mipi_dphy_get_default_config(mode_clock * 1000, >>>> +    ret = phy_mipi_dphy_get_default_config(mode->crtc_clock * 1000, >>>>                              mipi_dsi_pixel_format_to_bpp(output- >>>> >dev->format), >>>>                              nlanes, phy_cfg); >>>>       if (ret) >>>>           return ret; >>>> -    ret = cdns_dsi_adjust_phy_config(dsi, dsi_cfg, phy_cfg, mode, >>>> mode_valid_check); >>>> +    ret = cdns_dsi_adjust_phy_config(dsi, dsi_cfg, phy_cfg, mode); >>>>       if (ret) >>>>           return ret; >>>> @@ -635,8 +624,7 @@ cdns_dsi_bridge_mode_valid(struct drm_bridge >>>> *bridge, >>>>       struct cdns_dsi_input *input = bridge_to_cdns_dsi_input(bridge); >>>>       struct cdns_dsi *dsi = input_to_dsi(input); >>>>       struct cdns_dsi_output *output = &dsi->output; >>>> -    struct cdns_dsi_cfg dsi_cfg; >>>> -    int bpp, ret; >>>> +    int bpp; >>>>       /* >>>>        * VFP_DSI should be less than VFP_DPI and VFP_DSI should be at >>>> @@ -654,10 +642,6 @@ cdns_dsi_bridge_mode_valid(struct drm_bridge >>>> *bridge, >>>>       if ((mode->hdisplay * bpp) % 32) >>>>           return MODE_H_ILLEGAL; >>>> -    ret = cdns_dsi_check_conf(dsi, mode, &dsi_cfg, true); >>>> -    if (ret) >>>> -        return MODE_BAD; >>>> - >>>>       return MODE_OK; >>>>   } >>>> @@ -996,7 +980,7 @@ static int cdns_dsi_bridge_atomic_check(struct >>>> drm_bridge *bridge, >>>>       adjusted_crtc_mode->flags &= ~(DRM_MODE_FLAG_PHSYNC | >>>> DRM_MODE_FLAG_PVSYNC); >>>>       adjusted_crtc_mode->flags |= DRM_MODE_FLAG_NHSYNC | >>>> DRM_MODE_FLAG_NVSYNC; >>>> -    return cdns_dsi_check_conf(dsi, mode, dsi_cfg, false); >>>> +    return cdns_dsi_check_conf(dsi, mode, dsi_cfg); >>> >>> With this patch, the driver shifts to using the crtc_* values during the >>> check phase, and then, it is brought back to using non crtc_* values in >>> the next patch. >>> >>> Should this patch just drop the cdns_dsi_check_conf() check from >>> .mode_valid() instead, and let the next patch phase out the >>> mdoe_valid_check parameter as the driver simultaneously shifts to using >>> the non crtc_* values throughout? >> >> Yes. > > Actually, this patch doesn't change the crtc_* vs non-crtc_* behavior. > After dropping the cdns_dsi_check_conf() call in mode_valid(), the > 'mode_valid_check' is always false. So this patch removes the parameter, > and any code paths for the true-case. > > Should the atomic_check() have been using 'true' for the > 'mode_valid_check'? The atomic_check code was added in > a53d987756eab40678f241d7cd0eb7e1ca42bba7. > You are right. I had lost a bit of context there. Upon seeing the change logs, and history for my DSI patches, it seems that the _atomic_check() was added as a replacement for the check that was taking place in the _(atomic)_enable(), because the enable-path was not the right place to do so. Since the enable-path worked on crtc_* values, the check used to happen with crtc_* values. And then the _atomic_check() continued to use the crtc_* values after the patch. But, since the crtc_* values don't get populated before the bridge's check-phase, the crtc_* values shouldn't be used at this stage for any checks. They are getting populated in this case, via the fbdev_client_setup, if I understand that right. But it's not right to depend on fbdev as it can be disabled. So, it would make sense to use 'true' for the `mode_valid_check` parameter here. And, I will post a fix for this. However, we have another question. How would the driver verify the crtc_* values then, if not during the enable-path? Effectively, it might not matter for this driver, but there should be a general guideline. -- Regards Aradhya