title: ASoC Drivers: Which files are platform, machine, and codec drivers?
body: <p>When navigating the Linux ASoC files, which ones pertain to the following categories:</p>
  
  <ul>
  <li>Platform Driver: ? (somewhere in sound/soc/ ?)</li>
  <li>Machine Driver: ? (somewhere in sound/soc/ ?)</li>
  <li>Codec Driver: sound/soc/codecs/partname.c</li>
  </ul>
  
  <p>From kernel documentation: <a href="https://www.kernel.org/doc/Documentation/sound/alsa/soc/overview.txt" rel="nofollow">https://www.kernel.org/doc/Documentation/sound/alsa/soc/overview.txt</a></p>
  
  <blockquote>
    <p>To achieve all this, ASoC basically splits an embedded audio system
    into 3 components :-</p>
    
    <ul>
    <li><p>Codec driver: The codec driver is platform independent and
    contains audio
    controls, audio interface capabilities, codec DAPM definition and codec IO
    functions.</p></li>
    <li><p>Platform driver: The platform driver contains the audio DMA engine
    and audio
    interface drivers (e.g. I2S, AC97, PCM) for that platform.</p></li>
    <li><p>Machine driver: The machine driver handles any machine specific
    controls and
    audio events (e.g. turning on an amp at start of playback).</p></li>
    </ul>
  </blockquote>
  
  <p>Also, where are the launching points for each of these pieces? (May be self explanatory when I find which files they are in)</p>