Message ID | 20230609081654.330857-4-kory.maincent@bootlin.com |
---|---|
State | New |
Headers |
Return-Path: <linux-kernel-owner@vger.kernel.org> Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:994d:0:b0:3d9:f83d:47d9 with SMTP id k13csp795221vqr; Fri, 9 Jun 2023 01:31:07 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ4V6qeDqDvEZMABZspd/vq/tA08JwHiuRSvluzwtuhAJLgTAm5W63zDKFjulwEBDH50zqDQ X-Received: by 2002:a05:6808:1413:b0:398:c4ec:63bc with SMTP id w19-20020a056808141300b00398c4ec63bcmr1131085oiv.43.1686299467225; Fri, 09 Jun 2023 01:31:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1686299467; cv=none; d=google.com; s=arc-20160816; b=zYcOBXLxXn+hARTAZ9WMk/7oedmRhVKcgFvxXGLWbGxZ2NKkYuwzvRsB1IeGnDABz7 mJ7n7X8sensZUJugLhXqs8/19tYG4207boLaNp82t5A93YHWZoI4WKw9FZH28cXXgaC8 zckTweEtdBYpBXMb20PwsgHRIi8wyhUBaPQwvq4g1ULanlr09E+8qTKnU0VHr5xLjZMJ 4vj81Mz0nzdzE/cG2CBgN8hC0cdnL4AG2r5MmG2tTJdAY1SCAXxkC0LG5B1DwsFwBR4b HKZoQgjYtSRh6q8xB3OJfzdMjmupYMxgw5SppUfjIPk9jhV49qETj+5HS5aVyKo8p8MX aFLw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=8SNOyQIGrae4VS8d9/zrsPOL4K+WbpBEtOXUfe9PyKQ=; b=muRqFtP4UAVQ7aCUzV4EEMX/QwkWVyc49c5nAjV06+NaWobDP5OjPrVYTMcWMDJoOg ZcvCc+IfdZaOqo76EX5qTltMszZGT3GK7q93keBWm0jqydZew0OgbQxjAnD9QPQdHSd3 n0zgUdpb0mzGhRKOA2jhI56tLsKcl5kwXZgurisv9+TAnNF/rN/c3u//MMVqFZccON7h OwCUyli8jJpJkdg0QTKY4G2fDaBa6Tr9AuCA5NCk01+RKfjbE9821rYe2O/d1EpD7qrZ C5MaCppxM1fP1FCjXIcEGUQJL3MML0p/B0mE9dEe1rxuGAAhc25ErH0TK7LfcbTTBVXY Rc6A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@bootlin.com header.s=gm1 header.b=B4qv8kRP; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=bootlin.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id z3-20020a17090a6d0300b0024e11f7a011si2299010pjj.100.2023.06.09.01.30.52; Fri, 09 Jun 2023 01:31:07 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@bootlin.com header.s=gm1 header.b=B4qv8kRP; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=bootlin.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S240363AbjFIISF (ORCPT <rfc822;liningstudo@gmail.com> + 99 others); Fri, 9 Jun 2023 04:18:05 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51716 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S240196AbjFIIRh (ORCPT <rfc822;linux-kernel@vger.kernel.org>); Fri, 9 Jun 2023 04:17:37 -0400 Received: from relay6-d.mail.gandi.net (relay6-d.mail.gandi.net [217.70.183.198]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C212635BE; Fri, 9 Jun 2023 01:17:03 -0700 (PDT) X-GND-Sasl: kory.maincent@bootlin.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1686298619; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=8SNOyQIGrae4VS8d9/zrsPOL4K+WbpBEtOXUfe9PyKQ=; b=B4qv8kRPDn7Ovadfs8sRaW/pXvhXWRW/TvZEx5jieXw1js19IeVyqqJ0mbPmwUNP5iucaS InPb45H4uAfjLOirgCwC6ZQodiQPxZb9QmW6gegp3IYsopMaf3kJYUoiAXc85DVQhkaYct hT8mlRDu8CaiAAYOlQZVvZy8o5H6gKmqi7vcA7x80VANNnjvWDT/EDBoj5xpCdP9mQ0izG ZhPCd4exN6dNsNIy7cN9hbG25u9U6aT3ea1Q/vY5tikRMb0fP+xHD/ZpEEYrgol6QoN0pC 5HCtPrJHOtJlnVJriqcyGoDFjl0Oy1QM/fGT8+UPg65oi6hr3AA9rh3loNxwdw== X-GND-Sasl: kory.maincent@bootlin.com X-GND-Sasl: kory.maincent@bootlin.com X-GND-Sasl: kory.maincent@bootlin.com X-GND-Sasl: kory.maincent@bootlin.com X-GND-Sasl: kory.maincent@bootlin.com X-GND-Sasl: kory.maincent@bootlin.com X-GND-Sasl: kory.maincent@bootlin.com X-GND-Sasl: kory.maincent@bootlin.com X-GND-Sasl: kory.maincent@bootlin.com X-GND-Sasl: kory.maincent@bootlin.com Received: by mail.gandi.net (Postfix) with ESMTPSA id 0033FC000C; Fri, 9 Jun 2023 08:16:58 +0000 (UTC) From: =?utf-8?q?K=C3=B6ry_Maincent?= <kory.maincent@bootlin.com> To: Cai Huoqing <cai.huoqing@linux.dev>, Manivannan Sadhasivam <mani@kernel.org>, Serge Semin <fancer.lancer@gmail.com>, Vinod Koul <vkoul@kernel.org>, Gustavo Pimentel <Gustavo.Pimentel@synopsys.com>, dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com>, Gustavo Pimentel <gustavo.pimentel@synopsys.com>, Herve Codina <herve.codina@bootlin.com>, Kory Maincent <kory.maincent@bootlin.com> Subject: [PATCH 3/9] dmaengine: dw-edma: Add HDMA remote interrupt configuration Date: Fri, 9 Jun 2023 10:16:48 +0200 Message-Id: <20230609081654.330857-4-kory.maincent@bootlin.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230609081654.330857-1-kory.maincent@bootlin.com> References: <20230609081654.330857-1-kory.maincent@bootlin.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-2.8 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H5,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: <linux-kernel.vger.kernel.org> X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1768213149819236018?= X-GMAIL-MSGID: =?utf-8?q?1768213149819236018?= |
Series |
Fix support of dw-edma HDMA NATIVE IP in remote setup
|
|
Commit Message
Köry Maincent
June 9, 2023, 8:16 a.m. UTC
From: Kory Maincent <kory.maincent@bootlin.com> Only the local interruption was configured, remote interrupt was left behind. This patch fix it by setting stop and abort remote interrupts when the DW_EDMA_CHIP_LOCAL flag is not set. Signed-off-by: Kory Maincent <kory.maincent@bootlin.com> Fixes: e74c39573d35 ("dmaengine: dw-edma: Add support for native HDMA") --- This patch is fixing a commit which is only in dmaengine tree and not merged mainline. --- drivers/dma/dw-edma/dw-hdma-v0-core.c | 2 ++ 1 file changed, 2 insertions(+)
Comments
On Fri, Jun 09, 2023 at 10:16:48AM +0200, Köry Maincent wrote: > From: Kory Maincent <kory.maincent@bootlin.com> > > Only the local interruption was configured, remote interrupt was left > behind. This patch fix it by setting stop and abort remote interrupts when > the DW_EDMA_CHIP_LOCAL flag is not set. > > Signed-off-by: Kory Maincent <kory.maincent@bootlin.com> > Fixes: e74c39573d35 ("dmaengine: dw-edma: Add support for native HDMA") > --- > > This patch is fixing a commit which is only in dmaengine tree and not > merged mainline. > --- > drivers/dma/dw-edma/dw-hdma-v0-core.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/drivers/dma/dw-edma/dw-hdma-v0-core.c b/drivers/dma/dw-edma/dw-hdma-v0-core.c > index da8663f45fdb..7bd1a0f742be 100644 > --- a/drivers/dma/dw-edma/dw-hdma-v0-core.c > +++ b/drivers/dma/dw-edma/dw-hdma-v0-core.c > @@ -232,6 +232,8 @@ static void dw_hdma_v0_core_start(struct dw_edma_chunk *chunk, bool first) > tmp = GET_CH_32(dw, chan->dir, chan->id, int_setup) | > HDMA_V0_STOP_INT_MASK | HDMA_V0_ABORT_INT_MASK | > HDMA_V0_LOCAL_STOP_INT_EN | HDMA_V0_LOCAL_ABORT_INT_EN; > + if (!(dw->chip->flags & DW_EDMA_CHIP_LOCAL)) > + tmp |= HDMA_V0_REMOTE_STOP_INT_EN | HDMA_V0_REMOTE_ABORT_INT_EN; Seems reasonable especially seeing there is a code with a similar semantic in the dw_hdma_v0_core_write_chunk() method. Reviewed-by: Serge Semin <fancer.lancer@gmail.com> Just curious whether we really need to have the local IRQs left enabled for the remote device setup... The only case I have in mind is that it would be useful to signal a remote end-point host of such event in some application-specific environment. It sounds exotic but still possible. -Serge(y) > SET_CH_32(dw, chan->dir, chan->id, int_setup, tmp); > /* Channel control */ > SET_CH_32(dw, chan->dir, chan->id, control1, HDMA_V0_LINKLIST_EN); > -- > 2.25.1 >
On Mon, 19 Jun 2023 00:48:00 +0300 Serge Semin <fancer.lancer@gmail.com> wrote: > Seems reasonable especially seeing there is a code with a similar > semantic in the dw_hdma_v0_core_write_chunk() method. > > Reviewed-by: Serge Semin <fancer.lancer@gmail.com> > > Just curious whether we really need to have the local IRQs left > enabled for the remote device setup... The only case I have in mind is > that it would be useful to signal a remote end-point host of such > event in some application-specific environment. It sounds exotic but > still possible. Thanks for your review. Yes, we do need to let local IRQs enabled. I have tested to remove them and it prevent the remote setup to function correctly on my board. Maybe it needs to be set to know internally when the transfer is done, but it seems weird. I haven't a full explanation for now.
On Mon, Jun 19, 2023 at 08:16:47PM +0200, Köry Maincent wrote: > On Mon, 19 Jun 2023 00:48:00 +0300 > Serge Semin <fancer.lancer@gmail.com> wrote: > > > Seems reasonable especially seeing there is a code with a similar > > semantic in the dw_hdma_v0_core_write_chunk() method. > > > > Reviewed-by: Serge Semin <fancer.lancer@gmail.com> > > > > Just curious whether we really need to have the local IRQs left > > enabled for the remote device setup... The only case I have in mind is > > that it would be useful to signal a remote end-point host of such > > event in some application-specific environment. It sounds exotic but > > still possible. > > Thanks for your review. > Yes, we do need to let local IRQs enabled. I have tested to remove them and it > prevent the remote setup to function correctly on my board. Maybe it needs to be > set to know internally when the transfer is done, but it seems weird. I haven't > a full explanation for now. Ok. Thanks for checking it out. -Serge(y)
diff --git a/drivers/dma/dw-edma/dw-hdma-v0-core.c b/drivers/dma/dw-edma/dw-hdma-v0-core.c index da8663f45fdb..7bd1a0f742be 100644 --- a/drivers/dma/dw-edma/dw-hdma-v0-core.c +++ b/drivers/dma/dw-edma/dw-hdma-v0-core.c @@ -232,6 +232,8 @@ static void dw_hdma_v0_core_start(struct dw_edma_chunk *chunk, bool first) tmp = GET_CH_32(dw, chan->dir, chan->id, int_setup) | HDMA_V0_STOP_INT_MASK | HDMA_V0_ABORT_INT_MASK | HDMA_V0_LOCAL_STOP_INT_EN | HDMA_V0_LOCAL_ABORT_INT_EN; + if (!(dw->chip->flags & DW_EDMA_CHIP_LOCAL)) + tmp |= HDMA_V0_REMOTE_STOP_INT_EN | HDMA_V0_REMOTE_ABORT_INT_EN; SET_CH_32(dw, chan->dir, chan->id, int_setup, tmp); /* Channel control */ SET_CH_32(dw, chan->dir, chan->id, control1, HDMA_V0_LINKLIST_EN);