[PATCH] fsldma: use PCI Read Multiple command

Liu Dave-R63238 DaveLiu at freescale.com
Tue Apr 28 11:48:58 EST 2009


> Here's a few results from DMA tests between two
> MPC8349EA boards housed in a CPCI chassis.
> 
> 1. DMA mode register (DMAMRn)
>     PCI read command (PRC, bits 11:10)
> 
>     a) DMAMRn[PRC] = 00 = PCI Read
> 
>        The PCI read command is 6h on the PCI bus.
>        For DMA lengths of less than 1 cache line (32-bytes)
>        the DMA controller will generate a PCI 6h command.
>        However, for lengths of 32-bytes and higher, the
>        DMA controller actually generates a PCI Read Line (Eh)
>        command.
> 
>        Freescale indicated that this 'change of PCI command code'
>        functionality is an undocumented 'feature', there to
>        improve performance for longer read lengths.
> 
>     b) DMAMRn[PRC] = 01 = PCI Read Line
> 
>        Generated the PCI command code for PCI read line (Eh),
>        regardless of DMA length.
> 
>     c) DMAMRn[PRC] = 10 = PCI Read Multiple
> 
>        Generated the PCI command code for PCI Read Multiple (Ch),
>        regardless of DMA length.

Good summary!

For the DMA PCI read/line/multi-line is outbound transaction.
So according to your experiment, the 8349 PCI controller(as master)
attemp to streaming/combining the outbound transaction(treated as
prefetchable
space). 
IIRC, the early 8349EUM has the bit[2]-SE in the POCMRn
register, and is removed now. Not sure if it does function.



More information about the Linuxppc-dev mailing list