From: vinod.koul@intel.com (Vinod Koul)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 03/18] dmaengine: st_fdma: Add STMicroelectronics FDMA engine driver support
Date: Tue, 26 Apr 2016 22:26:22 +0530 [thread overview]
Message-ID: <20160426165622.GR2274@localhost> (raw)
In-Reply-To: <1461236675-10176-4-git-send-email-peter.griffin@linaro.org>
On Thu, Apr 21, 2016 at 12:04:20PM +0100, Peter Griffin wrote:
> + if (!atomic_read(&fchan->fdev->fw_loaded)) {
> + dev_err(fchan->fdev->dev, "%s: fdma fw not loaded\n", __func__);
> + return NULL;
> + }
so who is loading the fw and setting fw_loaded, it is not set in this patch?
> + if (direction == DMA_DEV_TO_MEM) {
> + fchan->cfg.req_ctrl &= ~REQ_CTRL_WNR;
> + maxburst = fchan->scfg.src_maxburst;
> + width = fchan->scfg.src_addr_width;
> + addr = fchan->scfg.src_addr;
> + } else if (direction == DMA_MEM_TO_DEV) {
> + fchan->cfg.req_ctrl |= REQ_CTRL_WNR;
> + maxburst = fchan->scfg.dst_maxburst;
> + width = fchan->scfg.dst_addr_width;
> + addr = fchan->scfg.dst_addr;
> + } else {
> + return -EINVAL;
> + }
switch please
> +
> + fchan->cfg.req_ctrl &= ~REQ_CTRL_OPCODE_MASK;
> + if (width == DMA_SLAVE_BUSWIDTH_1_BYTE)
> + fchan->cfg.req_ctrl |= REQ_CTRL_OPCODE_LD_ST1;
> + else if (width == DMA_SLAVE_BUSWIDTH_2_BYTES)
> + fchan->cfg.req_ctrl |= REQ_CTRL_OPCODE_LD_ST2;
> + else if (width == DMA_SLAVE_BUSWIDTH_4_BYTES)
> + fchan->cfg.req_ctrl |= REQ_CTRL_OPCODE_LD_ST4;
> + else if (width == DMA_SLAVE_BUSWIDTH_8_BYTES)
> + fchan->cfg.req_ctrl |= REQ_CTRL_OPCODE_LD_ST8;
> + else
> + return -EINVAL;
here as well
> +static void fill_hw_node(struct st_fdma_hw_node *hw_node,
> + struct st_fdma_chan *fchan,
> + enum dma_transfer_direction direction)
> +{
> +
> + if (direction == DMA_MEM_TO_DEV) {
> + hw_node->control |= NODE_CTRL_SRC_INCR;
> + hw_node->control |= NODE_CTRL_DST_STATIC;
> + hw_node->daddr = fchan->cfg.dev_addr;
> + } else {
> + hw_node->control |= NODE_CTRL_SRC_STATIC;
> + hw_node->control |= NODE_CTRL_DST_INCR;
> + hw_node->saddr = fchan->cfg.dev_addr;
> + }
empty line here at other places too. The code looks very compressed and bit
harder to read overall
> + fdesc = st_fdma_alloc_desc(fchan, sg_len);
> + if (!fdesc) {
> + dev_err(fchan->fdev->dev, "no memory for desc\n");
> + return NULL;
> + }
> +
> + fdesc->iscyclic = false;
> +
> + for_each_sg(sgl, sg, sg_len, i) {
> + hw_node = fdesc->node[i].desc;
> +
> + hw_node->next = fdesc->node[(i + 1) % sg_len].pdesc;
> + hw_node->control = NODE_CTRL_REQ_MAP_DREQ(fchan->dreq_line);
> +
> + fill_hw_node(hw_node, fchan, direction);
> +
> + if (direction == DMA_MEM_TO_DEV)
> + hw_node->saddr = sg_dma_address(sg);
> + else
> + hw_node->daddr = sg_dma_address(sg);
> +
> + hw_node->nbytes = sg_dma_len(sg);
> + hw_node->generic.length = sg_dma_len(sg);
> + }
> +
> + /* interrupt at end of last node */
> + hw_node->control |= NODE_CTRL_INT_EON;
> +
> + return vchan_tx_prep(&fchan->vchan, &fdesc->vdesc, flags);
bunch of this seems similar to cyclic case, can you create common setup
routine for these, anyway cyclic is a special cases of slave_sg
> +
> + ret = dma_cookie_status(chan, cookie, txstate);
> + if (ret == DMA_COMPLETE)
> + return ret;
> +
> + if (!txstate)
> + return fchan->status;
why channel status, query is for descriptor
> +static int st_fdma_remove(struct platform_device *pdev)
> +{
> + struct st_fdma_dev *fdev = platform_get_drvdata(pdev);
> +
> + st_fdma_clk_disable(fdev);
and you irq is still enabled and tasklets can be scheduled!!
--
~Vinod
WARNING: multiple messages have this Message-ID (diff)
From: Vinod Koul <vinod.koul@intel.com>
To: Peter Griffin <peter.griffin@linaro.org>
Cc: linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org, srinivas.kandagatla@gmail.com,
maxime.coquelin@st.com, patrice.chotard@st.com,
lee.jones@linaro.org, dmaengine@vger.kernel.org,
devicetree@vger.kernel.org, arnd@arndb.de, broonie@kernel.org,
ludovic.barre@st.com
Subject: Re: [PATCH 03/18] dmaengine: st_fdma: Add STMicroelectronics FDMA engine driver support
Date: Tue, 26 Apr 2016 22:26:22 +0530 [thread overview]
Message-ID: <20160426165622.GR2274@localhost> (raw)
In-Reply-To: <1461236675-10176-4-git-send-email-peter.griffin@linaro.org>
On Thu, Apr 21, 2016 at 12:04:20PM +0100, Peter Griffin wrote:
> + if (!atomic_read(&fchan->fdev->fw_loaded)) {
> + dev_err(fchan->fdev->dev, "%s: fdma fw not loaded\n", __func__);
> + return NULL;
> + }
so who is loading the fw and setting fw_loaded, it is not set in this patch?
> + if (direction == DMA_DEV_TO_MEM) {
> + fchan->cfg.req_ctrl &= ~REQ_CTRL_WNR;
> + maxburst = fchan->scfg.src_maxburst;
> + width = fchan->scfg.src_addr_width;
> + addr = fchan->scfg.src_addr;
> + } else if (direction == DMA_MEM_TO_DEV) {
> + fchan->cfg.req_ctrl |= REQ_CTRL_WNR;
> + maxburst = fchan->scfg.dst_maxburst;
> + width = fchan->scfg.dst_addr_width;
> + addr = fchan->scfg.dst_addr;
> + } else {
> + return -EINVAL;
> + }
switch please
> +
> + fchan->cfg.req_ctrl &= ~REQ_CTRL_OPCODE_MASK;
> + if (width == DMA_SLAVE_BUSWIDTH_1_BYTE)
> + fchan->cfg.req_ctrl |= REQ_CTRL_OPCODE_LD_ST1;
> + else if (width == DMA_SLAVE_BUSWIDTH_2_BYTES)
> + fchan->cfg.req_ctrl |= REQ_CTRL_OPCODE_LD_ST2;
> + else if (width == DMA_SLAVE_BUSWIDTH_4_BYTES)
> + fchan->cfg.req_ctrl |= REQ_CTRL_OPCODE_LD_ST4;
> + else if (width == DMA_SLAVE_BUSWIDTH_8_BYTES)
> + fchan->cfg.req_ctrl |= REQ_CTRL_OPCODE_LD_ST8;
> + else
> + return -EINVAL;
here as well
> +static void fill_hw_node(struct st_fdma_hw_node *hw_node,
> + struct st_fdma_chan *fchan,
> + enum dma_transfer_direction direction)
> +{
> +
> + if (direction == DMA_MEM_TO_DEV) {
> + hw_node->control |= NODE_CTRL_SRC_INCR;
> + hw_node->control |= NODE_CTRL_DST_STATIC;
> + hw_node->daddr = fchan->cfg.dev_addr;
> + } else {
> + hw_node->control |= NODE_CTRL_SRC_STATIC;
> + hw_node->control |= NODE_CTRL_DST_INCR;
> + hw_node->saddr = fchan->cfg.dev_addr;
> + }
empty line here at other places too. The code looks very compressed and bit
harder to read overall
> + fdesc = st_fdma_alloc_desc(fchan, sg_len);
> + if (!fdesc) {
> + dev_err(fchan->fdev->dev, "no memory for desc\n");
> + return NULL;
> + }
> +
> + fdesc->iscyclic = false;
> +
> + for_each_sg(sgl, sg, sg_len, i) {
> + hw_node = fdesc->node[i].desc;
> +
> + hw_node->next = fdesc->node[(i + 1) % sg_len].pdesc;
> + hw_node->control = NODE_CTRL_REQ_MAP_DREQ(fchan->dreq_line);
> +
> + fill_hw_node(hw_node, fchan, direction);
> +
> + if (direction == DMA_MEM_TO_DEV)
> + hw_node->saddr = sg_dma_address(sg);
> + else
> + hw_node->daddr = sg_dma_address(sg);
> +
> + hw_node->nbytes = sg_dma_len(sg);
> + hw_node->generic.length = sg_dma_len(sg);
> + }
> +
> + /* interrupt at end of last node */
> + hw_node->control |= NODE_CTRL_INT_EON;
> +
> + return vchan_tx_prep(&fchan->vchan, &fdesc->vdesc, flags);
bunch of this seems similar to cyclic case, can you create common setup
routine for these, anyway cyclic is a special cases of slave_sg
> +
> + ret = dma_cookie_status(chan, cookie, txstate);
> + if (ret == DMA_COMPLETE)
> + return ret;
> +
> + if (!txstate)
> + return fchan->status;
why channel status, query is for descriptor
> +static int st_fdma_remove(struct platform_device *pdev)
> +{
> + struct st_fdma_dev *fdev = platform_get_drvdata(pdev);
> +
> + st_fdma_clk_disable(fdev);
and you irq is still enabled and tasklets can be scheduled!!
--
~Vinod
next prev parent reply other threads:[~2016-04-26 16:56 UTC|newest]
Thread overview: 136+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-04-21 11:04 [PATCH 00/18] Add support for FDMA DMA controller found on STi chipsets Peter Griffin
2016-04-21 11:04 ` Peter Griffin
2016-04-21 11:04 ` Peter Griffin
2016-04-21 11:04 ` [PATCH 01/18] dmaengine: st_fdma: Add STMicroelectronics FDMA DT binding documentation Peter Griffin
2016-04-21 11:04 ` Peter Griffin
2016-04-21 11:25 ` Arnd Bergmann
2016-04-21 11:25 ` Arnd Bergmann
2016-04-21 11:25 ` Arnd Bergmann
2016-04-26 12:00 ` Peter Griffin
2016-04-26 12:00 ` Peter Griffin
2016-04-26 12:00 ` Peter Griffin
2016-04-21 11:04 ` [PATCH 02/18] dmaengine: st_fdma: Add STMicroelectronics FDMA driver header file Peter Griffin
2016-04-21 11:04 ` Peter Griffin
2016-04-21 11:20 ` Arnd Bergmann
2016-04-21 11:20 ` Arnd Bergmann
2016-04-21 11:20 ` Arnd Bergmann
2016-04-21 11:04 ` [PATCH 03/18] dmaengine: st_fdma: Add STMicroelectronics FDMA engine driver support Peter Griffin
2016-04-21 11:04 ` Peter Griffin
2016-04-21 11:04 ` Peter Griffin
2016-04-21 11:24 ` Arnd Bergmann
2016-04-21 11:24 ` Arnd Bergmann
2016-04-21 11:26 ` Appana Durga Kedareswara Rao
2016-04-21 11:26 ` Appana Durga Kedareswara Rao
2016-04-21 14:58 ` Peter Griffin
2016-04-21 14:58 ` Peter Griffin
2016-04-21 14:58 ` Peter Griffin
2016-04-25 9:04 ` Lee Jones
2016-04-25 9:04 ` Lee Jones
2016-04-25 9:04 ` Lee Jones
2016-04-26 16:56 ` Vinod Koul [this message]
2016-04-26 16:56 ` Vinod Koul
2016-04-27 12:59 ` Peter Griffin
2016-04-27 12:59 ` Peter Griffin
2016-04-27 12:59 ` Peter Griffin
2016-05-02 9:30 ` Vinod Koul
2016-05-02 9:30 ` Vinod Koul
2016-05-02 9:30 ` Vinod Koul
2016-05-09 17:30 ` Peter Griffin
2016-05-09 17:30 ` Peter Griffin
2016-05-09 17:30 ` Peter Griffin
2016-04-21 11:04 ` [PATCH 04/18] dmaengine: st_fdma: Add xp70 firmware loading mechanism Peter Griffin
2016-04-21 11:04 ` Peter Griffin
2016-04-21 11:04 ` Peter Griffin
2016-04-26 17:00 ` Vinod Koul
2016-04-26 17:00 ` Vinod Koul
2016-04-26 17:00 ` Vinod Koul
2016-05-11 7:57 ` Peter Griffin
2016-05-11 7:57 ` Peter Griffin
2016-05-12 5:40 ` Vinod Koul
2016-05-12 5:40 ` Vinod Koul
2016-04-21 11:04 ` [PATCH 05/18] dmaengine: st_fdma: Add fdma suspend and resume callbacks Peter Griffin
2016-04-21 11:04 ` Peter Griffin
2016-04-21 11:04 ` [PATCH 06/18] ARM: STi: DT: STiH407: Add FDMA driver dt nodes Peter Griffin
2016-04-21 11:04 ` Peter Griffin
2016-04-21 11:04 ` Peter Griffin
2016-04-21 11:04 ` [PATCH 07/18] MAINTAINERS: Add FDMA driver files to STi section Peter Griffin
2016-04-21 11:04 ` Peter Griffin
2016-04-21 11:04 ` Peter Griffin
2016-04-21 11:04 ` [PATCH 08/18] ARM: multi_v7_defconfig: Enable STi FDMA driver Peter Griffin
2016-04-21 11:04 ` Peter Griffin
2016-04-21 11:25 ` Arnd Bergmann
2016-04-21 11:25 ` Arnd Bergmann
2016-04-21 11:25 ` Arnd Bergmann
2016-04-26 10:42 ` Peter Griffin
2016-04-26 10:42 ` Peter Griffin
2016-04-26 10:42 ` Peter Griffin
2016-04-21 11:04 ` [PATCH 09/18] ASoC: sti: Update DT example to match the driver code Peter Griffin
2016-04-21 11:04 ` Peter Griffin
2016-04-21 11:04 ` Peter Griffin
2016-04-21 11:27 ` Arnd Bergmann
2016-04-21 11:27 ` Arnd Bergmann
2016-04-21 11:27 ` Arnd Bergmann
2016-04-26 10:11 ` Peter Griffin
2016-04-26 10:11 ` Peter Griffin
2016-04-26 10:58 ` Arnd Bergmann
2016-04-26 10:58 ` Arnd Bergmann
2016-04-26 10:58 ` Arnd Bergmann
2016-04-26 11:15 ` Peter Griffin
2016-04-26 11:15 ` Peter Griffin
2016-04-26 11:44 ` Arnd Bergmann
2016-04-26 11:44 ` Arnd Bergmann
2016-04-26 11:44 ` Arnd Bergmann
2016-05-04 7:52 ` Arnaud Pouliquen
2016-05-04 7:52 ` Arnaud Pouliquen
2016-05-04 7:52 ` Arnaud Pouliquen
2016-05-04 9:05 ` Arnd Bergmann
2016-05-04 9:05 ` Arnd Bergmann
2016-04-21 15:57 ` Mark Brown
2016-04-21 15:57 ` Mark Brown
2016-04-21 15:57 ` Mark Brown
2016-04-26 11:02 ` Peter Griffin
2016-04-26 11:02 ` Peter Griffin
2016-04-26 11:02 ` Peter Griffin
2016-05-03 15:46 ` Arnaud Pouliquen
2016-05-03 15:46 ` Arnaud Pouliquen
2016-05-03 15:46 ` Arnaud Pouliquen
2016-04-21 11:04 ` [PATCH 10/18] ASoC: sti: Update example to include assigned-clocks and mclk-fs Peter Griffin
2016-04-21 11:04 ` Peter Griffin
2016-04-21 15:49 ` Mark Brown
2016-04-21 15:49 ` Mark Brown
2016-04-21 15:49 ` Mark Brown
2016-04-26 11:52 ` Peter Griffin
2016-04-26 11:52 ` Peter Griffin
2016-04-26 11:52 ` Peter Griffin
2016-04-26 14:23 ` Mark Brown
2016-04-26 14:23 ` Mark Brown
2016-04-26 14:23 ` Mark Brown
2016-04-26 14:51 ` Peter Griffin
2016-04-26 14:51 ` Peter Griffin
2016-04-26 15:03 ` Mark Brown
2016-04-26 15:03 ` Mark Brown
2016-04-26 16:14 ` Peter Griffin
2016-04-26 16:14 ` Peter Griffin
2016-04-26 16:14 ` Peter Griffin
2016-04-26 16:41 ` Mark Brown
2016-04-26 16:41 ` Mark Brown
2016-04-26 17:49 ` Peter Griffin
2016-04-26 17:49 ` Peter Griffin
2016-04-26 17:49 ` Peter Griffin
2016-04-21 11:04 ` [PATCH 11/18] ARM: multi_v7_defconfig: Enable STi and simple-card drivers Peter Griffin
2016-04-21 11:04 ` Peter Griffin
2016-04-21 11:04 ` Peter Griffin
2016-04-21 11:04 ` [PATCH 12/18] ARM: DT: STiH407: Add i2s_out pinctrl configuration Peter Griffin
2016-04-21 11:04 ` Peter Griffin
2016-04-21 11:04 ` [PATCH 13/18] ARM: DT: STiH407: Add i2s_in " Peter Griffin
2016-04-21 11:04 ` Peter Griffin
2016-04-21 11:04 ` [PATCH 14/18] ARM: DT: STiH407: Add spdif_out pinctrl config Peter Griffin
2016-04-21 11:04 ` Peter Griffin
2016-04-21 11:04 ` [PATCH 15/18] ARM: STi: DT: STiH407: Add sti-sasg-codec dt node Peter Griffin
2016-04-21 11:04 ` Peter Griffin
2016-04-21 11:04 ` [PATCH 16/18] ARM: STi: DT: STiH407: Add uniperif player dt nodes Peter Griffin
2016-04-21 11:04 ` Peter Griffin
2016-04-21 11:04 ` [PATCH 17/18] ARM: STi: DT: STiH407: Add uniperif reader " Peter Griffin
2016-04-21 11:04 ` Peter Griffin
2016-04-21 11:04 ` [PATCH 18/18] ARM: DT: STi: stihxxx-b2120: Add DT nodes for STi audio card Peter Griffin
2016-04-21 11:04 ` Peter Griffin
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=20160426165622.GR2274@localhost \
--to=vinod.koul@intel.com \
--cc=linux-arm-kernel@lists.infradead.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: link
Be 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.