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: Hannes Duerr <Hannes.Duerr@duagon.com>
Signed-off-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Link: https://lore.kernel.org/r/3bdc8f76b30c2b0e2a2bfab06c2e73797ddc9384.1608305690.git.johannes.thumshirn@wdc.com
Signed-off-by: Jonathan Corbet <corbet@lwn.net>
This commit is contained in:
Johannes Thumshirn 2020-12-19 00:35:25 +09:00 committed by Jonathan Corbet
parent 7178b4a7d6
commit 7594bb08fb

View File

@ -18,6 +18,7 @@ MEN Chameleon Bus
4.1 The driver structure 4.1 The driver structure
4.2 Probing and attaching 4.2 Probing and attaching
4.3 Initializing the driver 4.3 Initializing the driver
4.4 Using DMA
Introduction Introduction
@ -173,3 +174,14 @@ module at the MCB core::
The module_mcb_driver() macro can be used to reduce the above code:: The module_mcb_driver() macro can be used to reduce the above code::
module_mcb_driver(foo_driver); 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 */