linuxppc-dev.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
* MPC8349E's DMA controller like ISA controller but with more feature?
@ 2009-04-20 12:38 lhthanh
  2009-04-20 15:55 ` Scott Wood
  0 siblings, 1 reply; 6+ messages in thread
From: lhthanh @ 2009-04-20 12:38 UTC (permalink / raw)
  To: linuxppc-dev

[-- Attachment #1: Type: text/html, Size: 1638 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: MPC8349E's DMA controller like ISA controller but with more feature?
  2009-04-20 12:38 MPC8349E's DMA controller like ISA controller but with more feature? lhthanh
@ 2009-04-20 15:55 ` Scott Wood
  2009-04-20 17:23   ` Timur Tabi
       [not found]   ` <49EFEA26.2010602@kobekara.com>
  0 siblings, 2 replies; 6+ messages in thread
From: Scott Wood @ 2009-04-20 15:55 UTC (permalink / raw)
  To: lhthanh; +Cc: linuxppc-dev

On Mon, Apr 20, 2009 at 07:38:13PM +0700, lhthanh wrote:
> <body bgcolor="#ffffff" text="#000000">
> <font size="+1">Hi EveryOne!<br>
> <br>
> This is first time I send a letter to everyone. If I make mistake,
> please free to correct me. :)<br>

Please post in plaintext, not HTML.

> MPC8349's DMA controller like ISA controller but with more features? 

No.  It is for software-directed memory-to-memory transfers (where
"memory" can be main-memory, or the buffer of a device that doesn't do
DMA itself).

There is no need for anything like ISA's DMA controller, as devices that
want to initiate DMA can master the bus themselves.

> So in DMA APIs such as dma_addr_t dma_map_single(struct device *dev,
> void *cpu_addr, size_t size, enum dma_data_direction direction)
> *dev will pointer to DMA controller or to peripheral device(FPGA,
> ISA device)?

It is whatever device is going to be doing the DMA.

> From dmatest.c , *dev seem to pointer to a channel of DMA
> controller. 

That's because in that case, the DMA controller is the peripheral
device being used.

> I want to DMA from device to memory. 

What kind of device?

> So how to I can get address of peripheral device ?

If you have to ask that, it probably means you don't have a specific
device buffer in mind that you want an external entity to stuff data into
(or suck data from), but rather are dealing with device-initiated DMA. 
In that case, ignore the DMA controller.

-Scott

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: MPC8349E's DMA controller like ISA controller but with more feature?
  2009-04-20 15:55 ` Scott Wood
@ 2009-04-20 17:23   ` Timur Tabi
       [not found]   ` <49EFEA26.2010602@kobekara.com>
  1 sibling, 0 replies; 6+ messages in thread
From: Timur Tabi @ 2009-04-20 17:23 UTC (permalink / raw)
  To: Scott Wood; +Cc: linuxppc-dev, lhthanh

On Mon, Apr 20, 2009 at 10:55 AM, Scott Wood <scottwood@freescale.com> wrot=
e:

> No. =A0It is for software-directed memory-to-memory transfers (where
> "memory" can be main-memory, or the buffer of a device that doesn't do
> DMA itself).

It can also be used to transfer data to/from a single I/O register,
which is how ISA DMA is frequently used.

--=20
Timur Tabi
Linux kernel developer at Freescale

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: MPC8349E's DMA controller like ISA controller but with more feature?
       [not found]       ` <49F08FBC.9010903@freescale.com>
@ 2009-04-24  6:12         ` lhthanh
  2009-04-24 14:40           ` Timur Tabi
  0 siblings, 1 reply; 6+ messages in thread
From: lhthanh @ 2009-04-24  6:12 UTC (permalink / raw)
  To: Timur Tabi; +Cc: Scott Wood, linuxppc-dev

Thank Scott and Timur!  
> Scott Wood wrote:
>   
>> Timur Tabi (CCed) has written an audio
>> driver that does something very similar; he could probably tell you more
>> about how to do that (this is why such discussions should be kept on the
>> mailing list rather than taken to private e-mail).
>>     
>
> The code in drivers/dma cannot be used to send a buffer of data to a
> single I/O port.  That code is just an elaborate version of memcpy that
> uses the DMA engine to copy data in the background.
>
>   
Thanks for your explaination! So if I want to transfer a buffer of data 
from a single I/O port,  will not DMA framework
also be able ? Have I to write aother driver?
> If you want to transfer a buffer to a single I/O port, you will need to
> write your own DMA driver, similar to what I've done in
> sound/soc/fsl/fsl_dma.c.  This is not trivial.  You will need to
> understand the DMA hardware programming model to determine whether you
> can use direct mode or if you need to create link descriptors.
>
>   
Actually, I don't want write all because there are  serveral DMA code at 
hand. I only want to use a framework instead of re-writing.
And I afraid that I can not write code which assure sharing DMA channels.
 
Regards!

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: MPC8349E's DMA controller like ISA controller but with more feature?
  2009-04-24  6:12         ` lhthanh
@ 2009-04-24 14:40           ` Timur Tabi
  2009-05-07  1:59             ` lhthanh
  0 siblings, 1 reply; 6+ messages in thread
From: Timur Tabi @ 2009-04-24 14:40 UTC (permalink / raw)
  To: lhthanh; +Cc: Scott Wood, linuxppc-dev

lhthanh wrote:

> Thanks for your explaination! So if I want to transfer a buffer of data 
> from a single I/O port,  will not DMA framework
> also be able ?

No.

> Have I to write aother driver?

Yes.

> Actually, I don't want write all because there are  serveral DMA code at 
> hand. I only want to use a framework instead of re-writing.

There is no framework for what you want to do.  There is only one other
driver that does what you want (sound/soc/fsl/fsl_dma.c), and that is a
complicated driver that does many things besides transferring data to an
I/O port.

> And I afraid that I can not write code which assure sharing DMA channels.

Look at arch/powerpc/boot/dts/mpc8610_hpcd.dts.  The DMA channels that
are needed by the 8610 audio driver have a different 'compatible'
property.  This is how you prevent the generic DMA driver from using a
channel that you want.

I'm afraid that you're going to have to study the DMA programming model,
and my device driver, and write a brand new driver from scratch.

-- 
Timur Tabi
Linux kernel developer at Freescale

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: MPC8349E's DMA controller like ISA controller but with more feature?
  2009-04-24 14:40           ` Timur Tabi
@ 2009-05-07  1:59             ` lhthanh
  0 siblings, 0 replies; 6+ messages in thread
From: lhthanh @ 2009-05-07  1:59 UTC (permalink / raw)
  To: Timur Tabi; +Cc: Scott Wood, linuxppc-dev

lhthanh wrote:
>   
>> Thanks for your explaination! So if I want to transfer a buffer of data 
>> from a single I/O port,  will not DMA framework
>> also be able ?
>>     
>
> No.
>
>   
>> Have I to write aother driver?
>>     
>
> Yes.
>
>   
>> Actually, I don't want write all because there are  serveral DMA code at 
>> hand. I only want to use a framework instead of re-writing.
>>     
>
> There is no framework for what you want to do.  There is only one other
> driver that does what you want (sound/soc/fsl/fsl_dma.c), and that is a
> complicated driver that does many things besides transferring data to an
> I/O port.
>
>   
>> And I afraid that I can not write code which assure sharing DMA channels.
>>     
>
> Look at arch/powerpc/boot/dts/mpc8610_hpcd.dts.  The DMA channels that
> are needed by the 8610 audio driver have a different 'compatible'
> property.  This is how you prevent the generic DMA driver from using a
> channel that you want.
>
> I'm afraid that you're going to have to study the DMA programming model,
> and my device driver, and write a brand new driver from scratch.
>
>   
Thank Scott and Timur very much! I will study more DMA driver and come 
back later. :)

Regard!

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2009-05-07  2:02 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-04-20 12:38 MPC8349E's DMA controller like ISA controller but with more feature? lhthanh
2009-04-20 15:55 ` Scott Wood
2009-04-20 17:23   ` Timur Tabi
     [not found]   ` <49EFEA26.2010602@kobekara.com>
     [not found]     ` <20090423154311.GA19717@ld0162-tx32.am.freescale.net>
     [not found]       ` <49F08FBC.9010903@freescale.com>
2009-04-24  6:12         ` lhthanh
2009-04-24 14:40           ` Timur Tabi
2009-05-07  1:59             ` lhthanh

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).