From: Russell King <rmk+kernel@armlinux.org.uk> To: Michael Olbrich <m.olbrich@pengutronix.de>, Lucas Stach <l.stach@pengutronix.de>, Vinod Koul <vkoul@kernel.org> Cc: dmaengine@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Dan Williams <dan.j.williams@intel.com>, Shawn Guo <shawnguo@kernel.org>, Sascha Hauer <s.hauer@pengutronix.de>, Pengutronix Kernel Team <kernel@pengutronix.de>, Fabio Estevam <festevam@gmail.com>, NXP Linux Team <linux-imx@nxp.com> Subject: [PATCH v2] dmaengine: imx-sdma: fix incorrect conversion to readl_relaxed_poll_timeout_atomic() Date: Sat, 22 Jun 2019 19:55:53 +0100 [thread overview] Message-ID: <E1helB3-0005d6-7m@rmk-PC.armlinux.org.uk> (raw) In-Reply-To: <20190622165318.bgyun52hssqmdv4n@shell.armlinux.org.uk> When imx-sdma was converted to use readl_relaxed_poll_timeout_atomic(), the termination condition was inverted. Fix this. Fixes: 1d069bfa3c78 ("dmaengine: imx-sdma: ack channel 0 IRQ in the interrupt handler") Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> --- drivers/dma/imx-sdma.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/drivers/dma/imx-sdma.c b/drivers/dma/imx-sdma.c index 5f3c1378b90e..c45cbdb09714 100644 --- a/drivers/dma/imx-sdma.c +++ b/drivers/dma/imx-sdma.c @@ -655,15 +655,21 @@ static void sdma_enable_channel(struct sdma_engine *sdma, int channel) static int sdma_run_channel0(struct sdma_engine *sdma) { int ret; - u32 reg; + u32 reg, mask; + + // Disable channel 0 interrupt + mask = readl_relaxed(sdma->regs + SDMA_H_INTRMSK); + writel_relaxed(mask & ~1, sdma->regs + SDMA_H_INTRMSK); sdma_enable_channel(sdma, 0); - ret = readl_relaxed_poll_timeout_atomic(sdma->regs + SDMA_H_STATSTOP, - reg, !(reg & 1), 1, 500); + ret = readl_relaxed_poll_timeout_atomic(sdma->regs + SDMA_H_INTR, + reg, reg & 1, 1, 500); if (ret) dev_err(sdma->dev, "Timeout waiting for CH0 ready\n"); + writel_relaxed(mask, sdma->regs + SDMA_H_INTRMSK); + /* Set bits of CONFIG register with dynamic context switching */ reg = readl(sdma->regs + SDMA_H_CONFIG); if ((reg & SDMA_H_CONFIG_CSM) == 0) { -- 2.7.4
WARNING: multiple messages have this Message-ID (diff)
From: Russell King <rmk+kernel@armlinux.org.uk> To: Michael Olbrich <m.olbrich@pengutronix.de>, Lucas Stach <l.stach@pengutronix.de>, Vinod Koul <vkoul@kernel.org> Cc: Fabio Estevam <festevam@gmail.com>, Sascha Hauer <s.hauer@pengutronix.de>, NXP Linux Team <linux-imx@nxp.com>, Pengutronix Kernel Team <kernel@pengutronix.de>, dmaengine@vger.kernel.org, Dan Williams <dan.j.williams@intel.com>, Shawn Guo <shawnguo@kernel.org>, linux-arm-kernel@lists.infradead.org Subject: [PATCH v2] dmaengine: imx-sdma: fix incorrect conversion to readl_relaxed_poll_timeout_atomic() Date: Sat, 22 Jun 2019 19:55:53 +0100 [thread overview] Message-ID: <E1helB3-0005d6-7m@rmk-PC.armlinux.org.uk> (raw) In-Reply-To: <20190622165318.bgyun52hssqmdv4n@shell.armlinux.org.uk> When imx-sdma was converted to use readl_relaxed_poll_timeout_atomic(), the termination condition was inverted. Fix this. Fixes: 1d069bfa3c78 ("dmaengine: imx-sdma: ack channel 0 IRQ in the interrupt handler") Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> --- drivers/dma/imx-sdma.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/drivers/dma/imx-sdma.c b/drivers/dma/imx-sdma.c index 5f3c1378b90e..c45cbdb09714 100644 --- a/drivers/dma/imx-sdma.c +++ b/drivers/dma/imx-sdma.c @@ -655,15 +655,21 @@ static void sdma_enable_channel(struct sdma_engine *sdma, int channel) static int sdma_run_channel0(struct sdma_engine *sdma) { int ret; - u32 reg; + u32 reg, mask; + + // Disable channel 0 interrupt + mask = readl_relaxed(sdma->regs + SDMA_H_INTRMSK); + writel_relaxed(mask & ~1, sdma->regs + SDMA_H_INTRMSK); sdma_enable_channel(sdma, 0); - ret = readl_relaxed_poll_timeout_atomic(sdma->regs + SDMA_H_STATSTOP, - reg, !(reg & 1), 1, 500); + ret = readl_relaxed_poll_timeout_atomic(sdma->regs + SDMA_H_INTR, + reg, reg & 1, 1, 500); if (ret) dev_err(sdma->dev, "Timeout waiting for CH0 ready\n"); + writel_relaxed(mask, sdma->regs + SDMA_H_INTRMSK); + /* Set bits of CONFIG register with dynamic context switching */ reg = readl(sdma->regs + SDMA_H_CONFIG); if ((reg & SDMA_H_CONFIG_CSM) == 0) { -- 2.7.4 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2019-06-22 18:56 UTC|newest] Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-06-22 16:53 [BUG] imx-sdma: readl_relaxed_poll_timeout_atomic() conversion Russell King - ARM Linux admin 2019-06-22 16:53 ` Russell King - ARM Linux admin 2019-06-22 18:02 ` [PATCH] dmaengine: imx-sdma: fix incorrect conversion to readl_relaxed_poll_timeout_atomic() Russell King 2019-06-22 18:02 ` Russell King 2019-06-22 18:10 ` [BUG] imx-sdma: readl_relaxed_poll_timeout_atomic() conversion Michael Olbrich 2019-06-22 18:10 ` Michael Olbrich 2019-06-22 18:42 ` Russell King - ARM Linux admin 2019-06-22 18:42 ` Russell King - ARM Linux admin 2019-06-22 18:51 ` Russell King - ARM Linux admin 2019-06-22 18:51 ` Russell King - ARM Linux admin 2019-06-24 12:14 ` Lucas Stach 2019-06-24 12:14 ` Lucas Stach 2019-06-24 12:15 ` Russell King - ARM Linux admin 2019-06-24 12:15 ` Russell King - ARM Linux admin 2019-06-24 12:52 ` Lucas Stach 2019-06-24 12:52 ` Lucas Stach 2019-06-22 18:55 ` Russell King [this message] 2019-06-22 18:55 ` [PATCH v2] dmaengine: imx-sdma: fix incorrect conversion to readl_relaxed_poll_timeout_atomic() Russell King 2019-06-22 19:26 ` Russell King - ARM Linux admin 2019-06-22 19:26 ` Russell King - ARM Linux admin 2019-06-22 20:26 ` Russell King - ARM Linux admin 2019-06-22 20:26 ` Russell King - ARM Linux admin 2019-06-23 13:29 ` Fabio Estevam 2019-06-23 13:29 ` Fabio Estevam 2019-06-25 9:00 ` Robin Gong 2019-06-25 9:00 ` Robin Gong
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=E1helB3-0005d6-7m@rmk-PC.armlinux.org.uk \ --to=rmk+kernel@armlinux.org.uk \ --cc=dan.j.williams@intel.com \ --cc=dmaengine@vger.kernel.org \ --cc=festevam@gmail.com \ --cc=kernel@pengutronix.de \ --cc=l.stach@pengutronix.de \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-imx@nxp.com \ --cc=m.olbrich@pengutronix.de \ --cc=s.hauer@pengutronix.de \ --cc=shawnguo@kernel.org \ --cc=vkoul@kernel.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.