From mboxrd@z Thu Jan 1 00:00:00 1970 From: shawnguo@kernel.org (Shawn Guo) Date: Mon, 31 Oct 2016 17:17:22 +0800 Subject: [PATCH v4 0/3] Add initial ZTE VOU DRM/KMS driver Message-ID: <1477905445-4983-1-git-send-email-shawnguo@kernel.org> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org From: Shawn Guo The series adds the initial ZTE VOU display controller DRM/KMS driver. There are still some features to be added, like overlay plane, scaling, and more output devices support. But it's already useful with dual CRTCs and HDMI display working. Changes for v4: - Move the hardware setup done in zx_hdmi_hw_init() and clock enable into .enable hook of drm_encoder_helper_funcs. - Compare pipe to crtc->index instead of using our own index counter. - Save the pipe check in zx_vou_enable[disable]_vblank by putting frame interrupt bit into zx_crtc_bits. - Use DRM_DEV_* for log messages instead of old dev_* functions - Return directly in case of -ETIMEDOUT in zx_hdmi_i2c_read to simplify the code for error condition. - Shuffle things around to make the crtc and plane state check in zx_gl_plane_atomic_check a bit clearer - Move hardware register definitions into headers instead of disturbing C file reading. - Save the call to drm_connector_unregister(), so that drm_connector_cleanup can directly be used as drm_connector_funcs .destroy hook. - Move vblank notification from .atomic_begin hook to .atomic_flush, so that vblank event is sent to user space after planes are committed rather than before. Changes for v3: - Rebase to v4.9-rc1 - Update bindings doc to use 'ranges' for address translation between parent and child devices. - Call drm_dev_register() last in bind function and drm_dev_unregister() first in unbind, so that drm_connector_regiser() can be saved from HDMI driver. - Instead of using open-coded drm_do_get_edid(), add an I2C adapter for HDMI DDC read and use drm_get_edid(). - Improve the plane .atomic_check implementation by calling helper function drm_plane_helper_check_state(). - Rename zx_crtc.c to zx_vou.c to avoid the confusion that the file implements crtc instance. - Store vou pointer in zx_crtc, so that we do not need to embed the pointer in zx_drm_private. - Create zx_readl/zx_writel/zx_writel_mask for register access. - Define a few macro helpers to ease the register bit setting, like SYNC_WIDE, BACK_PORCH and FRONT_PORCH. - Define main/aux channel specific register offset and bits in zx_crtc to save the use of is_main check - Sort include headers alphabetically - Removing encoder pointer out of the structure and constify struct vou_inf - Add log message for error conditions - Make the function calls in teardown path asymmetrical - A few coding style improvements like defining macro for sub-module address and changing code to save indentation level - Add a MAINTAINERS entry for ZTE ZX DRM driver Changes for v2: - Change device tree bindings to kill the virtual display-subsystem node make VOU the parent node. Shawn Guo (3): dt-bindings: add bindings doc for ZTE VOU display controller drm: zte: add initial vou drm driver MAINTAINERS: add an entry for ZTE ZX DRM driver .../devicetree/bindings/display/zte,vou.txt | 84 +++ MAINTAINERS | 7 + drivers/gpu/drm/Kconfig | 2 + drivers/gpu/drm/Makefile | 1 + drivers/gpu/drm/zte/Kconfig | 8 + drivers/gpu/drm/zte/Makefile | 7 + drivers/gpu/drm/zte/zx_drm_drv.c | 267 +++++++++ drivers/gpu/drm/zte/zx_drm_drv.h | 36 ++ drivers/gpu/drm/zte/zx_hdmi.c | 624 +++++++++++++++++++ drivers/gpu/drm/zte/zx_hdmi_regs.h | 56 ++ drivers/gpu/drm/zte/zx_plane.c | 299 ++++++++++ drivers/gpu/drm/zte/zx_plane.h | 26 + drivers/gpu/drm/zte/zx_plane_regs.h | 91 +++ drivers/gpu/drm/zte/zx_vou.c | 661 +++++++++++++++++++++ drivers/gpu/drm/zte/zx_vou.h | 46 ++ drivers/gpu/drm/zte/zx_vou_regs.h | 157 +++++ 16 files changed, 2372 insertions(+) create mode 100644 Documentation/devicetree/bindings/display/zte,vou.txt create mode 100644 drivers/gpu/drm/zte/Kconfig create mode 100644 drivers/gpu/drm/zte/Makefile create mode 100644 drivers/gpu/drm/zte/zx_drm_drv.c create mode 100644 drivers/gpu/drm/zte/zx_drm_drv.h create mode 100644 drivers/gpu/drm/zte/zx_hdmi.c create mode 100644 drivers/gpu/drm/zte/zx_hdmi_regs.h create mode 100644 drivers/gpu/drm/zte/zx_plane.c create mode 100644 drivers/gpu/drm/zte/zx_plane.h create mode 100644 drivers/gpu/drm/zte/zx_plane_regs.h create mode 100644 drivers/gpu/drm/zte/zx_vou.c create mode 100644 drivers/gpu/drm/zte/zx_vou.h create mode 100644 drivers/gpu/drm/zte/zx_vou_regs.h -- 1.9.1 From mboxrd@z Thu Jan 1 00:00:00 1970 From: Shawn Guo Subject: [PATCH v4 0/3] Add initial ZTE VOU DRM/KMS driver Date: Mon, 31 Oct 2016 17:17:22 +0800 Message-ID: <1477905445-4983-1-git-send-email-shawnguo@kernel.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by gabe.freedesktop.org (Postfix) with ESMTPS id 1814F6E1EC for ; Mon, 31 Oct 2016 09:19:48 +0000 (UTC) List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Daniel Vetter , David Airlie Cc: Baoyou Xie , Emil Velikov , dri-devel@lists.freedesktop.org, Jun Nie , Shawn Guo , linux-arm-kernel@lists.infradead.org List-Id: dri-devel@lists.freedesktop.org RnJvbTogU2hhd24gR3VvIDxzaGF3bi5ndW9AbGluYXJvLm9yZz4KClRoZSBzZXJpZXMgYWRkcyB0 aGUgaW5pdGlhbCBaVEUgVk9VIGRpc3BsYXkgY29udHJvbGxlciBEUk0vS01TIGRyaXZlci4KVGhl cmUgYXJlIHN0aWxsIHNvbWUgZmVhdHVyZXMgdG8gYmUgYWRkZWQsIGxpa2Ugb3ZlcmxheSBwbGFu ZSwgc2NhbGluZywKYW5kIG1vcmUgb3V0cHV0IGRldmljZXMgc3VwcG9ydC4gIEJ1dCBpdCdzIGFs cmVhZHkgdXNlZnVsIHdpdGggZHVhbApDUlRDcyBhbmQgSERNSSBkaXNwbGF5IHdvcmtpbmcuCgpD aGFuZ2VzIGZvciB2NDoKIC0gTW92ZSB0aGUgaGFyZHdhcmUgc2V0dXAgZG9uZSBpbiB6eF9oZG1p X2h3X2luaXQoKSBhbmQgY2xvY2sgZW5hYmxlCiAgIGludG8gLmVuYWJsZSBob29rIG9mIGRybV9l bmNvZGVyX2hlbHBlcl9mdW5jcy4KIC0gQ29tcGFyZSBwaXBlIHRvIGNydGMtPmluZGV4IGluc3Rl YWQgb2YgdXNpbmcgb3VyIG93biBpbmRleCBjb3VudGVyLgogLSBTYXZlIHRoZSBwaXBlIGNoZWNr IGluIHp4X3ZvdV9lbmFibGVbZGlzYWJsZV1fdmJsYW5rIGJ5IHB1dHRpbmcgZnJhbWUKICAgaW50 ZXJydXB0IGJpdCBpbnRvIHp4X2NydGNfYml0cy4KIC0gVXNlIERSTV9ERVZfKiBmb3IgbG9nIG1l c3NhZ2VzIGluc3RlYWQgb2Ygb2xkIGRldl8qIGZ1bmN0aW9ucwogLSBSZXR1cm4gZGlyZWN0bHkg aW4gY2FzZSBvZiAtRVRJTUVET1VUIGluIHp4X2hkbWlfaTJjX3JlYWQgdG8gc2ltcGxpZnkKICAg dGhlIGNvZGUgZm9yIGVycm9yIGNvbmRpdGlvbi4KIC0gU2h1ZmZsZSB0aGluZ3MgYXJvdW5kIHRv IG1ha2UgdGhlIGNydGMgYW5kIHBsYW5lIHN0YXRlIGNoZWNrIGluCiAgIHp4X2dsX3BsYW5lX2F0 b21pY19jaGVjayBhIGJpdCBjbGVhcmVyCiAtIE1vdmUgaGFyZHdhcmUgcmVnaXN0ZXIgZGVmaW5p dGlvbnMgaW50byBoZWFkZXJzIGluc3RlYWQgb2YgZGlzdHVyYmluZwogICBDIGZpbGUgcmVhZGlu Zy4KIC0gU2F2ZSB0aGUgY2FsbCB0byBkcm1fY29ubmVjdG9yX3VucmVnaXN0ZXIoKSwgc28gdGhh dAogICBkcm1fY29ubmVjdG9yX2NsZWFudXAgY2FuIGRpcmVjdGx5IGJlIHVzZWQgYXMgZHJtX2Nv bm5lY3Rvcl9mdW5jcwogICAuZGVzdHJveSBob29rLgogLSBNb3ZlIHZibGFuayBub3RpZmljYXRp b24gZnJvbSAuYXRvbWljX2JlZ2luIGhvb2sgdG8gLmF0b21pY19mbHVzaCwKICAgc28gdGhhdCB2 YmxhbmsgZXZlbnQgaXMgc2VudCB0byB1c2VyIHNwYWNlIGFmdGVyIHBsYW5lcyBhcmUgY29tbWl0 dGVkCiAgIHJhdGhlciB0aGFuIGJlZm9yZS4KCkNoYW5nZXMgZm9yIHYzOgogLSBSZWJhc2UgdG8g djQuOS1yYzEKIC0gVXBkYXRlIGJpbmRpbmdzIGRvYyB0byB1c2UgJ3JhbmdlcycgZm9yIGFkZHJl c3MgdHJhbnNsYXRpb24gYmV0d2VlbgogICBwYXJlbnQgYW5kIGNoaWxkIGRldmljZXMuCiAtIENh bGwgZHJtX2Rldl9yZWdpc3RlcigpIGxhc3QgaW4gYmluZCBmdW5jdGlvbiBhbmQgZHJtX2Rldl91 bnJlZ2lzdGVyKCkKICAgZmlyc3QgaW4gdW5iaW5kLCBzbyB0aGF0IGRybV9jb25uZWN0b3JfcmVn aXNlcigpIGNhbiBiZSBzYXZlZCBmcm9tCiAgIEhETUkgZHJpdmVyLgogLSBJbnN0ZWFkIG9mIHVz aW5nIG9wZW4tY29kZWQgZHJtX2RvX2dldF9lZGlkKCksIGFkZCBhbiBJMkMgYWRhcHRlciBmb3IK ICAgSERNSSBEREMgcmVhZCBhbmQgdXNlIGRybV9nZXRfZWRpZCgpLgogLSBJbXByb3ZlIHRoZSBw bGFuZSAuYXRvbWljX2NoZWNrIGltcGxlbWVudGF0aW9uIGJ5IGNhbGxpbmcgaGVscGVyCiAgIGZ1 bmN0aW9uIGRybV9wbGFuZV9oZWxwZXJfY2hlY2tfc3RhdGUoKS4KIC0gUmVuYW1lIHp4X2NydGMu YyB0byB6eF92b3UuYyB0byBhdm9pZCB0aGUgY29uZnVzaW9uIHRoYXQgdGhlIGZpbGUKICAgaW1w bGVtZW50cyBjcnRjIGluc3RhbmNlLgogLSBTdG9yZSB2b3UgcG9pbnRlciBpbiB6eF9jcnRjLCBz byB0aGF0IHdlIGRvIG5vdCBuZWVkIHRvIGVtYmVkIHRoZQogICBwb2ludGVyIGluIHp4X2RybV9w cml2YXRlLgogLSBDcmVhdGUgenhfcmVhZGwvenhfd3JpdGVsL3p4X3dyaXRlbF9tYXNrIGZvciBy ZWdpc3RlciBhY2Nlc3MuCiAtIERlZmluZSBhIGZldyBtYWNybyBoZWxwZXJzIHRvIGVhc2UgdGhl IHJlZ2lzdGVyIGJpdCBzZXR0aW5nLCBsaWtlCiAgIFNZTkNfV0lERSwgQkFDS19QT1JDSCBhbmQg RlJPTlRfUE9SQ0guCiAtIERlZmluZSBtYWluL2F1eCBjaGFubmVsIHNwZWNpZmljIHJlZ2lzdGVy IG9mZnNldCBhbmQgYml0cyBpbiB6eF9jcnRjCiAgIHRvIHNhdmUgdGhlIHVzZSBvZiBpc19tYWlu IGNoZWNrCiAtIFNvcnQgaW5jbHVkZSBoZWFkZXJzIGFscGhhYmV0aWNhbGx5CiAtIFJlbW92aW5n IGVuY29kZXIgcG9pbnRlciBvdXQgb2YgdGhlIHN0cnVjdHVyZSBhbmQgY29uc3RpZnkgc3RydWN0 CiAgIHZvdV9pbmYKIC0gQWRkIGxvZyBtZXNzYWdlIGZvciBlcnJvciBjb25kaXRpb25zCiAtIE1h a2UgdGhlIGZ1bmN0aW9uIGNhbGxzIGluIHRlYXJkb3duIHBhdGggYXN5bW1ldHJpY2FsCiAtIEEg ZmV3IGNvZGluZyBzdHlsZSBpbXByb3ZlbWVudHMgbGlrZSBkZWZpbmluZyBtYWNybyBmb3Igc3Vi LW1vZHVsZQogICBhZGRyZXNzIGFuZCBjaGFuZ2luZyBjb2RlIHRvIHNhdmUgaW5kZW50YXRpb24g bGV2ZWwKIC0gQWRkIGEgTUFJTlRBSU5FUlMgZW50cnkgZm9yIFpURSBaWCBEUk0gZHJpdmVyCgpD aGFuZ2VzIGZvciB2MjoKIC0gQ2hhbmdlIGRldmljZSB0cmVlIGJpbmRpbmdzIHRvIGtpbGwgdGhl IHZpcnR1YWwgZGlzcGxheS1zdWJzeXN0ZW0KICAgbm9kZSBtYWtlIFZPVSB0aGUgcGFyZW50IG5v ZGUuCgpTaGF3biBHdW8gKDMpOgogIGR0LWJpbmRpbmdzOiBhZGQgYmluZGluZ3MgZG9jIGZvciBa VEUgVk9VIGRpc3BsYXkgY29udHJvbGxlcgogIGRybTogenRlOiBhZGQgaW5pdGlhbCB2b3UgZHJt IGRyaXZlcgogIE1BSU5UQUlORVJTOiBhZGQgYW4gZW50cnkgZm9yIFpURSBaWCBEUk0gZHJpdmVy CgogLi4uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS96dGUsdm91LnR4dCAgICAgICAgfCAg ODQgKysrCiBNQUlOVEFJTkVSUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAgNyArCiBkcml2ZXJzL2dwdS9kcm0vS2NvbmZpZyAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8ICAgMiArCiBkcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUgICAgICAgICAgICAgICAgICAg ICAgICAgICB8ICAgMSArCiBkcml2ZXJzL2dwdS9kcm0venRlL0tjb25maWcgICAgICAgICAgICAg ICAgICAgICAgICB8ICAgOCArCiBkcml2ZXJzL2dwdS9kcm0venRlL01ha2VmaWxlICAgICAgICAg ICAgICAgICAgICAgICB8ICAgNyArCiBkcml2ZXJzL2dwdS9kcm0venRlL3p4X2RybV9kcnYuYyAg ICAgICAgICAgICAgICAgICB8IDI2NyArKysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS96dGUvenhf ZHJtX2Rydi5oICAgICAgICAgICAgICAgICAgIHwgIDM2ICsrCiBkcml2ZXJzL2dwdS9kcm0venRl L3p4X2hkbWkuYyAgICAgICAgICAgICAgICAgICAgICB8IDYyNCArKysrKysrKysrKysrKysrKysr CiBkcml2ZXJzL2dwdS9kcm0venRlL3p4X2hkbWlfcmVncy5oICAgICAgICAgICAgICAgICB8ICA1 NiArKwogZHJpdmVycy9ncHUvZHJtL3p0ZS96eF9wbGFuZS5jICAgICAgICAgICAgICAgICAgICAg fCAyOTkgKysrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL3p0ZS96eF9wbGFuZS5oICAgICAgICAg ICAgICAgICAgICAgfCAgMjYgKwogZHJpdmVycy9ncHUvZHJtL3p0ZS96eF9wbGFuZV9yZWdzLmgg ICAgICAgICAgICAgICAgfCAgOTEgKysrCiBkcml2ZXJzL2dwdS9kcm0venRlL3p4X3ZvdS5jICAg ICAgICAgICAgICAgICAgICAgICB8IDY2MSArKysrKysrKysrKysrKysrKysrKysKIGRyaXZlcnMv Z3B1L2RybS96dGUvenhfdm91LmggICAgICAgICAgICAgICAgICAgICAgIHwgIDQ2ICsrCiBkcml2 ZXJzL2dwdS9kcm0venRlL3p4X3ZvdV9yZWdzLmggICAgICAgICAgICAgICAgICB8IDE1NyArKysr KwogMTYgZmlsZXMgY2hhbmdlZCwgMjM3MiBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2 NDQgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvenRlLHZvdS50eHQK IGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0venRlL0tjb25maWcKIGNyZWF0ZSBt b2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0venRlL01ha2VmaWxlCiBjcmVhdGUgbW9kZSAxMDA2 NDQgZHJpdmVycy9ncHUvZHJtL3p0ZS96eF9kcm1fZHJ2LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBk cml2ZXJzL2dwdS9kcm0venRlL3p4X2RybV9kcnYuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZl cnMvZ3B1L2RybS96dGUvenhfaGRtaS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUv ZHJtL3p0ZS96eF9oZG1pX3JlZ3MuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2Ry bS96dGUvenhfcGxhbmUuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS96dGUv enhfcGxhbmUuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS96dGUvenhfcGxh bmVfcmVncy5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL3p0ZS96eF92b3Uu YwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS96dGUvenhfdm91LmgKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0venRlL3p4X3ZvdV9yZWdzLmgKCi0tIAoxLjku MQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRl dmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==