Add MMC framework
authorYann Gautier <yann.gautier@st.com>
Tue, 3 Jul 2018 16:32:12 +0000 (18:32 +0200)
committerYann Gautier <yann.gautier@st.com>
Tue, 3 Jul 2018 16:32:12 +0000 (18:32 +0200)
commitad71d45e7ca3256651b7735e105b18cccff416ce
tree3923b89e1a3d4021718ba4cfe059f7f1d21a9d60
parent700b6da722a87de65b0b66421bb5ec26c69a27b7
Add MMC framework

This change is largely based on existing eMMC framework by Haojian Zhuang
(@hzhuang1).

The MMC framework supports both eMMC and SD card devices. It was
written as a new framework since breaking few eMMC framework APIs.

At card probe and after the reset to idle command (CMD0), a Send
Interface Condition Command is sent (CMD8) to distinguish between
eMMC and SD card devices. eMMC devices go through the same
sequence as in the former eMMC framework. Else the framework
uses commands dedicated to SD-cards for init or frequency switch.

A structure is created to share info with the driver. It stores:
- the MMC type (eMMC, SD or SD HC)
- the device size
- the max frequency supported by the device
- the block size: 512 for eMMC and SD-HC and read from CSD
 structure for older SD-cards

Restriction to align buffers on block size has been removed.
Cache maintenance was removed and is expected to be done in the platform
or device driver.

The MMC framework includes some MISRA compliance coding style
maybe not yet ported in the existing eMMC framework.

Fixes ARM-software/tf-issues#597

Signed-off-by: Yann Gautier <yann.gautier@st.com>
drivers/mmc/mmc.c [new file with mode: 0644]
include/drivers/mmc.h [new file with mode: 0644]