Received: by 2002:ac0:a5a7:0:0:0:0:0 with SMTP id m36-v6csp1506524imm; Wed, 8 Aug 2018 19:18:50 -0700 (PDT) X-Google-Smtp-Source: AA+uWPxyNEwbDGkb6bQ2Wsg2sIYtI7hO0XM04++5Z4fA7LtWcn235h9ho5xKPHAVaVP1cfMpBFXb X-Received: by 2002:a17:902:8506:: with SMTP id bj6-v6mr224870plb.210.1533781130666; Wed, 08 Aug 2018 19:18:50 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1533781130; cv=none; d=google.com; s=arc-20160816; b=WvWz4zkxmd/oePYCAT3WUIViWOkOSs8M2KZcJmyxRGuF66oKPZZqnLdcXk2eSvGqyR WGIiZ/1cTVGi2xLYM/UU5dJGRjWmIsoB7l17F/36TbwgPfSyKmbj5POJv5bpp2xXuLCI 4OFdtPPxKE5zOQg6e4cAEmUkMSLvb4F3ujP/c0xoKs25BryLg2fHTD9eGfkKXUJFxLYs azS26CcAA3V5FDtHu3fzvyce7PGiD+Dhn4NsSOow8MnUeMkLhZ5ysBCLa0ZgZ1W2YG+g SqIehlRfLXjGWN0JoFBzD4ioOgAA/lJjZ6WwcFYSixMqet+tNhnTZqkF/Yp8WZGzCjh8 DEtw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:arc-authentication-results; bh=/HsGpy8g73BLA8/1HeIS8KjZO2JGQKRz2c3xKNoqZhQ=; b=UNV7oG4L5zYSYTELFiB4zNu5zZ4zB1Bo5zwThKyfcDi2onII0TD3801ylt6tJ2FDEb /jbNtZegNkgdJ1h8kGYYhSAvfx+Lfne45Pw2//45DtsPFHO3Rf2JSdHthuRHc8wNfQqs olWV4wEKuCVStB54k7nXh3NYIRR7PmZygkxAr6oTCn2L5FDjU06F3GWU/xujrLb65uA/ kCTbIRLfUtkZ7VjRJTY1NISQDSZ/BmgKWu5OoT22Bk6euS/cONbLMSyQZ7G88Z6RD9Rz jnld1r7C25FzHXjuNFl5+yaW6owyR/ZRvdovKFOjZwq3kM1AKX5o9evm1alEfy1Tjm+j ZtIA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id x127-v6si5527642pgb.618.2018.08.08.19.18.36; Wed, 08 Aug 2018 19:18:50 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728169AbeHIEic (ORCPT + 99 others); Thu, 9 Aug 2018 00:38:32 -0400 Received: from mailgw01.mediatek.com ([210.61.82.183]:43495 "EHLO mailgw01.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1726764AbeHIEic (ORCPT ); Thu, 9 Aug 2018 00:38:32 -0400 X-UUID: adc303d67a2a4f208a9d577d26eaf93c-20180809 Received: from mtkcas09.mediatek.inc [(172.21.101.178)] by mailgw01.mediatek.com (envelope-from ) (mhqrelay.mediatek.com ESMTP with TLS) with ESMTP id 1503342000; Thu, 09 Aug 2018 10:15:52 +0800 Received: from mtkcas07.mediatek.inc (172.21.101.84) by mtkmbs01n2.mediatek.inc (172.21.101.79) with Microsoft SMTP Server (TLS) id 15.0.1210.3; Thu, 9 Aug 2018 10:15:51 +0800 Received: from mtksdccf07.mediatek.inc (172.21.84.99) by mtkcas07.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1210.3 via Frontend Transport; Thu, 9 Aug 2018 10:15:51 +0800 From: Stu Hsieh To: CK Hu , Philipp Zabel CC: David Airlie , Matthias Brugger , , , , , , Stu Hsieh Subject: [PATCH v4 05/14] drm/mediatek: add memory mode and layer_config for RDMA Date: Thu, 9 Aug 2018 10:15:40 +0800 Message-ID: <1533780949-30141-6-git-send-email-stu.hsieh@mediatek.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1533780949-30141-1-git-send-email-stu.hsieh@mediatek.com> References: <1533780949-30141-1-git-send-email-stu.hsieh@mediatek.com> MIME-Version: 1.0 Content-Type: text/plain X-MTK: N Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This patch add memory mode for RDMA and layer_config for RDMA If use RDMA to read data from memory, it should set memory mode to RDMA Layer config set the data address and pitch to RDMA from plane setting. Signed-off-by: Stu Hsieh Reviewed-by: CK Hu --- drivers/gpu/drm/mediatek/mtk_disp_rdma.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/drivers/gpu/drm/mediatek/mtk_disp_rdma.c b/drivers/gpu/drm/mediatek/mtk_disp_rdma.c index 585943c81e1f..08866550740f 100644 --- a/drivers/gpu/drm/mediatek/mtk_disp_rdma.c +++ b/drivers/gpu/drm/mediatek/mtk_disp_rdma.c @@ -31,14 +31,20 @@ #define RDMA_REG_UPDATE_INT BIT(0) #define DISP_REG_RDMA_GLOBAL_CON 0x0010 #define RDMA_ENGINE_EN BIT(0) +#define RDMA_MODE_MEMORY BIT(1) #define DISP_REG_RDMA_SIZE_CON_0 0x0014 #define DISP_REG_RDMA_SIZE_CON_1 0x0018 #define DISP_REG_RDMA_TARGET_LINE 0x001c +#define DISP_RDMA_MEM_SRC_PITCH 0x002c +#define DISP_RDMA_MEM_GMC_SETTING_0 0x0030 #define DISP_REG_RDMA_FIFO_CON 0x0040 #define RDMA_FIFO_UNDERFLOW_EN BIT(31) #define RDMA_FIFO_PSEUDO_SIZE(bytes) (((bytes) / 16) << 16) #define RDMA_OUTPUT_VALID_FIFO_THRESHOLD(bytes) ((bytes) / 16) #define RDMA_FIFO_SIZE(rdma) ((rdma)->data->fifo_size) +#define DISP_RDMA_MEM_START_ADDR 0x0f00 + +#define RDMA_MEM_GMC 0x40402020 struct mtk_disp_rdma_data { unsigned int fifo_size; @@ -138,12 +144,27 @@ static void mtk_rdma_config(struct mtk_ddp_comp *comp, unsigned int width, writel(reg, comp->regs + DISP_REG_RDMA_FIFO_CON); } +static void mtk_rdma_layer_config(struct mtk_ddp_comp *comp, unsigned int idx, + struct mtk_plane_state *state) +{ + struct mtk_plane_pending_state *pending = &state->pending; + unsigned int addr = pending->addr; + unsigned int pitch = pending->pitch & 0xffff; + + writel_relaxed(addr, comp->regs + DISP_RDMA_MEM_START_ADDR); + writel_relaxed(pitch, comp->regs + DISP_RDMA_MEM_SRC_PITCH); + writel(RDMA_MEM_GMC, comp->regs + DISP_RDMA_MEM_GMC_SETTING_0); + rdma_update_bits(comp, DISP_REG_RDMA_GLOBAL_CON, + RDMA_MODE_MEMORY, RDMA_MODE_MEMORY); +} + static const struct mtk_ddp_comp_funcs mtk_disp_rdma_funcs = { .config = mtk_rdma_config, .start = mtk_rdma_start, .stop = mtk_rdma_stop, .enable_vblank = mtk_rdma_enable_vblank, .disable_vblank = mtk_rdma_disable_vblank, + .layer_config = mtk_rdma_layer_config, }; static int mtk_disp_rdma_bind(struct device *dev, struct device *master, -- 2.12.5.2.gbdf23ab