From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 34/36] drm/tegra: Track active planes in CRTC state Date: Tue, 20 Jan 2015 12:18:45 +0100 Message-ID: <20150120111845.GA10113@phenom.ffwll.local> References: <1421750935-4023-1-git-send-email-thierry.reding@gmail.com> <1421750935-4023-35-git-send-email-thierry.reding@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <1421750935-4023-35-git-send-email-thierry.reding@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Thierry Reding Cc: linux-tegra@vger.kernel.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org List-Id: linux-tegra@vger.kernel.org T24gVHVlLCBKYW4gMjAsIDIwMTUgYXQgMTE6NDg6NTNBTSArMDEwMCwgVGhpZXJyeSBSZWRpbmcg d3JvdGU6Cj4gRnJvbTogVGhpZXJyeSBSZWRpbmcgPHRyZWRpbmdAbnZpZGlhLmNvbT4KPiAKPiBX cmFwIHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSBpbiBhIGRyaXZlci1zcGVjaWZpYyBzdHJ1Y3R1cmUg YW5kIGFkZCB0aGUKPiBwbGFuZXMgZmllbGQgd2hpY2gga2VlcHMgdHJhY2sgb2Ygd2hpY2ggcGxh bmVzIGFyZSB1cGRhdGVkIG9yIGRpc2FibGVkCj4gZHVyaW5nIGEgbW9kZXNldC4gVGhpcyBhbGxv d3MgYXRvbWljIHVwZGF0ZXMgb2YgdGhlIHRoZSBkaXNwbGF5IGVuZ2luZQo+IGF0IC0+YXRvbWlj X2ZsdXNoKCkgdGltZS4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBUaGllcnJ5IFJlZGluZyA8dHJlZGlu Z0BudmlkaWEuY29tPgoKY29tbWl0IDZkZGQzODhhYjIyMmI2NmI1OTYzNDJiZWNjNzZkNTAzMWMw ZTJmYzgKQXV0aG9yOiBSb2IgQ2xhcmsgPHJvYmRjbGFya0BnbWFpbC5jb20+CkRhdGU6ICAgRnJp IE5vdiAyMSAxNToyODozMSAyMDE0IC0wNTAwCgogICAgZHJtL2F0b21pYzogdHJhY2sgYml0bWFz ayBvZiBwbGFuZXMgYXR0YWNoZWQgdG8gY3J0YwoKYWRkZWQgdGhpcyB0byB0aGUgY29yZSBzaW5j ZSBpdCBzZWVtcyB0byBiZSBnZW5lcmFsbHkgdXNlZnVsLiBEb2VzIHRlZ3JhCm5lZWQgbW9yZT8K LURhbmllbAoKPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL3RlZ3JhL2RjLmMgfCA3MiArKysrKysr KysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tCj4gIDEgZmlsZSBjaGFuZ2Vk LCA0NCBpbnNlcnRpb25zKCspLCAyOCBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL3RlZ3JhL2RjLmMgYi9kcml2ZXJzL2dwdS9kcm0vdGVncmEvZGMuYwo+IGlu ZGV4IDUyYWU1NjNjYjUzMS4uODM1ZGU0Mzk4YzhmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS90ZWdyYS9kYy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3RlZ3JhL2RjLmMKPiBAQCAt NTQsNiArNTQsOCBAQCBzdHJ1Y3QgdGVncmFfZGNfc3RhdGUgewo+ICAJc3RydWN0IGNsayAqY2xr Owo+ICAJdW5zaWduZWQgbG9uZyBwY2xrOwo+ICAJdW5zaWduZWQgaW50IGRpdjsKPiArCj4gKwl1 MzIgcGxhbmVzOwo+ICB9Owo+ICAKPiAgc3RhdGljIGlubGluZSBzdHJ1Y3QgdGVncmFfZGNfc3Rh dGUgKnRvX2RjX3N0YXRlKHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqc3RhdGUpCj4gQEAgLTY0LDIw ICs2Niw2IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IHRlZ3JhX2RjX3N0YXRlICp0b19kY19zdGF0 ZShzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKnN0YXRlKQo+ICAJcmV0dXJuIE5VTEw7Cj4gIH0KPiAg Cj4gLXN0YXRpYyB2b2lkIHRlZ3JhX2RjX3dpbmRvd19jb21taXQoc3RydWN0IHRlZ3JhX2RjICpk YywgdW5zaWduZWQgaW50IGluZGV4KQo+IC17Cj4gLQl1MzIgdmFsdWUgPSBXSU5fQV9BQ1RfUkVR IDw8IGluZGV4Owo+IC0KPiAtCXRlZ3JhX2RjX3dyaXRlbChkYywgdmFsdWUgPDwgOCwgRENfQ01E X1NUQVRFX0NPTlRST0wpOwo+IC0JdGVncmFfZGNfd3JpdGVsKGRjLCB2YWx1ZSwgRENfQ01EX1NU QVRFX0NPTlRST0wpOwo+IC19Cj4gLQo+IC1zdGF0aWMgdm9pZCB0ZWdyYV9kY19jdXJzb3JfY29t bWl0KHN0cnVjdCB0ZWdyYV9kYyAqZGMpCj4gLXsKPiAtCXRlZ3JhX2RjX3dyaXRlbChkYywgQ1VS U09SX0FDVF9SRVEgPDwgOCwgRENfQ01EX1NUQVRFX0NPTlRST0wpOwo+IC0JdGVncmFfZGNfd3Jp dGVsKGRjLCBDVVJTT1JfQUNUX1JFUSwgRENfQ01EX1NUQVRFX0NPTlRST0wpOwo+IC19Cj4gLQo+ ICAvKgo+ICAgKiBSZWFkcyB0aGUgYWN0aXZlIGNvcHkgb2YgYSByZWdpc3Rlci4gVGhpcyB0YWtl cyB0aGUgZGMtPmxvY2sgc3BpbmxvY2sgdG8KPiAgICogcHJldmVudCByYWNlcyB3aXRoIHRoZSBW QkxBTksgcHJvY2Vzc2luZyB3aGljaCBhbHNvIG5lZWRzIGFjY2VzcyB0byB0aGUKPiBAQCAtMzk1 LDggKzM4Myw2IEBAIHN0YXRpYyB2b2lkIHRlZ3JhX2RjX3NldHVwX3dpbmRvdyhzdHJ1Y3QgdGVn cmFfZGMgKmRjLCB1bnNpZ25lZCBpbnQgaW5kZXgsCj4gIAkJYnJlYWs7Cj4gIAl9Cj4gIAo+IC0J dGVncmFfZGNfd2luZG93X2NvbW1pdChkYywgaW5kZXgpOwo+IC0KPiAgCXNwaW5fdW5sb2NrX2ly cXJlc3RvcmUoJmRjLT5sb2NrLCBmbGFncyk7Cj4gIH0KPiAgCj4gQEAgLTQzOSw5ICs0MjUsMjgg QEAgc3RhdGljIHZvaWQgdGVncmFfcGxhbmVfY2xlYW51cF9mYihzdHJ1Y3QgZHJtX3BsYW5lICpw bGFuZSwKPiAgewo+ICB9Cj4gIAo+ICtzdGF0aWMgaW50IHRlZ3JhX3BsYW5lX3N0YXRlX2FkZChz dHJ1Y3QgdGVncmFfcGxhbmUgKnBsYW5lLAo+ICsJCQkJIHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUg KnN0YXRlKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGU7Cj4gKwlz dHJ1Y3QgdGVncmFfZGNfc3RhdGUgKnRlZ3JhOwo+ICsKPiArCS8qIFByb3BhZ2F0ZSBlcnJvcnMg ZnJvbSBhbGxvY2F0aW9uIG9yIGxvY2tpbmcgZmFpbHVyZXMuICovCj4gKwljcnRjX3N0YXRlID0g ZHJtX2F0b21pY19wbGFuZV9nZXRfY3J0Y19zdGF0ZShzdGF0ZSk7Cj4gKwlpZiAoSVNfRVJSKGNy dGNfc3RhdGUpKQo+ICsJCXJldHVybiBQVFJfRVJSKGNydGNfc3RhdGUpOwo+ICsKPiArCXRlZ3Jh ID0gdG9fZGNfc3RhdGUoY3J0Y19zdGF0ZSk7Cj4gKwo+ICsJdGVncmEtPnBsYW5lcyB8PSBXSU5f QV9BQ1RfUkVRIDw8IHBsYW5lLT5pbmRleDsKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiAg c3RhdGljIGludCB0ZWdyYV9wbGFuZV9hdG9taWNfY2hlY2soc3RydWN0IGRybV9wbGFuZSAqcGxh bmUsCj4gIAkJCQkgICAgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqc3RhdGUpCj4gIHsKPiArCXN0 cnVjdCB0ZWdyYV9wbGFuZSAqdGVncmEgPSB0b190ZWdyYV9wbGFuZShwbGFuZSk7Cj4gIAlzdHJ1 Y3QgdGVncmFfZGMgKmRjID0gdG9fdGVncmFfZGMoc3RhdGUtPmNydGMpOwo+ICAJc3RydWN0IHRl Z3JhX2JvX3RpbGluZyB0aWxpbmc7Cj4gIAlpbnQgZXJyOwo+IEBAIC00NzIsNiArNDc3LDEwIEBA IHN0YXRpYyBpbnQgdGVncmFfcGxhbmVfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fcGxhbmUgKnBs YW5lLAo+ICAJCX0KPiAgCX0KPiAgCj4gKwllcnIgPSB0ZWdyYV9wbGFuZV9zdGF0ZV9hZGQodGVn cmEsIHN0YXRlKTsKPiArCWlmIChlcnIgPCAwKQo+ICsJCXJldHVybiBlcnI7Cj4gKwo+ICAJcmV0 dXJuIDA7Cj4gIH0KPiAgCj4gQEAgLTUzOCw4ICs1NDcsNiBAQCBzdGF0aWMgdm9pZCB0ZWdyYV9w bGFuZV9hdG9taWNfZGlzYWJsZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiAgCXZhbHVlICY9 IH5XSU5fRU5BQkxFOwo+ICAJdGVncmFfZGNfd3JpdGVsKGRjLCB2YWx1ZSwgRENfV0lOX1dJTl9P UFRJT05TKTsKPiAgCj4gLQl0ZWdyYV9kY193aW5kb3dfY29tbWl0KGRjLCBwLT5pbmRleCk7Cj4g LQo+ICAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZGMtPmxvY2ssIGZsYWdzKTsKPiAgfQo+ICAK PiBAQCAtNTk5LDYgKzYwNiw5IEBAIHN0YXRpYyBjb25zdCB1MzIgdGVncmFfY3Vyc29yX3BsYW5l X2Zvcm1hdHNbXSA9IHsKPiAgc3RhdGljIGludCB0ZWdyYV9jdXJzb3JfYXRvbWljX2NoZWNrKHN0 cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ICAJCQkJICAgICBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRl ICpzdGF0ZSkKPiAgewo+ICsJc3RydWN0IHRlZ3JhX3BsYW5lICp0ZWdyYSA9IHRvX3RlZ3JhX3Bs YW5lKHBsYW5lKTsKPiArCWludCBlcnI7Cj4gKwo+ICAJLyogbm8gbmVlZCBmb3IgZnVydGhlciBj aGVja3MgaWYgdGhlIHBsYW5lIGlzIGJlaW5nIGRpc2FibGVkICovCj4gIAlpZiAoIXN0YXRlLT5j cnRjKQo+ICAJCXJldHVybiAwOwo+IEBAIC02MTYsNiArNjI2LDEwIEBAIHN0YXRpYyBpbnQgdGVn cmFfY3Vyc29yX2F0b21pY19jaGVjayhzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiAgCSAgICBz dGF0ZS0+Y3J0Y193ICE9IDEyOCAmJiBzdGF0ZS0+Y3J0Y193ICE9IDI1NikKPiAgCQlyZXR1cm4g LUVJTlZBTDsKPiAgCj4gKwllcnIgPSB0ZWdyYV9wbGFuZV9zdGF0ZV9hZGQodGVncmEsIHN0YXRl KTsKPiArCWlmIChlcnIgPCAwKQo+ICsJCXJldHVybiBlcnI7Cj4gKwo+ICAJcmV0dXJuIDA7Cj4g IH0KPiAgCj4gQEAgLTY4MCw5ICs2OTQsNiBAQCBzdGF0aWMgdm9pZCB0ZWdyYV9jdXJzb3JfYXRv bWljX3VwZGF0ZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiAgCXZhbHVlID0gKHN0YXRlLT5j cnRjX3kgJiAweDNmZmYpIDw8IDE2IHwgKHN0YXRlLT5jcnRjX3ggJiAweDNmZmYpOwo+ICAJdGVn cmFfZGNfd3JpdGVsKGRjLCB2YWx1ZSwgRENfRElTUF9DVVJTT1JfUE9TSVRJT04pOwo+ICAKPiAt CS8qIGFwcGx5IGNoYW5nZXMgKi8KPiAtCXRlZ3JhX2RjX2N1cnNvcl9jb21taXQoZGMpOwo+IC0J dGVncmFfZGNfY29tbWl0KGRjKTsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQgdGVncmFfY3Vyc29y X2F0b21pY19kaXNhYmxlKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+IEBAIC03MDAsOSArNzEx LDYgQEAgc3RhdGljIHZvaWQgdGVncmFfY3Vyc29yX2F0b21pY19kaXNhYmxlKHN0cnVjdCBkcm1f cGxhbmUgKnBsYW5lLAo+ICAJdmFsdWUgPSB0ZWdyYV9kY19yZWFkbChkYywgRENfRElTUF9ESVNQ X1dJTl9PUFRJT05TKTsKPiAgCXZhbHVlICY9IH5DVVJTT1JfRU5BQkxFOwo+ICAJdGVncmFfZGNf d3JpdGVsKGRjLCB2YWx1ZSwgRENfRElTUF9ESVNQX1dJTl9PUFRJT05TKTsKPiAtCj4gLQl0ZWdy YV9kY19jdXJzb3JfY29tbWl0KGRjKTsKPiAtCXRlZ3JhX2RjX2NvbW1pdChkYyk7Cj4gIH0KPiAg Cj4gIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX2Z1bmNzIHRlZ3JhX2N1cnNvcl9wbGFu ZV9mdW5jcyA9IHsKPiBAQCAtNzM0LDYgKzc0MiwxMyBAQCBzdGF0aWMgc3RydWN0IGRybV9wbGFu ZSAqdGVncmFfZGNfY3Vyc29yX3BsYW5lX2NyZWF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZHJtLAo+ ICAJaWYgKCFwbGFuZSkKPiAgCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKPiAgCj4gKwkvKgo+ ICsJICogV2UnbGwgdHJlYXQgdGhlIGN1cnNvciBhcyBhbiBvdmVybGF5IHBsYW5lIHdpdGggaW5k ZXggNiBoZXJlIHNvCj4gKwkgKiB0aGF0IHRoZSB1cGRhdGUgYW5kIGFjdGl2YXRpb24gcmVxdWVz dCBiaXRzIGluIERDX0NNRF9TVEFURV9DT05UUk9MCj4gKwkgKiBtYXRjaCB1cC4KPiArCSAqLwo+ ICsJcGxhbmUtPmluZGV4ID0gNjsKPiArCj4gIAludW1fZm9ybWF0cyA9IEFSUkFZX1NJWkUodGVn cmFfY3Vyc29yX3BsYW5lX2Zvcm1hdHMpOwo+ICAJZm9ybWF0cyA9IHRlZ3JhX2N1cnNvcl9wbGFu ZV9mb3JtYXRzOwo+ICAKPiBAQCAtMTAyOSw3ICsxMDQ0LDYgQEAgc3RhdGljIHZvaWQgdGVncmFf Y3J0Y19kaXNhYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiAgCX0KPiAgCj4gIAlkcm1fY3J0 Y192Ymxhbmtfb2ZmKGNydGMpOwo+IC0JdGVncmFfZGNfY29tbWl0KGRjKTsKPiAgfQo+ICAKPiAg c3RhdGljIGJvb2wgdGVncmFfY3J0Y19tb2RlX2ZpeHVwKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywK PiBAQCAtMTIwNywxMCArMTIyMSw3IEBAIHN0YXRpYyB2b2lkIHRlZ3JhX2NydGNfcHJlcGFyZShz dHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gIAo+ICBzdGF0aWMgdm9pZCB0ZWdyYV9jcnRjX2NvbW1p dChzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gIHsKPiAtCXN0cnVjdCB0ZWdyYV9kYyAqZGMgPSB0 b190ZWdyYV9kYyhjcnRjKTsKPiAtCj4gIAlkcm1fY3J0Y192Ymxhbmtfb24oY3J0Yyk7Cj4gLQl0 ZWdyYV9kY19jb21taXQoZGMpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgaW50IHRlZ3JhX2NydGNfYXRv bWljX2NoZWNrKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiBAQCAtMTIzNSw2ICsxMjQ2LDExIEBA IHN0YXRpYyB2b2lkIHRlZ3JhX2NydGNfYXRvbWljX2JlZ2luKHN0cnVjdCBkcm1fY3J0YyAqY3J0 YykKPiAgCj4gIHN0YXRpYyB2b2lkIHRlZ3JhX2NydGNfYXRvbWljX2ZsdXNoKHN0cnVjdCBkcm1f Y3J0YyAqY3J0YykKPiAgewo+ICsJc3RydWN0IHRlZ3JhX2RjX3N0YXRlICpzdGF0ZSA9IHRvX2Rj X3N0YXRlKGNydGMtPnN0YXRlKTsKPiArCXN0cnVjdCB0ZWdyYV9kYyAqZGMgPSB0b190ZWdyYV9k YyhjcnRjKTsKPiArCj4gKwl0ZWdyYV9kY193cml0ZWwoZGMsIHN0YXRlLT5wbGFuZXMgPDwgOCwg RENfQ01EX1NUQVRFX0NPTlRST0wpOwo+ICsJdGVncmFfZGNfd3JpdGVsKGRjLCBzdGF0ZS0+cGxh bmVzLCBEQ19DTURfU1RBVEVfQ09OVFJPTCk7Cj4gIH0KPiAgCj4gIHN0YXRpYyBjb25zdCBzdHJ1 Y3QgZHJtX2NydGNfaGVscGVyX2Z1bmNzIHRlZ3JhX2NydGNfaGVscGVyX2Z1bmNzID0gewo+IC0t IAo+IDIuMS4zCj4gCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KPiBkcmktZGV2ZWwgbWFpbGluZyBsaXN0Cj4gZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNr dG9wLm9yZwo+IGh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9k cmktZGV2ZWwKCi0tIApEYW5pZWwgVmV0dGVyClNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jw b3JhdGlvbgorNDEgKDApIDc5IDM2NSA1NyA0OCAtIGh0dHA6Ly9ibG9nLmZmd2xsLmNoCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWls aW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754967AbbATLSw (ORCPT ); Tue, 20 Jan 2015 06:18:52 -0500 Received: from mail-wg0-f54.google.com ([74.125.82.54]:36385 "EHLO mail-wg0-f54.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753896AbbATLSt (ORCPT ); Tue, 20 Jan 2015 06:18:49 -0500 Date: Tue, 20 Jan 2015 12:18:45 +0100 From: Daniel Vetter To: Thierry Reding Cc: dri-devel@lists.freedesktop.org, linux-tegra@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH 34/36] drm/tegra: Track active planes in CRTC state Message-ID: <20150120111845.GA10113@phenom.ffwll.local> Mail-Followup-To: Thierry Reding , dri-devel@lists.freedesktop.org, linux-tegra@vger.kernel.org, linux-kernel@vger.kernel.org References: <1421750935-4023-1-git-send-email-thierry.reding@gmail.com> <1421750935-4023-35-git-send-email-thierry.reding@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1421750935-4023-35-git-send-email-thierry.reding@gmail.com> X-Operating-System: Linux phenom 3.16-2-amd64 User-Agent: Mutt/1.5.23 (2014-03-12) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Jan 20, 2015 at 11:48:53AM +0100, Thierry Reding wrote: > From: Thierry Reding > > Wrap struct drm_crtc_state in a driver-specific structure and add the > planes field which keeps track of which planes are updated or disabled > during a modeset. This allows atomic updates of the the display engine > at ->atomic_flush() time. > > Signed-off-by: Thierry Reding commit 6ddd388ab222b66b596342becc76d5031c0e2fc8 Author: Rob Clark Date: Fri Nov 21 15:28:31 2014 -0500 drm/atomic: track bitmask of planes attached to crtc added this to the core since it seems to be generally useful. Does tegra need more? -Daniel > --- > drivers/gpu/drm/tegra/dc.c | 72 ++++++++++++++++++++++++++++------------------ > 1 file changed, 44 insertions(+), 28 deletions(-) > > diff --git a/drivers/gpu/drm/tegra/dc.c b/drivers/gpu/drm/tegra/dc.c > index 52ae563cb531..835de4398c8f 100644 > --- a/drivers/gpu/drm/tegra/dc.c > +++ b/drivers/gpu/drm/tegra/dc.c > @@ -54,6 +54,8 @@ struct tegra_dc_state { > struct clk *clk; > unsigned long pclk; > unsigned int div; > + > + u32 planes; > }; > > static inline struct tegra_dc_state *to_dc_state(struct drm_crtc_state *state) > @@ -64,20 +66,6 @@ static inline struct tegra_dc_state *to_dc_state(struct drm_crtc_state *state) > return NULL; > } > > -static void tegra_dc_window_commit(struct tegra_dc *dc, unsigned int index) > -{ > - u32 value = WIN_A_ACT_REQ << index; > - > - tegra_dc_writel(dc, value << 8, DC_CMD_STATE_CONTROL); > - tegra_dc_writel(dc, value, DC_CMD_STATE_CONTROL); > -} > - > -static void tegra_dc_cursor_commit(struct tegra_dc *dc) > -{ > - tegra_dc_writel(dc, CURSOR_ACT_REQ << 8, DC_CMD_STATE_CONTROL); > - tegra_dc_writel(dc, CURSOR_ACT_REQ, DC_CMD_STATE_CONTROL); > -} > - > /* > * Reads the active copy of a register. This takes the dc->lock spinlock to > * prevent races with the VBLANK processing which also needs access to the > @@ -395,8 +383,6 @@ static void tegra_dc_setup_window(struct tegra_dc *dc, unsigned int index, > break; > } > > - tegra_dc_window_commit(dc, index); > - > spin_unlock_irqrestore(&dc->lock, flags); > } > > @@ -439,9 +425,28 @@ static void tegra_plane_cleanup_fb(struct drm_plane *plane, > { > } > > +static int tegra_plane_state_add(struct tegra_plane *plane, > + struct drm_plane_state *state) > +{ > + struct drm_crtc_state *crtc_state; > + struct tegra_dc_state *tegra; > + > + /* Propagate errors from allocation or locking failures. */ > + crtc_state = drm_atomic_plane_get_crtc_state(state); > + if (IS_ERR(crtc_state)) > + return PTR_ERR(crtc_state); > + > + tegra = to_dc_state(crtc_state); > + > + tegra->planes |= WIN_A_ACT_REQ << plane->index; > + > + return 0; > +} > + > static int tegra_plane_atomic_check(struct drm_plane *plane, > struct drm_plane_state *state) > { > + struct tegra_plane *tegra = to_tegra_plane(plane); > struct tegra_dc *dc = to_tegra_dc(state->crtc); > struct tegra_bo_tiling tiling; > int err; > @@ -472,6 +477,10 @@ static int tegra_plane_atomic_check(struct drm_plane *plane, > } > } > > + err = tegra_plane_state_add(tegra, state); > + if (err < 0) > + return err; > + > return 0; > } > > @@ -538,8 +547,6 @@ static void tegra_plane_atomic_disable(struct drm_plane *plane, > value &= ~WIN_ENABLE; > tegra_dc_writel(dc, value, DC_WIN_WIN_OPTIONS); > > - tegra_dc_window_commit(dc, p->index); > - > spin_unlock_irqrestore(&dc->lock, flags); > } > > @@ -599,6 +606,9 @@ static const u32 tegra_cursor_plane_formats[] = { > static int tegra_cursor_atomic_check(struct drm_plane *plane, > struct drm_plane_state *state) > { > + struct tegra_plane *tegra = to_tegra_plane(plane); > + int err; > + > /* no need for further checks if the plane is being disabled */ > if (!state->crtc) > return 0; > @@ -616,6 +626,10 @@ static int tegra_cursor_atomic_check(struct drm_plane *plane, > state->crtc_w != 128 && state->crtc_w != 256) > return -EINVAL; > > + err = tegra_plane_state_add(tegra, state); > + if (err < 0) > + return err; > + > return 0; > } > > @@ -680,9 +694,6 @@ static void tegra_cursor_atomic_update(struct drm_plane *plane, > value = (state->crtc_y & 0x3fff) << 16 | (state->crtc_x & 0x3fff); > tegra_dc_writel(dc, value, DC_DISP_CURSOR_POSITION); > > - /* apply changes */ > - tegra_dc_cursor_commit(dc); > - tegra_dc_commit(dc); > } > > static void tegra_cursor_atomic_disable(struct drm_plane *plane, > @@ -700,9 +711,6 @@ static void tegra_cursor_atomic_disable(struct drm_plane *plane, > value = tegra_dc_readl(dc, DC_DISP_DISP_WIN_OPTIONS); > value &= ~CURSOR_ENABLE; > tegra_dc_writel(dc, value, DC_DISP_DISP_WIN_OPTIONS); > - > - tegra_dc_cursor_commit(dc); > - tegra_dc_commit(dc); > } > > static const struct drm_plane_funcs tegra_cursor_plane_funcs = { > @@ -734,6 +742,13 @@ static struct drm_plane *tegra_dc_cursor_plane_create(struct drm_device *drm, > if (!plane) > return ERR_PTR(-ENOMEM); > > + /* > + * We'll treat the cursor as an overlay plane with index 6 here so > + * that the update and activation request bits in DC_CMD_STATE_CONTROL > + * match up. > + */ > + plane->index = 6; > + > num_formats = ARRAY_SIZE(tegra_cursor_plane_formats); > formats = tegra_cursor_plane_formats; > > @@ -1029,7 +1044,6 @@ static void tegra_crtc_disable(struct drm_crtc *crtc) > } > > drm_crtc_vblank_off(crtc); > - tegra_dc_commit(dc); > } > > static bool tegra_crtc_mode_fixup(struct drm_crtc *crtc, > @@ -1207,10 +1221,7 @@ static void tegra_crtc_prepare(struct drm_crtc *crtc) > > static void tegra_crtc_commit(struct drm_crtc *crtc) > { > - struct tegra_dc *dc = to_tegra_dc(crtc); > - > drm_crtc_vblank_on(crtc); > - tegra_dc_commit(dc); > } > > static int tegra_crtc_atomic_check(struct drm_crtc *crtc, > @@ -1235,6 +1246,11 @@ static void tegra_crtc_atomic_begin(struct drm_crtc *crtc) > > static void tegra_crtc_atomic_flush(struct drm_crtc *crtc) > { > + struct tegra_dc_state *state = to_dc_state(crtc->state); > + struct tegra_dc *dc = to_tegra_dc(crtc); > + > + tegra_dc_writel(dc, state->planes << 8, DC_CMD_STATE_CONTROL); > + tegra_dc_writel(dc, state->planes, DC_CMD_STATE_CONTROL); > } > > static const struct drm_crtc_helper_funcs tegra_crtc_helper_funcs = { > -- > 2.1.3 > > _______________________________________________ > dri-devel mailing list > dri-devel@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/dri-devel -- Daniel Vetter Software Engineer, Intel Corporation +41 (0) 79 365 57 48 - http://blog.ffwll.ch