From: Vinod Koul <vinod.koul-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
To: Jon Hunter <jonathanh-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
Cc: Laxman Dewangan
<ldewangan-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>,
Stephen Warren <swarren-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>,
Thierry Reding
<thierry.reding-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
Alexandre Courbot
<gnurou-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
dmaengine-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: Re: [RFC PATCH 7/7] DMA: tegra-adma: Add support for Tegra210 ADMA
Date: Sun, 23 Aug 2015 20:03:28 +0530 [thread overview]
Message-ID: <20150823143328.GC13546@localhost> (raw)
In-Reply-To: <1439905755-25150-8-git-send-email-jonathanh-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
On Tue, Aug 18, 2015 at 02:49:15PM +0100, Jon Hunter wrote:
> +#define AHUB_TO_MEMORY 2
> +#define MEMORY_TO_AHUB 4
namespace this aptly as well
> +static void tegra_adma_stop(struct tegra_dma_channel *tdc)
> +{
> + u32 status;
> +
> + /* TODO: Do we need to disable interrupts here? */
when?
> +static void tegra_adma_start(struct tegra_dma_channel *tdc,
> + struct tegra_dma_sg_req *sg_req)
> +{
> + struct tegra_adma_chan_regs *ch_regs = &sg_req->adma_ch_regs;
> +
> + /* Update transfer done count for position calculation */
> + tdc->adma_ch_regs.tc = ch_regs->tc;
> + tdc_write(tdc, ADMA_CH_TC, ch_regs->tc);
> + tdc_write(tdc, ADMA_CH_CTRL, ch_regs->ctrl);
> + tdc_write(tdc, ADMA_CH_LOWER_SOURCE_ADDR, ch_regs->src_ptr);
> + tdc_write(tdc, ADMA_CH_LOWER_TARGET_ADDR, ch_regs->tgt_ptr);
> + tdc_write(tdc, ADMA_CH_AHUB_FIFO_CTRL, ch_regs->ahub_fifo_ctrl);
> + tdc_write(tdc, ADMA_CH_CONFIG, ch_regs->config);
empty line here please
> +static int tegra_adma_get_xfer_params(struct tegra_dma_channel *tdc,
> + struct tegra_adma_chan_regs *ch_regs,
> + enum dma_transfer_direction direction)
> +{
> + u32 burst_size, ctrl, ctrl_mask, slave_id, fifo_mask, fifo_shift;
> +
> + ch_regs->ahub_fifo_ctrl = tdc_read(tdc, ADMA_CH_AHUB_FIFO_CTRL);
> + ch_regs->config = tdc_read(tdc, ADMA_CH_CONFIG);
> + ch_regs->ctrl = tdc_read(tdc, ADMA_CH_CTRL);
> + slave_id = tdc->dma_sconfig.slave_id;
> +
> + switch (direction) {
> + case DMA_MEM_TO_DEV:
> + burst_size = fls(tdc->dma_sconfig.dst_maxburst);
> + ctrl_mask = ADMA_CH_CTRL_TX_REQUEST_SELECT_MASK;
> + ctrl = MEMORY_TO_AHUB << ADMA_CH_CTRL_TRANSFER_DIRECTION_SHIFT;
> + ctrl |= slave_id << ADMA_CH_CTRL_TX_REQUEST_SELECT_SHIFT;
> + fifo_mask = ADMA_CH_AHUB_FIFO_CTRL_TX_FIFO_SIZE_MASK;
> + fifo_shift = ADMA_CH_AHUB_FIFO_CTRL_TX_FIFO_SIZE_SHIFT;
> + break;
Empty line here pls
> + case DMA_DEV_TO_MEM:
> + burst_size = fls(tdc->dma_sconfig.src_maxburst);
> + ctrl_mask = ADMA_CH_CTRL_RX_REQUEST_SELECT_MASK;
> + ctrl = AHUB_TO_MEMORY << ADMA_CH_CTRL_TRANSFER_DIRECTION_SHIFT;
> + ctrl |= slave_id << ADMA_CH_CTRL_RX_REQUEST_SELECT_SHIFT;
> + fifo_mask = ADMA_CH_AHUB_FIFO_CTRL_RX_FIFO_SIZE_MASK;
> + fifo_shift = ADMA_CH_AHUB_FIFO_CTRL_RX_FIFO_SIZE_SHIFT;
> + break;
here too...
> + default:
> + dev_err(tdc2dev(tdc), "Dma direction is not supported\n");
> + return -EINVAL;
> + }
> +
> + if (!burst_size || burst_size > ADMA_BURSTSIZE_16)
> + burst_size = ADMA_BURSTSIZE_16;
> +
> + ch_regs->ahub_fifo_ctrl &= ~fifo_mask;
> + ch_regs->ahub_fifo_ctrl |= ADMA_FIFO_DEFAULT_SIZE << fifo_shift;
> + ch_regs->config &= ~ADMA_CH_CONFIG_BURST_SIZE_MASK;
> + ch_regs->config |= burst_size << ADMA_CH_CONFIG_BURST_SIZE_SHIFT;
> + ch_regs->ctrl &= ~(ctrl_mask | ADMA_CH_CTRL_TRANSFER_DIRECTION_MASK);
> + ch_regs->ctrl |= ctrl;
> +
> + return -EINVAL;
??
> +static int tegra_adma_pm_suspend(struct device *dev)
> +{
> + struct tegra_dma *tdma = dev_get_drvdata(dev);
> + int i;
> + int ret;
> +
> + ret = pm_runtime_get_sync(dev);
why is this required :)
> +static int tegra_adma_pm_resume(struct device *dev)
> +{
> + struct tegra_dma *tdma = dev_get_drvdata(dev);
> + int i;
> + int ret;
> +
> + ret = pm_runtime_get_sync(dev);
and this
--
~Vinod
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
WARNING: multiple messages have this Message-ID (diff)
From: Vinod Koul <vinod.koul@intel.com>
To: Jon Hunter <jonathanh@nvidia.com>
Cc: Laxman Dewangan <ldewangan@nvidia.com>,
Stephen Warren <swarren@wwwdotorg.org>,
Thierry Reding <thierry.reding@gmail.com>,
Alexandre Courbot <gnurou@gmail.com>,
dmaengine@vger.kernel.org, linux-tegra@vger.kernel.org,
linux-kernel@vger.kernel.org, devicetree@vger.kernel.org
Subject: Re: [RFC PATCH 7/7] DMA: tegra-adma: Add support for Tegra210 ADMA
Date: Sun, 23 Aug 2015 20:03:28 +0530 [thread overview]
Message-ID: <20150823143328.GC13546@localhost> (raw)
In-Reply-To: <1439905755-25150-8-git-send-email-jonathanh@nvidia.com>
On Tue, Aug 18, 2015 at 02:49:15PM +0100, Jon Hunter wrote:
> +#define AHUB_TO_MEMORY 2
> +#define MEMORY_TO_AHUB 4
namespace this aptly as well
> +static void tegra_adma_stop(struct tegra_dma_channel *tdc)
> +{
> + u32 status;
> +
> + /* TODO: Do we need to disable interrupts here? */
when?
> +static void tegra_adma_start(struct tegra_dma_channel *tdc,
> + struct tegra_dma_sg_req *sg_req)
> +{
> + struct tegra_adma_chan_regs *ch_regs = &sg_req->adma_ch_regs;
> +
> + /* Update transfer done count for position calculation */
> + tdc->adma_ch_regs.tc = ch_regs->tc;
> + tdc_write(tdc, ADMA_CH_TC, ch_regs->tc);
> + tdc_write(tdc, ADMA_CH_CTRL, ch_regs->ctrl);
> + tdc_write(tdc, ADMA_CH_LOWER_SOURCE_ADDR, ch_regs->src_ptr);
> + tdc_write(tdc, ADMA_CH_LOWER_TARGET_ADDR, ch_regs->tgt_ptr);
> + tdc_write(tdc, ADMA_CH_AHUB_FIFO_CTRL, ch_regs->ahub_fifo_ctrl);
> + tdc_write(tdc, ADMA_CH_CONFIG, ch_regs->config);
empty line here please
> +static int tegra_adma_get_xfer_params(struct tegra_dma_channel *tdc,
> + struct tegra_adma_chan_regs *ch_regs,
> + enum dma_transfer_direction direction)
> +{
> + u32 burst_size, ctrl, ctrl_mask, slave_id, fifo_mask, fifo_shift;
> +
> + ch_regs->ahub_fifo_ctrl = tdc_read(tdc, ADMA_CH_AHUB_FIFO_CTRL);
> + ch_regs->config = tdc_read(tdc, ADMA_CH_CONFIG);
> + ch_regs->ctrl = tdc_read(tdc, ADMA_CH_CTRL);
> + slave_id = tdc->dma_sconfig.slave_id;
> +
> + switch (direction) {
> + case DMA_MEM_TO_DEV:
> + burst_size = fls(tdc->dma_sconfig.dst_maxburst);
> + ctrl_mask = ADMA_CH_CTRL_TX_REQUEST_SELECT_MASK;
> + ctrl = MEMORY_TO_AHUB << ADMA_CH_CTRL_TRANSFER_DIRECTION_SHIFT;
> + ctrl |= slave_id << ADMA_CH_CTRL_TX_REQUEST_SELECT_SHIFT;
> + fifo_mask = ADMA_CH_AHUB_FIFO_CTRL_TX_FIFO_SIZE_MASK;
> + fifo_shift = ADMA_CH_AHUB_FIFO_CTRL_TX_FIFO_SIZE_SHIFT;
> + break;
Empty line here pls
> + case DMA_DEV_TO_MEM:
> + burst_size = fls(tdc->dma_sconfig.src_maxburst);
> + ctrl_mask = ADMA_CH_CTRL_RX_REQUEST_SELECT_MASK;
> + ctrl = AHUB_TO_MEMORY << ADMA_CH_CTRL_TRANSFER_DIRECTION_SHIFT;
> + ctrl |= slave_id << ADMA_CH_CTRL_RX_REQUEST_SELECT_SHIFT;
> + fifo_mask = ADMA_CH_AHUB_FIFO_CTRL_RX_FIFO_SIZE_MASK;
> + fifo_shift = ADMA_CH_AHUB_FIFO_CTRL_RX_FIFO_SIZE_SHIFT;
> + break;
here too...
> + default:
> + dev_err(tdc2dev(tdc), "Dma direction is not supported\n");
> + return -EINVAL;
> + }
> +
> + if (!burst_size || burst_size > ADMA_BURSTSIZE_16)
> + burst_size = ADMA_BURSTSIZE_16;
> +
> + ch_regs->ahub_fifo_ctrl &= ~fifo_mask;
> + ch_regs->ahub_fifo_ctrl |= ADMA_FIFO_DEFAULT_SIZE << fifo_shift;
> + ch_regs->config &= ~ADMA_CH_CONFIG_BURST_SIZE_MASK;
> + ch_regs->config |= burst_size << ADMA_CH_CONFIG_BURST_SIZE_SHIFT;
> + ch_regs->ctrl &= ~(ctrl_mask | ADMA_CH_CTRL_TRANSFER_DIRECTION_MASK);
> + ch_regs->ctrl |= ctrl;
> +
> + return -EINVAL;
??
> +static int tegra_adma_pm_suspend(struct device *dev)
> +{
> + struct tegra_dma *tdma = dev_get_drvdata(dev);
> + int i;
> + int ret;
> +
> + ret = pm_runtime_get_sync(dev);
why is this required :)
> +static int tegra_adma_pm_resume(struct device *dev)
> +{
> + struct tegra_dma *tdma = dev_get_drvdata(dev);
> + int i;
> + int ret;
> +
> + ret = pm_runtime_get_sync(dev);
and this
--
~Vinod
next prev parent reply other threads:[~2015-08-23 14:33 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-08-18 13:49 [RFC PATCH 0/7] DMA: Add support for Tegra210 ADMA Jon Hunter
2015-08-18 13:49 ` Jon Hunter
2015-08-18 13:49 ` [RFC PATCH 3/7] DMA: tegra-apb: Clean-up and simplify setting up of transfer parameters Jon Hunter
2015-08-18 13:49 ` Jon Hunter
2015-08-18 13:49 ` [RFC PATCH 4/7] DMA: tegra-apb: Add a function table for functions dealing with registers Jon Hunter
2015-08-18 13:49 ` Jon Hunter
[not found] ` <1439905755-25150-1-git-send-email-jonathanh-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2015-08-18 13:49 ` [RFC PATCH 1/7] DMA: tegra-apb: Correct runtime-pm usage Jon Hunter
2015-08-18 13:49 ` Jon Hunter
2015-08-23 14:17 ` Vinod Koul
2015-08-24 8:47 ` Jon Hunter
2015-08-24 8:47 ` Jon Hunter
2015-08-24 9:22 ` Vinod Koul
2015-08-24 13:22 ` Jon Hunter
2015-08-24 13:22 ` Jon Hunter
[not found] ` <55DB1AA9.7090906-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2015-08-24 14:21 ` Vinod Koul
2015-08-24 14:21 ` Vinod Koul
2015-08-25 0:04 ` Rafael J. Wysocki
[not found] ` <13590312.K3yoQT5YDc-sKB8Sp2ER+y1GS7QM15AGw@public.gmane.org>
2015-08-25 9:37 ` Jon Hunter
2015-08-25 9:37 ` Jon Hunter
2015-08-25 22:46 ` Rafael J. Wysocki
[not found] ` <55DCF056.40004-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2015-08-28 10:30 ` Jon Hunter
2015-08-28 10:30 ` Jon Hunter
2015-08-18 13:49 ` [RFC PATCH 2/7] DMA: tegra-apb: Move code dealing with h/w registers into separate functions Jon Hunter
2015-08-18 13:49 ` Jon Hunter
2015-08-18 13:49 ` [RFC PATCH 5/7] DMA: tegra-apb: Move common code into separate source files Jon Hunter
2015-08-18 13:49 ` Jon Hunter
2015-08-18 13:49 ` [RFC PATCH 6/7] Documentation: DT: Add binding documentation for NVIDIA ADMA Jon Hunter
2015-08-18 13:49 ` Jon Hunter
2015-08-18 13:49 ` [RFC PATCH 7/7] DMA: tegra-adma: Add support for Tegra210 ADMA Jon Hunter
2015-08-18 13:49 ` Jon Hunter
[not found] ` <1439905755-25150-8-git-send-email-jonathanh-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2015-08-23 14:33 ` Vinod Koul [this message]
2015-08-23 14:33 ` Vinod Koul
2015-08-24 8:55 ` Jon Hunter
2015-08-24 8:55 ` Jon Hunter
2015-08-24 9:24 ` Vinod Koul
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=20150823143328.GC13546@localhost \
--to=vinod.koul-ral2jqcrhueavxtiumwx3w@public.gmane.org \
--cc=devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=dmaengine-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=gnurou-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
--cc=jonathanh-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org \
--cc=ldewangan-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=swarren-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org \
--cc=thierry.reding-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.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.