<!-- Mail as an attachment to: monthly@freebsd.org -->
<project cat='kern'>
  <title>MMC stack under CAM framework</title>

  <contact>
    <person>
      <name>
        <given>Ilya</given>
        <common>Bakulin</common>
      </name>
      <email>ilya@bakulin.de</email>
    </person>
  </contact>

  <links>
    <url href="https://bakulin.de/freebsd/mmccam.html">Project information</url>
    <url href="https://github.com/kibab/freebsd/tree/mmccam">Source code</url>
    <url href="https://reviews.freebsd.org/D4761">Patch for review</url>
  </links>

  <body>
    <p>
      The goal of the project is to reimplement the exisitng MMC/SD stack using the CAM framework. This will allow to utilize the well-tested CAM locking model and debug features. Additionally it will be possible to process interrupts generated by the inserted card, which is a prerequisite for implementing SDIO interface. 
      The first version of the code was uploaded on the Phabricator for review. The new stack is able to attach to the SD card and bring it to the operational state, so it's possible to read/write the card.
      The only supported SD controller driver is ti_sdhci which is used on the BeagleBone Black. Modifying other SDHCI-compliant drivers should not be a hard task.
    </p>
  </body>

  <help>
    <task>
      Rework bus/target/lun enumeration and locking model -- I don't really understand the CAM locking and most likely do it incorrectly.
    </task>
    <task>
      Modify SDHCI driver on at least one x86 platform -- this will make development and collaboration easier.
    </task>
    <task>
      Begin implementing SDIO-specific bits
    </task>
  </help>
</project>
