[PATCH] [RFC] Xilinx MPMC SDMA subsystem
Sergey Temerkhanov
temerkhanov at cifronik.ru
Thu Mar 18 05:18:41 EST 2010
This patch adds generic support for Xilinx MPMC SoftDMA channels which are
used by, e.g., LLTEMAC and other IP cores (including custom cores). So, the
implemented functions include only SDMA channels enumeration and control
(finding device by phandle property, channel reset, initialization of RX/TX
links, enabling/disabling IRQs, IRQ coalescing control and submission of
descriptors (struct sdma_desc).
The users of this subsystem are supposed to get the pointer to the struct
sdma_device by phandle (using sdma_find_device() function), fill the struct
sdma_client with pointers to the callback functions which are called on rx/tx
completion, on error, and when sdma_reset is called by any client and then
register the client with add_client() (sdma_del_client can be used to
unregister the struct sdma_client)
Also, some auxiliary functions are provided to check the status of descriptors
(busy, done, start of packet, end of packet).
The user is also responsible for maintenance of linked descriptors queue,
proper initialization of their fields, and submission of the descriptors list
to SDMA channel. IRQ acknowledge must be performed by user too (calling
sdma_[rx|tx]_irq_ack respectively in [rx|tx]_complete callbacks). Also on RX
side user must check the __be32 user[4] fields of descriptors to get the
information supplied by SDMA channel.
This code uses SDMA channels in "Tail pointer fashion", i.e. the call to
sdma_[rx|tx]_init is performed only once after reset and then only sdma_[rx|
tx]_submit calls are used to update the pointer to the last descriptor in SDMA
channel.
Simple bus driver for MPMC is also added by this patch.
This code is in production use with our internal LLTEMAC driver implementation
since 2008 and with a few custom cores drivers since 2009.
This code currently supports only soft MPMCs, i.e., only SDMA channels with
memory-mapped registers. In order to support channels with DCR, a few
modifications are needed.
Any comments and suggestions are appreciated.
Regards, Sergey Temerkhanov, Cifronic ZAO
-------------- next part --------------
A non-text attachment was scrubbed...
Name: sdma.patch
Type: text/x-patch
Size: 25641 bytes
Desc: not available
URL: <http://lists.ozlabs.org/pipermail/linuxppc-dev/attachments/20100317/ac535d00/attachment-0001.bin>
More information about the Linuxppc-dev
mailing list