From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [RFC PATCH 07/11] drm: Add writeback-connector pixel format properties Date: Tue, 11 Oct 2016 17:48:58 +0200 Message-ID: <20161011154858.GF20761@phenom.ffwll.local> References: <1476197648-24918-1-git-send-email-brian.starkey@arm.com> <1476197648-24918-8-git-send-email-brian.starkey@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-qk0-x241.google.com (mail-qk0-x241.google.com [IPv6:2607:f8b0:400d:c09::241]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0FEEC6E0CA for ; Tue, 11 Oct 2016 15:49:03 +0000 (UTC) Received: by mail-qk0-x241.google.com with SMTP id v138so1728313qka.2 for ; Tue, 11 Oct 2016 08:49:03 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1476197648-24918-8-git-send-email-brian.starkey@arm.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Brian Starkey Cc: liviu.dudau@arm.com, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, hverkuil@xs4all.nl, linux-media@vger.kernel.org List-Id: dri-devel@lists.freedesktop.org T24gVHVlLCBPY3QgMTEsIDIwMTYgYXQgMDM6NTQ6MDRQTSArMDEwMCwgQnJpYW4gU3RhcmtleSB3 cm90ZToKPiBTbyB0aGF0IHVzZXJzcGFjZSBjYW4gZGV0ZXJtaW5lIHdoYXQgcGl4ZWwgZm9ybWF0 cyBhcmUgc3VwcG9ydGVkIGZvciBhCj4gd3JpdGViYWNrIGNvbm5lY3RvcidzIGZyYW1lYnVmZmVy LCBhZGQgYSBwaXhlbCBmb3JtYXQgbGlzdCB0byB3cml0ZWJhY2sKPiBjb25uZWN0b3JzLiBUaGlz IGlzIGluIHRoZSBmb3JtIG9mIGFuIGltbXV0YWJsZSBibG9iIGNvbnRhaW5pbmcgYW4gYXJyYXkK PiBvZiBmb3JtYXRzLCBhbmQgYW4gaW1tdXRhYmxlIHVpbnQgaG9sZGluZyB0aGUgYXJyYXkgc2l6 ZS4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBCcmlhbiBTdGFya2V5IDxicmlhbi5zdGFya2V5QGFybS5j b20+CgpJIHRoaW5rIHdlIHNob3VsZCBoYXZlIGEgZGVkaWNhdGVkIHdyaXRlYmFjayBwcm9wZXJ0 eSByZWdpc3RyYXRpb24KZnVuY3Rpb24sIGUuZy4gZHJtX3dyaXRlYmFja19jb25uZWN0b3JfaW5p dCgpLiBUaGF0IHdvdWxkIHRoZW4gdGFrZSB0aGUKcGl4ZWwgZm9ybWF0IGxpc3QgYW5kIGV2ZXJ5 dGhpbmcgZWxzZSBhbmQgbWFrZSBzdXJlIGl0J3Mgc2V0IHVwIGNvcnJlY3RseS4KRm9yIHNhZmV0 eSB3ZSBtaWdodCB3YW50IHRvIHB1dCBhIFdBUk5fT04odHlwZSA9PSBXUklURUJBQ0spIGludG8K ZHJtX2Nvbm5lY3Rvcl9pbml0LCB0byBtYWtlIHN1cmUgbm8gb25lIGJvdGNoZXMgdGhpcyB1cC4K Ck1heWJlIGV2ZW4gcHV0IGFsbCB0aGF0IGludG8gYSBuZXcgZHJtX3dyaXRlYmFjay5jIGZpbGUs IHRoYXQgdGhlbiBhbHNvCmdpdmVzIHlvdSBhIG5pY2UgcGxhY2UgdG8gZ3JvdXAgYWxsIHRoZSBk b2N1bWVudGF0aW9uIChpbmNsdWRpbmcgdGhlIERPQzoKb3ZlcnZpZXcgY29tbWVudCkuCgo+IC0t LQo+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2Nvbm5lY3Rvci5jIHwgICA3MyArKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKy0KPiAgaW5jbHVkZS9kcm0vZHJtX2Nvbm5lY3Rvci5o ICAgICB8ICAgMTIgKysrKysrKwo+ICBpbmNsdWRlL2RybS9kcm1fY3J0Yy5oICAgICAgICAgIHwg ICAxMiArKysrKysrCj4gIDMgZmlsZXMgY2hhbmdlZCwgOTYgaW5zZXJ0aW9ucygrKSwgMSBkZWxl dGlvbigtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2Nvbm5lY3Rvci5j IGIvZHJpdmVycy9ncHUvZHJtL2RybV9jb25uZWN0b3IuYwo+IGluZGV4IGZiODM4NzAuLjJmMWY2 MWQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9jb25uZWN0b3IuYwo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9kcm1fY29ubmVjdG9yLmMKPiBAQCAtMjQ5LDkgKzI0OSwxNCBAQCBp bnQgZHJtX2Nvbm5lY3Rvcl9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAkJZHJtX29i amVjdF9hdHRhY2hfcHJvcGVydHkoJmNvbm5lY3Rvci0+YmFzZSwgY29uZmlnLT5wcm9wX2NydGNf aWQsIDApOwo+ICAJfQo+ICAKPiAtCWlmIChjb25uZWN0b3JfdHlwZSA9PSBEUk1fTU9ERV9DT05O RUNUT1JfV1JJVEVCQUNLKQo+ICsJaWYgKGNvbm5lY3Rvcl90eXBlID09IERSTV9NT0RFX0NPTk5F Q1RPUl9XUklURUJBQ0spIHsKPiAgCQlkcm1fb2JqZWN0X2F0dGFjaF9wcm9wZXJ0eSgmY29ubmVj dG9yLT5iYXNlLAo+ICAJCQkJCSAgIGNvbmZpZy0+cHJvcF9mYl9pZCwgMCk7Cj4gKwkJZHJtX29i amVjdF9hdHRhY2hfcHJvcGVydHkoJmNvbm5lY3Rvci0+YmFzZSwKPiArCQkJCQkgICBjb25maWct PnBpeGVsX2Zvcm1hdHNfcHJvcGVydHksIDApOwo+ICsJCWRybV9vYmplY3RfYXR0YWNoX3Byb3Bl cnR5KCZjb25uZWN0b3ItPmJhc2UsCj4gKwkJCQkJICAgY29uZmlnLT5waXhlbF9mb3JtYXRzX3Np emVfcHJvcGVydHksIDApOwo+ICsJfQo+ICAKPiAgCWNvbm5lY3Rvci0+ZGVidWdmc19lbnRyeSA9 IE5VTEw7Cj4gIG91dF9wdXRfdHlwZV9pZDoKPiBAQCAtODUxLDYgKzg1Niw0NSBAQCBpbnQgZHJt X21vZGVfY3JlYXRlX3N1Z2dlc3RlZF9vZmZzZXRfcHJvcGVydGllcyhzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2KQo+ICBFWFBPUlRfU1lNQk9MKGRybV9tb2RlX2NyZWF0ZV9zdWdnZXN0ZWRfb2Zmc2V0 X3Byb3BlcnRpZXMpOwo+ICAKPiAgLyoqCj4gKyAqIGRybV9tb2RlX2NyZWF0ZV93cml0ZWJhY2tf Y29ubmVjdG9yX3Byb3BlcnRpZXMgLSBjcmVhdGUgd3JpdGViYWNrIGNvbm5lY3RvciBwcm9wZXJ0 aWVzCj4gKyAqIEBkZXY6IERSTSBkZXZpY2UKPiArICoKPiArICogQ3JlYXRlIHRoZSBwcm9wZXJ0 aWVzIHNwZWNpZmljIHRvIHdyaXRlYmFjayBjb25uZWN0b3JzLiBUaGVzZSB3aWxsIGJlIGF0dGFj aGVkCj4gKyAqIHRvIHdyaXRlYmFjayBjb25uZWN0b3JzIGJ5IGRybV9jb25uZWN0b3JfaW5pdC4g RHJpdmVycyBjYW4gc2V0IHRoZXNlCj4gKyAqIHByb3BlcnRpZXMgdXNpbmcgZHJtX21vZGVfY29u bmVjdG9yX3NldF93cml0ZWJhY2tfZm9ybWF0cygpLgo+ICsgKgo+ICsgKiAgIlBJWEVMX0ZPUk1B VFMiOgo+ICsgKglJbW11dGFibGUgYmxvYiBwcm9wZXJ0eSB0byBzdG9yZSB0aGUgc3VwcG9ydGVk IHBpeGVsIGZvcm1hdHMgdGFibGUuIFRoZQo+ICsgKglkYXRhIGlzIGFuIGFycmF5IG9mIHUzMiBE Uk1fRk9STUFUXyogZm91cmNjIHZhbHVlcy4KPiArICoJVXNlcnNwYWNlIGNhbiB1c2UgdGhpcyBi bG9iIHRvIGZpbmQgb3V0IHdoYXQgcGl4ZWwgZm9ybWF0cyBhcmUgc3VwcG9ydGVkCj4gKyAqCWJ5 IHRoZSBjb25uZWN0b3IncyB3cml0ZWJhY2sgZW5naW5lLgo+ICsgKgo+ICsgKiAgIlBJWEVMX0ZP Uk1BVFNfU0laRSI6Cj4gKyAqICAgICAgSW1tdXRhYmxlIHVuc2lnbmVkIHJhbmdlIHByb3BlcnR5 IHN0b3JpbmcgdGhlIG51bWJlciBvZiBlbnRyaWVzIGluIHRoZQo+ICsgKiAgICAgIFBJWEVMX0ZP Uk1BVFMgYXJyYXkuCj4gKyAqLwo+ICtpbnQgZHJtX21vZGVfY3JlYXRlX3dyaXRlYmFja19jb25u ZWN0b3JfcHJvcGVydGllcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICt7Cj4gKwlpZiAoZGV2 LT5tb2RlX2NvbmZpZy5waXhlbF9mb3JtYXRzX3Byb3BlcnR5ICYmCj4gKwkgICAgZGV2LT5tb2Rl X2NvbmZpZy5waXhlbF9mb3JtYXRzX3NpemVfcHJvcGVydHkpCj4gKwkJcmV0dXJuIDA7Cj4gKwo+ ICsJZGV2LT5tb2RlX2NvbmZpZy5waXhlbF9mb3JtYXRzX3Byb3BlcnR5ID0KPiArCQlkcm1fcHJv cGVydHlfY3JlYXRlKGRldiwgRFJNX01PREVfUFJPUF9CTE9CIHwgRFJNX01PREVfUFJPUF9JTU1V VEFCTEUsCj4gKwkJCSJQSVhFTF9GT1JNQVRTIiwgMCk7Cj4gKwo+ICsJZGV2LT5tb2RlX2NvbmZp Zy5waXhlbF9mb3JtYXRzX3NpemVfcHJvcGVydHkgPQo+ICsJCWRybV9wcm9wZXJ0eV9jcmVhdGVf cmFuZ2UoZGV2LCBEUk1fTU9ERV9QUk9QX0lNTVVUQUJMRSwKPiArCQkJIlBJWEVMX0ZPUk1BVFNf U0laRSIsIDAsIFVJTlRfTUFYKTsKPiArCj4gKwlpZiAoZGV2LT5tb2RlX2NvbmZpZy5waXhlbF9m b3JtYXRzX3Byb3BlcnR5ID09IE5VTEwgfHwKPiArCSAgICBkZXYtPm1vZGVfY29uZmlnLnBpeGVs X2Zvcm1hdHNfc2l6ZV9wcm9wZXJ0eSA9PSBOVUxMKQo+ICsJCXJldHVybiAtRU5PTUVNOwo+ICsJ cmV0dXJuIDA7Cj4gK30KPiArRVhQT1JUX1NZTUJPTChkcm1fbW9kZV9jcmVhdGVfd3JpdGViYWNr X2Nvbm5lY3Rvcl9wcm9wZXJ0aWVzKTsKPiArCj4gKy8qKgo+ICAgKiBkcm1fbW9kZV9jb25uZWN0 b3Jfc2V0X3BhdGhfcHJvcGVydHkgLSBzZXQgdGlsZSBwcm9wZXJ0eSBvbiBjb25uZWN0b3IKPiAg ICogQGNvbm5lY3RvcjogY29ubmVjdG9yIHRvIHNldCBwcm9wZXJ0eSBvbi4KPiAgICogQHBhdGg6 IHBhdGggdG8gdXNlIGZvciBwcm9wZXJ0eTsgbXVzdCBub3QgYmUgTlVMTC4KPiBAQCAtOTU3LDYg KzEwMDEsMzMgQEAgaW50IGRybV9tb2RlX2Nvbm5lY3Rvcl91cGRhdGVfZWRpZF9wcm9wZXJ0eShz dHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ICB9Cj4gIEVYUE9SVF9TWU1CT0woZHJt X21vZGVfY29ubmVjdG9yX3VwZGF0ZV9lZGlkX3Byb3BlcnR5KTsKPiAgCj4gK2ludCBkcm1fbW9k ZV9jb25uZWN0b3Jfc2V0X3dyaXRlYmFja19mb3JtYXRzKHN0cnVjdCBkcm1fY29ubmVjdG9yICpj b25uZWN0b3IsCj4gKwkJCQkJICAgICB1MzIgKmZvcm1hdHMsCj4gKwkJCQkJICAgICB1bnNpZ25l ZCBpbnQgbl9mb3JtYXRzKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY29ubmVj dG9yLT5kZXY7Cj4gKwlzaXplX3Qgc2l6ZSA9IG5fZm9ybWF0cyAqIHNpemVvZigqZm9ybWF0cyk7 Cj4gKwlpbnQgcmV0Owo+ICsKPiArCWlmIChjb25uZWN0b3ItPmNvbm5lY3Rvcl90eXBlICE9IERS TV9NT0RFX0NPTk5FQ1RPUl9XUklURUJBQ0spCj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwo+ICsJ cmV0ID0gZHJtX3Byb3BlcnR5X3JlcGxhY2VfZ2xvYmFsX2Jsb2IoZGV2LAo+ICsJCQkJCSAgICAg ICAmY29ubmVjdG9yLT5waXhlbF9mb3JtYXRzX2Jsb2JfcHRyLAo+ICsJCQkJCSAgICAgICBzaXpl LAo+ICsJCQkJCSAgICAgICBmb3JtYXRzLAo+ICsJCQkJCSAgICAgICAmY29ubmVjdG9yLT5iYXNl LAo+ICsJCQkJCSAgICAgICBkZXYtPm1vZGVfY29uZmlnLnBpeGVsX2Zvcm1hdHNfcHJvcGVydHkp Owo+ICsKPiArCWlmICghcmV0KQo+ICsJCWRybV9vYmplY3RfcHJvcGVydHlfc2V0X3ZhbHVlKCZj b25uZWN0b3ItPmJhc2UsCj4gKwkJCQkJICAgICAgZGV2LT5tb2RlX2NvbmZpZy5waXhlbF9mb3Jt YXRzX3NpemVfcHJvcGVydHksCj4gKwkJCQkJICAgICAgbl9mb3JtYXRzKTsKPiArCj4gKwlyZXR1 cm4gMDsKPiArfQo+ICtFWFBPUlRfU1lNQk9MKGRybV9tb2RlX2Nvbm5lY3Rvcl9zZXRfd3JpdGVi YWNrX2Zvcm1hdHMpOwo+ICsKPiAgaW50IGRybV9tb2RlX2Nvbm5lY3Rvcl9zZXRfb2JqX3Byb3Ao c3RydWN0IGRybV9tb2RlX29iamVjdCAqb2JqLAo+ICAJCQkJICAgIHN0cnVjdCBkcm1fcHJvcGVy dHkgKnByb3BlcnR5LAo+ICAJCQkJICAgIHVpbnQ2NF90IHZhbHVlKQo+IGRpZmYgLS1naXQgYS9p bmNsdWRlL2RybS9kcm1fY29ubmVjdG9yLmggYi9pbmNsdWRlL2RybS9kcm1fY29ubmVjdG9yLmgK PiBpbmRleCAzMGE3NjZhLi5lNzdhZTVjIDEwMDY0NAo+IC0tLSBhL2luY2x1ZGUvZHJtL2RybV9j b25uZWN0b3IuaAo+ICsrKyBiL2luY2x1ZGUvZHJtL2RybV9jb25uZWN0b3IuaAo+IEBAIC02MTUs NiArNjE1LDE0IEBAIHN0cnVjdCBkcm1fY29ubmVjdG9yIHsKPiAgCSAqLwo+ICAJc3RydWN0IGRy bV9wcm9wZXJ0eV9ibG9iICp0aWxlX2Jsb2JfcHRyOwo+ICAKPiArCS8qKgo+ICsJICogQHBpeGVs X2Zvcm1hdHNfYmxvYl9wdHIKPiArCSAqCj4gKwkgKiBEUk0gYmxvYiBwcm9wZXJ0eSBkYXRhIGZv ciB0aGUgcGl4ZWwgZm9ybWF0cyBsaXN0IG9uIHdyaXRlYmFjawo+ICsJICogY29ubmVjdG9ycwo+ ICsJICovCj4gKwlzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKnBpeGVsX2Zvcm1hdHNfYmxvYl9w dHI7Cj4gKwo+ICAvKiBzaG91bGQgd2UgcG9sbCB0aGlzIGNvbm5lY3RvciBmb3IgY29ubmVjdHMg YW5kIGRpc2Nvbm5lY3RzICovCj4gIC8qIGhvdCBwbHVnIGRldGVjdGFibGUgKi8KPiAgI2RlZmlu ZSBEUk1fQ09OTkVDVE9SX1BPTExfSFBEICgxIDw8IDApCj4gQEAgLTc1NywxMiArNzY1LDE2IEBA IGludCBkcm1fbW9kZV9jcmVhdGVfdHZfcHJvcGVydGllcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LAo+ICBpbnQgZHJtX21vZGVfY3JlYXRlX3NjYWxpbmdfbW9kZV9wcm9wZXJ0eShzdHJ1Y3QgZHJt X2RldmljZSAqZGV2KTsKPiAgaW50IGRybV9tb2RlX2NyZWF0ZV9hc3BlY3RfcmF0aW9fcHJvcGVy dHkoc3RydWN0IGRybV9kZXZpY2UgKmRldik7Cj4gIGludCBkcm1fbW9kZV9jcmVhdGVfc3VnZ2Vz dGVkX29mZnNldF9wcm9wZXJ0aWVzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+ICtpbnQgZHJt X21vZGVfY3JlYXRlX3dyaXRlYmFja19jb25uZWN0b3JfcHJvcGVydGllcyhzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2KTsKPiAgCj4gIGludCBkcm1fbW9kZV9jb25uZWN0b3Jfc2V0X3BhdGhfcHJvcGVy dHkoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiAgCQkJCQkgY29uc3QgY2hhciAq cGF0aCk7Cj4gIGludCBkcm1fbW9kZV9jb25uZWN0b3Jfc2V0X3RpbGVfcHJvcGVydHkoc3RydWN0 IGRybV9jb25uZWN0b3IgKmNvbm5lY3Rvcik7Cj4gIGludCBkcm1fbW9kZV9jb25uZWN0b3JfdXBk YXRlX2VkaWRfcHJvcGVydHkoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiAgCQkJ CQkgICAgY29uc3Qgc3RydWN0IGVkaWQgKmVkaWQpOwo+ICtpbnQgZHJtX21vZGVfY29ubmVjdG9y X3NldF93cml0ZWJhY2tfZm9ybWF0cyhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ ICsJCQkJCSAgICAgdTMyICpmb3JtYXRzLAo+ICsJCQkJCSAgICAgdW5zaWduZWQgaW50IG5fZm9y bWF0cyk7Cj4gIAo+ICAvKioKPiAgICogZHJtX2Zvcl9lYWNoX2Nvbm5lY3RvciAtIGl0ZXJhdGUg b3ZlciBhbGwgY29ubmVjdG9ycwo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fY3J0Yy5o IGIvaW5jbHVkZS9kcm0vZHJtX2NydGMuaAo+IGluZGV4IDYxOTMyZjUuLmM0YTMxNjQgMTAwNjQ0 Cj4gLS0tIGEvaW5jbHVkZS9kcm0vZHJtX2NydGMuaAo+ICsrKyBiL2luY2x1ZGUvZHJtL2RybV9j cnRjLmgKPiBAQCAtMTMwMiw2ICsxMzAyLDE4IEBAIHN0cnVjdCBkcm1fbW9kZV9jb25maWcgewo+ ICAJICovCj4gIAlzdHJ1Y3QgZHJtX3Byb3BlcnR5ICpzdWdnZXN0ZWRfeV9wcm9wZXJ0eTsKPiAg Cj4gKwkvKioKPiArCSAqIEBwaXhlbF9mb3JtYXRzX3Byb3BlcnR5OiBQcm9wZXJ0eSBmb3Igd3Jp dGViYWNrIGNvbm5lY3RvcnMsIHN0b3JpbmcKPiArCSAqIGFuIGFycmF5IG9mIHRoZSBzdXBwb3J0 ZWQgcGl4ZWwgZm9ybWF0cyBmb3IgdGhlIHdyaXRlYmFjayBlbmdpbmUKPiArCSAqIChyZWFkLW9u bHkpLgoKSSBsb3ZlIGNyb3NzLXJlZmVyZW5jZXMgaW4ga2VybmVsLWRvYy4gSSB0aGluayBtZW50 aW9uaW5nCmRybV93cml0ZWJhY2tfY29ubmVjdG9yX2luaXQgaGVyZSB3b3VsZCBiZSBwZXJmZWN0 IChmb3IgYm90aCBvZiB0aGVtKS4KLURhbmllbAoKPiArCSAqLwo+ICsJc3RydWN0IGRybV9wcm9w ZXJ0eSAqcGl4ZWxfZm9ybWF0c19wcm9wZXJ0eTsKPiArCS8qKgo+ICsJICogQHBpeGVsX2Zvcm1h dHNfc2l6ZV9wcm9wZXJ0eTogUHJvcGVydHkgZm9yIHdyaXRlYmFjayBjb25uZWN0b3JzLAo+ICsJ ICogc3RhdGluZyB0aGUgc2l6ZSBvZiB0aGUgcGl4ZWwgZm9ybWF0cyBhcnJheSAocmVhZC1vbmx5 KS4KPiArCSAqLwo+ICsJc3RydWN0IGRybV9wcm9wZXJ0eSAqcGl4ZWxfZm9ybWF0c19zaXplX3By b3BlcnR5Owo+ICsKPiAgCS8qIGR1bWIgaW9jdGwgcGFyYW1ldGVycyAqLwo+ICAJdWludDMyX3Qg cHJlZmVycmVkX2RlcHRoLCBwcmVmZXJfc2hhZG93Owo+ICAKPiAtLSAKPiAxLjcuOS41Cj4gCgot LSAKRGFuaWVsIFZldHRlcgpTb2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KaHR0 cDovL2Jsb2cuZmZ3bGwuY2gKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJp LWRldmVsCg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from mail-qk0-f195.google.com ([209.85.220.195]:34473 "EHLO mail-qk0-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752880AbcJKPtn (ORCPT ); Tue, 11 Oct 2016 11:49:43 -0400 Received: by mail-qk0-f195.google.com with SMTP id n189so1727617qke.1 for ; Tue, 11 Oct 2016 08:49:02 -0700 (PDT) Date: Tue, 11 Oct 2016 17:48:58 +0200 From: Daniel Vetter To: Brian Starkey Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, liviu.dudau@arm.com, robdclark@gmail.com, hverkuil@xs4all.nl, eric@anholt.net, ville.syrjala@linux.intel.com, daniel@ffwll.ch Subject: Re: [RFC PATCH 07/11] drm: Add writeback-connector pixel format properties Message-ID: <20161011154858.GF20761@phenom.ffwll.local> References: <1476197648-24918-1-git-send-email-brian.starkey@arm.com> <1476197648-24918-8-git-send-email-brian.starkey@arm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1476197648-24918-8-git-send-email-brian.starkey@arm.com> Sender: linux-media-owner@vger.kernel.org List-ID: On Tue, Oct 11, 2016 at 03:54:04PM +0100, Brian Starkey wrote: > So that userspace can determine what pixel formats are supported for a > writeback connector's framebuffer, add a pixel format list to writeback > connectors. This is in the form of an immutable blob containing an array > of formats, and an immutable uint holding the array size. > > Signed-off-by: Brian Starkey I think we should have a dedicated writeback property registration function, e.g. drm_writeback_connector_init(). That would then take the pixel format list and everything else and make sure it's set up correctly. For safety we might want to put a WARN_ON(type == WRITEBACK) into drm_connector_init, to make sure no one botches this up. Maybe even put all that into a new drm_writeback.c file, that then also gives you a nice place to group all the documentation (including the DOC: overview comment). > --- > drivers/gpu/drm/drm_connector.c | 73 ++++++++++++++++++++++++++++++++++++++- > include/drm/drm_connector.h | 12 +++++++ > include/drm/drm_crtc.h | 12 +++++++ > 3 files changed, 96 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/drm_connector.c b/drivers/gpu/drm/drm_connector.c > index fb83870..2f1f61d 100644 > --- a/drivers/gpu/drm/drm_connector.c > +++ b/drivers/gpu/drm/drm_connector.c > @@ -249,9 +249,14 @@ int drm_connector_init(struct drm_device *dev, > drm_object_attach_property(&connector->base, config->prop_crtc_id, 0); > } > > - if (connector_type == DRM_MODE_CONNECTOR_WRITEBACK) > + if (connector_type == DRM_MODE_CONNECTOR_WRITEBACK) { > drm_object_attach_property(&connector->base, > config->prop_fb_id, 0); > + drm_object_attach_property(&connector->base, > + config->pixel_formats_property, 0); > + drm_object_attach_property(&connector->base, > + config->pixel_formats_size_property, 0); > + } > > connector->debugfs_entry = NULL; > out_put_type_id: > @@ -851,6 +856,45 @@ int drm_mode_create_suggested_offset_properties(struct drm_device *dev) > EXPORT_SYMBOL(drm_mode_create_suggested_offset_properties); > > /** > + * drm_mode_create_writeback_connector_properties - create writeback connector properties > + * @dev: DRM device > + * > + * Create the properties specific to writeback connectors. These will be attached > + * to writeback connectors by drm_connector_init. Drivers can set these > + * properties using drm_mode_connector_set_writeback_formats(). > + * > + * "PIXEL_FORMATS": > + * Immutable blob property to store the supported pixel formats table. The > + * data is an array of u32 DRM_FORMAT_* fourcc values. > + * Userspace can use this blob to find out what pixel formats are supported > + * by the connector's writeback engine. > + * > + * "PIXEL_FORMATS_SIZE": > + * Immutable unsigned range property storing the number of entries in the > + * PIXEL_FORMATS array. > + */ > +int drm_mode_create_writeback_connector_properties(struct drm_device *dev) > +{ > + if (dev->mode_config.pixel_formats_property && > + dev->mode_config.pixel_formats_size_property) > + return 0; > + > + dev->mode_config.pixel_formats_property = > + drm_property_create(dev, DRM_MODE_PROP_BLOB | DRM_MODE_PROP_IMMUTABLE, > + "PIXEL_FORMATS", 0); > + > + dev->mode_config.pixel_formats_size_property = > + drm_property_create_range(dev, DRM_MODE_PROP_IMMUTABLE, > + "PIXEL_FORMATS_SIZE", 0, UINT_MAX); > + > + if (dev->mode_config.pixel_formats_property == NULL || > + dev->mode_config.pixel_formats_size_property == NULL) > + return -ENOMEM; > + return 0; > +} > +EXPORT_SYMBOL(drm_mode_create_writeback_connector_properties); > + > +/** > * drm_mode_connector_set_path_property - set tile property on connector > * @connector: connector to set property on. > * @path: path to use for property; must not be NULL. > @@ -957,6 +1001,33 @@ int drm_mode_connector_update_edid_property(struct drm_connector *connector, > } > EXPORT_SYMBOL(drm_mode_connector_update_edid_property); > > +int drm_mode_connector_set_writeback_formats(struct drm_connector *connector, > + u32 *formats, > + unsigned int n_formats) > +{ > + struct drm_device *dev = connector->dev; > + size_t size = n_formats * sizeof(*formats); > + int ret; > + > + if (connector->connector_type != DRM_MODE_CONNECTOR_WRITEBACK) > + return -EINVAL; > + > + ret = drm_property_replace_global_blob(dev, > + &connector->pixel_formats_blob_ptr, > + size, > + formats, > + &connector->base, > + dev->mode_config.pixel_formats_property); > + > + if (!ret) > + drm_object_property_set_value(&connector->base, > + dev->mode_config.pixel_formats_size_property, > + n_formats); > + > + return 0; > +} > +EXPORT_SYMBOL(drm_mode_connector_set_writeback_formats); > + > int drm_mode_connector_set_obj_prop(struct drm_mode_object *obj, > struct drm_property *property, > uint64_t value) > diff --git a/include/drm/drm_connector.h b/include/drm/drm_connector.h > index 30a766a..e77ae5c 100644 > --- a/include/drm/drm_connector.h > +++ b/include/drm/drm_connector.h > @@ -615,6 +615,14 @@ struct drm_connector { > */ > struct drm_property_blob *tile_blob_ptr; > > + /** > + * @pixel_formats_blob_ptr > + * > + * DRM blob property data for the pixel formats list on writeback > + * connectors > + */ > + struct drm_property_blob *pixel_formats_blob_ptr; > + > /* should we poll this connector for connects and disconnects */ > /* hot plug detectable */ > #define DRM_CONNECTOR_POLL_HPD (1 << 0) > @@ -757,12 +765,16 @@ int drm_mode_create_tv_properties(struct drm_device *dev, > int drm_mode_create_scaling_mode_property(struct drm_device *dev); > int drm_mode_create_aspect_ratio_property(struct drm_device *dev); > int drm_mode_create_suggested_offset_properties(struct drm_device *dev); > +int drm_mode_create_writeback_connector_properties(struct drm_device *dev); > > int drm_mode_connector_set_path_property(struct drm_connector *connector, > const char *path); > int drm_mode_connector_set_tile_property(struct drm_connector *connector); > int drm_mode_connector_update_edid_property(struct drm_connector *connector, > const struct edid *edid); > +int drm_mode_connector_set_writeback_formats(struct drm_connector *connector, > + u32 *formats, > + unsigned int n_formats); > > /** > * drm_for_each_connector - iterate over all connectors > diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h > index 61932f5..c4a3164 100644 > --- a/include/drm/drm_crtc.h > +++ b/include/drm/drm_crtc.h > @@ -1302,6 +1302,18 @@ struct drm_mode_config { > */ > struct drm_property *suggested_y_property; > > + /** > + * @pixel_formats_property: Property for writeback connectors, storing > + * an array of the supported pixel formats for the writeback engine > + * (read-only). I love cross-references in kernel-doc. I think mentioning drm_writeback_connector_init here would be perfect (for both of them). -Daniel > + */ > + struct drm_property *pixel_formats_property; > + /** > + * @pixel_formats_size_property: Property for writeback connectors, > + * stating the size of the pixel formats array (read-only). > + */ > + struct drm_property *pixel_formats_size_property; > + > /* dumb ioctl parameters */ > uint32_t preferred_depth, prefer_shadow; > > -- > 1.7.9.5 > -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch