Received: by 2002:a25:ad19:0:0:0:0:0 with SMTP id y25csp753240ybi; Wed, 17 Jul 2019 04:23:21 -0700 (PDT) X-Google-Smtp-Source: APXvYqwgQlIqqt04pBO/UKO9M+sbJPY3xVQ5e1E+3L7Qck00OnU1AShAZqS/CqM5maSBFCw09BmS X-Received: by 2002:a17:902:61:: with SMTP id 88mr40424483pla.50.1563362601319; Wed, 17 Jul 2019 04:23:21 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1563362601; cv=none; d=google.com; s=arc-20160816; b=rkrwJWcMWG8QwC/j9Ia7m5kFIbh09OfviAFtXSzqDfgm1FsFbh/J8NavpvFGeJ4MdY MAWtqMozRjaNxdPlqyzbnLL4L19+GzcFaEdxKtWwdwL0984B4HWz/FkRWRD3uvtz3BLy sM0rHbZKRIsnDQUtYvt935Xhg8u4Vt1weIO4tQVZlgC2FpOaPPtLHiNlLFtIadBiElQe Q4OwjSxVq31NlBJ9BYed8R1CjAX4vOmT8tPJJHpQYO6rp5UACmHhVLNOVkYdgbGykHxV XFhGUyYr+7HJhVA9ykuejCSe8jNU//0qeUHVhpRzSWINv7CxGZDegyLhfd1Rmu3UVofv Vr5w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-transfer-encoding:content-disposition:mime-version :references:message-id:subject:cc:to:from:date; bh=WZR5vxS0i5EgZ25o2Ln7FK5U0rhzt/TxrWm7GcBtN3s=; b=EQUfOG51w9jCVYhCAusBWE9bP0xxdTVapOl6RhGEzXp83Sl1B3cNRLWWZ0Nmdmr9Ki cWE5w4VzhWepm4tOYE3FTYt9NZa3K6b2y3theeyI5L0ue2KjtIbzPAB30xLNRuqv569n X5Lz++3TW+KrKuw97acpz/M9dt78qJNg15uKCRXZquKZxAMWVbBtjjCxyJnWL0GggsJd iPCXlqBMDP1AgWjqw/fOwkCZFU2PPG/KEjY71L0LsVZA0jXgJWYhAogGjiCL4jQZoEMx qTI3kYWDWaJpWJCADCE8gkkdj+Qhq1uJyw5v/266hSwZq2VpMX83WfYNUmqoaBOM1nck 8KTw== 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 f4si7347731pgu.194.2019.07.17.04.23.05; Wed, 17 Jul 2019 04:23:21 -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 S1726934AbfGQLWE (ORCPT + 99 others); Wed, 17 Jul 2019 07:22:04 -0400 Received: from foss.arm.com ([217.140.110.172]:46364 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725948AbfGQLWE (ORCPT ); Wed, 17 Jul 2019 07:22:04 -0400 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 93EBC337; Wed, 17 Jul 2019 04:22:03 -0700 (PDT) Received: from e110455-lin.cambridge.arm.com (usa-sjc-imap-foss1.foss.arm.com [10.121.207.14]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 585B43F71F; Wed, 17 Jul 2019 04:22:03 -0700 (PDT) Received: by e110455-lin.cambridge.arm.com (Postfix, from userid 1000) id 0876368276C; Wed, 17 Jul 2019 12:22:02 +0100 (BST) Date: Wed, 17 Jul 2019 12:22:01 +0100 From: Liviu Dudau To: Wen He Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, brian.starkey@arm.com, airlied@linux.ie, daniel@ffwll.ch, leoyang.li@nxp.com Subject: Re: [PATCH] drm/arm/mali-dp: Add display QoS interface configuration Message-ID: <20190717112201.GA17638@e110455-lin.cambridge.arm.com> References: <20190717092353.43386-1-wen.he_1@nxp.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20190717092353.43386-1-wen.he_1@nxp.com> User-Agent: Mutt/1.12.1 (2019-06-15) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Wen, On Wed, Jul 17, 2019 at 05:23:53PM +0800, Wen He wrote: > Configure the display Quality of service (QoS) levels to high priority > if the level is defined as high as in DTS. The ARQOS for DP500 is driven > from the "RQOS" register, needed to program the RQOS register value < 7 > for the 4k resolution flicker to disappear on the LS1028A platform. Thanks for taking time to come up with a more generic patch for your issue! I have a question: what happens if you program the MALIDP500_RQOS_QUALITY register to 0xd000d000 for all pixelclocks? Also, some suggestions further down: > > Signed-off-by: Wen He > --- > change in v2: > - add new implementation for 4k flicker issue on the LS1028A > > drivers/gpu/drm/arm/malidp_drv.c | 5 +++++ > drivers/gpu/drm/arm/malidp_hw.c | 13 +++++++++++++ > drivers/gpu/drm/arm/malidp_hw.h | 3 +++ > drivers/gpu/drm/arm/malidp_regs.h | 12 ++++++++++++ > 4 files changed, 33 insertions(+) > > diff --git a/drivers/gpu/drm/arm/malidp_drv.c b/drivers/gpu/drm/arm/malidp_drv.c > index f25ec4382277..d2b2cf52ac87 100644 > --- a/drivers/gpu/drm/arm/malidp_drv.c > +++ b/drivers/gpu/drm/arm/malidp_drv.c > @@ -818,6 +818,11 @@ static int malidp_bind(struct device *dev) > > malidp->core_id = version; > > + hwdev->arqos_high_level = false; This is not needed. > + > + hwdev->arqos_high_level = of_property_read_bool(dev->of_node, > + "arm,malidp-arqos-high-level"); I think it would be better to have this property as a u32 value, rather than a boolean, and put the value that we want to program MALIDP_RQOS_QUALITY with in there. Also, you need to add the documentation for this optional property in Documentation/devicetree/bindings/display/arm,malidp.txt. > + > /* 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 50af399d7f6f..eaa1658cd86b 100644 > --- a/drivers/gpu/drm/arm/malidp_hw.c > +++ b/drivers/gpu/drm/arm/malidp_hw.c > @@ -374,6 +374,19 @@ 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 increasing QoS levels for > + * the 4k resolution flicker to disappear on the LS1028A. Looks like two sentences got smashed into one, the result is a bit hard to read. Best regards, Liviu > + */ > + if (hwdev->arqos_high_level) { > + val = RED_ARQOS_VALUE | GREEN_ARQOS_VALUE; > + > + if (mode->pixelclock == 594000000) > + malidp_hw_setbits(hwdev, val, MALIDP500_RQOS_QUALITY); > + else > + malidp_hw_clearbits(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..b8baba60508a 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 */ > + bool arqos_high_level; > }; > > 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..08842142b3b2 100644 > --- a/drivers/gpu/drm/arm/malidp_regs.h > +++ b/drivers/gpu/drm/arm/malidp_regs.h > @@ -210,6 +210,18 @@ > #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 > +#define RED_ARQOS_VALUE (0xd << 12) > +#define GREEN_ARQOS_VALUE (0xd << 28) > + > /* register offsets and bits specific to DP550/DP650 */ > #define MALIDP550_ADDR_SPACE_SIZE 0x10000 > #define MALIDP550_DE_CONTROL 0x00010 > -- > 2.17.1 > -- ==================== | I would like to | | fix the world, | | but they're not | | giving me the | \ source code! / --------------- ¯\_(ツ)_/¯