From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-3.8 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS,USER_AGENT_GIT autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 26469CA9EB5 for ; Mon, 21 Oct 2019 09:15:31 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id E8A5820873 for ; Mon, 21 Oct 2019 09:15:30 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="mV6Z/Fx7"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=baylibre-com.20150623.gappssmtp.com header.i=@baylibre-com.20150623.gappssmtp.com header.b="AptZEBU3" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org E8A5820873 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-Id:Date:Subject:To :From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References: List-Owner; bh=FX+Ga0pGjeC2v+eSy0N2UywUyz4Xus/QGCtOGtPbq4g=; b=mV6Z/Fx7nF7SRo CZDdit+WeBrtaRAKYF+vvzdh4n50cHWXoVVx0+yUdWwWKGggoaqPwqjwtoYuOYLtlQvgVPEMhic3d iQ0xKgrVjtsvmv/tKfMXIctm2NTR01ealPT2/xHRVQVUyxnOTnO/7rv74rT6DoKGL1jbgbnsJ9/2/ 75ZhaD9qKtvmvf2e4lqKYTiBxbr14Y2m/x+O16bFQkL6fi59LP8Xspn4eOVOUK77TgaNc8sSrZ/Nn pLRiHYShN4HcBEkhFA5B77h6uzBbxwLRpkrBXU4f2BibAuPvvO7gxa2RiDvTv3h+2GfxYfJ8y1Qjz fcYKX1ly7pBDx4BXkQBQ==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1iMTmc-0002k1-Cd; Mon, 21 Oct 2019 09:15:22 +0000 Received: from mail-wr1-x442.google.com ([2a00:1450:4864:20::442]) by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1iMTmT-0002fF-ME for linux-arm-kernel@lists.infradead.org; Mon, 21 Oct 2019 09:15:16 +0000 Received: by mail-wr1-x442.google.com with SMTP id c2so7760527wrr.10 for ; Mon, 21 Oct 2019 02:15:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=5i+d8XQjZiZEL6JpWOwXWmcInBfxIrWrqVDxqfnvGO4=; b=AptZEBU3u1ow6XOGj8rmLaRLExp4NeljhpjSBNaYri5G7VkbMYSI00c/JiBG8W1jf8 2Tz7FblocfbuB7sBaE86bA6gWGQPk7sOPoGfSOynk6/IJOFPvXTh3xY7vCGvstNNYB8w A1+wSAMT11zquVEWSWvXy37KRGLjpxYbzca3gEKFn+d5qqXlUDvBj88DfEdhtgBY3w5e oFbX4Z3B3nyp0SuAWzIAF63903X9aYFQ22bG1SMXTtplHkcwpWOyms2+8f+dAdjJZZ+m 3s89Bef3C2vrD5DyIM6H12SVB5oa8Wph3zie+0Fog+Nmak29XUb0PEJGsGMhkqH6oIv4 TguA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=5i+d8XQjZiZEL6JpWOwXWmcInBfxIrWrqVDxqfnvGO4=; b=DYf00yEXSPsDjb7jfg58EZG4f21i/97PdV2qt0IGlWZiKBcRK1oL6ytg/bE1ddW5+R edWthPYEqdgr8DGy+tbH3ZnXIRjfI3oToQCX23SLKxIqDkTE7346uI7wChbiGGJqcYJs w47a4hX3TtydXo9Dh4Ix2hbosl5IIKqFy6iLOp7piNY/RQFOOm0z5gUSrH4oFmMi8uHq t1p8AMNcG2mcZbglJob7dcvflkkStCzblCfSTqGqizFqSov/H5dudIXkm2HnuDp9UFfT mIbp5O6q1CYsCu/8MtSCVV1zAX1zYtaluNd4/hvrzzgJERuw3YH1oWguYK3wAt8AV6u1 K2Dg== X-Gm-Message-State: APjAAAUKVNgydLIeQwrToZ7MFHcpq10JkZripXvz63jg9I9cWCMKyI1P bhmGNoYSeblldEu139kdMQG+uQ== X-Google-Smtp-Source: APXvYqyLnz8ek+M/9B68LfvYIpWtN0RIpnfgorW4aqhNqkj4LVQIQcV6iQbJhYYvoEmtwPlwSCAwNA== X-Received: by 2002:adf:f84f:: with SMTP id d15mr318651wrq.112.1571649312025; Mon, 21 Oct 2019 02:15:12 -0700 (PDT) Received: from localhost.localdomain (lmontsouris-657-1-212-31.w90-63.abo.wanadoo.fr. [90.63.244.31]) by smtp.gmail.com with ESMTPSA id t13sm20281595wra.70.2019.10.21.02.15.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 21 Oct 2019 02:15:11 -0700 (PDT) From: Neil Armstrong To: dri-devel@lists.freedesktop.org Subject: [PATCH v3 0/9] drm/meson: add AFBC support Date: Mon, 21 Oct 2019 11:15:00 +0200 Message-Id: <20191021091509.3864-1-narmstrong@baylibre.com> X-Mailer: git-send-email 2.22.0 MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20191021_021513_754362_8EC8DEA8 X-CRM114-Status: GOOD ( 17.85 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: khilman@baylibre.com, linux-amlogic@lists.infradead.org, ayan.halder@arm.com, linux-arm-kernel@lists.infradead.org, Neil Armstrong Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org This adds support for the ARM Framebuffer Compression decoders found in the Amlogic GXM and G12A SoCs. This patchset is a merge of v2 "drm/meson: add AFBC support" at [3] and v2 "drm/meson: implement RDMA for AFBC reset on vsync" at [4]. The VPU embeds a "Register DMA" that can write a sequence of registers on the VPU AHB bus, either manually or triggered by an internal IRQ event like VSYNC or a line input counter. The Amlogic GXM and G12A AFBC decoder are totally different, the GXM only handling only the AFBC v1.0 modes and the G12A decoder handling the AFBC v1.2 modes. The G12A AFBC decoder is an external IP integrated in the video pipeline, and the GXM AFBC decoder seems to the an Amlogic custom decoder more tighly integrated in the video pipeline. The GXM AFBC decoder can handle only one AFBC plane for 2 available OSD planes available in HW, and the G12A AFBC decoder can handle up to 4 AFBC planes for up to 3 OSD planes available in HW. The Amlogic GXM supports 16x16 SPARSE and 16x16 SPLIT AFBC buffers up to 4k. On the other side, for G12A SPLIT is mandatory in 16x16 block mode, but for 4k modes 32x8+SPLIT AFBC buffers is manadatory for performances reasons. The Amlogic GXM and G12A AFBC decoders are integrated very differently. The Amlogic GXM has a direct output path to the OSD1 VIU pixel input, because the GXM AFBC decoder seem to be a custom IP developed by Amlogic. On the other side, the Amlogic G12A AFBC decoder seems to be an external IP that emit pixels on an AXI master hooked to a "Mali Unpack" block feeding the OSD1 VIU pixel input. This uses a weird "0x1000000" internal HW physical address on both sides to transfer the pixels. For Amlogic GXM, the supported pixel formats are the same as the normal linear OSD1 mode. On the other side, Amlogic added support for all AFBC v1.2 formats for the G12A AFBC integration. The initial RDMA implementation handles a single channel (over 8), triggered by the VSYNC irq and does not handle the RDMA irq. The RDMA will be usefull to reset and program the AFBC decoder unit on each vsync without involving the interrupt handler that can be masked for a long period of time, producing display glitches. For this we use the meson_rdma_writel_sync() which adds the register write tuple (VPU register offset and register value) to the RDMA buffer and write the value to the HW. When enabled, the RDMA is enabled to rewritte the same sequence at the next VSYNC event, until a new buffer is committed to the OSD plane. For testing, the only available AFBC buffer generation is the Android Yukawa Dvalin Android Mali blobs found at [1]. Both SoCs has been tested using buffers generated under AOSP, but only G12A was tested using a runtime stream of AFBC buffers, GXM was only tested using static buffers loaded from files. Changes since v2 of [3] and [4]: - Merge of RDMA patchset - Fix suspend/resume when AFBC is enabled - Re-enabled vsync_force otherwise RDMA is also stopped Changes since v1 at [2]: - Discards XRGB modes with YTR, only allow XBGR with YTR - Add non-YTR modifiers for G12A - Disable completely XRGB modes for GXM, until we find how to disable YTR - Add proper argb remap for XRGB modes - Enable OSD_STAT sync signal [1] https://android.googlesource.com/device/amlogic/yukawa/+/refs/heads/master/gpu/ [2] https://patchwork.freedesktop.org/series/67832/#rev1 [3] https://patchwork.freedesktop.org/series/67832/#rev2 [4] https://patchwork.freedesktop.org/series/68021/#rev2 Neil Armstrong (9): drm/meson: add AFBC decoder registers for GXM and G12A drm/meson: add RDMA register bits defines drm/meson: store the framebuffer width for plane commit drm/meson: add RDMA module driver drm/meson: Add AFBCD module driver drm/meson: plane: add support for AFBC mode for OSD1 plane drm/meson: viu: add AFBC modules routing functions drm/meson: hold 32 lines after vsync to give time for AFBC start drm/meson: crtc: add OSD1 plane AFBC commit drivers/gpu/drm/meson/Makefile | 1 + drivers/gpu/drm/meson/meson_crtc.c | 79 ++++- drivers/gpu/drm/meson/meson_drv.c | 50 ++- drivers/gpu/drm/meson/meson_drv.h | 23 ++ drivers/gpu/drm/meson/meson_osd_afbcd.c | 389 ++++++++++++++++++++++++ drivers/gpu/drm/meson/meson_osd_afbcd.h | 28 ++ drivers/gpu/drm/meson/meson_plane.c | 229 ++++++++++++-- drivers/gpu/drm/meson/meson_rdma.c | 135 ++++++++ drivers/gpu/drm/meson/meson_rdma.h | 21 ++ drivers/gpu/drm/meson/meson_registers.h | 110 +++++++ drivers/gpu/drm/meson/meson_viu.c | 83 ++++- drivers/gpu/drm/meson/meson_viu.h | 19 ++ 12 files changed, 1123 insertions(+), 44 deletions(-) create mode 100644 drivers/gpu/drm/meson/meson_osd_afbcd.c create mode 100644 drivers/gpu/drm/meson/meson_osd_afbcd.h create mode 100644 drivers/gpu/drm/meson/meson_rdma.c create mode 100644 drivers/gpu/drm/meson/meson_rdma.h -- 2.22.0 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel From mboxrd@z Thu Jan 1 00:00:00 1970 From: Neil Armstrong Subject: [PATCH v3 0/9] drm/meson: add AFBC support Date: Mon, 21 Oct 2019 11:15:00 +0200 Message-ID: <20191021091509.3864-1-narmstrong@baylibre.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wr1-x443.google.com (mail-wr1-x443.google.com [IPv6:2a00:1450:4864:20::443]) by gabe.freedesktop.org (Postfix) with ESMTPS id DBE0C89C94 for ; Mon, 21 Oct 2019 09:15:13 +0000 (UTC) Received: by mail-wr1-x443.google.com with SMTP id t16so7866259wrr.1 for ; Mon, 21 Oct 2019 02:15:13 -0700 (PDT) List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org Cc: khilman@baylibre.com, linux-amlogic@lists.infradead.org, ayan.halder@arm.com, linux-arm-kernel@lists.infradead.org, Neil Armstrong List-Id: dri-devel@lists.freedesktop.org VGhpcyBhZGRzIHN1cHBvcnQgZm9yIHRoZSBBUk0gRnJhbWVidWZmZXIgQ29tcHJlc3Npb24gZGVj b2RlcnMgZm91bmQKaW4gdGhlIEFtbG9naWMgR1hNIGFuZCBHMTJBIFNvQ3MuCgpUaGlzIHBhdGNo c2V0IGlzIGEgbWVyZ2Ugb2YgdjIgImRybS9tZXNvbjogYWRkIEFGQkMgc3VwcG9ydCIgYXQgWzNd IGFuZCB2MgoiZHJtL21lc29uOiBpbXBsZW1lbnQgUkRNQSBmb3IgQUZCQyByZXNldCBvbiB2c3lu YyIgYXQgWzRdLgoKVGhlIFZQVSBlbWJlZHMgYSAiUmVnaXN0ZXIgRE1BIiB0aGF0IGNhbiB3cml0 ZSBhIHNlcXVlbmNlIG9mIHJlZ2lzdGVycwpvbiB0aGUgVlBVIEFIQiBidXMsIGVpdGhlciBtYW51 YWxseSBvciB0cmlnZ2VyZWQgYnkgYW4gaW50ZXJuYWwgSVJRCmV2ZW50IGxpa2UgVlNZTkMgb3Ig YSBsaW5lIGlucHV0IGNvdW50ZXIuCgpUaGUgQW1sb2dpYyBHWE0gYW5kIEcxMkEgQUZCQyBkZWNv ZGVyIGFyZSB0b3RhbGx5IGRpZmZlcmVudCwgdGhlIEdYTSBvbmx5CmhhbmRsaW5nIG9ubHkgdGhl IEFGQkMgdjEuMCBtb2RlcyBhbmQgdGhlIEcxMkEgZGVjb2RlciBoYW5kbGluZyB0aGUKQUZCQyB2 MS4yIG1vZGVzLgoKVGhlIEcxMkEgQUZCQyBkZWNvZGVyIGlzIGFuIGV4dGVybmFsIElQIGludGVn cmF0ZWQgaW4gdGhlIHZpZGVvIHBpcGVsaW5lLAphbmQgdGhlIEdYTSBBRkJDIGRlY29kZXIgc2Vl bXMgdG8gdGhlIGFuIEFtbG9naWMgY3VzdG9tIGRlY29kZXIgbW9yZQp0aWdobHkgaW50ZWdyYXRl ZCBpbiB0aGUgdmlkZW8gcGlwZWxpbmUuCgpUaGUgR1hNIEFGQkMgZGVjb2RlciBjYW4gaGFuZGxl IG9ubHkgb25lIEFGQkMgcGxhbmUgZm9yIDIgYXZhaWxhYmxlCk9TRCBwbGFuZXMgYXZhaWxhYmxl IGluIEhXLCBhbmQgdGhlIEcxMkEgQUZCQyBkZWNvZGVyIGNhbiBoYW5kbGUgdXAKdG8gNCBBRkJD IHBsYW5lcyBmb3IgdXAgdG8gMyBPU0QgcGxhbmVzIGF2YWlsYWJsZSBpbiBIVy4KClRoZSBBbWxv Z2ljIEdYTSBzdXBwb3J0cyAxNngxNiBTUEFSU0UgYW5kIDE2eDE2IFNQTElUIEFGQkMgYnVmZmVy cyB1cAp0byA0ay4KCk9uIHRoZSBvdGhlciBzaWRlLCBmb3IgRzEyQSBTUExJVCBpcyBtYW5kYXRv cnkgaW4gMTZ4MTYgYmxvY2sgbW9kZSwgYnV0CmZvciA0ayBtb2RlcyAzMng4K1NQTElUIEFGQkMg YnVmZmVycyBpcyBtYW5hZGF0b3J5IGZvciBwZXJmb3JtYW5jZXMgcmVhc29ucy4KClRoZSBBbWxv Z2ljIEdYTSBhbmQgRzEyQSBBRkJDIGRlY29kZXJzIGFyZSBpbnRlZ3JhdGVkIHZlcnkgZGlmZmVy ZW50bHkuCgpUaGUgQW1sb2dpYyBHWE0gaGFzIGEgZGlyZWN0IG91dHB1dCBwYXRoIHRvIHRoZSBP U0QxIFZJVSBwaXhlbCBpbnB1dCwKYmVjYXVzZSB0aGUgR1hNIEFGQkMgZGVjb2RlciBzZWVtIHRv IGJlIGEgY3VzdG9tIElQIGRldmVsb3BlZCBieSBBbWxvZ2ljLgoKT24gdGhlIG90aGVyIHNpZGUs IHRoZSBBbWxvZ2ljIEcxMkEgQUZCQyBkZWNvZGVyIHNlZW1zIHRvIGJlIGFuIGV4dGVybmFsCklQ IHRoYXQgZW1pdCBwaXhlbHMgb24gYW4gQVhJIG1hc3RlciBob29rZWQgdG8gYSAiTWFsaSBVbnBh Y2siIGJsb2NrCmZlZWRpbmcgdGhlIE9TRDEgVklVIHBpeGVsIGlucHV0LgpUaGlzIHVzZXMgYSB3 ZWlyZCAiMHgxMDAwMDAwIiBpbnRlcm5hbCBIVyBwaHlzaWNhbCBhZGRyZXNzIG9uIGJvdGgKc2lk ZXMgdG8gdHJhbnNmZXIgdGhlIHBpeGVscy4KCkZvciBBbWxvZ2ljIEdYTSwgdGhlIHN1cHBvcnRl ZCBwaXhlbCBmb3JtYXRzIGFyZSB0aGUgc2FtZSBhcyB0aGUgbm9ybWFsCmxpbmVhciBPU0QxIG1v ZGUuCgpPbiB0aGUgb3RoZXIgc2lkZSwgQW1sb2dpYyBhZGRlZCBzdXBwb3J0IGZvciBhbGwgQUZC QyB2MS4yIGZvcm1hdHMgZm9yCnRoZSBHMTJBIEFGQkMgaW50ZWdyYXRpb24uCgpUaGUgaW5pdGlh bCBSRE1BIGltcGxlbWVudGF0aW9uIGhhbmRsZXMgYSBzaW5nbGUgY2hhbm5lbCAob3ZlciA4KSwg dHJpZ2dlcmVkCmJ5IHRoZSBWU1lOQyBpcnEgYW5kIGRvZXMgbm90IGhhbmRsZSB0aGUgUkRNQSBp cnEuCgpUaGUgUkRNQSB3aWxsIGJlIHVzZWZ1bGwgdG8gcmVzZXQgYW5kIHByb2dyYW0gdGhlIEFG QkMgZGVjb2RlciB1bml0Cm9uIGVhY2ggdnN5bmMgd2l0aG91dCBpbnZvbHZpbmcgdGhlIGludGVy cnVwdCBoYW5kbGVyIHRoYXQgY2FuCmJlIG1hc2tlZCBmb3IgYSBsb25nIHBlcmlvZCBvZiB0aW1l LCBwcm9kdWNpbmcgZGlzcGxheSBnbGl0Y2hlcy4KCkZvciB0aGlzIHdlIHVzZSB0aGUgbWVzb25f cmRtYV93cml0ZWxfc3luYygpIHdoaWNoIGFkZHMgdGhlIHJlZ2lzdGVyCndyaXRlIHR1cGxlIChW UFUgcmVnaXN0ZXIgb2Zmc2V0IGFuZCByZWdpc3RlciB2YWx1ZSkgdG8gdGhlIFJETUEgYnVmZmVy CmFuZCB3cml0ZSB0aGUgdmFsdWUgdG8gdGhlIEhXLgoKV2hlbiBlbmFibGVkLCB0aGUgUkRNQSBp cyBlbmFibGVkIHRvIHJld3JpdHRlIHRoZSBzYW1lIHNlcXVlbmNlIGF0IHRoZQpuZXh0IFZTWU5D IGV2ZW50LCB1bnRpbCBhIG5ldyBidWZmZXIgaXMgY29tbWl0dGVkIHRvIHRoZSBPU0QgcGxhbmUu CgpGb3IgdGVzdGluZywgdGhlIG9ubHkgYXZhaWxhYmxlIEFGQkMgYnVmZmVyIGdlbmVyYXRpb24g aXMgdGhlIEFuZHJvaWQKWXVrYXdhIER2YWxpbiBBbmRyb2lkIE1hbGkgYmxvYnMgZm91bmQgYXQg WzFdLgoKQm90aCBTb0NzIGhhcyBiZWVuIHRlc3RlZCB1c2luZyBidWZmZXJzIGdlbmVyYXRlZCB1 bmRlciBBT1NQLCBidXQgb25seQpHMTJBIHdhcyB0ZXN0ZWQgdXNpbmcgYSBydW50aW1lIHN0cmVh bSBvZiBBRkJDIGJ1ZmZlcnMsIEdYTSB3YXMgb25seQp0ZXN0ZWQgdXNpbmcgc3RhdGljIGJ1ZmZl cnMgbG9hZGVkIGZyb20gZmlsZXMuCgpDaGFuZ2VzIHNpbmNlIHYyIG9mIFszXSBhbmQgWzRdOgot IE1lcmdlIG9mIFJETUEgcGF0Y2hzZXQKLSBGaXggc3VzcGVuZC9yZXN1bWUgd2hlbiBBRkJDIGlz IGVuYWJsZWQKLSBSZS1lbmFibGVkIHZzeW5jX2ZvcmNlIG90aGVyd2lzZSBSRE1BIGlzIGFsc28g c3RvcHBlZAoKQ2hhbmdlcyBzaW5jZSB2MSBhdCBbMl06Ci0gRGlzY2FyZHMgWFJHQiBtb2RlcyB3 aXRoIFlUUiwgb25seSBhbGxvdyBYQkdSIHdpdGggWVRSCi0gQWRkIG5vbi1ZVFIgbW9kaWZpZXJz IGZvciBHMTJBCi0gRGlzYWJsZSBjb21wbGV0ZWx5IFhSR0IgbW9kZXMgZm9yIEdYTSwgdW50aWwg d2UgZmluZCBob3cgdG8gZGlzYWJsZSBZVFIKLSBBZGQgcHJvcGVyIGFyZ2IgcmVtYXAgZm9yIFhS R0IgbW9kZXMKLSBFbmFibGUgT1NEX1NUQVQgc3luYyBzaWduYWwKClsxXSBodHRwczovL2FuZHJv aWQuZ29vZ2xlc291cmNlLmNvbS9kZXZpY2UvYW1sb2dpYy95dWthd2EvKy9yZWZzL2hlYWRzL21h c3Rlci9ncHUvClsyXSBodHRwczovL3BhdGNod29yay5mcmVlZGVza3RvcC5vcmcvc2VyaWVzLzY3 ODMyLyNyZXYxClszXSBodHRwczovL3BhdGNod29yay5mcmVlZGVza3RvcC5vcmcvc2VyaWVzLzY3 ODMyLyNyZXYyCls0XSBodHRwczovL3BhdGNod29yay5mcmVlZGVza3RvcC5vcmcvc2VyaWVzLzY4 MDIxLyNyZXYyCgpOZWlsIEFybXN0cm9uZyAoOSk6CiAgZHJtL21lc29uOiBhZGQgQUZCQyBkZWNv ZGVyIHJlZ2lzdGVycyBmb3IgR1hNIGFuZCBHMTJBCiAgZHJtL21lc29uOiBhZGQgUkRNQSByZWdp c3RlciBiaXRzIGRlZmluZXMKICBkcm0vbWVzb246IHN0b3JlIHRoZSBmcmFtZWJ1ZmZlciB3aWR0 aCBmb3IgcGxhbmUgY29tbWl0CiAgZHJtL21lc29uOiBhZGQgUkRNQSBtb2R1bGUgZHJpdmVyCiAg ZHJtL21lc29uOiBBZGQgQUZCQ0QgbW9kdWxlIGRyaXZlcgogIGRybS9tZXNvbjogcGxhbmU6IGFk ZCBzdXBwb3J0IGZvciBBRkJDIG1vZGUgZm9yIE9TRDEgcGxhbmUKICBkcm0vbWVzb246IHZpdTog YWRkIEFGQkMgbW9kdWxlcyByb3V0aW5nIGZ1bmN0aW9ucwogIGRybS9tZXNvbjogaG9sZCAzMiBs aW5lcyBhZnRlciB2c3luYyB0byBnaXZlIHRpbWUgZm9yIEFGQkMgc3RhcnQKICBkcm0vbWVzb246 IGNydGM6IGFkZCBPU0QxIHBsYW5lIEFGQkMgY29tbWl0CgogZHJpdmVycy9ncHUvZHJtL21lc29u L01ha2VmaWxlICAgICAgICAgIHwgICAxICsKIGRyaXZlcnMvZ3B1L2RybS9tZXNvbi9tZXNvbl9j cnRjLmMgICAgICB8ICA3OSArKysrLQogZHJpdmVycy9ncHUvZHJtL21lc29uL21lc29uX2Rydi5j ICAgICAgIHwgIDUwICsrLQogZHJpdmVycy9ncHUvZHJtL21lc29uL21lc29uX2Rydi5oICAgICAg IHwgIDIzICsrCiBkcml2ZXJzL2dwdS9kcm0vbWVzb24vbWVzb25fb3NkX2FmYmNkLmMgfCAzODkg KysrKysrKysrKysrKysrKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vbWVzb24vbWVzb25fb3Nk X2FmYmNkLmggfCAgMjggKysKIGRyaXZlcnMvZ3B1L2RybS9tZXNvbi9tZXNvbl9wbGFuZS5jICAg ICB8IDIyOSArKysrKysrKysrKystLQogZHJpdmVycy9ncHUvZHJtL21lc29uL21lc29uX3JkbWEu YyAgICAgIHwgMTM1ICsrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vbWVzb24vbWVzb25fcmRtYS5o ICAgICAgfCAgMjEgKysKIGRyaXZlcnMvZ3B1L2RybS9tZXNvbi9tZXNvbl9yZWdpc3RlcnMuaCB8 IDExMCArKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vbWVzb24vbWVzb25fdml1LmMgICAgICAgfCAg ODMgKysrKy0KIGRyaXZlcnMvZ3B1L2RybS9tZXNvbi9tZXNvbl92aXUuaCAgICAgICB8ICAxOSAr KwogMTIgZmlsZXMgY2hhbmdlZCwgMTEyMyBpbnNlcnRpb25zKCspLCA0NCBkZWxldGlvbnMoLSkK IGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vbWVzb24vbWVzb25fb3NkX2FmYmNk LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vbWVzb24vbWVzb25fb3NkX2Fm YmNkLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vbWVzb24vbWVzb25fcmRt YS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL21lc29uL21lc29uX3JkbWEu aAoKLS0gCjIuMjIuMAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRl dmVs From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-3.8 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id D7161CA9EB5 for ; Mon, 21 Oct 2019 09:15:24 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id A381620873 for ; Mon, 21 Oct 2019 09:15:24 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="rheoyENc"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=baylibre-com.20150623.gappssmtp.com header.i=@baylibre-com.20150623.gappssmtp.com header.b="AptZEBU3" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org A381620873 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-amlogic-bounces+linux-amlogic=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-Id:Date:Subject:To :From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References: List-Owner; bh=tuK9bGId6sznns/RpLYzxRoVmabwhkoXCu/17gxNRCg=; b=rheoyENcEoQMVC 3UfMKQN3TIS+6lkK2F1cm9zFL5vz+J0tpEVPsmliNtY2LWJ+2NOaLu/gMRaH84is0N8qZTsZ568zi ayh+R8di65kojicnAJuZe+rtDeP1FKTWzXW3PTrOqU3Thqjq7rjj3XfYJux7GyOJpeJHoIJQPQNXF AKtfuHM2T02Q+tkq0CYVmMxKvFcD9ATtBBFYVWIHPrO0+Ufb0PO4rPhM3HKP+8MDLj6uLgfnM1ysb XtH1mcKPnSQ6hRhEjgv0V7EqRozgaIZC5R37wnbAo+UclKQs2FveXQzoOx4uEGJtDqrn0u6dCvUHF yrhoPduY0XWP4O4N4BDA==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1iMTmX-0002hu-9j; Mon, 21 Oct 2019 09:15:17 +0000 Received: from mail-wr1-x441.google.com ([2a00:1450:4864:20::441]) by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1iMTmT-0002fG-RO for linux-amlogic@lists.infradead.org; Mon, 21 Oct 2019 09:15:16 +0000 Received: by mail-wr1-x441.google.com with SMTP id s1so4242280wro.0 for ; Mon, 21 Oct 2019 02:15:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=5i+d8XQjZiZEL6JpWOwXWmcInBfxIrWrqVDxqfnvGO4=; b=AptZEBU3u1ow6XOGj8rmLaRLExp4NeljhpjSBNaYri5G7VkbMYSI00c/JiBG8W1jf8 2Tz7FblocfbuB7sBaE86bA6gWGQPk7sOPoGfSOynk6/IJOFPvXTh3xY7vCGvstNNYB8w A1+wSAMT11zquVEWSWvXy37KRGLjpxYbzca3gEKFn+d5qqXlUDvBj88DfEdhtgBY3w5e oFbX4Z3B3nyp0SuAWzIAF63903X9aYFQ22bG1SMXTtplHkcwpWOyms2+8f+dAdjJZZ+m 3s89Bef3C2vrD5DyIM6H12SVB5oa8Wph3zie+0Fog+Nmak29XUb0PEJGsGMhkqH6oIv4 TguA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=5i+d8XQjZiZEL6JpWOwXWmcInBfxIrWrqVDxqfnvGO4=; b=dDu7ZA1pmMEFlQcz+Dt0Xq2+C2nZ0uaO5ZyUo7tBxuJ1zr4fT7dPHXO9z9HkCP9Fi6 elkMh9TqJ1sUtZ0UKi4zivJusKm5HSNEav9oC/mUXoVdE0esoxlNXbYseMk+338gxi1s y83MrYvZOgkcvWXR9Ax9kmRJbmrA5ErNjGtQ5RHcsvsBycq8bqu1gt6ruEThuHOt83ba qN+oE4UhiHFrR17welC3RvF7YYglWxkYUu7u6Ka1ejD0bKxV2n6DVg9nsFXBc2+/peiQ 3f3yuk+rG5WydfQztlaieZ6PSAmycJwMTy+X5Bka8p6gwq34unngqt2Lii6ZDKLIQHLX LwLA== X-Gm-Message-State: APjAAAUo4PR6/WTtWWY7VJXfyP7s4qwZylJXg6Jg9L1SyQIXKOoCMYE9 neQ+kxpOpW/qvZCpceCu52H+ng== X-Google-Smtp-Source: APXvYqyLnz8ek+M/9B68LfvYIpWtN0RIpnfgorW4aqhNqkj4LVQIQcV6iQbJhYYvoEmtwPlwSCAwNA== X-Received: by 2002:adf:f84f:: with SMTP id d15mr318651wrq.112.1571649312025; Mon, 21 Oct 2019 02:15:12 -0700 (PDT) Received: from localhost.localdomain (lmontsouris-657-1-212-31.w90-63.abo.wanadoo.fr. [90.63.244.31]) by smtp.gmail.com with ESMTPSA id t13sm20281595wra.70.2019.10.21.02.15.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 21 Oct 2019 02:15:11 -0700 (PDT) From: Neil Armstrong To: dri-devel@lists.freedesktop.org Subject: [PATCH v3 0/9] drm/meson: add AFBC support Date: Mon, 21 Oct 2019 11:15:00 +0200 Message-Id: <20191021091509.3864-1-narmstrong@baylibre.com> X-Mailer: git-send-email 2.22.0 MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20191021_021513_885281_812C7927 X-CRM114-Status: GOOD ( 16.28 ) X-BeenThere: linux-amlogic@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: khilman@baylibre.com, linux-amlogic@lists.infradead.org, ayan.halder@arm.com, linux-arm-kernel@lists.infradead.org, Neil Armstrong Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-amlogic" Errors-To: linux-amlogic-bounces+linux-amlogic=archiver.kernel.org@lists.infradead.org This adds support for the ARM Framebuffer Compression decoders found in the Amlogic GXM and G12A SoCs. This patchset is a merge of v2 "drm/meson: add AFBC support" at [3] and v2 "drm/meson: implement RDMA for AFBC reset on vsync" at [4]. The VPU embeds a "Register DMA" that can write a sequence of registers on the VPU AHB bus, either manually or triggered by an internal IRQ event like VSYNC or a line input counter. The Amlogic GXM and G12A AFBC decoder are totally different, the GXM only handling only the AFBC v1.0 modes and the G12A decoder handling the AFBC v1.2 modes. The G12A AFBC decoder is an external IP integrated in the video pipeline, and the GXM AFBC decoder seems to the an Amlogic custom decoder more tighly integrated in the video pipeline. The GXM AFBC decoder can handle only one AFBC plane for 2 available OSD planes available in HW, and the G12A AFBC decoder can handle up to 4 AFBC planes for up to 3 OSD planes available in HW. The Amlogic GXM supports 16x16 SPARSE and 16x16 SPLIT AFBC buffers up to 4k. On the other side, for G12A SPLIT is mandatory in 16x16 block mode, but for 4k modes 32x8+SPLIT AFBC buffers is manadatory for performances reasons. The Amlogic GXM and G12A AFBC decoders are integrated very differently. The Amlogic GXM has a direct output path to the OSD1 VIU pixel input, because the GXM AFBC decoder seem to be a custom IP developed by Amlogic. On the other side, the Amlogic G12A AFBC decoder seems to be an external IP that emit pixels on an AXI master hooked to a "Mali Unpack" block feeding the OSD1 VIU pixel input. This uses a weird "0x1000000" internal HW physical address on both sides to transfer the pixels. For Amlogic GXM, the supported pixel formats are the same as the normal linear OSD1 mode. On the other side, Amlogic added support for all AFBC v1.2 formats for the G12A AFBC integration. The initial RDMA implementation handles a single channel (over 8), triggered by the VSYNC irq and does not handle the RDMA irq. The RDMA will be usefull to reset and program the AFBC decoder unit on each vsync without involving the interrupt handler that can be masked for a long period of time, producing display glitches. For this we use the meson_rdma_writel_sync() which adds the register write tuple (VPU register offset and register value) to the RDMA buffer and write the value to the HW. When enabled, the RDMA is enabled to rewritte the same sequence at the next VSYNC event, until a new buffer is committed to the OSD plane. For testing, the only available AFBC buffer generation is the Android Yukawa Dvalin Android Mali blobs found at [1]. Both SoCs has been tested using buffers generated under AOSP, but only G12A was tested using a runtime stream of AFBC buffers, GXM was only tested using static buffers loaded from files. Changes since v2 of [3] and [4]: - Merge of RDMA patchset - Fix suspend/resume when AFBC is enabled - Re-enabled vsync_force otherwise RDMA is also stopped Changes since v1 at [2]: - Discards XRGB modes with YTR, only allow XBGR with YTR - Add non-YTR modifiers for G12A - Disable completely XRGB modes for GXM, until we find how to disable YTR - Add proper argb remap for XRGB modes - Enable OSD_STAT sync signal [1] https://android.googlesource.com/device/amlogic/yukawa/+/refs/heads/master/gpu/ [2] https://patchwork.freedesktop.org/series/67832/#rev1 [3] https://patchwork.freedesktop.org/series/67832/#rev2 [4] https://patchwork.freedesktop.org/series/68021/#rev2 Neil Armstrong (9): drm/meson: add AFBC decoder registers for GXM and G12A drm/meson: add RDMA register bits defines drm/meson: store the framebuffer width for plane commit drm/meson: add RDMA module driver drm/meson: Add AFBCD module driver drm/meson: plane: add support for AFBC mode for OSD1 plane drm/meson: viu: add AFBC modules routing functions drm/meson: hold 32 lines after vsync to give time for AFBC start drm/meson: crtc: add OSD1 plane AFBC commit drivers/gpu/drm/meson/Makefile | 1 + drivers/gpu/drm/meson/meson_crtc.c | 79 ++++- drivers/gpu/drm/meson/meson_drv.c | 50 ++- drivers/gpu/drm/meson/meson_drv.h | 23 ++ drivers/gpu/drm/meson/meson_osd_afbcd.c | 389 ++++++++++++++++++++++++ drivers/gpu/drm/meson/meson_osd_afbcd.h | 28 ++ drivers/gpu/drm/meson/meson_plane.c | 229 ++++++++++++-- drivers/gpu/drm/meson/meson_rdma.c | 135 ++++++++ drivers/gpu/drm/meson/meson_rdma.h | 21 ++ drivers/gpu/drm/meson/meson_registers.h | 110 +++++++ drivers/gpu/drm/meson/meson_viu.c | 83 ++++- drivers/gpu/drm/meson/meson_viu.h | 19 ++ 12 files changed, 1123 insertions(+), 44 deletions(-) create mode 100644 drivers/gpu/drm/meson/meson_osd_afbcd.c create mode 100644 drivers/gpu/drm/meson/meson_osd_afbcd.h create mode 100644 drivers/gpu/drm/meson/meson_rdma.c create mode 100644 drivers/gpu/drm/meson/meson_rdma.h -- 2.22.0 _______________________________________________ linux-amlogic mailing list linux-amlogic@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-amlogic