From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH] drm/komeda: Adds VRR support Date: Wed, 3 Jul 2019 12:01:49 +0200 Message-ID: <20190703100149.GF15868@phenom.ffwll.local> References: <1562138723-29546-1-git-send-email-lowry.li@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-ed1-x542.google.com (mail-ed1-x542.google.com [IPv6:2a00:1450:4864:20::542]) by gabe.freedesktop.org (Postfix) with ESMTPS id 4C9A889097 for ; Wed, 3 Jul 2019 10:01:55 +0000 (UTC) Received: by mail-ed1-x542.google.com with SMTP id w20so1490172edd.2 for ; Wed, 03 Jul 2019 03:01:55 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1562138723-29546-1-git-send-email-lowry.li@arm.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: "Lowry Li (Arm Technology China)" Cc: nd , "airlied@linux.ie" , Liviu Dudau , "Jonathan Chai (Arm Technology China)" , "linux-kernel@vger.kernel.org" , "dri-devel@lists.freedesktop.org" , "Julien Yin (Arm Technology China)" , "james qian wang (Arm Technology China)" , "seanpaul@chromium.org" , Ayan Halder List-Id: dri-devel@lists.freedesktop.org T24gV2VkLCBKdWwgMDMsIDIwMTkgYXQgMDc6MjY6MTZBTSArMDAwMCwgTG93cnkgTGkgKEFybSBU ZWNobm9sb2d5IENoaW5hKSB3cm90ZToKPiBBZGRzIGEgbmV3IGRybSBwcm9wZXJ0eSAidnJyIiBh bmQgInZycl9lbmFibGUiIGFuZCBpbXBsZW1lbnRlZAo+IHRoZSBzZXQvZ2V0IGZ1bmN0aW9ucywg dGhyb3VnaCB3aGljaCB1c2Vyc3BhY2UgY291bGQgc2V0IHZmcAo+IGRhdGEgdG8ga29tZWRhLgo+ IAo+IFNpZ25lZC1vZmYtYnk6IExvd3J5IExpIChBcm0gVGVjaG5vbG9neSBDaGluYSkgPGxvd3J5 LmxpQGFybS5jb20+Cj4gLS0tCj4gIC4uLi9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9kNzEv ZDcxX2NvbXBvbmVudC5jIHwgIDYgKysrCj4gIGRyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9r b21lZGEva29tZWRhX2NydGMuYyAgIHwgNjIgKysrKysrKysrKysrKysrKysrKysrKwo+ICBkcml2 ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9rbXMuaCAgICB8IDEyICsrKysr Cj4gIC4uLi9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfcGlwZWxpbmUuaCAgIHwg IDQgKy0KPiAgNCBmaWxlcyBjaGFuZ2VkLCA4MyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0p Cj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEvZDcx L2Q3MV9jb21wb25lbnQuYyBiL2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEvZDcx L2Q3MV9jb21wb25lbnQuYwo+IGluZGV4IGVkM2YyNzMuLmMxMzU1ZjUgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9kNzEvZDcxX2NvbXBvbmVudC5jCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9kNzEvZDcxX2NvbXBvbmVu dC5jCj4gQEAgLTEwNjUsNiArMTA2NSw3IEBAIHN0YXRpYyB2b2lkIGQ3MV90aW1pbmdfY3RybHJf dXBkYXRlKHN0cnVjdCBrb21lZGFfY29tcG9uZW50ICpjLAo+ICAJCQkJICAgIHN0cnVjdCBrb21l ZGFfY29tcG9uZW50X3N0YXRlICpzdGF0ZSkKPiAgewo+ICAJc3RydWN0IGRybV9jcnRjX3N0YXRl ICpjcnRjX3N0ID0gc3RhdGUtPmNydGMtPnN0YXRlOwo+ICsJc3RydWN0IGtvbWVkYV9jcnRjX3N0 YXRlICprY3J0Y19zdCA9IHRvX2tjcnRjX3N0KGNydGNfc3QpOwo+ICAJc3RydWN0IGRybV9kaXNw bGF5X21vZGUgKm1vZGUgPSAmY3J0Y19zdC0+YWRqdXN0ZWRfbW9kZTsKPiAgCXUzMiBfX2lvbWVt ICpyZWcgPSBjLT5yZWc7Cj4gIAl1MzIgaGFjdGl2ZSwgaGZyb250X3BvcmNoLCBoYmFja19wb3Jj aCwgaHN5bmNfbGVuOwo+IEBAIC0xMTAyLDYgKzExMDMsOSBAQCBzdGF0aWMgdm9pZCBkNzFfdGlt aW5nX2N0cmxyX3VwZGF0ZShzdHJ1Y3Qga29tZWRhX2NvbXBvbmVudCAqYywKPiAgCQl2YWx1ZSB8 PSBCU19DVFJMX0RMOwo+ICAJfQo+ICAKPiArCWlmIChrY3J0Y19zdC0+ZW5fdnJyKQo+ICsJCW1h bGlkcF93cml0ZTMyX21hc2socmVnLCBCU19WSU5URVJWQUxTLCAweDNGRkYsIGtjcnRjX3N0LT52 ZnApOwo+ICsKPiAgCW1hbGlkcF93cml0ZTMyKHJlZywgQkxLX0NPTlRST0wsIHZhbHVlKTsKPiAg fQo+ICAKPiBAQCAtMTE3MSw2ICsxMTc1LDggQEAgc3RhdGljIGludCBkNzFfdGltaW5nX2N0cmxy X2luaXQoc3RydWN0IGQ3MV9kZXYgKmQ3MSwKPiAgCWN0cmxyID0gdG9fY3RybHIoYyk7Cj4gIAo+ ICAJY3RybHItPnN1cHBvcnRzX2R1YWxfbGluayA9IHRydWU7Cj4gKwljdHJsci0+c3VwcG9ydHNf dnJyID0gdHJ1ZTsKPiArCXNldF9yYW5nZSgmY3RybHItPnZmcF9yYW5nZSwgMCwgMHgzRkYpOwo+ ICAKPiAgCXJldHVybiAwOwo+ICB9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hcm0v ZGlzcGxheS9rb21lZGEva29tZWRhX2NydGMuYyBiL2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxh eS9rb21lZGEva29tZWRhX2NydGMuYwo+IGluZGV4IDRmNTgwYjAuLjM3NDRlNmQgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfY3J0Yy5jCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfY3J0Yy5jCj4g QEAgLTQ2Nyw2ICs0NjcsOCBAQCBzdGF0aWMgdm9pZCBrb21lZGFfY3J0Y19yZXNldChzdHJ1Y3Qg ZHJtX2NydGMgKmNydGMpCj4gIAo+ICAJc3RhdGUgPSBremFsbG9jKHNpemVvZigqc3RhdGUpLCBH RlBfS0VSTkVMKTsKPiAgCWlmIChzdGF0ZSkgewo+ICsJCXN0YXRlLT52ZnAgPSAwOwo+ICsJCXN0 YXRlLT5lbl92cnIgPSAwOwo+ICAJCWNydGMtPnN0YXRlID0gJnN0YXRlLT5iYXNlOwo+ICAJCWNy dGMtPnN0YXRlLT5jcnRjID0gY3J0YzsKPiAgCX0KPiBAQCAtNDg3LDYgKzQ4OSw4IEBAIHN0YXRp YyB2b2lkIGtvbWVkYV9jcnRjX3Jlc2V0KHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiAgCW5ldy0+ YWZmZWN0ZWRfcGlwZXMgPSBvbGQtPmFjdGl2ZV9waXBlczsKPiAgCW5ldy0+Y2xvY2tfcmF0aW8g PSBvbGQtPmNsb2NrX3JhdGlvOwo+ICAJbmV3LT5tYXhfc2xhdmVfem9yZGVyID0gb2xkLT5tYXhf c2xhdmVfem9yZGVyOwo+ICsJbmV3LT52ZnAgPSBvbGQtPnZmcDsKPiArCW5ldy0+ZW5fdnJyID0g b2xkLT5lbl92cnI7Cj4gIAo+ICAJcmV0dXJuICZuZXctPmJhc2U7Cj4gIH0KPiBAQCAtNTI1LDYg KzUyOSwzMCBAQCBzdGF0aWMgdm9pZCBrb21lZGFfY3J0Y192YmxhbmtfZGlzYWJsZShzdHJ1Y3Qg ZHJtX2NydGMgKmNydGMpCj4gIAo+ICAJaWYgKHByb3BlcnR5ID09IGtjcnRjLT5jbG9ja19yYXRp b19wcm9wZXJ0eSkgewo+ICAJCSp2YWwgPSBrY3J0Y19zdC0+Y2xvY2tfcmF0aW87Cj4gKwl9IGVs c2UgaWYgKHByb3BlcnR5ID09IGtjcnRjLT52cnJfcHJvcGVydHkpIHsKPiArCQkqdmFsID0ga2Ny dGNfc3QtPnZmcDsKPiArCX0gZWxzZSBpZiAocHJvcGVydHkgPT0ga2NydGMtPnZycl9lbmFibGVf cHJvcGVydHkpIHsKPiArCQkqdmFsID0ga2NydGNfc3QtPmVuX3ZycjsKPiArCX0gZWxzZSB7Cj4g KwkJRFJNX0RFQlVHX0RSSVZFUigiVW5rbm93biBwcm9wZXJ0eSAlc1xuIiwgcHJvcGVydHktPm5h bWUpOwo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsJfQo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4g Kwo+ICtzdGF0aWMgaW50IGtvbWVkYV9jcnRjX2F0b21pY19zZXRfcHJvcGVydHkoc3RydWN0IGRy bV9jcnRjICpjcnRjLAo+ICsJCQkJCSAgIHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqc3RhdGUsCj4g KwkJCQkJICAgc3RydWN0IGRybV9wcm9wZXJ0eSAqcHJvcGVydHksCj4gKwkJCQkJICAgdWludDY0 X3QgdmFsKQo+ICt7Cj4gKwlzdHJ1Y3Qga29tZWRhX2NydGMgKmtjcnRjID0gdG9fa2NydGMoY3J0 Yyk7Cj4gKwlzdHJ1Y3Qga29tZWRhX2NydGNfc3RhdGUgKmtjcnRjX3N0ID0gdG9fa2NydGNfc3Qo c3RhdGUpOwo+ICsKPiArCWlmIChwcm9wZXJ0eSA9PSBrY3J0Yy0+dnJyX3Byb3BlcnR5KSB7Cj4g KwkJa2NydGNfc3QtPnZmcCA9IHZhbDsKPiArCX0gZWxzZSBpZiAocHJvcGVydHkgPT0ga2NydGMt PnZycl9lbmFibGVfcHJvcGVydHkpIHsKPiArCQlrY3J0Y19zdC0+ZW5fdnJyID0gdmFsOwo+ICAJ fSBlbHNlIHsKPiAgCQlEUk1fREVCVUdfRFJJVkVSKCJVbmtub3duIHByb3BlcnR5ICVzXG4iLCBw cm9wZXJ0eS0+bmFtZSk7Cj4gIAkJcmV0dXJuIC1FSU5WQUw7Cj4gQEAgLTU0NCw2ICs1NzIsNyBA QCBzdGF0aWMgdm9pZCBrb21lZGFfY3J0Y192YmxhbmtfZGlzYWJsZShzdHJ1Y3QgZHJtX2NydGMg KmNydGMpCj4gIAkuZW5hYmxlX3ZibGFuawkJPSBrb21lZGFfY3J0Y192YmxhbmtfZW5hYmxlLAo+ ICAJLmRpc2FibGVfdmJsYW5rCQk9IGtvbWVkYV9jcnRjX3ZibGFua19kaXNhYmxlLAo+ICAJLmF0 b21pY19nZXRfcHJvcGVydHkJPSBrb21lZGFfY3J0Y19hdG9taWNfZ2V0X3Byb3BlcnR5LAo+ICsJ LmF0b21pY19zZXRfcHJvcGVydHkJPSBrb21lZGFfY3J0Y19hdG9taWNfc2V0X3Byb3BlcnR5LAo+ ICB9Owo+ICAKPiAgaW50IGtvbWVkYV9rbXNfc2V0dXBfY3J0Y3Moc3RydWN0IGtvbWVkYV9rbXNf ZGV2ICprbXMsCj4gQEAgLTYxMyw2ICs2NDIsMzUgQEAgc3RhdGljIGludCBrb21lZGFfY3J0Y19j cmVhdGVfc2xhdmVfcGxhbmVzX3Byb3BlcnR5KHN0cnVjdCBrb21lZGFfY3J0YyAqa2NydGMpCj4g IAlyZXR1cm4gMDsKPiAgfQo+ICAKPiArc3RhdGljIGludCBrb21lZGFfY3J0Y19jcmVhdGVfdnJy X3Byb3BlcnR5KHN0cnVjdCBrb21lZGFfY3J0YyAqa2NydGMpCj4gK3sKPiArCXN0cnVjdCBkcm1f Y3J0YyAqY3J0YyA9ICZrY3J0Yy0+YmFzZTsKPiArCXN0cnVjdCBkcm1fcHJvcGVydHkgKnByb3A7 Cj4gKwlzdHJ1Y3Qga29tZWRhX3RpbWluZ19jdHJsciAqY3RybHIgPSBrY3J0Yy0+bWFzdGVyLT5j dHJscjsKPiArCj4gKwlpZiAoIWN0cmxyLT5zdXBwb3J0c192cnIpCj4gKwkJcmV0dXJuIDA7Cj4g Kwo+ICsJcHJvcCA9IGRybV9wcm9wZXJ0eV9jcmVhdGVfcmFuZ2UoY3J0Yy0+ZGV2LCBEUk1fTU9E RV9QUk9QX0FUT01JQywgInZyciIsCj4gKwkJCQkJIGN0cmxyLT52ZnBfcmFuZ2Uuc3RhcnQsCj4g KwkJCQkJIGN0cmxyLT52ZnBfcmFuZ2UuZW5kKTsKPiArCWlmICghcHJvcCkKPiArCQlyZXR1cm4g LUVOT01FTTsKPiArCj4gKwlkcm1fb2JqZWN0X2F0dGFjaF9wcm9wZXJ0eSgmY3J0Yy0+YmFzZSwg cHJvcCwgMCk7Cj4gKwlrY3J0Yy0+dnJyX3Byb3BlcnR5ID0gcHJvcDsKPiArCj4gKwlwcm9wID0g ZHJtX3Byb3BlcnR5X2NyZWF0ZV9ib29sKGNydGMtPmRldiwgRFJNX01PREVfUFJPUF9BVE9NSUMs Cj4gKwkJCQkJImVuYWJsZV92cnIiKTsKClVoLCB3aGF0IGV4YWN0bHkgYXJlIHlvdSBkb2luZyBy ZWludmVudGluZyB1YXBpIHByb3BlcnRpZXMgdGhhdCB3ZSBhbHJlYWR5CnN0YW5kYXJkaXplZD8K Cj4gKwlpZiAoIXByb3ApCj4gKwkJcmV0dXJuIC1FTk9NRU07Cj4gKwo+ICsJZHJtX29iamVjdF9h dHRhY2hfcHJvcGVydHkoJmNydGMtPmJhc2UsIHByb3AsIDApOwo+ICsJa2NydGMtPnZycl9lbmFi bGVfcHJvcGVydHkgPSBwcm9wOwo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICBzdGF0aWMg c3RydWN0IGRybV9wbGFuZSAqCj4gIGdldF9jcnRjX3ByaW1hcnkoc3RydWN0IGtvbWVkYV9rbXNf ZGV2ICprbXMsIHN0cnVjdCBrb21lZGFfY3J0YyAqY3J0YykKPiAgewo+IEBAIC02NTksNiArNzE3 LDEwIEBAIHN0YXRpYyBpbnQga29tZWRhX2NydGNfYWRkKHN0cnVjdCBrb21lZGFfa21zX2RldiAq a21zLAo+ICAJaWYgKGVycikKPiAgCQlyZXR1cm4gZXJyOwo+ICAKPiArCWVyciA9IGtvbWVkYV9j cnRjX2NyZWF0ZV92cnJfcHJvcGVydHkoa2NydGMpOwo+ICsJaWYgKGVycikKPiArCQlyZXR1cm4g ZXJyOwo+ICsKPiAgCXJldHVybiBlcnI7Cj4gIH0KPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEva29tZWRhX2ttcy5oIGIvZHJpdmVycy9ncHUvZHJt L2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfa21zLmgKPiBpbmRleCBkYzFkNDM2Li5kMGNmODM4 IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEva29tZWRh X2ttcy5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFf a21zLmgKPiBAQCAtOTgsNiArOTgsMTIgQEAgc3RydWN0IGtvbWVkYV9jcnRjIHsKPiAgCj4gIAkv KiogQHNsYXZlX3BsYW5lc19wcm9wZXJ0eTogcHJvcGVydHkgZm9yIHNsYXZlcyBvZiB0aGUgcGxh bmVzICovCj4gIAlzdHJ1Y3QgZHJtX3Byb3BlcnR5ICpzbGF2ZV9wbGFuZXNfcHJvcGVydHk7CgpB bmQgdGhpcyBzZWVtcyB0byBub3QgYmUgdGhlIGZpcnN0IHRpbWUgdGhpcyBoYXBwZW5lZC4gTG9v a2luZyBhdCBrb21lZGEKd2l0aCBhIHF1aWNrIGdpdCBncmVwIG9uIHByb3BlcnRpZXMgeW91J3Zl IGFjdHVhbGx5IGFjY3VtdWxhdGVkIHF1aXRlIGEKcGlsZSBvZiBzdWNoIGRyaXZlciBwcm9wZXJ0 aWVzIGFscmVhZHkuIFdoZXJlJ3MgdGhlIHVzZXJzcGFjZSBmb3IgdGhpcz8KV2hlcmUncyB0aGUg dWFwaSBkaXNjdXNzaW9ucyBmb3IgdGhpcyBzdHVmZj8gV2hlcmUncyB0aGUgaWd0IHRlc3RzIGZv cgp0aGlzICh5ZXMgYSBidW5jaCBhcmUgYWZ0ZXIgd2UgYWdyZWVkIHRvIGhhdmUgdGVzdGNhc2Vz IGZvciB0aGlzKS4KCkkga25vdyB0aGF0IGluIHRoZSBwYXN0IHdlJ3ZlIGJlZW4gc29tZXdoYXQg c2xvcHB5IHByb3BlcnRpZXMsIGJ1dCB0aGF0CndhcyBhIG1pc3Rha2UgYW5kIHdlJ3ZlIGNyYW5r ZWQgZG93biBvbiB0aGlzIGhhcmQuIFByb2JhYmx5IG5lZWQgdG8gZml4CnRoaXMgd2l0aCBhIHBp bGUgb2YgcmV2ZXJ0cyBhbmQgc3RhcnQgb3Zlci4KLURhbmllbAoKPiArCj4gKwkvKiogQHZycl9w cm9wZXJ0eTogcHJvcGVydHkgZm9yIHZhcmlhYmxlIHJlZnJlc2ggcmF0ZSAqLwo+ICsJc3RydWN0 IGRybV9wcm9wZXJ0eSAqdnJyX3Byb3BlcnR5Owo+ICsKPiArCS8qKiBAdnJyX2VuYWJsZV9wcm9w ZXJ0eTogcHJvcGVydHkgZm9yIGVuYWJsZS9kaXNhYmxlIHRoZSB2cnIgKi8KPiArCXN0cnVjdCBk cm1fcHJvcGVydHkgKnZycl9lbmFibGVfcHJvcGVydHk7Cj4gIH07Cj4gIAo+ICAvKioKPiBAQCAt MTI2LDYgKzEzMiwxMiBAQCBzdHJ1Y3Qga29tZWRhX2NydGNfc3RhdGUgewo+ICAKPiAgCS8qKiBA bWF4X3NsYXZlX3pvcmRlcjogdGhlIG1heGltdW0gb2Ygc2xhdmUgem9yZGVyICovCj4gIAl1MzIg bWF4X3NsYXZlX3pvcmRlcjsKPiArCj4gKwkvKiogQHZmcDogdGhlIHZhbHVlIG9mIHZlcnRpY2Fs IGZyb250IHBvcmNoICovCj4gKwl1MzIgdmZwOwo+ICsKPiArCS8qKiBAZW5fdnJyOiBlbmFibGUg c3RhdHVzIG9mIHZhcmlhYmxlIHJlZnJlc2ggcmF0ZSAqLwo+ICsJdTggZW5fdnJyIDogMTsKPiAg fTsKPiAgCj4gIC8qKiBzdHJ1Y3Qga29tZWRhX2ttc19kZXYgLSBmb3IgZ2F0aGVyIEtNUyByZWxh dGVkIHRoaW5ncyAqLwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkv a29tZWRhL2tvbWVkYV9waXBlbGluZS5oIGIvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tv bWVkYS9rb21lZGFfcGlwZWxpbmUuaAo+IGluZGV4IDAwZTgwODMuLjY2ZDc2NjQgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfcGlwZWxpbmUu aAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEva29tZWRhX3BpcGVs aW5lLmgKPiBAQCAtMzM2LDcgKzMzNiw5IEBAIHN0cnVjdCBrb21lZGFfaW1wcm9jX3N0YXRlIHsK PiAgLyogZGlzcGxheSB0aW1pbmcgY29udHJvbGxlciAqLwo+ICBzdHJ1Y3Qga29tZWRhX3RpbWlu Z19jdHJsciB7Cj4gIAlzdHJ1Y3Qga29tZWRhX2NvbXBvbmVudCBiYXNlOwo+IC0JdTggc3VwcG9y dHNfZHVhbF9saW5rIDogMTsKPiArCXU4IHN1cHBvcnRzX2R1YWxfbGluayA6IDEsCj4gKwkgICBz dXBwb3J0c192cnIgOiAxOwo+ICsJc3RydWN0IG1hbGlkcF9yYW5nZSB2ZnBfcmFuZ2U7Cj4gIH07 Cj4gIAo+ICBzdHJ1Y3Qga29tZWRhX3RpbWluZ19jdHJscl9zdGF0ZSB7Cj4gLS0gCj4gMS45LjEK PiAKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IGRy aS1kZXZlbCBtYWlsaW5nIGxpc3QKPiBkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4g aHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK Ci0tIApEYW5pZWwgVmV0dGVyClNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgpo dHRwOi8vYmxvZy5mZndsbC5jaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9k cmktZGV2ZWw= 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 X-Spam-Level: X-Spam-Status: No, score=-8.3 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 49B35C0650E for ; Wed, 3 Jul 2019 10:01:58 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 080FD218A0 for ; Wed, 3 Jul 2019 10:01:58 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=ffwll.ch header.i=@ffwll.ch header.b="XZHHbEsh" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727025AbfGCKB4 (ORCPT ); Wed, 3 Jul 2019 06:01:56 -0400 Received: from mail-ed1-f65.google.com ([209.85.208.65]:36938 "EHLO mail-ed1-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726811AbfGCKB4 (ORCPT ); Wed, 3 Jul 2019 06:01:56 -0400 Received: by mail-ed1-f65.google.com with SMTP id w13so1482599eds.4 for ; Wed, 03 Jul 2019 03:01:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ffwll.ch; s=google; h=sender:date:from:to:cc:subject:message-id:mail-followup-to :references:mime-version:content-disposition:in-reply-to:user-agent; bh=aSerdf2DO7Omic2w+oNZyPee/VO/jfA+Kk59Tlp7L3M=; b=XZHHbEshRHyinFuyW6TPlL33umZPDibfUV4mNEG7Ilmf0G6HIbH/4SNKjbWu5TnJn7 A8qZBFnh9rgDFhSdgtkm0dunXHM5/55EFXVy6XZfEKQcbuPDR4xdEMcHYLByNWJXNns6 IjlMx+mXyBCOxNexUV8S9todbAhrW2dznldDY= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:date:from:to:cc:subject:message-id :mail-followup-to:references:mime-version:content-disposition :in-reply-to:user-agent; bh=aSerdf2DO7Omic2w+oNZyPee/VO/jfA+Kk59Tlp7L3M=; b=YDR2WnSxn98xiVHY6L2iCCj3yVb1uDyCg9myBFx2bB3SrILKRd72yHVq99UstULiJJ npIc1HH7iTHL9JDlUNpUb2d1K4xaaVDTIidOsQK/gEU0GgevOHcs4t0rZDA+LN2AytOW zedRZA3azljiYRNqqO5NBleTzF+Q6QzgATArLxaJgoFbsstfQAORrlMN4HhJsFZtBgiG VSYlzniGQYJI4xgBVIx77doRUramIwhK0DALPrZJDRdT0SNMOLcyGZ24suwea0SeBZnR KwYkVgcn5PoBqTHZKVJl4eTV9tsB7MDMimT/EWMKZkSKRKYednxYCBCPwRazgdLBmh2c Xefg== X-Gm-Message-State: APjAAAXLV+I9bJ6HuDzukZSZ38M3FUf/zQJq94tx5RQaOLi53uWNpmFA vyjuuTNLi3lf9Y7jtOewCXHWxg== X-Google-Smtp-Source: APXvYqzT18OCU2y0XM+rXVAOV95cRRI8IZfUaElhsUGDU0cOAnnDhXYeIyzKjKGCVkM2DuuolQu3lw== X-Received: by 2002:a50:b107:: with SMTP id k7mr42238866edd.193.1562148113780; Wed, 03 Jul 2019 03:01:53 -0700 (PDT) Received: from phenom.ffwll.local ([2a02:168:569e:0:3106:d637:d723:e855]) by smtp.gmail.com with ESMTPSA id t13sm540506edd.13.2019.07.03.03.01.52 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Wed, 03 Jul 2019 03:01:53 -0700 (PDT) Date: Wed, 3 Jul 2019 12:01:49 +0200 From: Daniel Vetter To: "Lowry Li (Arm Technology China)" Cc: Liviu Dudau , "james qian wang (Arm Technology China)" , "maarten.lankhorst@linux.intel.com" , "seanpaul@chromium.org" , "airlied@linux.ie" , Brian Starkey , Ayan Halder , "Jonathan Chai (Arm Technology China)" , "linux-kernel@vger.kernel.org" , "dri-devel@lists.freedesktop.org" , "Julien Yin (Arm Technology China)" , nd Subject: Re: [PATCH] drm/komeda: Adds VRR support Message-ID: <20190703100149.GF15868@phenom.ffwll.local> Mail-Followup-To: "Lowry Li (Arm Technology China)" , Liviu Dudau , "james qian wang (Arm Technology China)" , "maarten.lankhorst@linux.intel.com" , "seanpaul@chromium.org" , "airlied@linux.ie" , Brian Starkey , Ayan Halder , "Jonathan Chai (Arm Technology China)" , "linux-kernel@vger.kernel.org" , "dri-devel@lists.freedesktop.org" , "Julien Yin (Arm Technology China)" , nd References: <1562138723-29546-1-git-send-email-lowry.li@arm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1562138723-29546-1-git-send-email-lowry.li@arm.com> X-Operating-System: Linux phenom 4.19.0-5-amd64 User-Agent: Mutt/1.10.1 (2018-07-13) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Jul 03, 2019 at 07:26:16AM +0000, Lowry Li (Arm Technology China) wrote: > Adds a new drm property "vrr" and "vrr_enable" and implemented > the set/get functions, through which userspace could set vfp > data to komeda. > > Signed-off-by: Lowry Li (Arm Technology China) > --- > .../gpu/drm/arm/display/komeda/d71/d71_component.c | 6 +++ > drivers/gpu/drm/arm/display/komeda/komeda_crtc.c | 62 ++++++++++++++++++++++ > drivers/gpu/drm/arm/display/komeda/komeda_kms.h | 12 +++++ > .../gpu/drm/arm/display/komeda/komeda_pipeline.h | 4 +- > 4 files changed, 83 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/arm/display/komeda/d71/d71_component.c b/drivers/gpu/drm/arm/display/komeda/d71/d71_component.c > index ed3f273..c1355f5 100644 > --- a/drivers/gpu/drm/arm/display/komeda/d71/d71_component.c > +++ b/drivers/gpu/drm/arm/display/komeda/d71/d71_component.c > @@ -1065,6 +1065,7 @@ static void d71_timing_ctrlr_update(struct komeda_component *c, > struct komeda_component_state *state) > { > struct drm_crtc_state *crtc_st = state->crtc->state; > + struct komeda_crtc_state *kcrtc_st = to_kcrtc_st(crtc_st); > struct drm_display_mode *mode = &crtc_st->adjusted_mode; > u32 __iomem *reg = c->reg; > u32 hactive, hfront_porch, hback_porch, hsync_len; > @@ -1102,6 +1103,9 @@ static void d71_timing_ctrlr_update(struct komeda_component *c, > value |= BS_CTRL_DL; > } > > + if (kcrtc_st->en_vrr) > + malidp_write32_mask(reg, BS_VINTERVALS, 0x3FFF, kcrtc_st->vfp); > + > malidp_write32(reg, BLK_CONTROL, value); > } > > @@ -1171,6 +1175,8 @@ static int d71_timing_ctrlr_init(struct d71_dev *d71, > ctrlr = to_ctrlr(c); > > ctrlr->supports_dual_link = true; > + ctrlr->supports_vrr = true; > + set_range(&ctrlr->vfp_range, 0, 0x3FF); > > return 0; > } > diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_crtc.c b/drivers/gpu/drm/arm/display/komeda/komeda_crtc.c > index 4f580b0..3744e6d 100644 > --- a/drivers/gpu/drm/arm/display/komeda/komeda_crtc.c > +++ b/drivers/gpu/drm/arm/display/komeda/komeda_crtc.c > @@ -467,6 +467,8 @@ static void komeda_crtc_reset(struct drm_crtc *crtc) > > state = kzalloc(sizeof(*state), GFP_KERNEL); > if (state) { > + state->vfp = 0; > + state->en_vrr = 0; > crtc->state = &state->base; > crtc->state->crtc = crtc; > } > @@ -487,6 +489,8 @@ static void komeda_crtc_reset(struct drm_crtc *crtc) > new->affected_pipes = old->active_pipes; > new->clock_ratio = old->clock_ratio; > new->max_slave_zorder = old->max_slave_zorder; > + new->vfp = old->vfp; > + new->en_vrr = old->en_vrr; > > return &new->base; > } > @@ -525,6 +529,30 @@ static void komeda_crtc_vblank_disable(struct drm_crtc *crtc) > > if (property == kcrtc->clock_ratio_property) { > *val = kcrtc_st->clock_ratio; > + } else if (property == kcrtc->vrr_property) { > + *val = kcrtc_st->vfp; > + } else if (property == kcrtc->vrr_enable_property) { > + *val = kcrtc_st->en_vrr; > + } else { > + DRM_DEBUG_DRIVER("Unknown property %s\n", property->name); > + return -EINVAL; > + } > + > + return 0; > +} > + > +static int komeda_crtc_atomic_set_property(struct drm_crtc *crtc, > + struct drm_crtc_state *state, > + struct drm_property *property, > + uint64_t val) > +{ > + struct komeda_crtc *kcrtc = to_kcrtc(crtc); > + struct komeda_crtc_state *kcrtc_st = to_kcrtc_st(state); > + > + if (property == kcrtc->vrr_property) { > + kcrtc_st->vfp = val; > + } else if (property == kcrtc->vrr_enable_property) { > + kcrtc_st->en_vrr = val; > } else { > DRM_DEBUG_DRIVER("Unknown property %s\n", property->name); > return -EINVAL; > @@ -544,6 +572,7 @@ static void komeda_crtc_vblank_disable(struct drm_crtc *crtc) > .enable_vblank = komeda_crtc_vblank_enable, > .disable_vblank = komeda_crtc_vblank_disable, > .atomic_get_property = komeda_crtc_atomic_get_property, > + .atomic_set_property = komeda_crtc_atomic_set_property, > }; > > int komeda_kms_setup_crtcs(struct komeda_kms_dev *kms, > @@ -613,6 +642,35 @@ static int komeda_crtc_create_slave_planes_property(struct komeda_crtc *kcrtc) > return 0; > } > > +static int komeda_crtc_create_vrr_property(struct komeda_crtc *kcrtc) > +{ > + struct drm_crtc *crtc = &kcrtc->base; > + struct drm_property *prop; > + struct komeda_timing_ctrlr *ctrlr = kcrtc->master->ctrlr; > + > + if (!ctrlr->supports_vrr) > + return 0; > + > + prop = drm_property_create_range(crtc->dev, DRM_MODE_PROP_ATOMIC, "vrr", > + ctrlr->vfp_range.start, > + ctrlr->vfp_range.end); > + if (!prop) > + return -ENOMEM; > + > + drm_object_attach_property(&crtc->base, prop, 0); > + kcrtc->vrr_property = prop; > + > + prop = drm_property_create_bool(crtc->dev, DRM_MODE_PROP_ATOMIC, > + "enable_vrr"); Uh, what exactly are you doing reinventing uapi properties that we already standardized? > + if (!prop) > + return -ENOMEM; > + > + drm_object_attach_property(&crtc->base, prop, 0); > + kcrtc->vrr_enable_property = prop; > + > + return 0; > +} > + > static struct drm_plane * > get_crtc_primary(struct komeda_kms_dev *kms, struct komeda_crtc *crtc) > { > @@ -659,6 +717,10 @@ static int komeda_crtc_add(struct komeda_kms_dev *kms, > if (err) > return err; > > + err = komeda_crtc_create_vrr_property(kcrtc); > + if (err) > + return err; > + > return err; > } > > diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_kms.h b/drivers/gpu/drm/arm/display/komeda/komeda_kms.h > index dc1d436..d0cf838 100644 > --- a/drivers/gpu/drm/arm/display/komeda/komeda_kms.h > +++ b/drivers/gpu/drm/arm/display/komeda/komeda_kms.h > @@ -98,6 +98,12 @@ struct komeda_crtc { > > /** @slave_planes_property: property for slaves of the planes */ > struct drm_property *slave_planes_property; And this seems to not be the first time this happened. Looking at komeda with a quick git grep on properties you've actually accumulated quite a pile of such driver properties already. Where's the userspace for this? Where's the uapi discussions for this stuff? Where's the igt tests for this (yes a bunch are after we agreed to have testcases for this). I know that in the past we've been somewhat sloppy properties, but that was a mistake and we've cranked down on this hard. Probably need to fix this with a pile of reverts and start over. -Daniel > + > + /** @vrr_property: property for variable refresh rate */ > + struct drm_property *vrr_property; > + > + /** @vrr_enable_property: property for enable/disable the vrr */ > + struct drm_property *vrr_enable_property; > }; > > /** > @@ -126,6 +132,12 @@ struct komeda_crtc_state { > > /** @max_slave_zorder: the maximum of slave zorder */ > u32 max_slave_zorder; > + > + /** @vfp: the value of vertical front porch */ > + u32 vfp; > + > + /** @en_vrr: enable status of variable refresh rate */ > + u8 en_vrr : 1; > }; > > /** struct komeda_kms_dev - for gather KMS related things */ > diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_pipeline.h b/drivers/gpu/drm/arm/display/komeda/komeda_pipeline.h > index 00e8083..66d7664 100644 > --- a/drivers/gpu/drm/arm/display/komeda/komeda_pipeline.h > +++ b/drivers/gpu/drm/arm/display/komeda/komeda_pipeline.h > @@ -336,7 +336,9 @@ struct komeda_improc_state { > /* display timing controller */ > struct komeda_timing_ctrlr { > struct komeda_component base; > - u8 supports_dual_link : 1; > + u8 supports_dual_link : 1, > + supports_vrr : 1; > + struct malidp_range vfp_range; > }; > > struct komeda_timing_ctrlr_state { > -- > 1.9.1 > > _______________________________________________ > dri-devel mailing list > dri-devel@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/dri-devel -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch