From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mark yao Subject: Re: [PATCH v2 2/5] drm/rockchip: vop: support verify registers with vop version Date: Thu, 13 Jul 2017 09:45:12 +0800 Message-ID: <5966D0A8.6060003@rock-chips.com> References: <1499824991-7391-1-git-send-email-mark.yao@rock-chips.com> <1499825019-7503-1-git-send-email-mark.yao@rock-chips.com> <20170712175305.n7kk7dzvfs2vywz3@art_vandelay> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170712175305.n7kk7dzvfs2vywz3@art_vandelay> 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: linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-rockchip@lists.infradead.org, linux-arm-kernel@lists.infradead.org List-Id: linux-rockchip.vger.kernel.org T24gMjAxN+W5tDA35pyIMTPml6UgMDE6NTMsIFNlYW4gUGF1bCB3cm90ZToKPiBPbiBXZWQsIEp1 bCAxMiwgMjAxNyBhdCAxMDowMzozOEFNICswODAwLCBNYXJrIFlhbyB3cm90ZToKPgo+IFBsZWFz ZSBhZGQgYSBjb21taXQgbWVzc2FnZSBkZXNjcmliaW5nICp3aGF0KiBhbmQgKndoeSogeW91IGFy ZSBtYWtpbmcgdGhlCj4gY2hhbmdlLgoKR290IGl0LCBJIHdpbGwgZml4IGl0IGF0IG5leHQgdmVy c2lvbi4KClRoYW5rcy4KPgo+PiBTaWduZWQtb2ZmLWJ5OiBNYXJrIFlhbyA8bWFyay55YW9Acm9j ay1jaGlwcy5jb20+Cj4+IC0tLQo+PiAgIGRyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hp cF9kcm1fdm9wLmMgfCA2NiArKysrKysrKysrKysrKysrKysrKystLS0tLS0tLQo+PiAgIGRyaXZl cnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9kcm1fdm9wLmggfCAxOCArKysrKystLQo+PiAg IGRyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF92b3BfcmVnLmMgfCAyMCArKysrKyst LS0KPj4gICAzIGZpbGVzIGNoYW5nZWQsIDc3IGluc2VydGlvbnMoKyksIDI3IGRlbGV0aW9ucygt KQo+Pgo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2Ry bV92b3AuYyBiL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9kcm1fdm9wLmMKPj4g aW5kZXggN2E1ZjgwOS4uYTkxODBmZCAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3Jv Y2tjaGlwL3JvY2tjaGlwX2RybV92b3AuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vcm9ja2No aXAvcm9ja2NoaXBfZHJtX3ZvcC5jCj4+IEBAIC00MiwzMyArNDIsNjAgQEAKPj4gICAjaW5jbHVk ZSAicm9ja2NoaXBfZHJtX3Bzci5oIgo+PiAgICNpbmNsdWRlICJyb2NrY2hpcF9kcm1fdm9wLmgi Cj4+ICAgCj4+IC0jZGVmaW5lIF9fUkVHX1NFVF9SRUxBWEVEKHgsIG9mZiwgbWFzaywgc2hpZnQs IHYsIHdyaXRlX21hc2spIFwKPj4gLQkJdm9wX21hc2tfd3JpdGUoeCwgb2ZmLCBtYXNrLCBzaGlm dCwgdiwgd3JpdGVfbWFzaywgdHJ1ZSkKPj4gKyNkZWZpbmUgVk9QX1JFR19TVVBQT1JUKHZvcCwg cmVnKSBcCj4+ICsJCSghcmVnLm1ham9yIHx8IChyZWcubWFqb3IgPT0gVk9QX01BSk9SKHZvcC0+ ZGF0YS0+dmVyc2lvbikgJiYgXAo+PiArCQlyZWcuYmVnaW5fbWlub3IgPD0gVk9QX01JTk9SKHZv cC0+ZGF0YS0+dmVyc2lvbikgJiYgXAo+PiArCQlyZWcuZW5kX21pbm9yID49IFZPUF9NSU5PUih2 b3AtPmRhdGEtPnZlcnNpb24pICYmIFwKPj4gKwkJcmVnLm1hc2spKQo+IFRoaXMgd291bGQgYmUg YmV0dGVyIHN1aXRlZCBhcyBhIHN0YXRpYyBpbmxpbmUgZnVuY3Rpb24uIEFzIHdvdWxkIG1hbnkg b2YgdGhlCj4gbWFjcm9zIGJlbG93LgoKR290IGl0LCB3aWxsIGZpeCBpdCBhdCBuZXh0IHZlcnNp b24uCj4KPj4gICAKPj4gLSNkZWZpbmUgX19SRUdfU0VUX05PUk1BTCh4LCBvZmYsIG1hc2ssIHNo aWZ0LCB2LCB3cml0ZV9tYXNrKSBcCj4+IC0JCXZvcF9tYXNrX3dyaXRlKHgsIG9mZiwgbWFzaywg c2hpZnQsIHYsIHdyaXRlX21hc2ssIGZhbHNlKQo+PiArI2RlZmluZSBWT1BfV0lOX1NVUFBPUlQo dm9wLCB3aW4sIG5hbWUpIFwKPj4gKwkJVk9QX1JFR19TVVBQT1JUKHZvcCwgd2luLT5waHktPm5h bWUpCj4+ICAgCj4+IC0jZGVmaW5lIFJFR19TRVQoeCwgYmFzZSwgcmVnLCB2LCBtb2RlKSBcCj4+ IC0JCV9fUkVHX1NFVF8jI21vZGUoeCwgYmFzZSArIHJlZy5vZmZzZXQsIFwKPj4gLQkJCQkgcmVn Lm1hc2ssIHJlZy5zaGlmdCwgdiwgcmVnLndyaXRlX21hc2spCj4+IC0jZGVmaW5lIFJFR19TRVRf TUFTSyh4LCBiYXNlLCByZWcsIG1hc2ssIHYsIG1vZGUpIFwKPj4gLQkJX19SRUdfU0VUXyMjbW9k ZSh4LCBiYXNlICsgcmVnLm9mZnNldCwgXAo+PiAtCQkJCSBtYXNrLCByZWcuc2hpZnQsIHYsIHJl Zy53cml0ZV9tYXNrKQo+PiArI2RlZmluZSBWT1BfQ1RSTF9TVVBQT1JUKHZvcCwgbmFtZSkgXAo+ PiArCQlWT1BfUkVHX1NVUFBPUlQodm9wLCB2b3AtPmRhdGEtPmN0cmwtPm5hbWUpCj4+ICsKPj4g KyNkZWZpbmUgVk9QX0lOVFJfU1VQUE9SVCh2b3AsIG5hbWUpIFwKPj4gKwkJVk9QX1JFR19TVVBQ T1JUKHZvcCwgdm9wLT5kYXRhLT5pbnRyLT5uYW1lKQo+PiArCj4+ICsjZGVmaW5lIF9fUkVHX1NF VCh4LCBvZmYsIG1hc2ssIHNoaWZ0LCB2LCB3cml0ZV9tYXNrLCByZWxheGVkKSBcCj4+ICsJCXZv cF9tYXNrX3dyaXRlKHgsIG9mZiwgbWFzaywgc2hpZnQsIHYsIHdyaXRlX21hc2ssIHJlbGF4ZWQp Cj4gVGhlcmUncyByZWFsbHkgbm8gcG9pbnQgdG8gdGhpcywganVzdCBjYWxsIHZvcF9tYXNrX3dy aXRlIGRpcmVjdGx5LgoKR290IGl0LCB3aWxsIGZpeCBpdCBhdCBuZXh0IHZlcnNpb24uCj4KPj4g Kwo+PiArI2RlZmluZSBfUkVHX1NFVCh2b3AsIG5hbWUsIG9mZiwgcmVnLCBtYXNrLCB2LCByZWxh eGVkKSBcCj4+ICsJZG8geyBcCj4+ICsJCWlmIChWT1BfUkVHX1NVUFBPUlQodm9wLCByZWcpKSBc Cj4+ICsJCQlfX1JFR19TRVQodm9wLCBvZmYgKyByZWcub2Zmc2V0LCBtYXNrLCByZWcuc2hpZnQs IFwKPiBzL21hc2svcmVnLm1hc2sgJiBtYXNrLwoKR290IGl0LCB3aWxsIGZpeCBpdCBhdCBuZXh0 IHZlcnNpb24uCj4KPj4gKwkJCQkgIHYsIHJlZy53cml0ZV9tYXNrLCByZWxheGVkKTsgXAo+PiAr CQllbHNlIFwKPj4gKwkJCWRldl9kYmcodm9wLT5kZXYsICJXYXJuaW5nOiBub3Qgc3VwcG9ydCAi I25hbWUiXG4iKTsgXAo+PiArCX0gd2hpbGUgKDApCj4KPiBBbHNvIGJldHRlciBhcyBzdGF0aWMg aW5saW5lLCBJTU8uCgpHb29kIGlkZWEsIEkgd2lsbCB0cnkgaXQuCgo+Cj4+ICsKPj4gKyNkZWZp bmUgUkVHX1NFVCh4LCBuYW1lLCBvZmYsIHJlZywgdiwgcmVsYXhlZCkgXAo+PiArCQlfUkVHX1NF VCh4LCBuYW1lLCBvZmYsIHJlZywgcmVnLm1hc2ssIHYsIHJlbGF4ZWQpCj4gcy9yZWcubWFzay9+ MC8KCkdvdCBpdCwgd2lsbCBmaXggaXQgYXQgbmV4dCB2ZXJzaW9uLgo+Cj4+ICsjZGVmaW5lIFJF R19TRVRfTUFTSyh4LCBuYW1lLCBvZmYsIHJlZywgbWFzaywgdiwgcmVsYXhlZCkgXAo+PiArCQlf UkVHX1NFVCh4LCBuYW1lLCBvZmYsIHJlZywgcmVnLm1hc2sgJiBtYXNrLCB2LCByZWxheGVkKQo+ IHMvcmVnLm1hc2sgJi8vCj4KPiBBbHNvLCB0aGVzZSBjYW4gYmVjb21lIHN0YXRpYyBpbmxpbmUg ZnVuY3Rpb25zIGFzIHdlbGwuCgpHb3QgaXQsIHdpbGwgZml4IGl0IGF0IG5leHQgdmVyc2lvbi4K Pgo+PiAgIAo+PiAgICNkZWZpbmUgVk9QX1dJTl9TRVQoeCwgd2luLCBuYW1lLCB2KSBcCj4+IC0J CVJFR19TRVQoeCwgd2luLT5iYXNlLCB3aW4tPnBoeS0+bmFtZSwgdiwgUkVMQVhFRCkKPj4gKwkJ UkVHX1NFVCh4LCBuYW1lLCB3aW4tPmJhc2UsIHdpbi0+cGh5LT5uYW1lLCB2LCB0cnVlKQo+PiAr I2RlZmluZSBWT1BfV0lOX1NFVF9FWFQoeCwgd2luLCBleHQsIG5hbWUsIHYpIFwKPj4gKwkJUkVH X1NFVCh4LCBuYW1lLCAwLCB3aW4tPmV4dC0+bmFtZSwgdiwgdHJ1ZSkKPj4gICAjZGVmaW5lIFZP UF9TQ0xfU0VUKHgsIHdpbiwgbmFtZSwgdikgXAo+PiAtCQlSRUdfU0VUKHgsIHdpbi0+YmFzZSwg d2luLT5waHktPnNjbC0+bmFtZSwgdiwgUkVMQVhFRCkKPj4gKwkJUkVHX1NFVCh4LCBuYW1lLCB3 aW4tPmJhc2UsIHdpbi0+cGh5LT5zY2wtPm5hbWUsIHYsIHRydWUpCj4+ICAgI2RlZmluZSBWT1Bf U0NMX1NFVF9FWFQoeCwgd2luLCBuYW1lLCB2KSBcCj4+IC0JCVJFR19TRVQoeCwgd2luLT5iYXNl LCB3aW4tPnBoeS0+c2NsLT5leHQtPm5hbWUsIHYsIFJFTEFYRUQpCj4+ICsJCVJFR19TRVQoeCwg bmFtZSwgd2luLT5iYXNlLCB3aW4tPnBoeS0+c2NsLT5leHQtPm5hbWUsIHYsIHRydWUpCj4+ICsK Pj4gICAjZGVmaW5lIFZPUF9DVFJMX1NFVCh4LCBuYW1lLCB2KSBcCj4+IC0JCVJFR19TRVQoeCwg MCwgKHgpLT5kYXRhLT5jdHJsLT5uYW1lLCB2LCBOT1JNQUwpCj4+ICsJCVJFR19TRVQoeCwgbmFt ZSwgMCwgKHgpLT5kYXRhLT5jdHJsLT5uYW1lLCB2LCBmYWxzZSkKPj4gICAKPj4gICAjZGVmaW5l IFZPUF9JTlRSX0dFVCh2b3AsIG5hbWUpIFwKPj4gICAJCXZvcF9yZWFkX3JlZyh2b3AsIDAsICZ2 b3AtPmRhdGEtPmN0cmwtPm5hbWUpCj4+ICAgCj4+IC0jZGVmaW5lIFZPUF9JTlRSX1NFVCh2b3As IG5hbWUsIG1hc2ssIHYpIFwKPj4gLQkJUkVHX1NFVF9NQVNLKHZvcCwgMCwgdm9wLT5kYXRhLT5p bnRyLT5uYW1lLCBtYXNrLCB2LCBOT1JNQUwpCj4+ICsjZGVmaW5lIFZPUF9JTlRSX1NFVCh2b3As IG5hbWUsIHYpIFwKPj4gKwkJUkVHX1NFVCh2b3AsIG5hbWUsIDAsIHZvcC0+ZGF0YS0+aW50ci0+ bmFtZSwgXAo+PiArCQkJdiwgZmFsc2UpCj4+ICsjZGVmaW5lIFZPUF9JTlRSX1NFVF9NQVNLKHZv cCwgbmFtZSwgbWFzaywgdikgXAo+PiArCQlSRUdfU0VUX01BU0sodm9wLCBuYW1lLCAwLCB2b3At PmRhdGEtPmludHItPm5hbWUsIFwKPj4gKwkJCSAgICAgbWFzaywgdiwgZmFsc2UpCj4+ICsKPj4g ICAjZGVmaW5lIFZPUF9JTlRSX1NFVF9UWVBFKHZvcCwgbmFtZSwgdHlwZSwgdikgXAo+PiAgIAlk byB7IFwKPj4gICAJCWludCBpLCByZWcgPSAwLCBtYXNrID0gMDsgXAo+PiBAQCAtNzgsMTMgKzEw NSwxNiBAQAo+PiAgIAkJCQltYXNrIHw9IDEgPDwgaTsgXAo+PiAgIAkJCX0gXAo+PiAgIAkJfSBc Cj4+IC0JCVZPUF9JTlRSX1NFVCh2b3AsIG5hbWUsIG1hc2ssIHJlZyk7IFwKPj4gKwkJVk9QX0lO VFJfU0VUX01BU0sodm9wLCBuYW1lLCBtYXNrLCByZWcpOyBcCj4+ICAgCX0gd2hpbGUgKDApCj4+ ICAgI2RlZmluZSBWT1BfSU5UUl9HRVRfVFlQRSh2b3AsIG5hbWUsIHR5cGUpIFwKPj4gICAJCXZv cF9nZXRfaW50cl90eXBlKHZvcCwgJnZvcC0+ZGF0YS0+aW50ci0+bmFtZSwgdHlwZSkKPj4gICAK Pj4gKyNkZWZpbmUgVk9QX0NUUkxfR0VUKHgsIG5hbWUpIFwKPj4gKwkJdm9wX3JlYWRfcmVnKHgs IDAsICZ2b3AtPmRhdGEtPmN0cmwtPm5hbWUpCj4+ICsKPj4gICAjZGVmaW5lIFZPUF9XSU5fR0VU KHgsIHdpbiwgbmFtZSkgXAo+PiAtCQl2b3BfcmVhZF9yZWcoeCwgd2luLT5iYXNlLCAmd2luLT5w aHktPm5hbWUpCj4+ICsJCXZvcF9yZWFkX3JlZyh4LCB3aW4tPm9mZnNldCwgd2luLT5waHktPm5h bWUpCj4+ICAgCj4+ICAgI2RlZmluZSBWT1BfV0lOX0dFVF9ZUkdCQUREUih2b3AsIHdpbikgXAo+ PiAgIAkJdm9wX3JlYWRsKHZvcCwgd2luLT5iYXNlICsgd2luLT5waHktPnlyZ2JfbXN0Lm9mZnNl dCkKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9kcm1f dm9wLmggYi9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX3ZvcC5oCj4+IGlu ZGV4IDA4NGQzYjIuLmU0ZGU4OTAgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9yb2Nr Y2hpcC9yb2NrY2hpcF9kcm1fdm9wLmgKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlw L3JvY2tjaGlwX2RybV92b3AuaAo+PiBAQCAtMTUsNiArMTUsMTQgQEAKPj4gICAjaWZuZGVmIF9S T0NLQ0hJUF9EUk1fVk9QX0gKPj4gICAjZGVmaW5lIF9ST0NLQ0hJUF9EUk1fVk9QX0gKPj4gICAK Pj4gKy8qCj4+ICsgKiBtYWpvcjogSVAgbWFqb3IgdmVydGlvbiwgdXNlZCBmb3IgSVAgc3RydWN0 dXJlCj4gcy92ZXJ0aW9uL3ZlcnNpb24KCkdvdCBpdCwgd2lsbCBmaXggaXQgYXQgbmV4dCB2ZXJz aW9uLgpUaGFua3MuCgo+Cj4+ICsgKiBtaW5vcjogYmlnIGZlYXR1cmUgY2hhbmdlIHVuZGVyIHNh bWUgc3RydWN0dXJlCj4+ICsgKi8KPj4gKyNkZWZpbmUgVk9QX1ZFUlNJT04obWFqb3IsIG1pbm9y KQkoKG1ham9yKSA8PCA4IHwgKG1pbm9yKSkKPj4gKyNkZWZpbmUgVk9QX01BSk9SKHZlcnNpb24p CQkoKHZlcnNpb24pID4+IDgpCj4+ICsjZGVmaW5lIFZPUF9NSU5PUih2ZXJzaW9uKQkJKCh2ZXJz aW9uKSAmIDB4ZmYpCj4+ICsKPj4gICBlbnVtIHZvcF9kYXRhX2Zvcm1hdCB7Cj4+ICAgCVZPUF9G TVRfQVJHQjg4ODggPSAwLAo+PiAgIAlWT1BfRk1UX1JHQjg4OCwKPj4gQEAgLTI1LDEwICszMywx MyBAQCBlbnVtIHZvcF9kYXRhX2Zvcm1hdCB7Cj4+ICAgfTsKPj4gICAKPj4gICBzdHJ1Y3Qgdm9w X3JlZyB7Cj4+IC0JdWludDMyX3Qgb2Zmc2V0Owo+PiAtCXVpbnQzMl90IHNoaWZ0Owo+PiAgIAl1 aW50MzJfdCBtYXNrOwo+PiAtCWJvb2wgd3JpdGVfbWFzazsKPj4gKwl1aW50MzJfdCBvZmZzZXQ6 MTI7Cj4+ICsJdWludDMyX3Qgc2hpZnQ6NTsKPj4gKwl1aW50MzJfdCBiZWdpbl9taW5vcjo0Owo+ PiArCXVpbnQzMl90IGVuZF9taW5vcjo0Owo+PiArCXVpbnQzMl90IG1ham9yOjM7Cj4+ICsJdWlu dDMyX3Qgd3JpdGVfbWFzazoxOwo+IFdoeSBhcmUgeW91IHBhY2tpbmcgdGhpcz8KCm1ha2Ugc3Ry dWN0IHZvcF9yZWcgbm90IHRvbyBiaWcsIGp1cyB1NjQgc2l6ZSwgc3RydWN0IHZvcF9yZWcgdXNl IGEgbG90IG9uIHJlZ2lzdGVyIGRlZmluZSwgcGFja2luZyBpdCB3b3VsZCByZWR1Y2UgcmVnaXN0 ZXIgdGFibGUgc2l6ZS4KCj4KPj4gICB9Owo+PiAgIAo+PiAgIHN0cnVjdCB2b3BfY3RybCB7Cj4+ IEBAIC0xMzQsNiArMTQ1LDcgQEAgc3RydWN0IHZvcF93aW5fZGF0YSB7Cj4+ICAgfTsKPj4gICAK Pj4gICBzdHJ1Y3Qgdm9wX2RhdGEgewo+PiArCXVpbnQzMl90IHZlcnNpb247Cj4+ICAgCWNvbnN0 IHN0cnVjdCB2b3BfY3RybCAqY3RybDsKPj4gICAJY29uc3Qgc3RydWN0IHZvcF9pbnRyICppbnRy Owo+PiAgIAljb25zdCBzdHJ1Y3Qgdm9wX3dpbl9kYXRhICp3aW47Cj4+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfdm9wX3JlZy5jIGIvZHJpdmVycy9ncHUv ZHJtL3JvY2tjaGlwL3JvY2tjaGlwX3ZvcF9yZWcuYwo+PiBpbmRleCAwMGU5ZDc5Li43NzQ0NjAz IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfdm9wX3Jl Zy5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF92b3BfcmVnLmMK Pj4gQEAgLTIwLDE3ICsyMCwyNSBAQAo+PiAgICNpbmNsdWRlICJyb2NrY2hpcF9kcm1fdm9wLmgi Cj4+ICAgI2luY2x1ZGUgInJvY2tjaGlwX3ZvcF9yZWcuaCIKPj4gICAKPj4gLSNkZWZpbmUgVk9Q X1JFRyhvZmYsIF9tYXNrLCBzKSBcCj4+ICsjZGVmaW5lIFZPUF9SRUdfVkVSX01BU0sob2ZmLCBf bWFzaywgcywgX3dyaXRlX21hc2ssIF9tYWpvciwgXAo+PiArCQkJIF9iZWdpbl9taW5vciwgX2Vu ZF9taW5vcikgXAo+PiAgIAkJey5vZmZzZXQgPSBvZmYsIFwKPj4gICAJCSAubWFzayA9IF9tYXNr LCBcCj4+ICAgCQkgLnNoaWZ0ID0gcywgXAo+PiAtCQkgLndyaXRlX21hc2sgPSBmYWxzZSx9Cj4+ ICsJCSAud3JpdGVfbWFzayA9IF93cml0ZV9tYXNrLCBcCj4+ICsJCSAubWFqb3IgPSBfbWFqb3Is IFwKPj4gKwkJIC5iZWdpbl9taW5vciA9IF9iZWdpbl9taW5vciwgXAo+PiArCQkgLmVuZF9taW5v ciA9IF9lbmRfbWlub3IsfQo+PiArCj4+ICsjZGVmaW5lIFZPUF9SRUdfVkVSKG9mZiwgX21hc2ss IHMsIF9tYWpvciwgX2JlZ2luX21pbm9yLCBfZW5kX21pbm9yKSBcCj4+ICsJCVZPUF9SRUdfVkVS X01BU0sob2ZmLCBfbWFzaywgcywgZmFsc2UsIFwKPj4gKwkJCQkgX21ham9yLCBfYmVnaW5fbWlu b3IsIF9lbmRfbWlub3IpCj4+ICsKPj4gKyNkZWZpbmUgVk9QX1JFRyhvZmYsIF9tYXNrLCBzKSBc Cj4+ICsJCVZPUF9SRUdfVkVSKG9mZiwgX21hc2ssIHMsIDAsIDAsIC0xKQo+PiAgIAo+PiAgICNk ZWZpbmUgVk9QX1JFR19NQVNLKG9mZiwgX21hc2ssIHMpIFwKPj4gLQkJey5vZmZzZXQgPSBvZmYs IFwKPj4gLQkJIC5tYXNrID0gX21hc2ssIFwKPj4gLQkJIC5zaGlmdCA9IHMsIFwKPj4gLQkJIC53 cml0ZV9tYXNrID0gdHJ1ZSx9Cj4+ICsJCVZPUF9SRUdfVkVSX01BU0sob2ZmLCBfbWFzaywgcywg dHJ1ZSwgMCwgMCwgLTEpCj4+ICAgCj4+ICAgc3RhdGljIGNvbnN0IHVpbnQzMl90IGZvcm1hdHNf d2luX2Z1bGxbXSA9IHsKPj4gICAJRFJNX0ZPUk1BVF9YUkdCODg4OCwKPj4gLS0gCj4+IDEuOS4x Cj4+Cj4+Cj4+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f Cj4+IGRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKPj4gZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwo+PiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2Ry aS1kZXZlbAoKCi0tIArvvK1hcmsgWWFvCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vZHJpLWRldmVsCg== From mboxrd@z Thu Jan 1 00:00:00 1970 From: mark.yao@rock-chips.com (Mark yao) Date: Thu, 13 Jul 2017 09:45:12 +0800 Subject: [PATCH v2 2/5] drm/rockchip: vop: support verify registers with vop version In-Reply-To: <20170712175305.n7kk7dzvfs2vywz3@art_vandelay> References: <1499824991-7391-1-git-send-email-mark.yao@rock-chips.com> <1499825019-7503-1-git-send-email-mark.yao@rock-chips.com> <20170712175305.n7kk7dzvfs2vywz3@art_vandelay> Message-ID: <5966D0A8.6060003@rock-chips.com> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org On 2017?07?13? 01:53, Sean Paul wrote: > On Wed, Jul 12, 2017 at 10:03:38AM +0800, Mark Yao wrote: > > Please add a commit message describing *what* and *why* you are making the > change. Got it, I will fix it at next version. Thanks. > >> Signed-off-by: Mark Yao >> --- >> drivers/gpu/drm/rockchip/rockchip_drm_vop.c | 66 +++++++++++++++++++++-------- >> drivers/gpu/drm/rockchip/rockchip_drm_vop.h | 18 ++++++-- >> drivers/gpu/drm/rockchip/rockchip_vop_reg.c | 20 ++++++--- >> 3 files changed, 77 insertions(+), 27 deletions(-) >> >> diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c >> index 7a5f809..a9180fd 100644 >> --- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c >> +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c >> @@ -42,33 +42,60 @@ >> #include "rockchip_drm_psr.h" >> #include "rockchip_drm_vop.h" >> >> -#define __REG_SET_RELAXED(x, off, mask, shift, v, write_mask) \ >> - vop_mask_write(x, off, mask, shift, v, write_mask, true) >> +#define VOP_REG_SUPPORT(vop, reg) \ >> + (!reg.major || (reg.major == VOP_MAJOR(vop->data->version) && \ >> + reg.begin_minor <= VOP_MINOR(vop->data->version) && \ >> + reg.end_minor >= VOP_MINOR(vop->data->version) && \ >> + reg.mask)) > This would be better suited as a static inline function. As would many of the > macros below. Got it, will fix it at next version. > >> >> -#define __REG_SET_NORMAL(x, off, mask, shift, v, write_mask) \ >> - vop_mask_write(x, off, mask, shift, v, write_mask, false) >> +#define VOP_WIN_SUPPORT(vop, win, name) \ >> + VOP_REG_SUPPORT(vop, win->phy->name) >> >> -#define REG_SET(x, base, reg, v, mode) \ >> - __REG_SET_##mode(x, base + reg.offset, \ >> - reg.mask, reg.shift, v, reg.write_mask) >> -#define REG_SET_MASK(x, base, reg, mask, v, mode) \ >> - __REG_SET_##mode(x, base + reg.offset, \ >> - mask, reg.shift, v, reg.write_mask) >> +#define VOP_CTRL_SUPPORT(vop, name) \ >> + VOP_REG_SUPPORT(vop, vop->data->ctrl->name) >> + >> +#define VOP_INTR_SUPPORT(vop, name) \ >> + VOP_REG_SUPPORT(vop, vop->data->intr->name) >> + >> +#define __REG_SET(x, off, mask, shift, v, write_mask, relaxed) \ >> + vop_mask_write(x, off, mask, shift, v, write_mask, relaxed) > There's really no point to this, just call vop_mask_write directly. Got it, will fix it at next version. > >> + >> +#define _REG_SET(vop, name, off, reg, mask, v, relaxed) \ >> + do { \ >> + if (VOP_REG_SUPPORT(vop, reg)) \ >> + __REG_SET(vop, off + reg.offset, mask, reg.shift, \ > s/mask/reg.mask & mask/ Got it, will fix it at next version. > >> + v, reg.write_mask, relaxed); \ >> + else \ >> + dev_dbg(vop->dev, "Warning: not support "#name"\n"); \ >> + } while (0) > > Also better as static inline, IMO. Good idea, I will try it. > >> + >> +#define REG_SET(x, name, off, reg, v, relaxed) \ >> + _REG_SET(x, name, off, reg, reg.mask, v, relaxed) > s/reg.mask/~0/ Got it, will fix it at next version. > >> +#define REG_SET_MASK(x, name, off, reg, mask, v, relaxed) \ >> + _REG_SET(x, name, off, reg, reg.mask & mask, v, relaxed) > s/reg.mask &// > > Also, these can become static inline functions as well. Got it, will fix it at next version. > >> >> #define VOP_WIN_SET(x, win, name, v) \ >> - REG_SET(x, win->base, win->phy->name, v, RELAXED) >> + REG_SET(x, name, win->base, win->phy->name, v, true) >> +#define VOP_WIN_SET_EXT(x, win, ext, name, v) \ >> + REG_SET(x, name, 0, win->ext->name, v, true) >> #define VOP_SCL_SET(x, win, name, v) \ >> - REG_SET(x, win->base, win->phy->scl->name, v, RELAXED) >> + REG_SET(x, name, win->base, win->phy->scl->name, v, true) >> #define VOP_SCL_SET_EXT(x, win, name, v) \ >> - REG_SET(x, win->base, win->phy->scl->ext->name, v, RELAXED) >> + REG_SET(x, name, win->base, win->phy->scl->ext->name, v, true) >> + >> #define VOP_CTRL_SET(x, name, v) \ >> - REG_SET(x, 0, (x)->data->ctrl->name, v, NORMAL) >> + REG_SET(x, name, 0, (x)->data->ctrl->name, v, false) >> >> #define VOP_INTR_GET(vop, name) \ >> vop_read_reg(vop, 0, &vop->data->ctrl->name) >> >> -#define VOP_INTR_SET(vop, name, mask, v) \ >> - REG_SET_MASK(vop, 0, vop->data->intr->name, mask, v, NORMAL) >> +#define VOP_INTR_SET(vop, name, v) \ >> + REG_SET(vop, name, 0, vop->data->intr->name, \ >> + v, false) >> +#define VOP_INTR_SET_MASK(vop, name, mask, v) \ >> + REG_SET_MASK(vop, name, 0, vop->data->intr->name, \ >> + mask, v, false) >> + >> #define VOP_INTR_SET_TYPE(vop, name, type, v) \ >> do { \ >> int i, reg = 0, mask = 0; \ >> @@ -78,13 +105,16 @@ >> mask |= 1 << i; \ >> } \ >> } \ >> - VOP_INTR_SET(vop, name, mask, reg); \ >> + VOP_INTR_SET_MASK(vop, name, mask, reg); \ >> } while (0) >> #define VOP_INTR_GET_TYPE(vop, name, type) \ >> vop_get_intr_type(vop, &vop->data->intr->name, type) >> >> +#define VOP_CTRL_GET(x, name) \ >> + vop_read_reg(x, 0, &vop->data->ctrl->name) >> + >> #define VOP_WIN_GET(x, win, name) \ >> - vop_read_reg(x, win->base, &win->phy->name) >> + vop_read_reg(x, win->offset, win->phy->name) >> >> #define VOP_WIN_GET_YRGBADDR(vop, win) \ >> vop_readl(vop, win->base + win->phy->yrgb_mst.offset) >> diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop.h b/drivers/gpu/drm/rockchip/rockchip_drm_vop.h >> index 084d3b2..e4de890 100644 >> --- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.h >> +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.h >> @@ -15,6 +15,14 @@ >> #ifndef _ROCKCHIP_DRM_VOP_H >> #define _ROCKCHIP_DRM_VOP_H >> >> +/* >> + * major: IP major vertion, used for IP structure > s/vertion/version Got it, will fix it at next version. Thanks. > >> + * minor: big feature change under same structure >> + */ >> +#define VOP_VERSION(major, minor) ((major) << 8 | (minor)) >> +#define VOP_MAJOR(version) ((version) >> 8) >> +#define VOP_MINOR(version) ((version) & 0xff) >> + >> enum vop_data_format { >> VOP_FMT_ARGB8888 = 0, >> VOP_FMT_RGB888, >> @@ -25,10 +33,13 @@ enum vop_data_format { >> }; >> >> struct vop_reg { >> - uint32_t offset; >> - uint32_t shift; >> uint32_t mask; >> - bool write_mask; >> + uint32_t offset:12; >> + uint32_t shift:5; >> + uint32_t begin_minor:4; >> + uint32_t end_minor:4; >> + uint32_t major:3; >> + uint32_t write_mask:1; > Why are you packing this? make struct vop_reg not too big, jus u64 size, struct vop_reg use a lot on register define, packing it would reduce register table size. > >> }; >> >> struct vop_ctrl { >> @@ -134,6 +145,7 @@ struct vop_win_data { >> }; >> >> struct vop_data { >> + uint32_t version; >> const struct vop_ctrl *ctrl; >> const struct vop_intr *intr; >> const struct vop_win_data *win; >> diff --git a/drivers/gpu/drm/rockchip/rockchip_vop_reg.c b/drivers/gpu/drm/rockchip/rockchip_vop_reg.c >> index 00e9d79..7744603 100644 >> --- a/drivers/gpu/drm/rockchip/rockchip_vop_reg.c >> +++ b/drivers/gpu/drm/rockchip/rockchip_vop_reg.c >> @@ -20,17 +20,25 @@ >> #include "rockchip_drm_vop.h" >> #include "rockchip_vop_reg.h" >> >> -#define VOP_REG(off, _mask, s) \ >> +#define VOP_REG_VER_MASK(off, _mask, s, _write_mask, _major, \ >> + _begin_minor, _end_minor) \ >> {.offset = off, \ >> .mask = _mask, \ >> .shift = s, \ >> - .write_mask = false,} >> + .write_mask = _write_mask, \ >> + .major = _major, \ >> + .begin_minor = _begin_minor, \ >> + .end_minor = _end_minor,} >> + >> +#define VOP_REG_VER(off, _mask, s, _major, _begin_minor, _end_minor) \ >> + VOP_REG_VER_MASK(off, _mask, s, false, \ >> + _major, _begin_minor, _end_minor) >> + >> +#define VOP_REG(off, _mask, s) \ >> + VOP_REG_VER(off, _mask, s, 0, 0, -1) >> >> #define VOP_REG_MASK(off, _mask, s) \ >> - {.offset = off, \ >> - .mask = _mask, \ >> - .shift = s, \ >> - .write_mask = true,} >> + VOP_REG_VER_MASK(off, _mask, s, true, 0, 0, -1) >> >> static const uint32_t formats_win_full[] = { >> DRM_FORMAT_XRGB8888, >> -- >> 1.9.1 >> >> >> _______________________________________________ >> dri-devel mailing list >> dri-devel at lists.freedesktop.org >> https://lists.freedesktop.org/mailman/listinfo/dri-devel -- ?ark Yao From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751018AbdGMBpW (ORCPT ); Wed, 12 Jul 2017 21:45:22 -0400 Received: from lucky1.263xmail.com ([211.157.147.132]:44718 "EHLO lucky1.263xmail.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750755AbdGMBpV (ORCPT ); Wed, 12 Jul 2017 21:45:21 -0400 X-263anti-spam: KSV:0;BIG:0; X-MAIL-GRAY: 0 X-MAIL-DELIVERY: 1 X-KSVirus-check: 0 X-ADDR-CHECKED4: 1 X-ABS-CHECKED: 0 X-SKE-CHECKED: 0 X-ANTISPAM-LEVEL: 2 X-RL-SENDER: mark.yao@rock-chips.com X-FST-TO: linux-kernel@vger.kernel.org X-SENDER-IP: 58.22.7.114 X-LOGIN-NAME: mark.yao@rock-chips.com X-UNIQUE-TAG: <0f4deff924c5227ba1887e88464a5c7b> X-ATTACHMENT-NUM: 0 X-DNS-TYPE: 0 Subject: Re: [PATCH v2 2/5] drm/rockchip: vop: support verify registers with vop version To: Sean Paul References: <1499824991-7391-1-git-send-email-mark.yao@rock-chips.com> <1499825019-7503-1-git-send-email-mark.yao@rock-chips.com> <20170712175305.n7kk7dzvfs2vywz3@art_vandelay> Cc: David Airlie , Heiko Stuebner , linux-rockchip@lists.infradead.org, linux-arm-kernel@lists.infradead.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org From: Mark yao Message-ID: <5966D0A8.6060003@rock-chips.com> Date: Thu, 13 Jul 2017 09:45:12 +0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.3.0 MIME-Version: 1.0 In-Reply-To: <20170712175305.n7kk7dzvfs2vywz3@art_vandelay> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 2017年07月13日 01:53, Sean Paul wrote: > On Wed, Jul 12, 2017 at 10:03:38AM +0800, Mark Yao wrote: > > Please add a commit message describing *what* and *why* you are making the > change. Got it, I will fix it at next version. Thanks. > >> Signed-off-by: Mark Yao >> --- >> drivers/gpu/drm/rockchip/rockchip_drm_vop.c | 66 +++++++++++++++++++++-------- >> drivers/gpu/drm/rockchip/rockchip_drm_vop.h | 18 ++++++-- >> drivers/gpu/drm/rockchip/rockchip_vop_reg.c | 20 ++++++--- >> 3 files changed, 77 insertions(+), 27 deletions(-) >> >> diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c >> index 7a5f809..a9180fd 100644 >> --- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c >> +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c >> @@ -42,33 +42,60 @@ >> #include "rockchip_drm_psr.h" >> #include "rockchip_drm_vop.h" >> >> -#define __REG_SET_RELAXED(x, off, mask, shift, v, write_mask) \ >> - vop_mask_write(x, off, mask, shift, v, write_mask, true) >> +#define VOP_REG_SUPPORT(vop, reg) \ >> + (!reg.major || (reg.major == VOP_MAJOR(vop->data->version) && \ >> + reg.begin_minor <= VOP_MINOR(vop->data->version) && \ >> + reg.end_minor >= VOP_MINOR(vop->data->version) && \ >> + reg.mask)) > This would be better suited as a static inline function. As would many of the > macros below. Got it, will fix it at next version. > >> >> -#define __REG_SET_NORMAL(x, off, mask, shift, v, write_mask) \ >> - vop_mask_write(x, off, mask, shift, v, write_mask, false) >> +#define VOP_WIN_SUPPORT(vop, win, name) \ >> + VOP_REG_SUPPORT(vop, win->phy->name) >> >> -#define REG_SET(x, base, reg, v, mode) \ >> - __REG_SET_##mode(x, base + reg.offset, \ >> - reg.mask, reg.shift, v, reg.write_mask) >> -#define REG_SET_MASK(x, base, reg, mask, v, mode) \ >> - __REG_SET_##mode(x, base + reg.offset, \ >> - mask, reg.shift, v, reg.write_mask) >> +#define VOP_CTRL_SUPPORT(vop, name) \ >> + VOP_REG_SUPPORT(vop, vop->data->ctrl->name) >> + >> +#define VOP_INTR_SUPPORT(vop, name) \ >> + VOP_REG_SUPPORT(vop, vop->data->intr->name) >> + >> +#define __REG_SET(x, off, mask, shift, v, write_mask, relaxed) \ >> + vop_mask_write(x, off, mask, shift, v, write_mask, relaxed) > There's really no point to this, just call vop_mask_write directly. Got it, will fix it at next version. > >> + >> +#define _REG_SET(vop, name, off, reg, mask, v, relaxed) \ >> + do { \ >> + if (VOP_REG_SUPPORT(vop, reg)) \ >> + __REG_SET(vop, off + reg.offset, mask, reg.shift, \ > s/mask/reg.mask & mask/ Got it, will fix it at next version. > >> + v, reg.write_mask, relaxed); \ >> + else \ >> + dev_dbg(vop->dev, "Warning: not support "#name"\n"); \ >> + } while (0) > > Also better as static inline, IMO. Good idea, I will try it. > >> + >> +#define REG_SET(x, name, off, reg, v, relaxed) \ >> + _REG_SET(x, name, off, reg, reg.mask, v, relaxed) > s/reg.mask/~0/ Got it, will fix it at next version. > >> +#define REG_SET_MASK(x, name, off, reg, mask, v, relaxed) \ >> + _REG_SET(x, name, off, reg, reg.mask & mask, v, relaxed) > s/reg.mask &// > > Also, these can become static inline functions as well. Got it, will fix it at next version. > >> >> #define VOP_WIN_SET(x, win, name, v) \ >> - REG_SET(x, win->base, win->phy->name, v, RELAXED) >> + REG_SET(x, name, win->base, win->phy->name, v, true) >> +#define VOP_WIN_SET_EXT(x, win, ext, name, v) \ >> + REG_SET(x, name, 0, win->ext->name, v, true) >> #define VOP_SCL_SET(x, win, name, v) \ >> - REG_SET(x, win->base, win->phy->scl->name, v, RELAXED) >> + REG_SET(x, name, win->base, win->phy->scl->name, v, true) >> #define VOP_SCL_SET_EXT(x, win, name, v) \ >> - REG_SET(x, win->base, win->phy->scl->ext->name, v, RELAXED) >> + REG_SET(x, name, win->base, win->phy->scl->ext->name, v, true) >> + >> #define VOP_CTRL_SET(x, name, v) \ >> - REG_SET(x, 0, (x)->data->ctrl->name, v, NORMAL) >> + REG_SET(x, name, 0, (x)->data->ctrl->name, v, false) >> >> #define VOP_INTR_GET(vop, name) \ >> vop_read_reg(vop, 0, &vop->data->ctrl->name) >> >> -#define VOP_INTR_SET(vop, name, mask, v) \ >> - REG_SET_MASK(vop, 0, vop->data->intr->name, mask, v, NORMAL) >> +#define VOP_INTR_SET(vop, name, v) \ >> + REG_SET(vop, name, 0, vop->data->intr->name, \ >> + v, false) >> +#define VOP_INTR_SET_MASK(vop, name, mask, v) \ >> + REG_SET_MASK(vop, name, 0, vop->data->intr->name, \ >> + mask, v, false) >> + >> #define VOP_INTR_SET_TYPE(vop, name, type, v) \ >> do { \ >> int i, reg = 0, mask = 0; \ >> @@ -78,13 +105,16 @@ >> mask |= 1 << i; \ >> } \ >> } \ >> - VOP_INTR_SET(vop, name, mask, reg); \ >> + VOP_INTR_SET_MASK(vop, name, mask, reg); \ >> } while (0) >> #define VOP_INTR_GET_TYPE(vop, name, type) \ >> vop_get_intr_type(vop, &vop->data->intr->name, type) >> >> +#define VOP_CTRL_GET(x, name) \ >> + vop_read_reg(x, 0, &vop->data->ctrl->name) >> + >> #define VOP_WIN_GET(x, win, name) \ >> - vop_read_reg(x, win->base, &win->phy->name) >> + vop_read_reg(x, win->offset, win->phy->name) >> >> #define VOP_WIN_GET_YRGBADDR(vop, win) \ >> vop_readl(vop, win->base + win->phy->yrgb_mst.offset) >> diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop.h b/drivers/gpu/drm/rockchip/rockchip_drm_vop.h >> index 084d3b2..e4de890 100644 >> --- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.h >> +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.h >> @@ -15,6 +15,14 @@ >> #ifndef _ROCKCHIP_DRM_VOP_H >> #define _ROCKCHIP_DRM_VOP_H >> >> +/* >> + * major: IP major vertion, used for IP structure > s/vertion/version Got it, will fix it at next version. Thanks. > >> + * minor: big feature change under same structure >> + */ >> +#define VOP_VERSION(major, minor) ((major) << 8 | (minor)) >> +#define VOP_MAJOR(version) ((version) >> 8) >> +#define VOP_MINOR(version) ((version) & 0xff) >> + >> enum vop_data_format { >> VOP_FMT_ARGB8888 = 0, >> VOP_FMT_RGB888, >> @@ -25,10 +33,13 @@ enum vop_data_format { >> }; >> >> struct vop_reg { >> - uint32_t offset; >> - uint32_t shift; >> uint32_t mask; >> - bool write_mask; >> + uint32_t offset:12; >> + uint32_t shift:5; >> + uint32_t begin_minor:4; >> + uint32_t end_minor:4; >> + uint32_t major:3; >> + uint32_t write_mask:1; > Why are you packing this? make struct vop_reg not too big, jus u64 size, struct vop_reg use a lot on register define, packing it would reduce register table size. > >> }; >> >> struct vop_ctrl { >> @@ -134,6 +145,7 @@ struct vop_win_data { >> }; >> >> struct vop_data { >> + uint32_t version; >> const struct vop_ctrl *ctrl; >> const struct vop_intr *intr; >> const struct vop_win_data *win; >> diff --git a/drivers/gpu/drm/rockchip/rockchip_vop_reg.c b/drivers/gpu/drm/rockchip/rockchip_vop_reg.c >> index 00e9d79..7744603 100644 >> --- a/drivers/gpu/drm/rockchip/rockchip_vop_reg.c >> +++ b/drivers/gpu/drm/rockchip/rockchip_vop_reg.c >> @@ -20,17 +20,25 @@ >> #include "rockchip_drm_vop.h" >> #include "rockchip_vop_reg.h" >> >> -#define VOP_REG(off, _mask, s) \ >> +#define VOP_REG_VER_MASK(off, _mask, s, _write_mask, _major, \ >> + _begin_minor, _end_minor) \ >> {.offset = off, \ >> .mask = _mask, \ >> .shift = s, \ >> - .write_mask = false,} >> + .write_mask = _write_mask, \ >> + .major = _major, \ >> + .begin_minor = _begin_minor, \ >> + .end_minor = _end_minor,} >> + >> +#define VOP_REG_VER(off, _mask, s, _major, _begin_minor, _end_minor) \ >> + VOP_REG_VER_MASK(off, _mask, s, false, \ >> + _major, _begin_minor, _end_minor) >> + >> +#define VOP_REG(off, _mask, s) \ >> + VOP_REG_VER(off, _mask, s, 0, 0, -1) >> >> #define VOP_REG_MASK(off, _mask, s) \ >> - {.offset = off, \ >> - .mask = _mask, \ >> - .shift = s, \ >> - .write_mask = true,} >> + VOP_REG_VER_MASK(off, _mask, s, true, 0, 0, -1) >> >> static const uint32_t formats_win_full[] = { >> DRM_FORMAT_XRGB8888, >> -- >> 1.9.1 >> >> >> _______________________________________________ >> dri-devel mailing list >> dri-devel@lists.freedesktop.org >> https://lists.freedesktop.org/mailman/listinfo/dri-devel -- Mark Yao