sd/mmc: Update the documentation to reflect the current state

This commit is contained in:
Adrien Destugues
2021-01-06 20:06:17 +01:00
parent 18f5075784
commit b9e03b90a5
+20 -16
View File
@@ -44,11 +44,7 @@ Tracing of SD operations can also be added to see how qemu is interpreting our c
-trace sdhci* -trace sdbus* -trace sdcard* -trace sdhci* -trace sdbus* -trace sdcard*
### Testing and loading the driver ### Testing and loading the driver
The code is merged but not part of the default build The code is merged and part of the default Haiku build.
because it's not useful for end users currently. In order to add the drivers
to the image and load them, we need to adjust some buildfiles.
The required changes are in [this changeset](https://review.haiku-os.org/c/haiku/+/448/8).
## Insight into the code and future tasks ## Insight into the code and future tasks
@@ -72,7 +68,10 @@ For this reason, the bus drivers should only do the most low-level things, tryin
much code as possible in the upper layers. much code as possible in the upper layers.
One slightly confusing thing about SDHCI is that it allows a single PCI device to implement One slightly confusing thing about SDHCI is that it allows a single PCI device to implement
multiple separate MMC busses (each of which could have multiple devices attached). multiple separate MMC busses (each of which could have multiple devices attached). For this reason
there is an SDHCI "device" that attaches to the PCI device node for the controller, and then
publishes multiple device nodes for each available bus. The nodes then work independently of each
other.
#### The Bus Manager (src/add-ons/kernel/bus_managers/mmc) #### The Bus Manager (src/add-ons/kernel/bus_managers/mmc)
@@ -84,8 +83,8 @@ as things that are not specific to a device type (common to SDIO, SD and MMC car
#### Disk Driver (src/add-ons/kernel/drivers/disk/mmc) #### Disk Driver (src/add-ons/kernel/drivers/disk/mmc)
This is a mass storage driver for MMC, SD and SDHC cards. Currently only SD is tested, SDHC, MMC This is a mass storage driver for MMC, SD and SDHC cards. Currently only SD and SDHC are tested,
and eMMC will have to be added (they are similar but there are some differences). MMC and eMMC will have to be added (they are similar but there are some differences).
#### Wiring the driver in the device manager (src/system/kernel/device_manager/device_manager.cpp) #### Wiring the driver in the device manager (src/system/kernel/device_manager/device_manager.cpp)
@@ -116,13 +115,13 @@ The device tree for MMC support looks like this:
* SDHCI controller * SDHCI controller
* SDHCI bus * SDHCI bus
* MMC bus manager * MMC bus manager
* MMC device * MMC device
* mmc\_disk device * mmc\_disk device
* MMC device * MMC device
* (other SDIO driver) * (other SDIO driver)
* MMC bus manager (second MMC bus) * MMC bus manager (second MMC bus)
* MMC device * MMC device
* mmc\_disk device * mmc\_disk device
At the first level, the PCI bus manager publishes a device node for each device At the first level, the PCI bus manager publishes a device node for each device
found. One of them is our SDHCI controller, identified either by the PCI device found. One of them is our SDHCI controller, identified either by the PCI device
@@ -213,11 +212,16 @@ The SDHCI driver is able to send and receive commands. However it does not
handle card insertion and removal interrupts yet, so the card must be already handle card insertion and removal interrupts yet, so the card must be already
inserted when the driver is loaded. inserted when the driver is loaded.
As a proof of concept, the initialization sequence has been implemented up The mmc_disk driver is complete and working, but was not tested for MMC and eMMC
until assigning an RCA to a single card (SDHC only). devices. Some changes may be needed.
Once we get everything in place at the mmc bus level, we can proceed as There is also work to be done for better performance: making sure we switch to the
documented in the GSoC project [third phase outline](https://www.haiku-os.org/blog/krish_iyer/2018-07-12_gsoc_2018_sdhci_mmc_driver_third_phase_plan/). high-speed clock when an SD card supports it, and use the 4-bit data transfer mode
instead of the default 1-bit if possible.
Drivers for SDIO devices should also be added. The mmc_bus and SDHCI drivers have
been tested only with one card on the bus at a time (for lack of hardware allowing
more complex setups).
If you find it difficult to understand the driver development and it's If you find it difficult to understand the driver development and it's
functioning and role, please refer *docs/develop/kernel/device_manager_introduction.html* functioning and role, please refer *docs/develop/kernel/device_manager_introduction.html*