lkml.org 
[lkml]   [2011]   [Oct]   [18]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
SubjectRE: [PATCHv4] DMAEngine: Define interleaved transfer request api
Date
From
On Tue, Oct 18, 2011 at 4:38 AM, Jassi Brar <jaswinder.singh@linaro.org>
wrote:
>
> On 18 October 2011 13:56, Vinod Koul <vinod.koul@intel.com> wrote:
> > On Tue, 2011-10-18 at 14:00 +0530, Jassi Brar wrote:
> >> On 18 October 2011 13:12, Russell King <rmk@arm.linux.org.uk>
wrote:
> >> > On Tue, Oct 18, 2011 at 11:15:29AM +0530, Jassi Brar wrote:
> >> >> On 18 October 2011 02:37, Bounine, Alexandre
> <Alexandre.Bounine@idt.com> wrote:
> >> >> > With item #1 above being a separate topic, I may have a
problem
> with #2
> >> >> > as well: dma_addr_t is sized for the local platform and not
> guaranteed
> >> >> > to be a 64-bit value (which may be required by a target).
> >> >> > Agree with #3 (if #1 and #2 work).
> >> >> >
> >> >> Perhaps simply change dma_addr_t to u64 in dmaengine.h alone ?
> >> >
> >> > That's just an idiotic suggestion - there's no other way to put
> that.
> >> > Let's have some sanity here.
> >> >
> >> Yeah, I am not proud of the workaround, so I only probed the
option.
> >> I think I need to explain myself.
> >>
> >> The case here is that even a 32-bit RapidIO host could ask transfer
> against
> >> 64-bit address space on a remote device. And vice versa 64->32.
> > I thought RIO address were always 64 + 2 bits, irrespective of what
> the
> > host system is...
> >
> No, not always. RIO address could be 32, 48 or 64... with the role
> extra 2 bits
> not very clear.
RapidIO specification defines three possible address sizes for
Processing
Elements: 34, 50 and 66 bits.

There is no any special meaning for upper 2 bits that do not fit into
traditional 32- and 64-bit sizes and the best way to deal with them is
just forget this "+2" notion.

Processing Elements report their ability to support (generate and
decode)
specified address field sizes (with 34-bit address support being
mandatory
for all PEs).

Even a platform with dma_size_t = 32 bit may be capable to generate RIO
requests with all RIO address ranges defined by RIO specification.
E.g., any platform that has PCI Express with one or more Tsi721.
Required RIO request address size will be defined by remote target
mapping/implementation.

Using dma_memcopy API does not fit well into RIO system model because
one
of memory locations is outside of local memory map. This maybe a source
or
destination buffer.

Within the existing DMA API only dma_slave fits well into RIO model but
it
is unable to pass additional information that does not fit into
MEM<->PORT model.

Alex.



\
 
 \ /
  Last update: 2011-10-18 16:47    [W:1.246 / U:0.196 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site