From: "William F." <william76.sh@gmail.com>
To: Russell King - ARM Linux <linux@arm.linux.org.uk>
Cc: Roland Stigge <stigge@antcom.de>,
srinivas.bakki@nxp.com, lars@metafoo.de,
linux-doc@vger.kernel.org, leiwen@marvell.com,
devicetree-discuss@lists.ozlabs.org, dedekind1@gmail.com,
linux-kernel@vger.kernel.org, kevin.wells@nxp.com,
b32955@freescale.com, linux-mtd@lists.infradead.org,
hechtb@googlemail.com, dwmw2@infradead.org,
linux-arm-kernel@lists.infradead.org
Subject: PLEASE, REMOVE MY EMAIL ADDRESS FROM ITS LIST.
Date: Sun, 03 Jun 2012 16:27:59 -0300 [thread overview]
Message-ID: <4FCBBABF.5080507@gmail.com> (raw)
In-Reply-To: <20120603190932.GB23368@n2100.arm.linux.org.uk>
Em 03-06-2012 16:09, Russell King - ARM Linux escreveu:
> On Sun, Jun 03, 2012 at 08:38:09PM +0200, Roland Stigge wrote:
>> +static int lpc32xx_xmit_dma(struct mtd_info *mtd, dma_addr_t dma,
>> + void *mem, int len, enum dma_transfer_direction dir)
>> +{
>> + struct nand_chip *chip = mtd->priv;
>> + struct lpc32xx_nand_host *host = chip->priv;
>> + struct dma_async_tx_descriptor *desc;
>> + int flags = DMA_CTRL_ACK | DMA_PREP_INTERRUPT;
>> + int res;
>> + dma_cookie_t cookie;
>> +
>> + host->dma_slave_config.direction = dir;
>> + host->dma_slave_config.src_addr = dma;
>> + host->dma_slave_config.dst_addr = dma;
>> + host->dma_slave_config.src_addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES;
>> + host->dma_slave_config.dst_addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES;
>> + host->dma_slave_config.src_maxburst = 4;
>> + host->dma_slave_config.dst_maxburst = 4;
>> + /* DMA controller does flow control: */
>> + host->dma_slave_config.device_fc = false;
>> + if (dmaengine_slave_config(host->dma_chan,&host->dma_slave_config)) {
>> + dev_err(mtd->dev.parent, "Failed to setup DMA slave\n");
>> + return -ENXIO;
>> + }
>> +
>> + sg_init_one(&host->sgl, mem, len);
>> +
>> + res = dma_map_sg(host->dma_chan->device->dev,&host->sgl, 1,
>> + DMA_BIDIRECTIONAL);
>> + if (res != 1) {
>> + dev_err(mtd->dev.parent, "Failed to map sg list\n");
>> + return -ENXIO;
>> + }
>> + desc = dmaengine_prep_slave_sg(host->dma_chan,&host->sgl, 1, dir,
>> + flags);
>> + if (!desc) {
>> + dev_err(mtd->dev.parent, "Failed to prepare slave sg\n");
>> + goto out1;
>> + }
>> +
>> + init_completion(&host->comp);
>> + desc->callback = lpc32xx_dma_complete_func;
>> + desc->callback_param =&host->comp;
>> +
>> + cookie = dmaengine_submit(desc);
>> + if (dma_submit_error(cookie)) {
>> + dev_err(mtd->dev.parent, "Failed to dmaengine_submit()\n");
>> + goto out1;
>> + }
> dmaengine_submit() is no longer allowed to fail, so you don't need this
> check here anymore. It's been that way for a long time.
>
>> + dma_async_issue_pending(host->dma_chan);
>> +
>> + wait_for_completion_timeout(&host->comp, msecs_to_jiffies(1000));
> What about unmapping the buffer upon completion?
>
>> +
>> + return 0;
>> +out1:
>> + dma_unmap_sg(host->dma_chan->device->dev,&host->sgl, 1,
>> + DMA_BIDIRECTIONAL);
>> + return -ENXIO;
>> +}
> ______________________________________________________
> Linux MTD discussion mailing list
> http://lists.infradead.org/mailman/listinfo/linux-mtd/
>
next prev parent reply other threads:[~2012-06-03 19:27 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-06-03 18:38 [PATCH v4] MTD: LPC32xx SLC NAND driver Roland Stigge
2012-06-03 18:38 ` Roland Stigge
2012-06-03 19:09 ` Russell King - ARM Linux
2012-06-03 19:09 ` Russell King - ARM Linux
2012-06-03 19:09 ` Russell King - ARM Linux
2012-06-03 19:09 ` Russell King - ARM Linux
2012-06-03 19:27 ` William F. [this message]
2012-06-03 19:33 ` PLEASE, REMOVE MY EMAIL ADDRESS FROM ITS LIST Russell King - ARM Linux
2012-06-03 19:33 ` Russell King - ARM Linux
2012-06-03 19:33 ` Russell King - ARM Linux
2012-06-03 23:07 ` William F.
2012-06-03 23:07 ` William F.
2012-06-03 23:07 ` William F.
2012-06-03 19:49 ` [PATCH v4] MTD: LPC32xx SLC NAND driver Roland Stigge
2012-06-03 19:49 ` Roland Stigge
2012-06-03 19:49 ` Roland Stigge
2012-06-03 20:37 ` Russell King - ARM Linux
2012-06-03 20:37 ` Russell King - ARM Linux
2012-06-03 20:37 ` Russell King - ARM Linux
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=4FCBBABF.5080507@gmail.com \
--to=william76.sh@gmail.com \
--cc=b32955@freescale.com \
--cc=dedekind1@gmail.com \
--cc=devicetree-discuss@lists.ozlabs.org \
--cc=dwmw2@infradead.org \
--cc=hechtb@googlemail.com \
--cc=kevin.wells@nxp.com \
--cc=lars@metafoo.de \
--cc=leiwen@marvell.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mtd@lists.infradead.org \
--cc=linux@arm.linux.org.uk \
--cc=srinivas.bakki@nxp.com \
--cc=stigge@antcom.de \
/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.