From mboxrd@z Thu Jan 1 00:00:00 1970 From: Heiko Stuebner Subject: Re: [RFC PATCH v1 1/2] drm/rockchip: vop: add rk3229 vop support Date: Mon, 04 Jan 2016 13:23:41 +0100 Message-ID: <11434893.zL5bTOLgHP@phil> References: <1451908218-25278-1-git-send-email-ykk@rock-chips.com> <1451908438-26581-1-git-send-email-ykk@rock-chips.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1451908438-26581-1-git-send-email-ykk@rock-chips.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Yakir Yang Cc: Mark Rutland , devicetree@vger.kernel.org, Pawel Moll , Ian Campbell , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-rockchip@lists.infradead.org, Rob Herring , Kumar Gala List-Id: linux-rockchip.vger.kernel.org SGkgWWFraXIsCgpBbSBNb250YWcsIDQuIEphbnVhciAyMDE2LCAxOTo1Mzo1OCBzY2hyaWViIFlh a2lyIFlhbmc6Cj4gUkszMjI5IHJlZ2lzdGVycyBsYXlvdXQgaXMgc2ltYWxhciB0byBSSzMyODgg bGF5b3V0LCBvbmx5IHRoZQo+IGludGVycnVwdXQgcmVnaXN0ZXJzIGlzIGRpZmZlcmVudCB0byBS SzMyODguCj4gCj4gUkszMjI5IHN1cHBvcnQgdHdvIG92ZXJsYXkgcGxhbmUgYW5kIG9uZSBod2Mg cGxhbmUsIG1heCBvdXRwdXQKPiByZXNvbHV0aW9uIGlzIDRLLiBpdCBzdXBwb3J0IElPTU1VLCBh bmQgaXRzIElPTU1VIHNhbWUgYXMgcmszMjg4J3MuCj4gCj4gU2lnbmVkLW9mZi1ieTogWWFraXIg WWFuZyA8eWtrQHJvY2stY2hpcHMuY29tPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vcm9ja2No aXAvcm9ja2NoaXBfZHJtX3ZvcC5jIHwgICA3ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9yb2NrY2hp cC9yb2NrY2hpcF9kcm1fdm9wLmggfCAgIDIgKwo+ICBkcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAv cm9ja2NoaXBfdm9wX3JlZy5jIHwgMTIwCj4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKyBk cml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfdm9wX3JlZy5oCj4gfCAgOTAgKysrKysr KysrKysrKysrKysrKysrIDQgZmlsZXMgY2hhbmdlZCwgMjE3IGluc2VydGlvbnMoKyksIDIKPiBk ZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3Jv Y2tjaGlwX2RybV92b3AuYwo+IGIvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2Ry bV92b3AuYyBpbmRleCBkODNiZjg3Li4zYzgzMDk3Cj4gMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2RybV92b3AuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9yb2NrY2hpcC9yb2NrY2hpcF9kcm1fdm9wLmMKPiBAQCAtNjMsOSArNjMsMTIgQEAKPiAgI2Rl ZmluZSBWT1BfSU5UUl9TRVRfVFlQRSh2b3AsIG5hbWUsIHR5cGUsIHYpIFwKPiAgCWRvIHsgXAo+ ICAJCWludCBpLCByZWcgPSAwOyBcCj4gLQkJZm9yIChpID0gMDsgaSA8IHZvcC0+ZGF0YS0+aW50 ci0+bmludHJzOyBpKyspIHsgXAo+IC0JCQlpZiAodm9wLT5kYXRhLT5pbnRyLT5pbnRyc1tpXSAm IHR5cGUpIFwKPiArCQljb25zdCBzdHJ1Y3Qgdm9wX2ludHIgKmludHIgPSB2b3AtPmRhdGEtPmlu dHI7IFwKPiArCQlmb3IgKGkgPSAwOyBpIDwgaW50ci0+bmludHJzOyBpKyspIHsgXAo+ICsJCQlp ZiAoaW50ci0+aW50cnNbaV0gJiB0eXBlKSB7IFwKPiAgCQkJCXJlZyB8PSAodikgPDwgaTsgXAo+ ICsJCQkJcmVnIHw9IGludHItPndyaXRlX21hc2sgPyAoMSA8PCAoaSArIDE2KSkgOiAwOyBcCj4g KwkJCX0gXAo+ICAJCX0gXAo+ICAJCVZPUF9JTlRSX1NFVCh2b3AsIG5hbWUsIHJlZyk7IFwKPiAg CX0gd2hpbGUgKDApCgpJIGRvIGJlbGlldmUgdGhpcyBwYXJ0LCBhcyB3ZWxsIGFzIHNldHRpbmcg dGhlIGRlZmF1bHQgLndyaXRlX21hc2sgPSBmYWxzZSAKZm9yIHRoZSBleGlzdGluZyBwYXJ0cyBz aG91bGQgZ2V0IGl0cyBvd24gcGF0Y2ggKyBhIGJpdCBtb3JlIGV4cGxhbmF0aW9uCm9uIHdoYXQg dGhpcyBkb2VzIGFuZCB3aHkgaXQncyBuZWVkZWQuCgotLS0tIDg8IC0tLS0KZHJtL3JvY2tjaGlw OiBBZGQgc3VwcG9ydCBmb3IgaW50ZXJydXB0IHJlZ2lzdGVycyB1c2luZyB3cml0ZS1tYXNrcwoK U29tZSBuZXcgZGlzcGxheS1jb250cm9sbGVycyBhcmUgbmVlZCB0byBzZXQgd3JpdGUtbWFza3Mg dG8gZW5hYmxlIHdyaXRlcwp0byBpbnRlcnJ1cHQgcmVnaXN0ZXJzLiBBbGxvdyB0aGlzIHRvIGJl IHNldCBvbiBhIHBlci12b3AgYmFzaXMuCi0tLS0gODwgLS0tLQoKb3Igc29tZXRoaW5nIGxpa2Ug dGhhdCwgYW5kIHRoZW4gcGF0Y2hlcyAyKzMgYmVpbmcgdGhlIHJrMzIyOSBzdXBwb3J0ICsgCmJp bmRpbmcuCgoKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlw X2RybV92b3AuaAo+IGIvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2RybV92b3Au aCBpbmRleCAwNzFmZjBiLi4xZTgzOWU4Cj4gMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L3JvY2tjaGlwL3JvY2tjaGlwX2RybV92b3AuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9yb2Nr Y2hpcC9yb2NrY2hpcF9kcm1fdm9wLmgKPiBAQCAtNjAsNiArNjAsNyBAQCBzdHJ1Y3Qgdm9wX2N0 cmwgewo+ICB9Owo+IAo+ICBzdHJ1Y3Qgdm9wX2ludHIgewo+ICsJYm9vbCB3cml0ZV9tYXNrOwo+ ICAJY29uc3QgaW50ICppbnRyczsKPiAgCXVpbnQzMl90IG5pbnRyczsKPiAgCXN0cnVjdCB2b3Bf cmVnIGVuYWJsZTsKPiBAQCAtMTM2LDYgKzEzNyw3IEBAIHN0cnVjdCB2b3BfZGF0YSB7Cj4gIH07 Cj4gCj4gIC8qIGludGVycnVwdCBkZWZpbmUgKi8KPiArI2RlZmluZSBEVU1NWV9JTlRSCQkJKDAg PDwgMCkKPiAgI2RlZmluZSBEU1BfSE9MRF9WQUxJRF9JTlRSCQkoMSA8PCAwKQo+ICAjZGVmaW5l IEZTX0lOVFIJCQkJKDEgPDwgMSkKPiAgI2RlZmluZSBMSU5FX0ZMQUdfSU5UUgkJCSgxIDw8IDIp Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF92b3BfcmVn LmMKPiBiL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF92b3BfcmVnLmMgaW5kZXgg MzE2NmI0Ni4uYmJjZDEyOAo+IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hp cC9yb2NrY2hpcF92b3BfcmVnLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9j a2NoaXBfdm9wX3JlZy5jCj4gQEAgLTE3NCw2ICsxNzQsNyBAQCBzdGF0aWMgY29uc3QgaW50IHJr MzI4OF92b3BfaW50cnNbXSA9IHsKPiAgfTsKPiAKPiAgc3RhdGljIGNvbnN0IHN0cnVjdCB2b3Bf aW50ciByazMyODhfdm9wX2ludHIgPSB7Cj4gKwkud3JpdGVfbWFzayA9IGZhbHNlLAo+ICAJLmlu dHJzID0gcmszMjg4X3ZvcF9pbnRycywKPiAgCS5uaW50cnMgPSBBUlJBWV9TSVpFKHJrMzI4OF92 b3BfaW50cnMpLAo+ICAJLnN0YXR1cyA9IFZPUF9SRUcoUkszMjg4X0lOVFJfQ1RSTDAsIDB4Ziwg MCksCj4gQEAgLTE5MCw2ICsxOTEsMTIyIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgdm9wX2RhdGEg cmszMjg4X3ZvcCA9IHsKPiAgCS53aW5fc2l6ZSA9IEFSUkFZX1NJWkUocmszMjg4X3ZvcF93aW5f ZGF0YSksCj4gIH07Cj4gCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgdm9wX3NjbF9leHRlbnNpb24g cmszMjI5X3dpbl9mdWxsX3NjbF9leHQgPSB7Cj4gKwkuY2Jjcl92c2RfbW9kZSA9IFZPUF9SRUco UkszMjI5X1dJTjBfQ1RSTDEsIDB4MSwgMzEpLAo+ICsJLmNiY3JfdnN1X21vZGUgPSBWT1BfUkVH KFJLMzIyOV9XSU4wX0NUUkwxLCAweDEsIDMwKSwKPiArCS5jYmNyX2hzZF9tb2RlID0gVk9QX1JF RyhSSzMyMjlfV0lOMF9DVFJMMSwgMHgzLCAyOCksCj4gKwkuY2Jjcl92ZXJfc2NsX21vZGUgPSBW T1BfUkVHKFJLMzIyOV9XSU4wX0NUUkwxLCAweDMsIDI2KSwKPiArCS5jYmNyX2hvcl9zY2xfbW9k ZSA9IFZPUF9SRUcoUkszMjI5X1dJTjBfQ1RSTDEsIDB4MywgMjQpLAo+ICsJLnlyZ2JfdnNkX21v ZGUgPSBWT1BfUkVHKFJLMzIyOV9XSU4wX0NUUkwxLCAweDEsIDIzKSwKPiArCS55cmdiX3ZzdV9t b2RlID0gVk9QX1JFRyhSSzMyMjlfV0lOMF9DVFJMMSwgMHgxLCAyMiksCj4gKwkueXJnYl9oc2Rf bW9kZSA9IFZPUF9SRUcoUkszMjI5X1dJTjBfQ1RSTDEsIDB4MywgMjApLAo+ICsJLnlyZ2JfdmVy X3NjbF9tb2RlID0gVk9QX1JFRyhSSzMyMjlfV0lOMF9DVFJMMSwgMHgzLCAxOCksCj4gKwkueXJn Yl9ob3Jfc2NsX21vZGUgPSBWT1BfUkVHKFJLMzIyOV9XSU4wX0NUUkwxLCAweDMsIDE2KSwKPiAr CS5saW5lX2xvYWRfbW9kZSA9IFZPUF9SRUcoUkszMjI5X1dJTjBfQ1RSTDEsIDB4MSwgMTUpLAo+ ICsJLmNiY3JfYXhpX2dhdGhlcl9udW0gPSBWT1BfUkVHKFJLMzIyOV9XSU4wX0NUUkwxLCAweDcs IDEyKSwKPiArCS55cmdiX2F4aV9nYXRoZXJfbnVtID0gVk9QX1JFRyhSSzMyMjlfV0lOMF9DVFJM MSwgMHhmLCA4KSwKPiArCS52c2RfY2Jjcl9ndDIgPSBWT1BfUkVHKFJLMzIyOV9XSU4wX0NUUkwx LCAweDEsIDcpLAo+ICsJLnZzZF9jYmNyX2d0NCA9IFZPUF9SRUcoUkszMjI5X1dJTjBfQ1RSTDEs IDB4MSwgNiksCj4gKwkudnNkX3lyZ2JfZ3QyID0gVk9QX1JFRyhSSzMyMjlfV0lOMF9DVFJMMSwg MHgxLCA1KSwKPiArCS52c2RfeXJnYl9ndDQgPSBWT1BfUkVHKFJLMzIyOV9XSU4wX0NUUkwxLCAw eDEsIDQpLAo+ICsJLmJpY19jb2Vfc2VsID0gVk9QX1JFRyhSSzMyMjlfV0lOMF9DVFJMMSwgMHgz LCAyKSwKPiArCS5jYmNyX2F4aV9nYXRoZXJfZW4gPSBWT1BfUkVHKFJLMzIyOV9XSU4wX0NUUkwx LCAweDEsIDEpLAo+ICsJLnlyZ2JfYXhpX2dhdGhlcl9lbiA9IFZPUF9SRUcoUkszMjI5X1dJTjBf Q1RSTDEsIDB4MSwgMCksCj4gKwkubGJfbW9kZSA9IFZPUF9SRUcoUkszMjI5X1dJTjBfQ1RSTDAs IDB4NywgNSksCj4gK307Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHZvcF9zY2xfcmVncyBy azMyMjlfd2luX2Z1bGxfc2NsID0gewo+ICsJLmV4dCA9ICZyazMyMjlfd2luX2Z1bGxfc2NsX2V4 dCwKPiArCS5zY2FsZV95cmdiX3ggPSBWT1BfUkVHKFJLMzIyOV9XSU4wX1NDTF9GQUNUT1JfWVJH QiwgMHhmZmZmLCAweDApLAo+ICsJLnNjYWxlX3lyZ2JfeSA9IFZPUF9SRUcoUkszMjI5X1dJTjBf U0NMX0ZBQ1RPUl9ZUkdCLCAweGZmZmYsIDE2KSwKPiArCS5zY2FsZV9jYmNyX3ggPSBWT1BfUkVH KFJLMzIyOV9XSU4wX1NDTF9GQUNUT1JfQ0JSLCAweGZmZmYsIDB4MCksCj4gKwkuc2NhbGVfY2Jj cl95ID0gVk9QX1JFRyhSSzMyMjlfV0lOMF9TQ0xfRkFDVE9SX0NCUiwgMHhmZmZmLCAxNiksCj4g K307Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHZvcF93aW5fcGh5IHJrMzIyOV93aW4wMV9k YXRhID0gewo+ICsJLnNjbCA9ICZyazMyMjlfd2luX2Z1bGxfc2NsLAo+ICsJLmRhdGFfZm9ybWF0 cyA9IGZvcm1hdHNfd2luX2Z1bGwsCj4gKwkubmZvcm1hdHMgPSBBUlJBWV9TSVpFKGZvcm1hdHNf d2luX2Z1bGwpLAo+ICsJLmVuYWJsZSA9IFZPUF9SRUcoUkszMjI5X1dJTjBfQ1RSTDAsIDB4MSwg MCksCj4gKwkuZm9ybWF0ID0gVk9QX1JFRyhSSzMyMjlfV0lOMF9DVFJMMCwgMHg3LCAxKSwKPiAr CS5yYl9zd2FwID0gVk9QX1JFRyhSSzMyMjlfV0lOMF9DVFJMMCwgMHgxLCAxMiksCj4gKwkuYWN0 X2luZm8gPSBWT1BfUkVHKFJLMzIyOV9XSU4wX0FDVF9JTkZPLCAweDFmZmYxZmZmLCAwKSwKPiAr CS5kc3BfaW5mbyA9IFZPUF9SRUcoUkszMjI5X1dJTjBfRFNQX0lORk8sIDB4MGZmZjBmZmYsIDAp LAo+ICsJLmRzcF9zdCA9IFZPUF9SRUcoUkszMjI5X1dJTjBfRFNQX1NULCAweDFmZmYxZmZmLCAw KSwKPiArCS55cmdiX21zdCA9IFZPUF9SRUcoUkszMjI5X1dJTjBfWVJHQl9NU1QsIDB4ZmZmZmZm ZmYsIDApLAo+ICsJLnV2X21zdCA9IFZPUF9SRUcoUkszMjI5X1dJTjBfQ0JSX01TVCwgMHhmZmZm ZmZmZiwgMCksCj4gKwkueXJnYl92aXIgPSBWT1BfUkVHKFJLMzIyOV9XSU4wX1ZJUiwgMHgzZmZm LCAwKSwKPiArCS51dl92aXIgPSBWT1BfUkVHKFJLMzIyOV9XSU4wX1ZJUiwgMHgzZmZmLCAxNiks Cj4gKwkuc3JjX2FscGhhX2N0bCA9IFZPUF9SRUcoUkszMjI5X1dJTjBfU1JDX0FMUEhBX0NUUkws IDB4ZmYsIDApLAo+ICsJLmRzdF9hbHBoYV9jdGwgPSBWT1BfUkVHKFJLMzIyOV9XSU4wX0RTVF9B TFBIQV9DVFJMLCAweGZmLCAwKSwKPiArfTsKPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgdm9w X3dpbl9kYXRhIHJrMzIyOV92b3Bfd2luX2RhdGFbXSA9IHsKPiArCXsgLmJhc2UgPSAweDAwLCAu cGh5ID0gJnJrMzIyOV93aW4wMV9kYXRhLAo+ICsJICAudHlwZSA9IERSTV9QTEFORV9UWVBFX1BS SU1BUlkgfSwKPiArCXsgLmJhc2UgPSAweDQwLCAucGh5ID0gJnJrMzIyOV93aW4wMV9kYXRhLAo+ ICsJICAudHlwZSA9IERSTV9QTEFORV9UWVBFX0NVUlNPUiB9LAo+ICt9Owo+ICsKPiArc3RhdGlj IGNvbnN0IHN0cnVjdCB2b3BfY3RybCByazMyMjlfY3RybF9kYXRhID0gewo+ICsJLmNmZ19kb25l ID0gVk9QX1JFRyhSSzMyMjlfUkVHX0NGR19ET05FLCAweDEsIDApLAo+ICsJLnN0YW5kYnkgPSBW T1BfUkVHKFJLMzIyOV9TWVNfQ1RSTCwgMHgxLCAyMiksCj4gKwkuZ2F0ZV9lbiA9IFZPUF9SRUco UkszMjI5X1NZU19DVFJMLCAweDEsIDIzKSwKPiArCS5tbXVfZW4gPSBWT1BfUkVHKFJLMzIyOV9T WVNfQ1RSTCwgMHgxLCAyMCksCj4gKwkucmdiX2VuID0gVk9QX1JFRyhSSzMyMjlfU1lTX0NUUkws IDB4MSwgMTIpLAo+ICsJLmhkbWlfZW4gPSBWT1BfUkVHKFJLMzIyOV9TWVNfQ1RSTCwgMHgxLCAx MyksCj4gKwkuZWRwX2VuID0gVk9QX1JFRyhSSzMyMjlfU1lTX0NUUkwsIDB4MSwgMTQpLAo+ICsJ Lm1pcGlfZW4gPSBWT1BfUkVHKFJLMzIyOV9TWVNfQ1RSTCwgMHgxLCAxNSksCj4gKwkuZGF0YV9i bGFuayA9IFZPUF9SRUcoUkszMjI5X0RTUF9DVFJMMCwgMHgxLCAxOSksCj4gKwkub3V0X21vZGUg PSBWT1BfUkVHKFJLMzIyOV9EU1BfQ1RSTDAsIDB4ZiwgMCksCj4gKwkucGluX3BvbCA9IFZPUF9S RUcoUkszMjI5X0RTUF9DVFJMMSwgMHhmLCAyMCksCj4gKwkuZGl0aGVyX3VwID0gVk9QX1JFRyhS SzMyMjlfRFNQX0NUUkwxLCAweDEsIDYpLAo+ICsJLmh0b3RhbF9wdyA9IFZPUF9SRUcoUkszMjI5 X0RTUF9IVE9UQUxfSFNfRU5ELCAweDFmZmYxZmZmLCAwKSwKPiArCS5oYWN0X3N0X2VuZCA9IFZP UF9SRUcoUkszMjI5X0RTUF9IQUNUX1NUX0VORCwgMHgxZmZmMWZmZiwgMCksCj4gKwkudnRvdGFs X3B3ID0gVk9QX1JFRyhSSzMyMjlfRFNQX1ZUT1RBTF9WU19FTkQsIDB4MWZmZjFmZmYsIDApLAo+ ICsJLnZhY3Rfc3RfZW5kID0gVk9QX1JFRyhSSzMyMjlfRFNQX1ZBQ1RfU1RfRU5ELCAweDFmZmYx ZmZmLCAwKSwKPiArCS5ocG9zdF9zdF9lbmQgPSBWT1BfUkVHKFJLMzIyOV9QT1NUX0RTUF9IQUNU X0lORk8sIDB4MWZmZjFmZmYsIDApLAo+ICsJLnZwb3N0X3N0X2VuZCA9IFZPUF9SRUcoUkszMjI5 X1BPU1RfRFNQX1ZBQ1RfSU5GTywgMHgxZmZmMWZmZiwgMCksCj4gK307Cj4gKwo+ICtzdGF0aWMg Y29uc3QgaW50IHJrMzIyOV92b3BfaW50cnNbXSA9IHsKPiArCUZTX0lOVFIsCj4gKwlEVU1NWV9J TlRSLAo+ICsJRFVNTVlfSU5UUiwKCkknbSBub3Qgc3VyZSB3ZSBuZWVkIHRoYXQgZXh0cmEgIkRV TU1ZX0lOVFIiIGRlZmluZSAtIGEgc2ltcGxlIDAgc2hvdWxkIGJlIAplbm91Z2ggYXMgd2VsbCB0 byBtYXJrIHRoZSBwb3NpdGlvbnMgYXMgdW51c2VkLgoKClRoZSByZXN0IGxvb2tzIG5pY2UKSGVp a28KCgo+ICsJTElORV9GTEFHX0lOVFIsCj4gKwlEVU1NWV9JTlRSLAo+ICsJRFVNTVlfSU5UUiwK PiArCURVTU1ZX0lOVFIsCj4gKwlEVU1NWV9JTlRSLAo+ICsJRFVNTVlfSU5UUiwKPiArCURVTU1Z X0lOVFIsCj4gKwlEVU1NWV9JTlRSLAo+ICsJRFVNTVlfSU5UUiwKPiArCURVTU1ZX0lOVFIsCj4g KwlEU1BfSE9MRF9WQUxJRF9JTlRSLAo+ICt9Owo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCB2 b3BfaW50ciByazMyMjlfaW50ciA9IHsKPiArCS53cml0ZV9tYXNrID0gdHJ1ZSwKPiArCS5pbnRy cyA9IHJrMzIyOV92b3BfaW50cnMsCj4gKwkubmludHJzID0gQVJSQVlfU0laRShyazMyMjlfdm9w X2ludHJzKSwKPiArCS5zdGF0dXMgPSBWT1BfUkVHKFJLMzIyOV9JTlRSX1NUQVRVUzAsIDB4ZmZm ZmZmZmYsIDApLAo+ICsJLmNsZWFyID0gVk9QX1JFRyhSSzMyMjlfSU5UUl9DTEVBUjAsIDB4ZmZm ZmZmZmYsIDApLAo+ICsJLmVuYWJsZSA9IFZPUF9SRUcoUkszMjI5X0lOVFJfRU4wLCAweGZmZmZm ZmZmLCAwKSwKPiArfTsKPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgdm9wX3JlZ19kYXRhIHJr MzIyOV92b3BfaW5pdF9yZWdfdGFibGVbXSA9IHsKPiArfTsKPiArCj4gK3N0YXRpYyBjb25zdCBz dHJ1Y3Qgdm9wX2RhdGEgcmszMjI5X3ZvcCA9IHsKPiArCS5pbml0X3RhYmxlID0gcmszMjI5X3Zv cF9pbml0X3JlZ190YWJsZSwKPiArCS50YWJsZV9zaXplID0gQVJSQVlfU0laRShyazMyMjlfdm9w X2luaXRfcmVnX3RhYmxlKSwKPiArCS5pbnRyID0gJnJrMzIyOV9pbnRyLAo+ICsJLmN0cmwgPSAm cmszMjI5X2N0cmxfZGF0YSwKPiArCS53aW4gPSByazMyMjlfdm9wX3dpbl9kYXRhLAo+ICsJLndp bl9zaXplID0gQVJSQVlfU0laRShyazMyMjlfdm9wX3dpbl9kYXRhKSwKPiArfTsKPiArCj4gIHN0 YXRpYyBjb25zdCBzdHJ1Y3Qgdm9wX3NjbF9yZWdzIHJrMzA2Nl93aW5fc2NsID0gewo+ICAJLnNj YWxlX3lyZ2JfeCA9IFZPUF9SRUcoUkszMDM2X1dJTjBfU0NMX0ZBQ1RPUl9ZUkdCLCAweGZmZmYs IDB4MCksCj4gIAkuc2NhbGVfeXJnYl95ID0gVk9QX1JFRyhSSzMwMzZfV0lOMF9TQ0xfRkFDVE9S X1lSR0IsIDB4ZmZmZiwgMTYpLAo+IEBAIC0yNDAsNiArMzU3LDcgQEAgc3RhdGljIGNvbnN0IGlu dCByazMwMzZfdm9wX2ludHJzW10gPSB7Cj4gIH07Cj4gCj4gIHN0YXRpYyBjb25zdCBzdHJ1Y3Qg dm9wX2ludHIgcmszMDM2X2ludHIgPSB7Cj4gKwkud3JpdGVfbWFzayA9IGZhbHNlLAo+ICAJLmlu dHJzID0gcmszMDM2X3ZvcF9pbnRycywKPiAgCS5uaW50cnMgPSBBUlJBWV9TSVpFKHJrMzAzNl92 b3BfaW50cnMpLAo+ICAJLnN0YXR1cyA9IFZPUF9SRUcoUkszMDM2X0lOVF9TVEFUVVMsIDB4Ziwg MCksCj4gQEAgLTI3NCw2ICszOTIsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHZvcF9kYXRhIHJr MzAzNl92b3AgPSB7Cj4gIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHZvcF9kcml2 ZXJfZHRfbWF0Y2hbXSA9IHsKPiAgCXsgLmNvbXBhdGlibGUgPSAicm9ja2NoaXAscmszMjg4LXZv cCIsCj4gIAkgIC5kYXRhID0gJnJrMzI4OF92b3AgfSwKPiArCXsgLmNvbXBhdGlibGUgPSAicm9j a2NoaXAscmszMjI5LXZvcCIsCj4gKwkgIC5kYXRhID0gJnJrMzIyOV92b3AgfSwKPiAgCXsgLmNv bXBhdGlibGUgPSAicm9ja2NoaXAscmszMDM2LXZvcCIsCj4gIAkgIC5kYXRhID0gJnJrMzAzNl92 b3AgfSwKPiAgCXt9LAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9j a2NoaXBfdm9wX3JlZy5oCj4gYi9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfdm9w X3JlZy5oIGluZGV4IGQ0YjQ2Y2IuLjAyODAzODgKPiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfdm9wX3JlZy5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L3JvY2tjaGlwL3JvY2tjaGlwX3ZvcF9yZWcuaAo+IEBAIC0xNSw2ICsxNSw5NiBAQAo+ICAjaWZu ZGVmIF9ST0NLQ0hJUF9WT1BfUkVHX0gKPiAgI2RlZmluZSBfUk9DS0NISVBfVk9QX1JFR19ICj4g Cj4gKy8qIHJrMzIyOSByZWdpc3RlciBkZWZpbml0aW9uICovCj4gKyNkZWZpbmUgUkszMjI5X1JF R19DRkdfRE9ORQkJCTB4MDAwMAo+ICsjZGVmaW5lIFJLMzIyOV9WRVJTSU9OX0lORk8JCQkweDAw MDQKPiArI2RlZmluZSBSSzMyMjlfU1lTX0NUUkwJCQkJMHgwMDA4Cj4gKyNkZWZpbmUgUkszMjI5 X1NZU19DVFJMMQkJCTB4MDAwYwo+ICsjZGVmaW5lIFJLMzIyOV9EU1BfQ1RSTDAJCQkweDAwMTAK PiArI2RlZmluZSBSSzMyMjlfRFNQX0NUUkwxCQkJMHgwMDE0Cj4gKyNkZWZpbmUgUkszMjI5X0RT UF9CRwkJCQkweDAwMTgKPiArI2RlZmluZSBSSzMyMjlfV0lOMF9DVFJMMAkJCTB4MDAzMAo+ICsj ZGVmaW5lIFJLMzIyOV9XSU4wX0NUUkwxCQkJMHgwMDM0Cj4gKyNkZWZpbmUgUkszMjI5X1dJTjBf Q09MT1JfS0VZCQkJMHgwMDM4Cj4gKyNkZWZpbmUgUkszMjI5X1dJTjBfVklSCQkJCTB4MDAzYwo+ ICsjZGVmaW5lIFJLMzIyOV9XSU4wX1lSR0JfTVNUCQkJMHgwMDQwCj4gKyNkZWZpbmUgUkszMjI5 X1dJTjBfQ0JSX01TVAkJCTB4MDA0NAo+ICsjZGVmaW5lIFJLMzIyOV9XSU4wX0FDVF9JTkZPCQkJ MHgwMDQ4Cj4gKyNkZWZpbmUgUkszMjI5X1dJTjBfRFNQX0lORk8JCQkweDAwNGMKPiArI2RlZmlu ZSBSSzMyMjlfV0lOMF9EU1BfU1QJCQkweDAwNTAKPiArI2RlZmluZSBSSzMyMjlfV0lOMF9TQ0xf RkFDVE9SX1lSR0IJCTB4MDA1NAo+ICsjZGVmaW5lIFJLMzIyOV9XSU4wX1NDTF9GQUNUT1JfQ0JS CQkweDAwNTgKPiArI2RlZmluZSBSSzMyMjlfV0lOMF9TQ0xfT0ZGU0VUCQkJMHgwMDVjCj4gKyNk ZWZpbmUgUkszMjI5X1dJTjBfU1JDX0FMUEhBX0NUUkwJCTB4MDA2MAo+ICsjZGVmaW5lIFJLMzIy OV9XSU4wX0RTVF9BTFBIQV9DVFJMCQkweDAwNjQKPiArI2RlZmluZSBSSzMyMjlfV0lOMF9GQURJ TkdfQ1RSTAkJCTB4MDA2OAo+ICsvKiB3aW4xIHJlZ2lzdGVyICovCj4gKyNkZWZpbmUgUkszMjI5 X1dJTjFfQ1RSTDAJCQkweDAwNzAKPiArI2RlZmluZSBSSzMyMjlfV0lOMV9DVFJMMQkJCTB4MDA3 NAo+ICsjZGVmaW5lIFJLMzIyOV9XSU4xX0NPTE9SX0tFWQkJCTB4MDA3OAo+ICsjZGVmaW5lIFJL MzIyOV9XSU4xX1ZJUgkJCQkweDAwN2MKPiArI2RlZmluZSBSSzMyMjlfV0lOMV9ZUkdCX01TVAkJ CTB4MDA4MAo+ICsjZGVmaW5lIFJLMzIyOV9XSU4xX0NCUl9NU1QJCQkweDAwODQKPiArI2RlZmlu ZSBSSzMyMjlfV0lOMV9BQ1RfSU5GTwkJCTB4MDA4OAo+ICsjZGVmaW5lIFJLMzIyOV9XSU4xX0RT UF9JTkZPCQkJMHgwMDhjCj4gKyNkZWZpbmUgUkszMjI5X1dJTjFfRFNQX1NUCQkJMHgwMDkwCj4g KyNkZWZpbmUgUkszMjI5X1dJTjFfU0NMX0ZBQ1RPUl9ZUkdCCQkweDAwOTQKPiArI2RlZmluZSBS SzMyMjlfV0lOMV9TQ0xfRkFDVE9SX0NCUgkJMHgwMDk4Cj4gKyNkZWZpbmUgUkszMjI5X1dJTjFf U0NMX09GRlNFVAkJCTB4MDA5Ywo+ICsjZGVmaW5lIFJLMzIyOV9XSU4xX1NSQ19BTFBIQV9DVFJM CQkweDAwYTAKPiArI2RlZmluZSBSSzMyMjlfV0lOMV9EU1RfQUxQSEFfQ1RSTAkJMHgwMGE0Cj4g KyNkZWZpbmUgUkszMjI5X1dJTjFfRkFESU5HX0NUUkwJCQkweDAwYTgKPiArI2RlZmluZSBSSzMy MjlfV0lOMV9DVFJMMgkJCTB4MDBhYwo+ICsvKiBod2MgcmVnaXN0ZXIgKi8KPiArI2RlZmluZSBS SzMyMjlfSFdDX0NUUkwwCQkJMHgwMTUwCj4gKyNkZWZpbmUgUkszMjI5X0hXQ19DVFJMMQkJCTB4 MDE1NAo+ICsjZGVmaW5lIFJLMzIyOV9IV0NfTVNUCQkJCTB4MDE1OAo+ICsjZGVmaW5lIFJLMzIy OV9IV0NfRFNQX1NUCQkJMHgwMTVjCj4gKyNkZWZpbmUgUkszMjI5X0hXQ19TUkNfQUxQSEFfQ1RS TAkJMHgwMTYwCj4gKyNkZWZpbmUgUkszMjI5X0hXQ19EU1RfQUxQSEFfQ1RSTAkJMHgwMTY0Cj4g KyNkZWZpbmUgUkszMjI5X0hXQ19GQURJTkdfQ1RSTAkJCTB4MDE2OAo+ICsjZGVmaW5lIFJLMzIy OV9IV0NfUkVTRVJWRUQJCQkweDAxNmMKPiArLyogcG9zdCBwcm9jZXNzIHJlZ2lzdGVyICovCj4g KyNkZWZpbmUgUkszMjI5X1BPU1RfRFNQX0hBQ1RfSU5GTwkJMHgwMTcwCj4gKyNkZWZpbmUgUksz MjI5X1BPU1RfRFNQX1ZBQ1RfSU5GTwkJMHgwMTc0Cj4gKyNkZWZpbmUgUkszMjI5X1BPU1RfU0NM X0ZBQ1RPUl9ZUkdCCQkweDAxNzgKPiArI2RlZmluZSBSSzMyMjlfUE9TVF9SRVNFUlZFRAkJCTB4 MDE3Ywo+ICsjZGVmaW5lIFJLMzIyOV9QT1NUX1NDTF9DVFJMCQkJMHgwMTgwCj4gKyNkZWZpbmUg UkszMjI5X1BPU1RfRFNQX1ZBQ1RfSU5GT19GMQkJMHgwMTg0Cj4gKyNkZWZpbmUgUkszMjI5X0RT UF9IVE9UQUxfSFNfRU5ECQkweDAxODgKPiArI2RlZmluZSBSSzMyMjlfRFNQX0hBQ1RfU1RfRU5E CQkJMHgwMThjCj4gKyNkZWZpbmUgUkszMjI5X0RTUF9WVE9UQUxfVlNfRU5ECQkweDAxOTAKPiAr I2RlZmluZSBSSzMyMjlfRFNQX1ZBQ1RfU1RfRU5ECQkJMHgwMTk0Cj4gKyNkZWZpbmUgUkszMjI5 X0RTUF9WU19TVF9FTkRfRjEJCQkweDAxOTgKPiArI2RlZmluZSBSSzMyMjlfRFNQX1ZBQ1RfU1Rf RU5EX0YxCQkweDAxOWMKPiArLyogQnJpZ2h0bmVzcyBjb250cmFzdCAqLwo+ICsjZGVmaW5lIFJL MzIyOV9CQ1NIX0NPTE9SX0JBUgkJCTB4MDFiMAo+ICsjZGVmaW5lIFJLMzIyOV9CQ1NIX0JDUwkJ CQkweDAxYjQKPiArI2RlZmluZSBSSzMyMjlfQkNTSF9ICQkJCTB4MDFiOAo+ICsjZGVmaW5lIFJL MzIyOV9CQ1NIX0NUUkwJCQkweDAxYmMKPiArLyogRlJDIHJlZ2lzdGVycyAqLwo+ICsjZGVmaW5l IFJLMzIyOV9GUkNfTE9XRVIwMV8wCQkJMHgwMWU4Cj4gKyNkZWZpbmUgUkszMjI5X0ZSQ19MT1dF UjAxXzEJCQkweDAxZWMKPiArI2RlZmluZSBSSzMyMjlfRlJDX0xPV0VSMTBfMAkJCTB4MDFmMAo+ ICsjZGVmaW5lIFJLMzIyOV9GUkNfTE9XRVIxMF8xCQkJMHgwMWY0Cj4gKyNkZWZpbmUgUkszMjI5 X0ZSQ19MT1dFUjExXzAJCQkweDAxZjgKPiArI2RlZmluZSBSSzMyMjlfRlJDX0xPV0VSMTFfMQkJ CTB4MDFmYwo+ICsvKiBJbnRlcnJ1cHQgcmVnaXN0ZXJzICovCj4gKyNkZWZpbmUgUkszMjI5X0lO VFJfRU4wCQkJCTB4MDI4MAo+ICsjZGVmaW5lIFJLMzIyOV9JTlRSX0NMRUFSMAkJCTB4MDI4NAo+ ICsjZGVmaW5lIFJLMzIyOV9JTlRSX1NUQVRVUzAJCQkweDAyODgKPiArI2RlZmluZSBSSzMyMjlf SU5UUl9SQVdfU1RBVFVTMAkJCTB4MDI4Ywo+ICsjZGVmaW5lIFJLMzIyOV9JTlRSX0VOMQkJCQkw eDAyOTAKPiArI2RlZmluZSBSSzMyMjlfSU5UUl9DTEVBUjEJCQkweDAyOTQKPiArI2RlZmluZSBS SzMyMjlfSU5UUl9TVEFUVVMxCQkJMHgwMjk4Cj4gKyNkZWZpbmUgUkszMjI5X0lOVFJfUkFXX1NU QVRVUzEJCQkweDAyOWMKPiArI2RlZmluZSBSSzMyMjlfTElORV9GTEFHCQkJMHgwMmEwCj4gKyNk ZWZpbmUgUkszMjI5X1ZPUF9TVEFUVVMJCQkweDAyYTQKPiArI2RlZmluZSBSSzMyMjlfQkxBTktJ TkdfVkFMVUUJCQkweDAyYTgKPiArI2RlZmluZSBSSzMyMjlfV0lOMF9EU1BfQkcJCQkweDAyYjAK PiArI2RlZmluZSBSSzMyMjlfV0lOMV9EU1BfQkcJCQkweDAyYjQKPiArLyogcmVnaXN0ZXIgZGVm aW5pdGlvbiBlbmQgKi8KPiArCj4gIC8qIHJrMzI4OCByZWdpc3RlciBkZWZpbml0aW9uICovCj4g ICNkZWZpbmUgUkszMjg4X1JFR19DRkdfRE9ORQkJCTB4MDAwMAo+ICAjZGVmaW5lIFJLMzI4OF9W RVJTSU9OX0lORk8JCQkweDAwMDQKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v ZHJpLWRldmVsCg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753749AbcADMYJ (ORCPT ); Mon, 4 Jan 2016 07:24:09 -0500 Received: from gloria.sntech.de ([95.129.55.99]:51861 "EHLO gloria.sntech.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753719AbcADMYD (ORCPT ); Mon, 4 Jan 2016 07:24:03 -0500 From: Heiko Stuebner To: Yakir Yang Cc: Mark Yao , David Airlie , Rob Herring , Pawel Moll , Mark Rutland , Ian Campbell , Kumar Gala , devicetree@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-rockchip@lists.infradead.org Subject: Re: [RFC PATCH v1 1/2] drm/rockchip: vop: add rk3229 vop support Date: Mon, 04 Jan 2016 13:23:41 +0100 Message-ID: <11434893.zL5bTOLgHP@phil> User-Agent: KMail/4.14.10 (Linux/4.3.0-trunk-amd64; KDE/4.14.14; x86_64; ; ) In-Reply-To: <1451908438-26581-1-git-send-email-ykk@rock-chips.com> References: <1451908218-25278-1-git-send-email-ykk@rock-chips.com> <1451908438-26581-1-git-send-email-ykk@rock-chips.com> MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Yakir, Am Montag, 4. Januar 2016, 19:53:58 schrieb Yakir Yang: > RK3229 registers layout is simalar to RK3288 layout, only the > interruput registers is different to RK3288. > > RK3229 support two overlay plane and one hwc plane, max output > resolution is 4K. it support IOMMU, and its IOMMU same as rk3288's. > > Signed-off-by: Yakir Yang > --- > drivers/gpu/drm/rockchip/rockchip_drm_vop.c | 7 +- > drivers/gpu/drm/rockchip/rockchip_drm_vop.h | 2 + > drivers/gpu/drm/rockchip/rockchip_vop_reg.c | 120 > ++++++++++++++++++++++++++++ drivers/gpu/drm/rockchip/rockchip_vop_reg.h > | 90 +++++++++++++++++++++ 4 files changed, 217 insertions(+), 2 > deletions(-) > > diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c > b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c index d83bf87..3c83097 > 100644 > --- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c > +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c > @@ -63,9 +63,12 @@ > #define VOP_INTR_SET_TYPE(vop, name, type, v) \ > do { \ > int i, reg = 0; \ > - for (i = 0; i < vop->data->intr->nintrs; i++) { \ > - if (vop->data->intr->intrs[i] & type) \ > + const struct vop_intr *intr = vop->data->intr; \ > + for (i = 0; i < intr->nintrs; i++) { \ > + if (intr->intrs[i] & type) { \ > reg |= (v) << i; \ > + reg |= intr->write_mask ? (1 << (i + 16)) : 0; \ > + } \ > } \ > VOP_INTR_SET(vop, name, reg); \ > } while (0) I do believe this part, as well as setting the default .write_mask = false for the existing parts should get its own patch + a bit more explanation on what this does and why it's needed. ---- 8< ---- drm/rockchip: Add support for interrupt registers using write-masks Some new display-controllers are need to set write-masks to enable writes to interrupt registers. Allow this to be set on a per-vop basis. ---- 8< ---- or something like that, and then patches 2+3 being the rk3229 support + binding. > diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop.h > b/drivers/gpu/drm/rockchip/rockchip_drm_vop.h index 071ff0b..1e839e8 > 100644 > --- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.h > +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.h > @@ -60,6 +60,7 @@ struct vop_ctrl { > }; > > struct vop_intr { > + bool write_mask; > const int *intrs; > uint32_t nintrs; > struct vop_reg enable; > @@ -136,6 +137,7 @@ struct vop_data { > }; > > /* interrupt define */ > +#define DUMMY_INTR (0 << 0) > #define DSP_HOLD_VALID_INTR (1 << 0) > #define FS_INTR (1 << 1) > #define LINE_FLAG_INTR (1 << 2) > diff --git a/drivers/gpu/drm/rockchip/rockchip_vop_reg.c > b/drivers/gpu/drm/rockchip/rockchip_vop_reg.c index 3166b46..bbcd128 > 100644 > --- a/drivers/gpu/drm/rockchip/rockchip_vop_reg.c > +++ b/drivers/gpu/drm/rockchip/rockchip_vop_reg.c > @@ -174,6 +174,7 @@ static const int rk3288_vop_intrs[] = { > }; > > static const struct vop_intr rk3288_vop_intr = { > + .write_mask = false, > .intrs = rk3288_vop_intrs, > .nintrs = ARRAY_SIZE(rk3288_vop_intrs), > .status = VOP_REG(RK3288_INTR_CTRL0, 0xf, 0), > @@ -190,6 +191,122 @@ static const struct vop_data rk3288_vop = { > .win_size = ARRAY_SIZE(rk3288_vop_win_data), > }; > > +static const struct vop_scl_extension rk3229_win_full_scl_ext = { > + .cbcr_vsd_mode = VOP_REG(RK3229_WIN0_CTRL1, 0x1, 31), > + .cbcr_vsu_mode = VOP_REG(RK3229_WIN0_CTRL1, 0x1, 30), > + .cbcr_hsd_mode = VOP_REG(RK3229_WIN0_CTRL1, 0x3, 28), > + .cbcr_ver_scl_mode = VOP_REG(RK3229_WIN0_CTRL1, 0x3, 26), > + .cbcr_hor_scl_mode = VOP_REG(RK3229_WIN0_CTRL1, 0x3, 24), > + .yrgb_vsd_mode = VOP_REG(RK3229_WIN0_CTRL1, 0x1, 23), > + .yrgb_vsu_mode = VOP_REG(RK3229_WIN0_CTRL1, 0x1, 22), > + .yrgb_hsd_mode = VOP_REG(RK3229_WIN0_CTRL1, 0x3, 20), > + .yrgb_ver_scl_mode = VOP_REG(RK3229_WIN0_CTRL1, 0x3, 18), > + .yrgb_hor_scl_mode = VOP_REG(RK3229_WIN0_CTRL1, 0x3, 16), > + .line_load_mode = VOP_REG(RK3229_WIN0_CTRL1, 0x1, 15), > + .cbcr_axi_gather_num = VOP_REG(RK3229_WIN0_CTRL1, 0x7, 12), > + .yrgb_axi_gather_num = VOP_REG(RK3229_WIN0_CTRL1, 0xf, 8), > + .vsd_cbcr_gt2 = VOP_REG(RK3229_WIN0_CTRL1, 0x1, 7), > + .vsd_cbcr_gt4 = VOP_REG(RK3229_WIN0_CTRL1, 0x1, 6), > + .vsd_yrgb_gt2 = VOP_REG(RK3229_WIN0_CTRL1, 0x1, 5), > + .vsd_yrgb_gt4 = VOP_REG(RK3229_WIN0_CTRL1, 0x1, 4), > + .bic_coe_sel = VOP_REG(RK3229_WIN0_CTRL1, 0x3, 2), > + .cbcr_axi_gather_en = VOP_REG(RK3229_WIN0_CTRL1, 0x1, 1), > + .yrgb_axi_gather_en = VOP_REG(RK3229_WIN0_CTRL1, 0x1, 0), > + .lb_mode = VOP_REG(RK3229_WIN0_CTRL0, 0x7, 5), > +}; > + > +static const struct vop_scl_regs rk3229_win_full_scl = { > + .ext = &rk3229_win_full_scl_ext, > + .scale_yrgb_x = VOP_REG(RK3229_WIN0_SCL_FACTOR_YRGB, 0xffff, 0x0), > + .scale_yrgb_y = VOP_REG(RK3229_WIN0_SCL_FACTOR_YRGB, 0xffff, 16), > + .scale_cbcr_x = VOP_REG(RK3229_WIN0_SCL_FACTOR_CBR, 0xffff, 0x0), > + .scale_cbcr_y = VOP_REG(RK3229_WIN0_SCL_FACTOR_CBR, 0xffff, 16), > +}; > + > +static const struct vop_win_phy rk3229_win01_data = { > + .scl = &rk3229_win_full_scl, > + .data_formats = formats_win_full, > + .nformats = ARRAY_SIZE(formats_win_full), > + .enable = VOP_REG(RK3229_WIN0_CTRL0, 0x1, 0), > + .format = VOP_REG(RK3229_WIN0_CTRL0, 0x7, 1), > + .rb_swap = VOP_REG(RK3229_WIN0_CTRL0, 0x1, 12), > + .act_info = VOP_REG(RK3229_WIN0_ACT_INFO, 0x1fff1fff, 0), > + .dsp_info = VOP_REG(RK3229_WIN0_DSP_INFO, 0x0fff0fff, 0), > + .dsp_st = VOP_REG(RK3229_WIN0_DSP_ST, 0x1fff1fff, 0), > + .yrgb_mst = VOP_REG(RK3229_WIN0_YRGB_MST, 0xffffffff, 0), > + .uv_mst = VOP_REG(RK3229_WIN0_CBR_MST, 0xffffffff, 0), > + .yrgb_vir = VOP_REG(RK3229_WIN0_VIR, 0x3fff, 0), > + .uv_vir = VOP_REG(RK3229_WIN0_VIR, 0x3fff, 16), > + .src_alpha_ctl = VOP_REG(RK3229_WIN0_SRC_ALPHA_CTRL, 0xff, 0), > + .dst_alpha_ctl = VOP_REG(RK3229_WIN0_DST_ALPHA_CTRL, 0xff, 0), > +}; > + > +static const struct vop_win_data rk3229_vop_win_data[] = { > + { .base = 0x00, .phy = &rk3229_win01_data, > + .type = DRM_PLANE_TYPE_PRIMARY }, > + { .base = 0x40, .phy = &rk3229_win01_data, > + .type = DRM_PLANE_TYPE_CURSOR }, > +}; > + > +static const struct vop_ctrl rk3229_ctrl_data = { > + .cfg_done = VOP_REG(RK3229_REG_CFG_DONE, 0x1, 0), > + .standby = VOP_REG(RK3229_SYS_CTRL, 0x1, 22), > + .gate_en = VOP_REG(RK3229_SYS_CTRL, 0x1, 23), > + .mmu_en = VOP_REG(RK3229_SYS_CTRL, 0x1, 20), > + .rgb_en = VOP_REG(RK3229_SYS_CTRL, 0x1, 12), > + .hdmi_en = VOP_REG(RK3229_SYS_CTRL, 0x1, 13), > + .edp_en = VOP_REG(RK3229_SYS_CTRL, 0x1, 14), > + .mipi_en = VOP_REG(RK3229_SYS_CTRL, 0x1, 15), > + .data_blank = VOP_REG(RK3229_DSP_CTRL0, 0x1, 19), > + .out_mode = VOP_REG(RK3229_DSP_CTRL0, 0xf, 0), > + .pin_pol = VOP_REG(RK3229_DSP_CTRL1, 0xf, 20), > + .dither_up = VOP_REG(RK3229_DSP_CTRL1, 0x1, 6), > + .htotal_pw = VOP_REG(RK3229_DSP_HTOTAL_HS_END, 0x1fff1fff, 0), > + .hact_st_end = VOP_REG(RK3229_DSP_HACT_ST_END, 0x1fff1fff, 0), > + .vtotal_pw = VOP_REG(RK3229_DSP_VTOTAL_VS_END, 0x1fff1fff, 0), > + .vact_st_end = VOP_REG(RK3229_DSP_VACT_ST_END, 0x1fff1fff, 0), > + .hpost_st_end = VOP_REG(RK3229_POST_DSP_HACT_INFO, 0x1fff1fff, 0), > + .vpost_st_end = VOP_REG(RK3229_POST_DSP_VACT_INFO, 0x1fff1fff, 0), > +}; > + > +static const int rk3229_vop_intrs[] = { > + FS_INTR, > + DUMMY_INTR, > + DUMMY_INTR, I'm not sure we need that extra "DUMMY_INTR" define - a simple 0 should be enough as well to mark the positions as unused. The rest looks nice Heiko > + LINE_FLAG_INTR, > + DUMMY_INTR, > + DUMMY_INTR, > + DUMMY_INTR, > + DUMMY_INTR, > + DUMMY_INTR, > + DUMMY_INTR, > + DUMMY_INTR, > + DUMMY_INTR, > + DUMMY_INTR, > + DSP_HOLD_VALID_INTR, > +}; > + > +static const struct vop_intr rk3229_intr = { > + .write_mask = true, > + .intrs = rk3229_vop_intrs, > + .nintrs = ARRAY_SIZE(rk3229_vop_intrs), > + .status = VOP_REG(RK3229_INTR_STATUS0, 0xffffffff, 0), > + .clear = VOP_REG(RK3229_INTR_CLEAR0, 0xffffffff, 0), > + .enable = VOP_REG(RK3229_INTR_EN0, 0xffffffff, 0), > +}; > + > +static const struct vop_reg_data rk3229_vop_init_reg_table[] = { > +}; > + > +static const struct vop_data rk3229_vop = { > + .init_table = rk3229_vop_init_reg_table, > + .table_size = ARRAY_SIZE(rk3229_vop_init_reg_table), > + .intr = &rk3229_intr, > + .ctrl = &rk3229_ctrl_data, > + .win = rk3229_vop_win_data, > + .win_size = ARRAY_SIZE(rk3229_vop_win_data), > +}; > + > static const struct vop_scl_regs rk3066_win_scl = { > .scale_yrgb_x = VOP_REG(RK3036_WIN0_SCL_FACTOR_YRGB, 0xffff, 0x0), > .scale_yrgb_y = VOP_REG(RK3036_WIN0_SCL_FACTOR_YRGB, 0xffff, 16), > @@ -240,6 +357,7 @@ static const int rk3036_vop_intrs[] = { > }; > > static const struct vop_intr rk3036_intr = { > + .write_mask = false, > .intrs = rk3036_vop_intrs, > .nintrs = ARRAY_SIZE(rk3036_vop_intrs), > .status = VOP_REG(RK3036_INT_STATUS, 0xf, 0), > @@ -274,6 +392,8 @@ static const struct vop_data rk3036_vop = { > static const struct of_device_id vop_driver_dt_match[] = { > { .compatible = "rockchip,rk3288-vop", > .data = &rk3288_vop }, > + { .compatible = "rockchip,rk3229-vop", > + .data = &rk3229_vop }, > { .compatible = "rockchip,rk3036-vop", > .data = &rk3036_vop }, > {}, > diff --git a/drivers/gpu/drm/rockchip/rockchip_vop_reg.h > b/drivers/gpu/drm/rockchip/rockchip_vop_reg.h index d4b46cb..0280388 > 100644 > --- a/drivers/gpu/drm/rockchip/rockchip_vop_reg.h > +++ b/drivers/gpu/drm/rockchip/rockchip_vop_reg.h > @@ -15,6 +15,96 @@ > #ifndef _ROCKCHIP_VOP_REG_H > #define _ROCKCHIP_VOP_REG_H > > +/* rk3229 register definition */ > +#define RK3229_REG_CFG_DONE 0x0000 > +#define RK3229_VERSION_INFO 0x0004 > +#define RK3229_SYS_CTRL 0x0008 > +#define RK3229_SYS_CTRL1 0x000c > +#define RK3229_DSP_CTRL0 0x0010 > +#define RK3229_DSP_CTRL1 0x0014 > +#define RK3229_DSP_BG 0x0018 > +#define RK3229_WIN0_CTRL0 0x0030 > +#define RK3229_WIN0_CTRL1 0x0034 > +#define RK3229_WIN0_COLOR_KEY 0x0038 > +#define RK3229_WIN0_VIR 0x003c > +#define RK3229_WIN0_YRGB_MST 0x0040 > +#define RK3229_WIN0_CBR_MST 0x0044 > +#define RK3229_WIN0_ACT_INFO 0x0048 > +#define RK3229_WIN0_DSP_INFO 0x004c > +#define RK3229_WIN0_DSP_ST 0x0050 > +#define RK3229_WIN0_SCL_FACTOR_YRGB 0x0054 > +#define RK3229_WIN0_SCL_FACTOR_CBR 0x0058 > +#define RK3229_WIN0_SCL_OFFSET 0x005c > +#define RK3229_WIN0_SRC_ALPHA_CTRL 0x0060 > +#define RK3229_WIN0_DST_ALPHA_CTRL 0x0064 > +#define RK3229_WIN0_FADING_CTRL 0x0068 > +/* win1 register */ > +#define RK3229_WIN1_CTRL0 0x0070 > +#define RK3229_WIN1_CTRL1 0x0074 > +#define RK3229_WIN1_COLOR_KEY 0x0078 > +#define RK3229_WIN1_VIR 0x007c > +#define RK3229_WIN1_YRGB_MST 0x0080 > +#define RK3229_WIN1_CBR_MST 0x0084 > +#define RK3229_WIN1_ACT_INFO 0x0088 > +#define RK3229_WIN1_DSP_INFO 0x008c > +#define RK3229_WIN1_DSP_ST 0x0090 > +#define RK3229_WIN1_SCL_FACTOR_YRGB 0x0094 > +#define RK3229_WIN1_SCL_FACTOR_CBR 0x0098 > +#define RK3229_WIN1_SCL_OFFSET 0x009c > +#define RK3229_WIN1_SRC_ALPHA_CTRL 0x00a0 > +#define RK3229_WIN1_DST_ALPHA_CTRL 0x00a4 > +#define RK3229_WIN1_FADING_CTRL 0x00a8 > +#define RK3229_WIN1_CTRL2 0x00ac > +/* hwc register */ > +#define RK3229_HWC_CTRL0 0x0150 > +#define RK3229_HWC_CTRL1 0x0154 > +#define RK3229_HWC_MST 0x0158 > +#define RK3229_HWC_DSP_ST 0x015c > +#define RK3229_HWC_SRC_ALPHA_CTRL 0x0160 > +#define RK3229_HWC_DST_ALPHA_CTRL 0x0164 > +#define RK3229_HWC_FADING_CTRL 0x0168 > +#define RK3229_HWC_RESERVED 0x016c > +/* post process register */ > +#define RK3229_POST_DSP_HACT_INFO 0x0170 > +#define RK3229_POST_DSP_VACT_INFO 0x0174 > +#define RK3229_POST_SCL_FACTOR_YRGB 0x0178 > +#define RK3229_POST_RESERVED 0x017c > +#define RK3229_POST_SCL_CTRL 0x0180 > +#define RK3229_POST_DSP_VACT_INFO_F1 0x0184 > +#define RK3229_DSP_HTOTAL_HS_END 0x0188 > +#define RK3229_DSP_HACT_ST_END 0x018c > +#define RK3229_DSP_VTOTAL_VS_END 0x0190 > +#define RK3229_DSP_VACT_ST_END 0x0194 > +#define RK3229_DSP_VS_ST_END_F1 0x0198 > +#define RK3229_DSP_VACT_ST_END_F1 0x019c > +/* Brightness contrast */ > +#define RK3229_BCSH_COLOR_BAR 0x01b0 > +#define RK3229_BCSH_BCS 0x01b4 > +#define RK3229_BCSH_H 0x01b8 > +#define RK3229_BCSH_CTRL 0x01bc > +/* FRC registers */ > +#define RK3229_FRC_LOWER01_0 0x01e8 > +#define RK3229_FRC_LOWER01_1 0x01ec > +#define RK3229_FRC_LOWER10_0 0x01f0 > +#define RK3229_FRC_LOWER10_1 0x01f4 > +#define RK3229_FRC_LOWER11_0 0x01f8 > +#define RK3229_FRC_LOWER11_1 0x01fc > +/* Interrupt registers */ > +#define RK3229_INTR_EN0 0x0280 > +#define RK3229_INTR_CLEAR0 0x0284 > +#define RK3229_INTR_STATUS0 0x0288 > +#define RK3229_INTR_RAW_STATUS0 0x028c > +#define RK3229_INTR_EN1 0x0290 > +#define RK3229_INTR_CLEAR1 0x0294 > +#define RK3229_INTR_STATUS1 0x0298 > +#define RK3229_INTR_RAW_STATUS1 0x029c > +#define RK3229_LINE_FLAG 0x02a0 > +#define RK3229_VOP_STATUS 0x02a4 > +#define RK3229_BLANKING_VALUE 0x02a8 > +#define RK3229_WIN0_DSP_BG 0x02b0 > +#define RK3229_WIN1_DSP_BG 0x02b4 > +/* register definition end */ > + > /* rk3288 register definition */ > #define RK3288_REG_CFG_DONE 0x0000 > #define RK3288_VERSION_INFO 0x0004