title: Finding ACPI Device to Initiate Platform Device for Kernel DMA API
body: <p>I am trying to perform a DMA operation on my Dell Inspiron 5500 laptop. I would like to transfer, say a Linux page worth (4K on my machine), of data from one physical memory location to another. My questions are as follows</p>
  
  <ol>
  <li><p>How do I determine if I have DMA support for this? I have tried decompiling and parsing /sys/firmware/acpi/tables/DSDT but I am unsure which node maps or would map to a DMA. I am significantly more familiar with device tree blobs in embedded system and this ACPI format is foreign to me</p></li>
  <li><p>If I am able to locate this node, how do I get the </p>
  
  <p>struct device *dev;</p></li>
  </ol>
  
  <p>in a platform driver to hand off to </p>
  
  <pre><code>struct dma_chan *dma_request_chan(struct device *dev, const char *name);
  </code></pre>
  
  <p>per this guide
  <a href="https://www.kernel.org/doc/html/latest/driver-api/dmaengine/client.html" rel="nofollow noreferrer">https://www.kernel.org/doc/html/latest/driver-api/dmaengine/client.html</a></p>
  
  <p><strong>Update</strong>:</p>
  
  <p>Here are links to information files about the system</p>
  
  <pre><code>lspci -nk -vv
  </code></pre>
  
  <p><a href="https://drive.google.com/file/d/14jNSMAVSuuQIRIBIfGMzAg1pircfX3D-/view?usp=sharing" rel="nofollow noreferrer">https://drive.google.com/file/d/14jNSMAVSuuQIRIBIfGMzAg1pircfX3D-/view?usp=sharing</a> </p>
  
  <pre><code>sudo acpidump
  </code></pre>
  
  <p><a href="https://drive.google.com/file/d/1bKWJvFrjv6IQec9VEdw0v_0JLGhpnpZY/view?usp=sharing" rel="nofollow noreferrer">https://drive.google.com/file/d/1bKWJvFrjv6IQec9VEdw0v_0JLGhpnpZY/view?usp=sharing</a> </p>
  
  <pre><code>grep -H 15 /sys/bus/acpi/devices/*/status
  </code></pre>
  
  <p><a href="https://drive.google.com/file/d/1jRh-iQEcK97v4Hi_jKETYLseloL0Avz3/view?usp=sharing" rel="nofollow noreferrer">https://drive.google.com/file/d/1jRh-iQEcK97v4Hi_jKETYLseloL0Avz3/view?usp=sharing</a></p>
  
  <p>If this is insufficient, I can add dmesg, but it is long since my machine has been running for a long time and I have doing stuff.</p>