From: Vinod Koul <vkoul@kernel.org>
To: Gustavo Pimentel <gustavo.pimentel@synopsys.com>
Cc: "linux-pci@vger.kernel.org" <linux-pci@vger.kernel.org>,
"dmaengine@vger.kernel.org" <dmaengine@vger.kernel.org>,
Eugeniy Paltsev <eugeniy.paltsev@synopsys.com>,
Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
Joao Pinto <joao.pinto@synopsys.com>
Subject: [RFC,1/6] dma: Add Synopsys eDMA IP core driver
Date: Thu, 3 Jan 2019 18:15:42 +0530 [thread overview]
Message-ID: <20190103124542.GC21403@vkoul-mobl> (raw)
Hi Gustavo,
On 03-01-19, 09:53, Gustavo Pimentel wrote:
> Hi Vinod,
>
> (snipped)
>
> >>> +{
> >>> + struct dw_edma_chan *chan = dchan2dw_edma_chan(dchan);
> >>> + const struct dw_edma_core_ops *ops = chan2ops(chan);
> >>> + enum dma_transfer_direction dir;
> >>> + unsigned long flags;
> >>> + int err = 0;
> >>> +
> >>> + spin_lock_irqsave(&chan->vc.lock, flags);
> >>> +
> >>> + if (!config) {
> >>> + err = -EINVAL;
> >>> + goto err_config;
> >>> + }
> >>> +
> >>> + if (chan->configured) {
> >>> + dev_err(chan2dev(chan), ": channel already configured\n");
> >>> + err = -EPERM;
> >>> + goto err_config;
> >>> + }
> >>> +
> >>> + dir = config->direction;
> >>
> >> Direction is depreciated, I have already removed the usages, so please
> >> do not add new ones.
> >>
> >> You need to take direction for respective prep_ calls
> >
> > Ok, I already do that. IMHO I found it strange to have the same information
> > repeated on two places. But now that you say that this is deprecated, it makes
> > sense now.
> >
> >>
> >>> + if (dir == DMA_DEV_TO_MEM && chan->dir == EDMA_DIR_WRITE) {
> >>> + dev_info(chan2dev(chan),
> >>> + ": direction DMA_DEV_TO_MEM (EDMA_DIR_WRITE)\n");
> >>> + chan->p_addr = config->src_addr;
> >>> + } else if (dir == DMA_MEM_TO_DEV && chan->dir == EDMA_DIR_READ) {
> >>> + dev_info(chan2dev(chan),
> >>> + ": direction DMA_MEM_TO_DEV (EDMA_DIR_READ)\n");
> >>> + chan->p_addr = config->dst_addr;
> >>> + } else {
> >>> + dev_err(chan2dev(chan), ": invalid direction\n");
> >>> + err = -EINVAL;
> >>> + goto err_config;
> >>> + }
> >>
> >> This should be removed
> >
> > Yeah, it was just for validation purposes. Now that direction is deprecated on
> > the API, makes no sense to validate it.
> >
> >>
> >>> +
> >>> + dev_info(chan2dev(chan),
> >>> + ": src_addr(physical) = 0x%.16x\n", config->src_addr);
> >>> + dev_info(chan2dev(chan),
> >>> + ": dst_addr(physical) = 0x%.16x\n", config->dst_addr);
> >>
>
> I've a doubt now. As you know, for a DMA transfer you need the source and
> destination addresses, which in the limited can be swapped according to the
> direction MEM_TO_DEV/DEV_TO_MEM case.
>
> For the sake of simplicity, I'll just consider now the MEM_TO_DEV case, since
> the other case is similar but the source and destination address are swapped.
>
> In my code I can get some of the information that I need by using the
> sg_dma_address() in the scatter-gather list (which gives me the source address).
>
> The remaining information I got from here, using the direction to help me to
> select which address I'll use later on the DMA transfer, in this case the
> destination address.
>
> Since this is deprecated how should I proceed? How can I get that information?
> There is some similar function to sg_dma_address() that could give me the
> destination address?
So the direction field is deprecated but rest of the configuration comes
from from dma_slave_config. The user should set src_addr, dst_addr and
then based on direction passed in the .device_prep_dma_* call arguments
one can use one of these as peripheral address.
Also, please keep in mind that for memory to memory transfers you should
not expect the dma_slave_config to be used
Thanks
next reply other threads:[~2019-01-03 12:45 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-01-03 12:45 Vinod Koul [this message]
-- strict thread matches above, loose matches on Subject: below --
2019-01-03 14:53 [RFC,1/6] dma: Add Synopsys eDMA IP core driver Vinod Koul
2019-01-03 12:55 Gustavo Pimentel
2019-01-03 9:53 Gustavo Pimentel
2018-12-18 10:58 Gustavo Pimentel
2018-12-18 3:54 Vinod Koul
2018-12-17 15:56 Gustavo Pimentel
2018-12-17 7:23 Vinod Koul
2018-12-17 6:51 Vinod Koul
2018-12-13 11:03 Gustavo Pimentel
2018-12-12 23:00 Bjorn Helgaas
2018-12-12 11:13 Gustavo Pimentel
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=20190103124542.GC21403@vkoul-mobl \
--to=vkoul@kernel.org \
--cc=andriy.shevchenko@linux.intel.com \
--cc=dmaengine@vger.kernel.org \
--cc=eugeniy.paltsev@synopsys.com \
--cc=gustavo.pimentel@synopsys.com \
--cc=joao.pinto@synopsys.com \
--cc=linux-pci@vger.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: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox