Received: by 2002:a25:c593:0:0:0:0:0 with SMTP id v141csp5490551ybe; Tue, 10 Sep 2019 04:40:03 -0700 (PDT) X-Google-Smtp-Source: APXvYqxbKaljSyCPziQGBu6JxzdmWut8TOhF6U4MvXCyU3b9XIj0+hrr78cZWpMuCoY69MYeXLhO X-Received: by 2002:a17:906:a895:: with SMTP id ha21mr24277383ejb.291.1568115603326; Tue, 10 Sep 2019 04:40:03 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1568115603; cv=none; d=google.com; s=arc-20160816; b=BiUA/Y0p0uWqZgQwIGOmh1C36u9ufjVhFka4LzrtaFBDk+cprEEvScYchCjC0h3uG6 cl4HbEhLQzsi41+h+OqCNUWbp6yJTIYDJTtR/9dWd6/dtI1WZgagrtKzIOFoTWXC27I6 MThdpFFe//StGHTQWWm5IFebAewQzEK1vBdpb4xVcbB+VhiQDSC/uonSjK7ZJVSEQwj5 qS0zCt9brqd+o4a2f04b1Xny6S5szn5eZHi0b9jGKhQP84o63Gc9d4z1w1fjvtxmLb/o v8FAh2NgVJeEW0GrzjfBe5Atn6TC66sPjDXZ19DabvCnn00nzj4gO959JPEEU7gBIPfD e+dw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from; bh=vA0V7Y/J36ksf1pIbzSfeSMhR4u0P1GTg/tnURuHouY=; b=eEGtsItnS+MZYmwOJGRq/ebnneiHE1MUvxrHDGqyEYtMY0VuVDxx/YPkoZG7LRhrmT EhjIfxo3GjRu762jPaj6R/FOC05bj+u00omc2uH2jYrr7e8aB9bz+PgegvNghIgXoqlN J2s5Cde1pBJpAx0Kw9OkQvzxbkfXJealfziddEGSu19HN4dGCcXJJMSpOAfJLr28hdTW D0MU3MEEQeTvc53lAFFhimLs/mAlc21RPgLKa4kFRVLQj6IHzKGhR4L6L/qcdBP3id5J SWIweZzvkcgWWNTejzNcnLFYQx2cGWBe2frf4cOpbu/ikxkRyp0FYDYxanVAj0MI+w4t nxIg== 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=nxp.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id u18si9224721ejr.103.2019.09.10.04.39.38; Tue, 10 Sep 2019 04:40:03 -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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=nxp.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2404907AbfIJIJ6 (ORCPT + 99 others); Tue, 10 Sep 2019 04:09:58 -0400 Received: from inva021.nxp.com ([92.121.34.21]:50778 "EHLO inva021.nxp.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729872AbfIJIJ5 (ORCPT ); Tue, 10 Sep 2019 04:09:57 -0400 Received: from inva021.nxp.com (localhost [127.0.0.1]) by inva021.eu-rdc02.nxp.com (Postfix) with ESMTP id 894D6200494; Tue, 10 Sep 2019 10:09:55 +0200 (CEST) Received: from invc005.ap-rdc01.nxp.com (invc005.ap-rdc01.nxp.com [165.114.16.14]) by inva021.eu-rdc02.nxp.com (Postfix) with ESMTP id F316B200490; Tue, 10 Sep 2019 10:09:49 +0200 (CEST) Received: from titan.ap.freescale.net (TITAN.ap.freescale.net [10.192.208.233]) by invc005.ap-rdc01.nxp.com (Postfix) with ESMTP id 2151B402D2; Tue, 10 Sep 2019 16:09:43 +0800 (SGT) From: Wen He To: linux-devel@linux.nxdi.nxp.com, Liviu Dudau , Brian Starkey , David Airlie , Daniel Vetter , Rob Herring , Mark Rutland , dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, leoyang.li@nxp.com Cc: Wen He Subject: [v5 2/2] drm/arm/mali-dp: Add display QoS interface configuration for Mali DP500 Date: Tue, 10 Sep 2019 15:59:13 +0800 Message-Id: <20190910075913.17650-2-wen.he_1@nxp.com> X-Mailer: git-send-email 2.9.5 In-Reply-To: <20190910075913.17650-1-wen.he_1@nxp.com> References: <20190910075913.17650-1-wen.he_1@nxp.com> X-Virus-Scanned: ClamAV using ClamSMTP Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Configure the display Quality of service (QoS) levels priority if the optional property node "arm,malidp-aqros-value" is defined in DTS file. QoS signaling using AQROS and AWQOS AXI interface signals, the AQROS is driven from the "RQOS" register, so needed to program the RQOS register to avoid the high resolutions flicker issue on the LS1028A platform. Signed-off-by: Wen He --- drivers/gpu/drm/arm/malidp_drv.c | 6 ++++++ drivers/gpu/drm/arm/malidp_hw.c | 9 +++++++++ drivers/gpu/drm/arm/malidp_hw.h | 3 +++ drivers/gpu/drm/arm/malidp_regs.h | 10 ++++++++++ 4 files changed, 28 insertions(+) diff --git a/drivers/gpu/drm/arm/malidp_drv.c b/drivers/gpu/drm/arm/malidp_drv.c index 333b88a5efb0..8a76315aaa0f 100644 --- a/drivers/gpu/drm/arm/malidp_drv.c +++ b/drivers/gpu/drm/arm/malidp_drv.c @@ -817,6 +817,12 @@ static int malidp_bind(struct device *dev) malidp->core_id = version; + ret = of_property_read_u32(dev->of_node, + "arm,malidp-arqos-value", + &hwdev->arqos_value); + if (ret) + hwdev->arqos_value = 0x0; + /* set the number of lines used for output of RGB data */ ret = of_property_read_u8_array(dev->of_node, "arm,malidp-output-port-lines", diff --git a/drivers/gpu/drm/arm/malidp_hw.c b/drivers/gpu/drm/arm/malidp_hw.c index bd8265f02e0b..ca570b135478 100644 --- a/drivers/gpu/drm/arm/malidp_hw.c +++ b/drivers/gpu/drm/arm/malidp_hw.c @@ -379,6 +379,15 @@ static void malidp500_modeset(struct malidp_hw_device *hwdev, struct videomode * malidp_hw_setbits(hwdev, MALIDP_DISP_FUNC_ILACED, MALIDP_DE_DISPLAY_FUNC); else malidp_hw_clearbits(hwdev, MALIDP_DISP_FUNC_ILACED, MALIDP_DE_DISPLAY_FUNC); + + /* + * Program the RQoS register to avoid high resolutions flicker + * issue on the LS1028A. + */ + if (hwdev->arqos_value) { + val = hwdev->arqos_value; + malidp_hw_setbits(hwdev, val, MALIDP500_RQOS_QUALITY); + } } int malidp_format_get_bpp(u32 fmt) diff --git a/drivers/gpu/drm/arm/malidp_hw.h b/drivers/gpu/drm/arm/malidp_hw.h index 968a65eed371..e4c36bc90bda 100644 --- a/drivers/gpu/drm/arm/malidp_hw.h +++ b/drivers/gpu/drm/arm/malidp_hw.h @@ -251,6 +251,9 @@ struct malidp_hw_device { /* size of memory used for rotating layers, up to two banks available */ u32 rotation_memory[2]; + + /* priority level of RQOS register used for driven the ARQOS signal */ + u32 arqos_value; }; static inline u32 malidp_hw_read(struct malidp_hw_device *hwdev, u32 reg) diff --git a/drivers/gpu/drm/arm/malidp_regs.h b/drivers/gpu/drm/arm/malidp_regs.h index 993031542fa1..514c50dcb74d 100644 --- a/drivers/gpu/drm/arm/malidp_regs.h +++ b/drivers/gpu/drm/arm/malidp_regs.h @@ -210,6 +210,16 @@ #define MALIDP500_CONFIG_VALID 0x00f00 #define MALIDP500_CONFIG_ID 0x00fd4 +/* + * The quality of service (QoS) register on the DP500. RQOS register values + * are driven by the ARQOS signal, using AXI transacations, dependent on the + * FIFO input level. + * The RQOS register can also set QoS levels for: + * - RED_ARQOS @ A 4-bit signal value for close to underflow conditions + * - GREEN_ARQOS @ A 4-bit signal value for normal conditions + */ +#define MALIDP500_RQOS_QUALITY 0x00500 + /* register offsets and bits specific to DP550/DP650 */ #define MALIDP550_ADDR_SPACE_SIZE 0x10000 #define MALIDP550_DE_CONTROL 0x00010 -- 2.17.1