Commit 7594bb08 authored by Johannes Thumshirn's avatar Johannes Thumshirn Committed by Jonathan Corbet
Browse files

Documentation: document dma device use for mcb



Hannes reported a problem with setting up dma transfers on a mcb device.
The problem boiled down to the use of a wrong 'device' for the dma
functions.

Document how to setup dma transfers for a IP core on a mcb carrier.

Reported-by: default avatarHannes Duerr <Hannes.Duerr@duagon.com>
Signed-off-by: default avatarJohannes Thumshirn <johannes.thumshirn@wdc.com>
Link: https://lore.kernel.org/r/3bdc8f76b30c2b0e2a2bfab06c2e73797ddc9384.1608305690.git.johannes.thumshirn@wdc.com


Signed-off-by: default avatarJonathan Corbet <corbet@lwn.net>
parent 7178b4a7
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ MEN Chameleon Bus
       4.1 The driver structure
       4.2 Probing and attaching
       4.3 Initializing the driver
       4.4 Using DMA


Introduction
@@ -173,3 +174,14 @@ module at the MCB core::
The module_mcb_driver() macro can be used to reduce the above code::

	module_mcb_driver(foo_driver);

Using DMA
---------

To make use of the kernel's DMA-API's function, you will need to use the
carrier device's 'struct device'. Fortunately 'struct mcb_device' embeds a
pointer (->dma_dev) to the carrier's device for DMA purposes::

        ret = dma_set_mask_and_coherent(&mdev->dma_dev, DMA_BIT_MASK(dma_bits));
        if (rc)
                /* Handle errors */