Re: How to do burst transfers

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Sep 12, 2008 at 11:29:39PM +0200, Felix Frey wrote:
> Dear readers
> 
> I have a problem with a linux PCI driver I've written. The driver supports a 
> kind of a data acquisition system, which is implemented in a programable 
> logic device. It's pci interface does not have master capability, so every 
> data exchange is initiated by the CPU.
> 
> Well, the driver is fairly simple and simply handles data exchange. It has to 
> transfer chunks of data from and to the device. To make it fast I'd like to 
> use burst transfers, which are supported by the device. Within the driver I 
> use the kernel functions memcpy_fromio and memcpy_toio to initiate a 
> transfer.
> This works so far, however, there are no burst transfers. The bridge does a 
> complete address cycle for every single word which is a big waste of time.

In order to get multiple data cycles per address cycle, either the CPU and/or
the chipset needs to be told it's ok to coalesce the write transactions
(memcpy_toio).

For the equivalent to memcpy_fromio, I suspect one has to implement
a "DMA Master" - a HW component which serves the same function as the
classic 8237A chip:
    http://www.cs.sun.ac.za/~lraitt/doc_8237.html

The 8237A basically offloads the polling from the CPU but I don't know if
by itself can enable a device to do "burst mode".

hth,
grant

> I would really appreciate any hint how to make the CPU/bridge to initiate a 
> burst transfer. Are there any other functions?
> 
> The system is built on a AMD Geode LX800 CPU.
>  
> Felix
> --
> To unsubscribe from this list: send the line "unsubscribe linux-pci" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-pci" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [DMA Engine]     [Linux Coverity]     [Linux USB]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Greybus]

  Powered by Linux