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=-17.0 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,INCLUDES_CR_TRAILER,INCLUDES_PATCH,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=unavailable 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 A34AAC43460 for ; Mon, 19 Apr 2021 20:46:20 +0000 (UTC) Received: from desiato.infradead.org (desiato.infradead.org [90.155.92.199]) (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 16B4D613FE for ; Mon, 19 Apr 2021 20:46:20 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 16B4D613FE Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+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=desiato.20200630; h=Sender:Content-Transfer-Encoding :Content-Type:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:Message-Id:Date: Subject:Cc:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=MtsA7ttnBpfcwsDfGce/JrWlhWsyhAdMREfnehCahqE=; b=AUo3fRgDO6icm5o3mBZHp6apC uQw5bcRJ+MNdDwIfIj78OPg9WjH8DvjEqTg0Q4RyqnHbyufODncrY1qquIdssim4tdOQnkhPZ6AVz cXME/GLA9puldVp1x/1SxF4oLLW99iWcxLdmvaZGLyzhwc/oaQ7WhafZ61q3fwQMn4aXZ8ahUcgOM Ayu9hRUN0dhhUV5/HsxjVBK7zUdNFnjERZlqT7JjOfE8+paQBaZg3t8iEOVabt2aq6b6OpjJiTvn0 N68tPfZFy05Xz3ggTqtzKLBhGJ6x/cayNbqPbzWjWB3DMpgaMZ6kNNHtI1YS4mlE9WYL/kZCCjSrS f3pRHENFQ==; Received: from localhost ([::1] helo=desiato.infradead.org) by desiato.infradead.org with esmtp (Exim 4.94 #2 (Red Hat Linux)) id 1lYal2-00Aa3c-2b; Mon, 19 Apr 2021 20:44:36 +0000 Received: from bombadil.infradead.org ([2607:7c80:54:e::133]) by desiato.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1lYaky-00Aa34-Of for linux-arm-kernel@desiato.infradead.org; Mon, 19 Apr 2021 20:44:32 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20210309; h=Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-Type:Content-ID:Content-Description; bh=yUnTzZOcULAm2eqdS/xfnYyXjOUzoN0fameltOUNYO8=; b=fYXPgltfquwfJxUQJ38WGGM7jt h0bKZ4q9dYWjHlKbOWUVyEANrjpSOT7ZEbIPOhiliC7DIjgzdIG39OFFW/5USwBYSi7vK7qVuqc9G jod0T6wvfv1LfuOAH6TmcRM9dLI+11v9nmjMnupPfsY+ApJtkLpCCsqbPtJpTHtFLjcZU9m8xRNpK eD0PdCgtf6x7aA1HVv0OUkgfvxcbXVdAnujco+FXauCJJpQT2zrZ3By7C/HcyjizrwvtXMM1JeTbJ z0RsMLrf1i/M7zGBgUMqZ6Ldpalh6QMLrhnloRQpaWsQXZ7aCG5eetlAWV5f7jRGC2ReN3eGvUgfB utwY4+CQ==; Received: from mail.kernel.org ([198.145.29.99]) by bombadil.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1lYakw-00BeFr-1I for linux-arm-kernel@lists.infradead.org; Mon, 19 Apr 2021 20:44:31 +0000 Received: by mail.kernel.org (Postfix) with ESMTPSA id 8D33A613D0; Mon, 19 Apr 2021 20:44:28 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1618865069; bh=Pcw49y1E0fdtvfEUzDApg+mSF6Eqc3PK/dvzuvX2dm8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=sAHrWamvLGZzI4U8YuN1c+ALkWlaHi48M0duYCg8H2KdxWjtmEqkySkgedgWzznd1 8gpwGB3Zl3Qo3U/R+RXG2LGeZVOzyPSGwc3ow/UP1CK7uu2QcxG5A0u3m79oCY00ua z956W2gL73KkIUvVuesf3ZEl7IcHganFKKkqXI/a5OzjqH0iVKSAS1JGdV18NxJ2fP vVUp5X2WLpiXAs8u4TtxMP4s90SR2uqTTZeSYu4iMUq1mcQ+SAdUzCfA2ZITRyq1cf Jt9C56nhwKtgIOuzn7ooomkxLIRPb2MN8JvIKVSCaLkXda2JUZfPyYvM1ZiEa0V2m0 3SKY+/SD/M9cw== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Laurent Pinchart , Vinod Koul , Sasha Levin , dmaengine@vger.kernel.org, linux-arm-kernel@lists.infradead.org Subject: [PATCH AUTOSEL 5.10 06/21] dmaengine: xilinx: dpdma: Fix descriptor issuing on video group Date: Mon, 19 Apr 2021 16:44:04 -0400 Message-Id: <20210419204420.6375-6-sashal@kernel.org> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20210419204420.6375-1-sashal@kernel.org> References: <20210419204420.6375-1-sashal@kernel.org> MIME-Version: 1.0 X-stable: review X-Patchwork-Hint: Ignore X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210419_134430_125602_FDD9D704 X-CRM114-Status: GOOD ( 14.12 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org From: Laurent Pinchart [ Upstream commit 1cbd44666216278bbb6a55bcb6b9283702171c77 ] When multiple channels are part of a video group, the transfer is triggered only when all channels in the group are ready. The logic to do so is incorrect, as it causes the descriptors for all channels but the last one in a group to not being pushed to the hardware. Fix it. Signed-off-by: Laurent Pinchart Link: https://lore.kernel.org/r/20210307040629.29308-2-laurent.pinchart@ideasonboard.com Signed-off-by: Vinod Koul Signed-off-by: Sasha Levin --- drivers/dma/xilinx/xilinx_dpdma.c | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/drivers/dma/xilinx/xilinx_dpdma.c b/drivers/dma/xilinx/xilinx_dpdma.c index 55df63dead8d..d504112c609e 100644 --- a/drivers/dma/xilinx/xilinx_dpdma.c +++ b/drivers/dma/xilinx/xilinx_dpdma.c @@ -839,6 +839,7 @@ static void xilinx_dpdma_chan_queue_transfer(struct xilinx_dpdma_chan *chan) struct xilinx_dpdma_tx_desc *desc; struct virt_dma_desc *vdesc; u32 reg, channels; + bool first_frame; lockdep_assert_held(&chan->lock); @@ -852,14 +853,6 @@ static void xilinx_dpdma_chan_queue_transfer(struct xilinx_dpdma_chan *chan) chan->running = true; } - if (chan->video_group) - channels = xilinx_dpdma_chan_video_group_ready(chan); - else - channels = BIT(chan->id); - - if (!channels) - return; - vdesc = vchan_next_desc(&chan->vchan); if (!vdesc) return; @@ -884,13 +877,26 @@ static void xilinx_dpdma_chan_queue_transfer(struct xilinx_dpdma_chan *chan) FIELD_PREP(XILINX_DPDMA_CH_DESC_START_ADDRE_MASK, upper_32_bits(sw_desc->dma_addr))); - if (chan->first_frame) + first_frame = chan->first_frame; + chan->first_frame = false; + + if (chan->video_group) { + channels = xilinx_dpdma_chan_video_group_ready(chan); + /* + * Trigger the transfer only when all channels in the group are + * ready. + */ + if (!channels) + return; + } else { + channels = BIT(chan->id); + } + + if (first_frame) reg = XILINX_DPDMA_GBL_TRIG_MASK(channels); else reg = XILINX_DPDMA_GBL_RETRIG_MASK(channels); - chan->first_frame = false; - dpdma_write(xdev->reg, XILINX_DPDMA_GBL, reg); } -- 2.30.2 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel