Received: by 2002:a05:6a10:af89:0:0:0:0 with SMTP id iu9csp927754pxb; Fri, 21 Jan 2022 06:28:48 -0800 (PST) X-Google-Smtp-Source: ABdhPJykg4ZIAP/A3cmyLZ+KsmSoxFDqbE2oHLH+kQ0774pPRys9ocflxAeCE422WqEThww7DJ1h X-Received: by 2002:a17:902:8212:b0:149:af87:9f9d with SMTP id x18-20020a170902821200b00149af879f9dmr3910887pln.39.1642775327967; Fri, 21 Jan 2022 06:28:47 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1642775327; cv=none; d=google.com; s=arc-20160816; b=KhZFeUbHFr/7c7tvdbs83vUrS7vyHaDpRP4fiVwgvp3DXbTIpnMMVaIxzbfvsU27be MkF8bjRH0xaOEpgFp17Pyb38NacTrlSQk/q2p6FAPlk67yeWR8XMdH34iTyvzxS3vJtt +gXbSgeiYnmgXEOBYGpKe5HvMkeTz5JfG0zC9l45+fUr21JnjE1fsFeURlZa4vcchOYn 6K7lb993lxt9c96sX3iHfdYsCXj7vOzgkTCsmF6oP+DX1QJEwdVAkpJ0VkZ7KvBlPTSN xU0top9QvHyXy9oqp3QN4OMUbdliYf0Brf07OL35DwmMrsu0mHFGQ4R/pMyUjJlBf5NU EZeQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:references:in-reply-to:message-id :date:subject:cc:to:from; bh=G1tFvh3jJvgJAlqA1/wSocCHne45ELmCis3H02+mysc=; b=y4aRMaqCxHqobBVO3QubM6kJ1hB+46oL1TWxfGWBgqA0t+mKFz7Gez7a0prPh7i4QZ e6KwTDFoqVpNAWodaOyP1wba2FsXkIkSwZJobBYbWrkVugKriuqWL7g+Wa88Bg+Pq1WE 5YC+5ARRfeX6nRN4iGaBeeyKuy2rIJDzgW48gWzWnmchqt0JefAaZ5AwvpYkFRHCIGON COzx8TwRZX3Qnp/IiErrijR+oWj/DTR10DI5okaXWhhnu+c9JX5qavLGE5YVnRN9Sk7c K2fOjhYBJ2vl6lvmroSqvu2VTeObmnOZcWJDMTVyacuMSz81ZyROpfjoq4m9ZVfSaOvW MYzw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=mediatek.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id 79si3369913pgf.170.2022.01.21.06.28.09; Fri, 21 Jan 2022 06:28:47 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=mediatek.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1350991AbiASC0I (ORCPT + 99 others); Tue, 18 Jan 2022 21:26:08 -0500 Received: from mailgw01.mediatek.com ([60.244.123.138]:37372 "EHLO mailgw01.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1350978AbiASC0H (ORCPT ); Tue, 18 Jan 2022 21:26:07 -0500 X-UUID: 354047b20c08407d829c1dc1220a4eec-20220119 X-UUID: 354047b20c08407d829c1dc1220a4eec-20220119 Received: from mtkcas10.mediatek.inc [(172.21.101.39)] by mailgw01.mediatek.com (envelope-from ) (Generic MTA with TLSv1.2 ECDHE-RSA-AES256-SHA384 256/256) with ESMTP id 641642071; Wed, 19 Jan 2022 10:26:04 +0800 Received: from mtkexhb02.mediatek.inc (172.21.101.103) by mtkmbs07n2.mediatek.inc (172.21.101.141) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Wed, 19 Jan 2022 10:26:03 +0800 Received: from mtkcas11.mediatek.inc (172.21.101.40) by mtkexhb02.mediatek.inc (172.21.101.103) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Wed, 19 Jan 2022 10:26:02 +0800 Received: from mtksdccf07.mediatek.inc (172.21.84.99) by mtkcas11.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Wed, 19 Jan 2022 10:26:02 +0800 From: Rex-BC Chen To: , , , , , , , CC: , , , , , , , , Rex-BC Chen Subject: [v10,2/3] drm/mediatek: implement the DSI HS packets aligned Date: Wed, 19 Jan 2022 10:25:42 +0800 Message-ID: <20220119022543.26093-3-rex-bc.chen@mediatek.com> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20220119022543.26093-1-rex-bc.chen@mediatek.com> References: <20220119022543.26093-1-rex-bc.chen@mediatek.com> MIME-Version: 1.0 Content-Type: text/plain X-MTK: N Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Some DSI RX devices (for example, anx7625) require last alignment of packets on all lanes after each row of data is sent. Otherwise, there will be some issues of shift or scroll for screen. Take horizontal_sync_active_byte for a example, we roundup the HSA packet data to lane number, and the subtraction of 2 is the packet data value added by the roundup operation, making the long packets are integer multiples of lane number. This value (2) varies with the lane number, and that is the reason we do this operation when the lane number is 4. In the previous operation of function "mtk_dsi_config_vdo_timing", the length of HSA and HFP data packets has been adjusted to an integration multiple of lane number. Since the number of RGB data packets cannot be guaranteed to be an integer multiple of lane number, we modify the data packet length of HBP so that the number of HBP + RGB is equal to the lane number. So after sending a line of data (HSA + HBP + RGB + HFP), the data lanes are aligned. Signed-off-by: Jitao Shi Signed-off-by: Rex-BC Chen Signed-off-by: Xinlei Lee --- drivers/gpu/drm/mediatek/mtk_dsi.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/drivers/gpu/drm/mediatek/mtk_dsi.c b/drivers/gpu/drm/mediatek/mtk_dsi.c index 5d90d2eb0019..e91b3fff4342 100644 --- a/drivers/gpu/drm/mediatek/mtk_dsi.c +++ b/drivers/gpu/drm/mediatek/mtk_dsi.c @@ -500,6 +500,18 @@ static void mtk_dsi_config_vdo_timing(struct mtk_dsi *dsi) DRM_WARN("HFP + HBP less than d-phy, FPS will under 60Hz\n"); } + if ((dsi->mode_flags & MIPI_DSI_HS_PKT_END_ALIGNED) && + (dsi->lanes == 4)) { + horizontal_sync_active_byte = + roundup(horizontal_sync_active_byte, dsi->lanes) - 2; + horizontal_frontporch_byte = + roundup(horizontal_frontporch_byte, dsi->lanes) - 2; + horizontal_backporch_byte = + roundup(horizontal_backporch_byte, dsi->lanes) - 2; + horizontal_backporch_byte -= + (vm->hactive * dsi_tmp_buf_bpp + 2) % dsi->lanes; + } + writel(horizontal_sync_active_byte, dsi->regs + DSI_HSA_WC); writel(horizontal_backporch_byte, dsi->regs + DSI_HBP_WC); writel(horizontal_frontporch_byte, dsi->regs + DSI_HFP_WC); -- 2.18.0