mmc_disk: add SDHC support.

The main differences:
- The initialization sequence requires an additional command (this was
  already done)
- The layout of the CSD register and the way to compute the device
  geometry from it changes
- The read and write commands parameter is a sector number instead of a
  byte position

Change-Id: Ie729e333c9748f36b37acd70c970adfd425cf0b6
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3512
Reviewed-by: Alex von Gluck IV <[email protected]>
This commit is contained in:
Adrien Destugues
2021-01-05 02:06:44 +00:00
committed by waddlesplash
parent e21a1abec4
commit d1fee57dee
7 changed files with 59 additions and 19 deletions
+2 -2
View File
@@ -76,7 +76,7 @@ typedef struct mmc_bus_interface {
uint32_t argument, uint32_t* result);
// Execute a command with no I/O phase
status_t (*do_io)(void* controller, uint8_t command,
IOOperation* operation);
IOOperation* operation, bool offsetAsSectors);
// Execute a command that involves a data transfer.
} mmc_bus_interface;
@@ -92,7 +92,7 @@ typedef struct mmc_device_interface {
uint32_t argument, uint32_t* result);
// Execute a command with no I/O phase
status_t (*do_io)(device_node* controller, uint16_t rca,
uint8_t command, IOOperation* operation);
uint8_t command, IOOperation* operation, bool offsetAsSectors);
// Execute a command that involves a data transfer.
} mmc_device_interface;