[bootlin/training-materials updates] master: Kernel slides: add details about DMA (87259005)

Michael Opdenacker michael.opdenacker at bootlin.com
Thu Sep 5 09:59:57 CEST 2019


Repository : https://github.com/bootlin/training-materials
On branch  : master
Link       : https://github.com/bootlin/training-materials/commit/872590059fe7b9a61034d3795c46ab9967f9b242

>---------------------------------------------------------------

commit 872590059fe7b9a61034d3795c46ab9967f9b242
Author: Michael Opdenacker <michael.opdenacker at bootlin.com>
Date:   Thu Sep 5 09:59:57 2019 +0200

    Kernel slides: add details about DMA
    
    Signed-off-by: Michael Opdenacker <michael.opdenacker at bootlin.com>


>---------------------------------------------------------------

872590059fe7b9a61034d3795c46ab9967f9b242
 .../kernel-driver-development-dma.tex                 |  13 +++++++++++--
 .../kernel-driver-development-dma/peripheral-dma.dia  | Bin 1462 -> 1585 bytes
 2 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/slides/kernel-driver-development-dma/kernel-driver-development-dma.tex b/slides/kernel-driver-development-dma/kernel-driver-development-dma.tex
index 0993a96b..a65aa045 100644
--- a/slides/kernel-driver-development-dma/kernel-driver-development-dma.tex
+++ b/slides/kernel-driver-development-dma/kernel-driver-development-dma.tex
@@ -2,13 +2,17 @@
 
 \begin{frame}
   \frametitle{DMA integration}
+  DMA ({\em Direct Memory Access}) is used to copy data directly between
+  devices and RAM, without going through the CPU.
   \begin{center}
-    \includegraphics[height=0.8\textheight]{slides/kernel-driver-development-dma/dma-integration.pdf}
+    \includegraphics[height=0.7\textheight]{slides/kernel-driver-development-dma/dma-integration.pdf}
   \end{center}
 \end{frame}
 
 \begin{frame}
   \frametitle{Peripheral DMA}
+  Some device controllers embedded their own DMA controller
+  and therefore can do DMA on their own.
   \begin{center}
     \includegraphics[height=0.7\textheight]{slides/kernel-driver-development-dma/peripheral-dma.pdf}
   \end{center}
@@ -16,13 +20,16 @@
 
 \begin{frame}
   \frametitle{DMA controllers}
+  Other device controllers rely on an external DMA controller (on the
+  SoC). Their drivers need to submit DMA descriptors to this controller.
   \begin{center}
-    \includegraphics[height=0.8\textheight]{slides/kernel-driver-development-dma/dma-controller.pdf}
+    \includegraphics[height=0.7\textheight]{slides/kernel-driver-development-dma/dma-controller.pdf}
   \end{center}
 \end{frame}
 
 \begin{frame}
   \frametitle{DMA descriptors}
+  DMA descriptors describe the various attributes of a DMA transfer, and are chained.
   \begin{center}
     \includegraphics[width=\textwidth]{slides/kernel-driver-development-dma/dma-descriptors.pdf}
   \end{center}
@@ -222,6 +229,8 @@ void dma_unmap_single(struct device *dev, dma_addr_t handdle,
     mapping seen previously
   \item Some frameworks abstract it away, such as {\em SPI}
     and {\em ASoC}
+  \item Example usage of the slave API: look at the code
+    for \kfunc{stm32_i2c_prep_dma_xfer}.
   \end{itemize}
   Details in kernel documentation: \kerneldochtml{driver-api/dmaengine/client}
 \end{frame}
diff --git a/slides/kernel-driver-development-dma/peripheral-dma.dia b/slides/kernel-driver-development-dma/peripheral-dma.dia
index 91fdf0d8..939a7204 100644
Binary files a/slides/kernel-driver-development-dma/peripheral-dma.dia and b/slides/kernel-driver-development-dma/peripheral-dma.dia differ




More information about the training-materials-updates mailing list