From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yakir Yang Subject: Re: [PATCH v4 1/4] drm/rockchip: vop: export line flag function Date: Fri, 15 Jul 2016 09:43:07 +0800 Message-ID: <57883FAB.7040203@rock-chips.com> References: <1468469704-12440-1-git-send-email-ykk@rock-chips.com> <1468469744-12592-1-git-send-email-ykk@rock-chips.com> <20160714144657.GA13857@seanpaul0.roam.corp.google.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20160714144657.GA13857@seanpaul0.roam.corp.google.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Sean Paul Cc: Thierry Reding , Krzysztof Kozlowski , linux-samsung-soc@vger.kernel.org, Javier Martinez Canillas , Mark Yao , Jingoo Han , emil.l.velikov@gmail.com, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, dianders@chromium.org, linux-rockchip@lists.infradead.org, daniel.vetter@ffwll.ch, =?UTF-8?Q?St=c3=a9phane_Marchesin?= , Tomasz Figa , Dan Carpenter List-Id: linux-rockchip.vger.kernel.org U2VhbiwKCk9uIDA3LzE0LzIwMTYgMTA6NDYgUE0sIFNlYW4gUGF1bCB3cm90ZToKPiBPbiBUaHUs IEp1bCAxNCwgMjAxNiBhdCAxMjoxNTo0NFBNICswODAwLCBZYWtpciBZYW5nIHdyb3RlOgo+PiBW T1AgaGF2ZSBpbnRlZ3JhdGVkIGEgaGFyZHdhcmUgY291bnRlciB3aGljaCBpbmRpY2F0ZSB0aGUg ZXhhY3QgZGlzcGxheQo+PiBsaW5lIHRoYXQgdm9wIGlzIHNjYW5uaW5nLiBBbmQgaWYgd2UncmUg aW50ZXJlc3RlZCBpbiBhIHNwZWNpZmljIGxpbmUsCj4+IHdlIGNhbiBzZXQgdGhlIGxpbmUgbnVt YmVyIHRvIHZvcCBsaW5lX2ZsYWcgcmVnaXN0ZXIsIGFuZCB0aGVuIHZvcCB3b3VsZAo+PiBnZW5l cmF0ZSBhIGxpbmVfZmxhZyBpbnRlcnJ1cHQgZm9yIGl0Lgo+Pgo+PiBGb3IgZXhhbXBsZSBlRFAg UFNSIGZ1bmN0aW9uIGlzIGludGVyZXN0ZWQgaW4gdGhlIHZlcnRpY2FsIGJsYW5raW5nCj4+IHBl cmlvZCwgdGhlbiBkcml2ZXIgY291bGQgc2V0IHRoZSBsaW5lIG51bWJlciB0byB6ZXJvLgo+Pgo+ PiBUaGlzIHBhdGNoIGhhdmUgZXhwb3J0ZWQgYSBzeW1ib2wgdGhhdCBhbGxvdyBvdGhlciBkcml2 ZXIgdG8gbGlzdGVuIHRoZQo+PiBsaW5lIGZsYWcgZXZlbnQgd2l0aCBnaXZlbiB0aW1lb3V0IGxp bWl0Ogo+PiAtICByb2NrY2hpcF9kcm1fd2FpdF9saW5lX2ZsYWcoKQo+Pgo+PiBTaWduZWQtb2Zm LWJ5OiBZYWtpciBZYW5nIDx5a2tAcm9jay1jaGlwcy5jb20+Cj4+IC0tLQo+PiBDaGFuZ2VzIGlu IHY0Ogo+PiAtIEF2b2lkIHRoZSB3ZWlyZCBiZWhhdmlvciBpbiByb2NrY2hpcF9kcm1fd2FpdF9s aW5lX2ZsYWcoKS4gKFNlYW4pCj4+IC0gTWFrZSBsaW5lX2ZsYWdfbnVtX3ggdG8gYW4gYXJyYXku IChTZWFuKQo+PiAtIFJlbW92ZSB0aGUgdW51c2VkIHZvcF9jZmdfZG9uZSgpIGluIHZvcF9saW5l X2ZsYWdfaXJxX2VuYWJsZSgpLiAoU3RlcGhhbmUsIHJldmlld2VkIGluIEdvb2dsZSBnZXJyaXQp Cj4+ICAgICAgW2h0dHBzOi8vY2hyb21pdW0tcmV2aWV3Lmdvb2dsZXNvdXJjZS5jb20vIy9jLzM0 OTA4NC8zMy9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX3ZvcC5jQDQ2Nl0K Pj4KPj4gQ2hhbmdlcyBpbiB2MzoKPj4gLSBFeHBvcnQgdGhlICdyb2NrY2hpcF9kcm1fd2FpdF9s aW5lX2ZsYWcnIHN5bWJvbCwgYW5kIGRvY3VtZW50IGl0Lgo+PiAtIEFkZCAnbGluZV9mbGFnX251 bV8wJyBmb3IgUkszMjg4L1JLMzAzNgo+PiAtIFJlbW92ZSB0aGUgbm90aWZ5IGZvciB3YWl0aW5n IGxpbmVfZmxhZyBldmVudCAoRGFuaWVsKQo+Pgo+PiBDaGFuZ2VzIGluIHYyOgo+PiAtIEludHJv ZHVjZSBpbiB2Miwgc3BsaXQgVk9QIGxpbmUgZmxhZyBjaGFuZ2VzIG91dAo+Pgo+PiAgIGRyaXZl cnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9kcm1fZHJ2LmggfCAgIDMgKwo+PiAgIGRyaXZl cnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9kcm1fdm9wLmMgfCAxMTggKysrKysrKysrKysr KysrKysrKysrKysrKysrKwo+PiAgIGRyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9k cm1fdm9wLmggfCAgIDIgKwo+PiAgIGRyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF92 b3BfcmVnLmMgfCAgIDQgKwo+PiAgIDQgZmlsZXMgY2hhbmdlZCwgMTI3IGluc2VydGlvbnMoKykK Pj4KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9kcm1f ZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX2Rydi5oCj4+IGlu ZGV4IGVhMzkzMjkuLjIzOWI4MzAgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9yb2Nr Y2hpcC9yb2NrY2hpcF9kcm1fZHJ2LmgKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlw L3JvY2tjaGlwX2RybV9kcnYuaAo+PiBAQCAtNzAsNCArNzAsNyBAQCBpbnQgcm9ja2NoaXBfZHJt X2RtYV9hdHRhY2hfZGV2aWNlKHN0cnVjdCBkcm1fZGV2aWNlICpkcm1fZGV2LAo+PiAgIAkJCQkg ICBzdHJ1Y3QgZGV2aWNlICpkZXYpOwo+PiAgIHZvaWQgcm9ja2NoaXBfZHJtX2RtYV9kZXRhY2hf ZGV2aWNlKHN0cnVjdCBkcm1fZGV2aWNlICpkcm1fZGV2LAo+PiAgIAkJCQkgICAgc3RydWN0IGRl dmljZSAqZGV2KTsKPj4gK2ludCByb2NrY2hpcF9kcm1fd2FpdF9saW5lX2ZsYWcoc3RydWN0IGRy bV9jcnRjICpjcnRjLCB1bnNpZ25lZCBpbnQgbGluZV9udW0sCj4+ICsJCQkJdW5zaWduZWQgaW50 IG1zdGltZW91dCk7Cj4+ICsKPj4gICAjZW5kaWYgLyogX1JPQ0tDSElQX0RSTV9EUlZfSF8gKi8K Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9kcm1fdm9w LmMgYi9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX3ZvcC5jCj4+IGluZGV4 IGM4YTYyYTguLjY5ZDMyZjEgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hp cC9yb2NrY2hpcF9kcm1fdm9wLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3Jv Y2tjaGlwX2RybV92b3AuYwo+PiBAQCAtMTIxLDYgKzEyMSw4IEBAIHN0cnVjdCB2b3Agewo+PiAg IAkvKiBwcm90ZWN0ZWQgYnkgZGV2LT5ldmVudF9sb2NrICovCj4+ICAgCXN0cnVjdCBkcm1fcGVu ZGluZ192YmxhbmtfZXZlbnQgKmV2ZW50Owo+PiAgIAo+PiArCXN0cnVjdCBjb21wbGV0aW9uIGxp bmVfZmxhZ19jb21wbGV0aW9uOwo+PiArCj4+ICAgCWNvbnN0IHN0cnVjdCB2b3BfZGF0YSAqZGF0 YTsKPj4gICAKPj4gICAJdWludDMyX3QgKnJlZ3NiYWs7Cj4+IEBAIC00MzEsNiArNDMzLDcxIEBA IHN0YXRpYyB2b2lkIHZvcF9kc3BfaG9sZF92YWxpZF9pcnFfZGlzYWJsZShzdHJ1Y3Qgdm9wICp2 b3ApCj4+ICAgCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnZvcC0+aXJxX2xvY2ssIGZsYWdzKTsK Pj4gICB9Cj4+ICAgCj4+ICsvKgo+PiArICogKDEpIGVhY2ggZnJhbWUgc3RhcnRzIGF0IHRoZSBz dGFydCBvZiB0aGUgVnN5bmMgcHVsc2Ugd2hpY2ggaXMgc2lnbmFsZWQgYnkKPj4gKyAqICAgICB0 aGUgIkZSQU1FX1NZTkMiIGludGVycnVwdC4KPj4gKyAqICgyKSB0aGUgYWN0aXZlIGRhdGEgcmVn aW9uIG9mIGVhY2ggZnJhbWUgZW5kcyBhdCBkc3BfdmFjdF9lbmQKPj4gKyAqICgzKSB3ZSBzaG91 bGQgcHJvZ3JhbSB0aGlzIHNhbWUgbnVtYmVyIChkc3BfdmFjdF9lbmQpIGludG8gZHNwX2xpbmVf ZnJhZ19udW0sCj4+ICsgKiAgICAgIHRvIGdldCAiTElORV9GTEFHIiBpbnRlcnJ1cHQgYXQgdGhl IGVuZCBvZiB0aGUgYWN0aXZlIG9uIHNjcmVlbiBkYXRhLgo+PiArICoKPj4gKyAqIFZPUF9JTlRS X0NUUkwwLmRzcF9saW5lX2ZyYWdfbnVtID0gVk9QX0RTUF9WQUNUX1NUX0VORC5kc3BfdmFjdF9l bmQKPj4gKyAqIEludGVycnVwdHMKPj4gKyAqIExJTkVfRkxBRyAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKwo+PiArICogRlJBTUVfU1lOQyAtLS0tKyAgICAgICAgICAgICAgICAgICAg ICAgICB8Cj4+ICsgKiAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIHwK Pj4gKyAqICAgICAgICAgICAgICAgIHYgICAgICAgICAgICAgICAgICAgICAgICAgdgo+PiArICog ICAgICAgICAgICAgICAgfCBWc3luYyB8IFZicCB8ICBWYWN0aXZlICB8IFZmcCB8Cj4+ICsgKiAg ICAgICAgICAgICAgICAgICAgICAgIF4gICAgIF4gICAgICAgICAgIF4gICAgIF4KPj4gKyAqICAg ICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCAgICAgICAgICAgfCAgICAgfAo+PiArICogICAg ICAgICAgICAgICAgICAgICAgICB8ICAgICB8ICAgICAgICAgICB8ICAgICB8Cj4+ICsgKiBkc3Bf dnNfZW5kIC0tLS0tLS0tLS0tLSsgICAgIHwgICAgICAgICAgIHwgICAgIHwgICBWT1BfRFNQX1ZU T1RBTF9WU19FTkQKPj4gKyAqIGRzcF92YWN0X3N0YXJ0IC0tLS0tLS0tLS0tLS0tKyAgICAgICAg ICAgfCAgICAgfCAgIFZPUF9EU1BfVkFDVF9TVF9FTkQKPj4gKyAqIGRzcF92YWN0X2VuZCAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAgICAgfCAgIFZPUF9EU1BfVkFDVF9TVF9FTkQKPj4g KyAqIGRzcF90b3RhbCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAgIFZP UF9EU1BfVlRPVEFMX1ZTX0VORAo+PiArICovCj4+ICtzdGF0aWMgYm9vbCB2b3BfbGluZV9mbGFn X2lycV9pc19lbmFibGVkKHN0cnVjdCB2b3AgKnZvcCkKPj4gK3sKPj4gKwl1aW50MzJfdCBsaW5l X2ZsYWdfaXJxOwo+PiArCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4+ICsKPj4gKwlzcGluX2xvY2tf aXJxc2F2ZSgmdm9wLT5pcnFfbG9jaywgZmxhZ3MpOwo+PiArCj4+ICsJbGluZV9mbGFnX2lycSA9 IFZPUF9JTlRSX0dFVF9UWVBFKHZvcCwgZW5hYmxlLCBMSU5FX0ZMQUdfSU5UUik7Cj4+ICsKPj4g KwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZ2b3AtPmlycV9sb2NrLCBmbGFncyk7Cj4+ICsKPj4g KwlyZXR1cm4gISFsaW5lX2ZsYWdfaXJxOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgdm9pZCB2b3Bf bGluZV9mbGFnX2lycV9lbmFibGUoc3RydWN0IHZvcCAqdm9wLCBpbnQgbGluZV9udW0pCj4+ICt7 Cj4+ICsJdW5zaWduZWQgbG9uZyBmbGFnczsKPj4gKwo+PiArCWlmIChXQVJOX09OKCF2b3AtPmlz X2VuYWJsZWQpKQo+PiArCQlyZXR1cm47Cj4+ICsKPj4gKwlzcGluX2xvY2tfaXJxc2F2ZSgmdm9w LT5pcnFfbG9jaywgZmxhZ3MpOwo+PiArCj4+ICsJVk9QX0NUUkxfU0VUKHZvcCwgbGluZV9mbGFn X251bVswXSwgbGluZV9udW0pOwo+PiArCVZPUF9JTlRSX1NFVF9UWVBFKHZvcCwgZW5hYmxlLCBM SU5FX0ZMQUdfSU5UUiwgMSk7Cj4+ICsKPj4gKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZ2b3At PmlycV9sb2NrLCBmbGFncyk7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyB2b2lkIHZvcF9saW5lX2Zs YWdfaXJxX2Rpc2FibGUoc3RydWN0IHZvcCAqdm9wKQo+PiArewo+PiArCXVuc2lnbmVkIGxvbmcg ZmxhZ3M7Cj4+ICsKPj4gKwlpZiAoV0FSTl9PTighdm9wLT5pc19lbmFibGVkKSkKPj4gKwkJcmV0 dXJuOwo+PiArCj4+ICsJc3Bpbl9sb2NrX2lycXNhdmUoJnZvcC0+aXJxX2xvY2ssIGZsYWdzKTsK Pj4gKwo+PiArCVZPUF9JTlRSX1NFVF9UWVBFKHZvcCwgZW5hYmxlLCBMSU5FX0ZMQUdfSU5UUiwg MCk7Cj4+ICsKPj4gKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZ2b3AtPmlycV9sb2NrLCBmbGFn cyk7Cj4+ICt9Cj4+ICsKPj4gICBzdGF0aWMgdm9pZCB2b3BfZW5hYmxlKHN0cnVjdCBkcm1fY3J0 YyAqY3J0YykKPj4gICB7Cj4+ICAgCXN0cnVjdCB2b3AgKnZvcCA9IHRvX3ZvcChjcnRjKTsKPj4g QEAgLTExNTcsNiArMTIyNCwxMyBAQCBzdGF0aWMgaXJxcmV0dXJuX3Qgdm9wX2lzcihpbnQgaXJx LCB2b2lkICpkYXRhKQo+PiAgIAkJcmV0ID0gSVJRX0hBTkRMRUQ7Cj4+ICAgCX0KPj4gICAKPj4g KwlpZiAoYWN0aXZlX2lycXMgJiBMSU5FX0ZMQUdfSU5UUikgewo+PiArCQlpZiAoIWNvbXBsZXRp b25fZG9uZSgmdm9wLT5saW5lX2ZsYWdfY29tcGxldGlvbikpCj4+ICsJCQljb21wbGV0ZSgmdm9w LT5saW5lX2ZsYWdfY29tcGxldGlvbik7Cj4gWW91IHN0aWxsIGhhdmUgdGhlIGNvbXBsZXRpb25f ZG9uZS9jb21wbGV0ZSBoZXJlLgo+Cj4gSWYgeW91IGp1c3QgY2FsbCBjb21wbGV0ZSgpIHdpdGhv dXQgY2hlY2tpbmcgaWYgaXQncyBkb25lLCB5b3UnbGwgcmVtb3ZlIHRoZQo+IHJhY2UgSSBtZW50 aW9uZWQgaW4gbXkgZmlyc3QgcmV2aWV3LgoKQWgsIGZvcmdldCB0byB1cGRhdGUgdGhpcyBvbmUs IHdpbGwgc2VuZCBhIG5ldyB2NC4xIHBhdGNoIHRvIGZpeCBpdC4KClRoYW5rcyBhIGxvdCwKLSBZ YWtpcgoKPiBTZWFuCj4KPj4gKwkJYWN0aXZlX2lycXMgJj0gfkxJTkVfRkxBR19JTlRSOwo+PiAr CQlyZXQgPSBJUlFfSEFORExFRDsKPj4gKwl9Cj4+ICsKPj4gICAJaWYgKGFjdGl2ZV9pcnFzICYg RlNfSU5UUikgewo+PiAgIAkJZHJtX2NydGNfaGFuZGxlX3ZibGFuayhjcnRjKTsKPj4gICAJCXZv cF9oYW5kbGVfdmJsYW5rKHZvcCk7Cj4+IEBAIC0xMjU1LDYgKzEzMjksNyBAQCBzdGF0aWMgaW50 IHZvcF9jcmVhdGVfY3J0YyhzdHJ1Y3Qgdm9wICp2b3ApCj4+ICAgCj4+ICAgCWluaXRfY29tcGxl dGlvbigmdm9wLT5kc3BfaG9sZF9jb21wbGV0aW9uKTsKPj4gICAJaW5pdF9jb21wbGV0aW9uKCZ2 b3AtPndhaXRfdXBkYXRlX2NvbXBsZXRlKTsKPj4gKwlpbml0X2NvbXBsZXRpb24oJnZvcC0+bGlu ZV9mbGFnX2NvbXBsZXRpb24pOwo+PiAgIAljcnRjLT5wb3J0ID0gcG9ydDsKPj4gICAJcm9ja2No aXBfcmVnaXN0ZXJfY3J0Y19mdW5jcyhjcnRjLCAmcHJpdmF0ZV9jcnRjX2Z1bmNzKTsKPj4gICAK Pj4gQEAgLTE0MTEsNiArMTQ4Niw0OSBAQCBzdGF0aWMgdm9pZCB2b3Bfd2luX2luaXQoc3RydWN0 IHZvcCAqdm9wKQo+PiAgIAl9Cj4+ICAgfQo+PiAgIAo+PiArLyoqCj4+ICsgKiByb2NrY2hpcF9k cm1fd2FpdF9saW5lX2ZsYWcgLSBhY3FpdXJlIHRoZSBnaXZlIGxpbmUgZmxhZyBldmVudAo+PiAr ICogQGNydGM6IENSVEMgdG8gZW5hYmxlIGxpbmUgZmxhZwo+PiArICogQGxpbmVfbnVtOiBpbnRl cmVzdGVkIGxpbmUgbnVtYmVyCj4+ICsgKiBAbXN0aW1lb3V0OiBtaWxsaXNlY29uZCBmb3IgdGlt ZW91dAo+PiArICoKPj4gKyAqIERyaXZlciB3b3VsZCBob2xkIGhlcmUgdW50aWwgdGhlIGludGVy ZXN0ZWQgbGluZSBmbGFnIGludGVycnVwdCBoYXZlCj4+ICsgKiBoYXBwZW5lZCBvciB0aW1lb3V0 IHRvIHdhaXQuCj4+ICsgKgo+PiArICogUmV0dXJuczoKPj4gKyAqIFplcm8gb24gc3VjY2Vzcywg bmVnYXRpdmUgZXJybm8gb24gZmFpbHVyZS4KPj4gKyAqLwo+PiAraW50IHJvY2tjaGlwX2RybV93 YWl0X2xpbmVfZmxhZyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMsIHVuc2lnbmVkIGludCBsaW5lX251 bSwKPj4gKwkJCQl1bnNpZ25lZCBpbnQgbXN0aW1lb3V0KQo+PiArewo+PiArCXN0cnVjdCB2b3Ag KnZvcCA9IHRvX3ZvcChjcnRjKTsKPj4gKwl1bnNpZ25lZCBsb25nIGppZmZpZXNfbGVmdDsKPj4g Kwo+PiArCWlmICghY3J0YyB8fCAhdm9wLT5pc19lbmFibGVkKQo+PiArCQlyZXR1cm4gLUVOT0RF VjsKPj4gKwo+PiArCWlmIChsaW5lX251bSA+IGNydGMtPm1vZGUudnRvdGFsIHx8IG1zdGltZW91 dCA8PSAwKQo+PiArCQlyZXR1cm4gLUVJTlZBTDsKPj4gKwo+PiArCWlmICh2b3BfbGluZV9mbGFn X2lycV9pc19lbmFibGVkKHZvcCkpCj4+ICsJCXJldHVybiAtRUJVU1k7Cj4+ICsKPj4gKwlyZWlu aXRfY29tcGxldGlvbigmdm9wLT5saW5lX2ZsYWdfY29tcGxldGlvbik7Cj4+ICsJdm9wX2xpbmVf ZmxhZ19pcnFfZW5hYmxlKHZvcCwgbGluZV9udW0pOwo+PiArCj4+ICsJamlmZmllc19sZWZ0ID0g d2FpdF9mb3JfY29tcGxldGlvbl90aW1lb3V0KCZ2b3AtPmxpbmVfZmxhZ19jb21wbGV0aW9uLAo+ PiArCQkJCQkJICAgbXNlY3NfdG9famlmZmllcyhtc3RpbWVvdXQpKTsKPj4gKwl2b3BfbGluZV9m bGFnX2lycV9kaXNhYmxlKHZvcCk7Cj4+ICsKPj4gKwlpZiAoamlmZmllc19sZWZ0ID09IDApIHsK Pj4gKwkJZGV2X2Vycih2b3AtPmRldiwgIlRpbWVvdXQgd2FpdGluZyBmb3IgSVJRXG4iKTsKPj4g KwkJcmV0dXJuIC1FVElNRURPVVQ7Cj4+ICsJfQo+PiArCj4+ICsJcmV0dXJuIDA7Cj4+ICt9Cj4+ ICtFWFBPUlRfU1lNQk9MKHJvY2tjaGlwX2RybV93YWl0X2xpbmVfZmxhZyk7Cj4+ICsKPj4gICBz dGF0aWMgaW50IHZvcF9iaW5kKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZSAqbWFz dGVyLCB2b2lkICpkYXRhKQo+PiAgIHsKPj4gICAJc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRl diA9IHRvX3BsYXRmb3JtX2RldmljZShkZXYpOwo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2RybV92b3AuaCBiL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hp cC9yb2NrY2hpcF9kcm1fdm9wLmgKPj4gaW5kZXggZmY0ZjUyZS4uMWRiYzUyNiAxMDA2NDQKPj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2RybV92b3AuaAo+PiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX3ZvcC5oCj4+IEBAIC02MSw2 ICs2MSw4IEBAIHN0cnVjdCB2b3BfY3RybCB7Cj4+ICAgCXN0cnVjdCB2b3BfcmVnIGhwb3N0X3N0 X2VuZDsKPj4gICAJc3RydWN0IHZvcF9yZWcgdnBvc3Rfc3RfZW5kOwo+PiAgIAo+PiArCXN0cnVj dCB2b3BfcmVnIGxpbmVfZmxhZ19udW1bMl07Cj4+ICsKPj4gICAJc3RydWN0IHZvcF9yZWcgY2Zn X2RvbmU7Cj4+ICAgfTsKPj4gICAKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yb2Nr Y2hpcC9yb2NrY2hpcF92b3BfcmVnLmMgYi9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2No aXBfdm9wX3JlZy5jCj4+IGluZGV4IDZmNDJlNTYuLmVlYTg0MjcgMTAwNjQ0Cj4+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF92b3BfcmVnLmMKPj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX3ZvcF9yZWcuYwo+PiBAQCAtMTIyLDYgKzEyMiw3 IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgdm9wX2N0cmwgcmszMDM2X2N0cmxfZGF0YSA9IHsKPj4g ICAJLmhhY3Rfc3RfZW5kID0gVk9QX1JFRyhSSzMwMzZfRFNQX0hBQ1RfU1RfRU5ELCAweDFmZmYx ZmZmLCAwKSwKPj4gICAJLnZ0b3RhbF9wdyA9IFZPUF9SRUcoUkszMDM2X0RTUF9WVE9UQUxfVlNf RU5ELCAweDFmZmYxZmZmLCAwKSwKPj4gICAJLnZhY3Rfc3RfZW5kID0gVk9QX1JFRyhSSzMwMzZf RFNQX1ZBQ1RfU1RfRU5ELCAweDFmZmYxZmZmLCAwKSwKPj4gKwkubGluZV9mbGFnX251bVswXSA9 IFZPUF9SRUcoUkszMDM2X0lOVF9TVEFUVVMsIDB4ZmZmLCAxMiksCj4+ICAgCS5jZmdfZG9uZSA9 IFZPUF9SRUcoUkszMDM2X1JFR19DRkdfRE9ORSwgMHgxLCAwKSwKPj4gICB9Owo+PiAgIAo+PiBA QCAtMjIxLDYgKzIyMiw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgdm9wX2N0cmwgcmszMjg4X2N0 cmxfZGF0YSA9IHsKPj4gICAJLnZhY3Rfc3RfZW5kID0gVk9QX1JFRyhSSzMyODhfRFNQX1ZBQ1Rf U1RfRU5ELCAweDFmZmYxZmZmLCAwKSwKPj4gICAJLmhwb3N0X3N0X2VuZCA9IFZPUF9SRUcoUksz Mjg4X1BPU1RfRFNQX0hBQ1RfSU5GTywgMHgxZmZmMWZmZiwgMCksCj4+ICAgCS52cG9zdF9zdF9l bmQgPSBWT1BfUkVHKFJLMzI4OF9QT1NUX0RTUF9WQUNUX0lORk8sIDB4MWZmZjFmZmYsIDApLAo+ PiArCS5saW5lX2ZsYWdfbnVtWzBdID0gVk9QX1JFRyhSSzMyODhfSU5UUl9DVFJMMCwgMHgxZmZm LCAxMiksCj4+ICAgCS5jZmdfZG9uZSA9IFZPUF9SRUcoUkszMjg4X1JFR19DRkdfRE9ORSwgMHgx LCAwKSwKPj4gICB9Owo+PiAgIAo+PiBAQCAtMjk5LDYgKzMwMSw4IEBAIHN0YXRpYyBjb25zdCBz dHJ1Y3Qgdm9wX2N0cmwgcmszMzk5X2N0cmxfZGF0YSA9IHsKPj4gICAJLnZhY3Rfc3RfZW5kID0g Vk9QX1JFRyhSSzMzOTlfRFNQX1ZBQ1RfU1RfRU5ELCAweDFmZmYxZmZmLCAwKSwKPj4gICAJLmhw b3N0X3N0X2VuZCA9IFZPUF9SRUcoUkszMzk5X1BPU1RfRFNQX0hBQ1RfSU5GTywgMHgxZmZmMWZm ZiwgMCksCj4+ICAgCS52cG9zdF9zdF9lbmQgPSBWT1BfUkVHKFJLMzM5OV9QT1NUX0RTUF9WQUNU X0lORk8sIDB4MWZmZjFmZmYsIDApLAo+PiArCS5saW5lX2ZsYWdfbnVtWzBdID0gVk9QX1JFRyhS SzMzOTlfTElORV9GTEFHLCAweGZmZmYsIDApLAo+PiArCS5saW5lX2ZsYWdfbnVtWzFdID0gVk9Q X1JFRyhSSzMzOTlfTElORV9GTEFHLCAweGZmZmYsIDE2KSwKPj4gICAJLmNmZ19kb25lID0gVk9Q X1JFR19NQVNLKFJLMzM5OV9SRUdfQ0ZHX0RPTkUsIDB4MSwgMCksCj4+ICAgfTsKPj4gICAKPj4g LS0gCj4+IDEuOS4xCj4+Cj4+Cj4+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCj4+IGRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKPj4gZHJpLWRldmVsQGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwo+PiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2RyaS1kZXZlbAo+Cj4KCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9kcmktZGV2ZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752152AbcGOBna (ORCPT ); Thu, 14 Jul 2016 21:43:30 -0400 Received: from lucky1.263xmail.com ([211.157.147.133]:60277 "EHLO lucky1.263xmail.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751453AbcGOBn2 (ORCPT ); Thu, 14 Jul 2016 21:43:28 -0400 X-263anti-spam: KSV:0; X-MAIL-GRAY: 1 X-MAIL-DELIVERY: 0 X-KSVirus-check: 0 X-ABS-CHECKED: 4 X-ADDR-CHECKED: 0 X-RL-SENDER: ykk@rock-chips.com X-FST-TO: dan.carpenter@oracle.com X-SENDER-IP: 58.22.7.114 X-LOGIN-NAME: ykk@rock-chips.com X-UNIQUE-TAG: X-ATTACHMENT-NUM: 0 X-DNS-TYPE: 0 Subject: Re: [PATCH v4 1/4] drm/rockchip: vop: export line flag function To: Sean Paul References: <1468469704-12440-1-git-send-email-ykk@rock-chips.com> <1468469744-12592-1-git-send-email-ykk@rock-chips.com> <20160714144657.GA13857@seanpaul0.roam.corp.google.com> Cc: Mark Yao , Inki Dae , Jingoo Han , Heiko Stuebner , Krzysztof Kozlowski , linux-samsung-soc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-rockchip@lists.infradead.org, daniel.vetter@ffwll.ch, emil.l.velikov@gmail.com, dianders@chromium.org, dri-devel@lists.freedesktop.org, Tomasz Figa , Javier Martinez Canillas , =?UTF-8?Q?St=c3=a9phane_Marchesin?= , Thierry Reding , Dan Carpenter From: Yakir Yang Message-ID: <57883FAB.7040203@rock-chips.com> Date: Fri, 15 Jul 2016 09:43:07 +0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.8.0 MIME-Version: 1.0 In-Reply-To: <20160714144657.GA13857@seanpaul0.roam.corp.google.com> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Sean, On 07/14/2016 10:46 PM, Sean Paul wrote: > On Thu, Jul 14, 2016 at 12:15:44PM +0800, Yakir Yang wrote: >> VOP have integrated a hardware counter which indicate the exact display >> line that vop is scanning. And if we're interested in a specific line, >> we can set the line number to vop line_flag register, and then vop would >> generate a line_flag interrupt for it. >> >> For example eDP PSR function is interested in the vertical blanking >> period, then driver could set the line number to zero. >> >> This patch have exported a symbol that allow other driver to listen the >> line flag event with given timeout limit: >> - rockchip_drm_wait_line_flag() >> >> Signed-off-by: Yakir Yang >> --- >> Changes in v4: >> - Avoid the weird behavior in rockchip_drm_wait_line_flag(). (Sean) >> - Make line_flag_num_x to an array. (Sean) >> - Remove the unused vop_cfg_done() in vop_line_flag_irq_enable(). (Stephane, reviewed in Google gerrit) >> [https://chromium-review.googlesource.com/#/c/349084/33/drivers/gpu/drm/rockchip/rockchip_drm_vop.c@466] >> >> Changes in v3: >> - Export the 'rockchip_drm_wait_line_flag' symbol, and document it. >> - Add 'line_flag_num_0' for RK3288/RK3036 >> - Remove the notify for waiting line_flag event (Daniel) >> >> Changes in v2: >> - Introduce in v2, split VOP line flag changes out >> >> drivers/gpu/drm/rockchip/rockchip_drm_drv.h | 3 + >> drivers/gpu/drm/rockchip/rockchip_drm_vop.c | 118 ++++++++++++++++++++++++++++ >> drivers/gpu/drm/rockchip/rockchip_drm_vop.h | 2 + >> drivers/gpu/drm/rockchip/rockchip_vop_reg.c | 4 + >> 4 files changed, 127 insertions(+) >> >> diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.h b/drivers/gpu/drm/rockchip/rockchip_drm_drv.h >> index ea39329..239b830 100644 >> --- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.h >> +++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.h >> @@ -70,4 +70,7 @@ int rockchip_drm_dma_attach_device(struct drm_device *drm_dev, >> struct device *dev); >> void rockchip_drm_dma_detach_device(struct drm_device *drm_dev, >> struct device *dev); >> +int rockchip_drm_wait_line_flag(struct drm_crtc *crtc, unsigned int line_num, >> + unsigned int mstimeout); >> + >> #endif /* _ROCKCHIP_DRM_DRV_H_ */ >> diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c >> index c8a62a8..69d32f1 100644 >> --- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c >> +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c >> @@ -121,6 +121,8 @@ struct vop { >> /* protected by dev->event_lock */ >> struct drm_pending_vblank_event *event; >> >> + struct completion line_flag_completion; >> + >> const struct vop_data *data; >> >> uint32_t *regsbak; >> @@ -431,6 +433,71 @@ static void vop_dsp_hold_valid_irq_disable(struct vop *vop) >> spin_unlock_irqrestore(&vop->irq_lock, flags); >> } >> >> +/* >> + * (1) each frame starts at the start of the Vsync pulse which is signaled by >> + * the "FRAME_SYNC" interrupt. >> + * (2) the active data region of each frame ends at dsp_vact_end >> + * (3) we should program this same number (dsp_vact_end) into dsp_line_frag_num, >> + * to get "LINE_FLAG" interrupt at the end of the active on screen data. >> + * >> + * VOP_INTR_CTRL0.dsp_line_frag_num = VOP_DSP_VACT_ST_END.dsp_vact_end >> + * Interrupts >> + * LINE_FLAG -------------------------------+ >> + * FRAME_SYNC ----+ | >> + * | | >> + * v v >> + * | Vsync | Vbp | Vactive | Vfp | >> + * ^ ^ ^ ^ >> + * | | | | >> + * | | | | >> + * dsp_vs_end ------------+ | | | VOP_DSP_VTOTAL_VS_END >> + * dsp_vact_start --------------+ | | VOP_DSP_VACT_ST_END >> + * dsp_vact_end ----------------------------+ | VOP_DSP_VACT_ST_END >> + * dsp_total -------------------------------------+ VOP_DSP_VTOTAL_VS_END >> + */ >> +static bool vop_line_flag_irq_is_enabled(struct vop *vop) >> +{ >> + uint32_t line_flag_irq; >> + unsigned long flags; >> + >> + spin_lock_irqsave(&vop->irq_lock, flags); >> + >> + line_flag_irq = VOP_INTR_GET_TYPE(vop, enable, LINE_FLAG_INTR); >> + >> + spin_unlock_irqrestore(&vop->irq_lock, flags); >> + >> + return !!line_flag_irq; >> +} >> + >> +static void vop_line_flag_irq_enable(struct vop *vop, int line_num) >> +{ >> + unsigned long flags; >> + >> + if (WARN_ON(!vop->is_enabled)) >> + return; >> + >> + spin_lock_irqsave(&vop->irq_lock, flags); >> + >> + VOP_CTRL_SET(vop, line_flag_num[0], line_num); >> + VOP_INTR_SET_TYPE(vop, enable, LINE_FLAG_INTR, 1); >> + >> + spin_unlock_irqrestore(&vop->irq_lock, flags); >> +} >> + >> +static void vop_line_flag_irq_disable(struct vop *vop) >> +{ >> + unsigned long flags; >> + >> + if (WARN_ON(!vop->is_enabled)) >> + return; >> + >> + spin_lock_irqsave(&vop->irq_lock, flags); >> + >> + VOP_INTR_SET_TYPE(vop, enable, LINE_FLAG_INTR, 0); >> + >> + spin_unlock_irqrestore(&vop->irq_lock, flags); >> +} >> + >> static void vop_enable(struct drm_crtc *crtc) >> { >> struct vop *vop = to_vop(crtc); >> @@ -1157,6 +1224,13 @@ static irqreturn_t vop_isr(int irq, void *data) >> ret = IRQ_HANDLED; >> } >> >> + if (active_irqs & LINE_FLAG_INTR) { >> + if (!completion_done(&vop->line_flag_completion)) >> + complete(&vop->line_flag_completion); > You still have the completion_done/complete here. > > If you just call complete() without checking if it's done, you'll remove the > race I mentioned in my first review. Ah, forget to update this one, will send a new v4.1 patch to fix it. Thanks a lot, - Yakir > Sean > >> + active_irqs &= ~LINE_FLAG_INTR; >> + ret = IRQ_HANDLED; >> + } >> + >> if (active_irqs & FS_INTR) { >> drm_crtc_handle_vblank(crtc); >> vop_handle_vblank(vop); >> @@ -1255,6 +1329,7 @@ static int vop_create_crtc(struct vop *vop) >> >> init_completion(&vop->dsp_hold_completion); >> init_completion(&vop->wait_update_complete); >> + init_completion(&vop->line_flag_completion); >> crtc->port = port; >> rockchip_register_crtc_funcs(crtc, &private_crtc_funcs); >> >> @@ -1411,6 +1486,49 @@ static void vop_win_init(struct vop *vop) >> } >> } >> >> +/** >> + * rockchip_drm_wait_line_flag - acqiure the give line flag event >> + * @crtc: CRTC to enable line flag >> + * @line_num: interested line number >> + * @mstimeout: millisecond for timeout >> + * >> + * Driver would hold here until the interested line flag interrupt have >> + * happened or timeout to wait. >> + * >> + * Returns: >> + * Zero on success, negative errno on failure. >> + */ >> +int rockchip_drm_wait_line_flag(struct drm_crtc *crtc, unsigned int line_num, >> + unsigned int mstimeout) >> +{ >> + struct vop *vop = to_vop(crtc); >> + unsigned long jiffies_left; >> + >> + if (!crtc || !vop->is_enabled) >> + return -ENODEV; >> + >> + if (line_num > crtc->mode.vtotal || mstimeout <= 0) >> + return -EINVAL; >> + >> + if (vop_line_flag_irq_is_enabled(vop)) >> + return -EBUSY; >> + >> + reinit_completion(&vop->line_flag_completion); >> + vop_line_flag_irq_enable(vop, line_num); >> + >> + jiffies_left = wait_for_completion_timeout(&vop->line_flag_completion, >> + msecs_to_jiffies(mstimeout)); >> + vop_line_flag_irq_disable(vop); >> + >> + if (jiffies_left == 0) { >> + dev_err(vop->dev, "Timeout waiting for IRQ\n"); >> + return -ETIMEDOUT; >> + } >> + >> + return 0; >> +} >> +EXPORT_SYMBOL(rockchip_drm_wait_line_flag); >> + >> static int vop_bind(struct device *dev, struct device *master, void *data) >> { >> struct platform_device *pdev = to_platform_device(dev); >> diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop.h b/drivers/gpu/drm/rockchip/rockchip_drm_vop.h >> index ff4f52e..1dbc526 100644 >> --- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.h >> +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.h >> @@ -61,6 +61,8 @@ struct vop_ctrl { >> struct vop_reg hpost_st_end; >> struct vop_reg vpost_st_end; >> >> + struct vop_reg line_flag_num[2]; >> + >> struct vop_reg cfg_done; >> }; >> >> diff --git a/drivers/gpu/drm/rockchip/rockchip_vop_reg.c b/drivers/gpu/drm/rockchip/rockchip_vop_reg.c >> index 6f42e56..eea8427 100644 >> --- a/drivers/gpu/drm/rockchip/rockchip_vop_reg.c >> +++ b/drivers/gpu/drm/rockchip/rockchip_vop_reg.c >> @@ -122,6 +122,7 @@ static const struct vop_ctrl rk3036_ctrl_data = { >> .hact_st_end = VOP_REG(RK3036_DSP_HACT_ST_END, 0x1fff1fff, 0), >> .vtotal_pw = VOP_REG(RK3036_DSP_VTOTAL_VS_END, 0x1fff1fff, 0), >> .vact_st_end = VOP_REG(RK3036_DSP_VACT_ST_END, 0x1fff1fff, 0), >> + .line_flag_num[0] = VOP_REG(RK3036_INT_STATUS, 0xfff, 12), >> .cfg_done = VOP_REG(RK3036_REG_CFG_DONE, 0x1, 0), >> }; >> >> @@ -221,6 +222,7 @@ static const struct vop_ctrl rk3288_ctrl_data = { >> .vact_st_end = VOP_REG(RK3288_DSP_VACT_ST_END, 0x1fff1fff, 0), >> .hpost_st_end = VOP_REG(RK3288_POST_DSP_HACT_INFO, 0x1fff1fff, 0), >> .vpost_st_end = VOP_REG(RK3288_POST_DSP_VACT_INFO, 0x1fff1fff, 0), >> + .line_flag_num[0] = VOP_REG(RK3288_INTR_CTRL0, 0x1fff, 12), >> .cfg_done = VOP_REG(RK3288_REG_CFG_DONE, 0x1, 0), >> }; >> >> @@ -299,6 +301,8 @@ static const struct vop_ctrl rk3399_ctrl_data = { >> .vact_st_end = VOP_REG(RK3399_DSP_VACT_ST_END, 0x1fff1fff, 0), >> .hpost_st_end = VOP_REG(RK3399_POST_DSP_HACT_INFO, 0x1fff1fff, 0), >> .vpost_st_end = VOP_REG(RK3399_POST_DSP_VACT_INFO, 0x1fff1fff, 0), >> + .line_flag_num[0] = VOP_REG(RK3399_LINE_FLAG, 0xffff, 0), >> + .line_flag_num[1] = VOP_REG(RK3399_LINE_FLAG, 0xffff, 16), >> .cfg_done = VOP_REG_MASK(RK3399_REG_CFG_DONE, 0x1, 0), >> }; >> >> -- >> 1.9.1 >> >> >> _______________________________________________ >> dri-devel mailing list >> dri-devel@lists.freedesktop.org >> https://lists.freedesktop.org/mailman/listinfo/dri-devel > >