Nut/OS  4.10.3
API Reference
mmcard.h File Reference

Header file for basic multimedia card driver. More...

#include <sys/device.h>
#include <sys/file.h>
Include dependency graph for mmcard.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  _MEMCARDSUPP
 Memory card support structure. More...
struct  _MMCIFC
 Low level access information structure. More...
struct  _MMC_CID
 Multimedia card identification register. More...
struct  _MMC_CSD
 Multimedia card identification register. More...

Defines

#define NUTMC_SF_CD   0x01
#define NUTMC_SF_WP   0x02
#define NUTMC_IND_OFF   0
#define NUTMC_IND_READ   1
#define NUTMC_IND_WRITE   2
#define NUTMC_IND_ERROR   4
#define MMCMD_HOST   0x40
#define MMCMD_RESET_CRC   0x95
#define MMCMD_GO_IDLE_STATE   0
 Reset card to idle state.
#define MMCMD_SEND_OP_COND   1
 Activate card's initialization process.
#define MMCMD_ALL_SEND_CID   2
 Send operation condition register.
#define MMCMD_SEND_RELATIVE_ADDR   3
 Assign relative card address.
#define MMCMD_SELECT_CARD   7
 Assign relative card address.
#define MMCMD_SEND_EXTCSD   8
 Query card's extended CSD.
#define MMCMD_SEND_CSD   9
 Query card's CSD.
#define MMCMD_SEND_CID   10
 Query card's CID.
#define MMCMD_STOP_TRANSMISSION   12
 Stop multiple block transmission.
#define MMCMD_SEND_STATUS   13
 Query card's status register.
#define MMCMD_SET_BLOCKLEN   16
 Select block length for following read/write commands.
#define MMCMD_READ_SINGLE_BLOCK   17
 Initiate single block read.
#define MMCMD_READ_MULTIPLE_BLOCK   18
 Initiate continuous block read.
#define MMCMD_WRITE_BLOCK   24
 Initiate single block write.
#define MMCMD_WRITE_MULTIPLE_BLOCK   25
 Initiate continuous block write.
#define MMCMD_PROGRAM_CSD   27
 Initiate programming of programmable CSD bits.
#define MMCMD_SET_WRITE_PROTECT   28
 Enable card's optional write protection.
#define MMCMD_CLR_WRITE_PROTECT   29
 Disable card's write protection.
#define MMCMD_SEND_WRITE_PROTECT   30
 Query card's write protect status.
#define MMCMD_TAG_ERASE_GROUP_START   35
 Set address of the first erase group.
#define MMCMD_TAG_ERASE_GROUP_END   36
 Set address of the last erase group.
#define MMCMD_ERASE   38
 Erase previously selected sectors.
#define MMCMD_SEND_APP_OP_COND   41
 Activate SD card's initialization process.
#define MMCMD_LOCK_UNLOCK   42
 Set/clear password or lock/unlock the card.
#define MMCMD_SEND_APP_CMD   55
 Application command follows.
#define MMCMD_READ_OCR   58
 Query card's operating condition register.
#define MMCMD_CRC_ON_OFF   59
 Enable or disable CRC mode.
#define MMR1_IDLE_STATE   0x00
 Card is idle.
#define MMR1_NOT_IDLE   0x01
 Card is busy.
#define MMR1_ERASE_RESET   0x02
 Erase sequence was cleared before execution.
#define MMR1_ILLEGAL_COMMAND   0x04
 Illegal command code detected.
#define MMR1_COM_CRC_ERROR   0x08
 Bad command CRC detected.
#define MMR1_ERASE_SEQ_ERROR   0x10
 Bad erase sequence.
#define MMR1_ADDRESS_ERROR   0x20
 Misaligned address did not match block length.
#define MMR1_PARAMETER_ERROR   0x40
 Command parameter is out of range.
#define MMR2_CARD_LOCKED   0x01
 Card is locked.
#define MMR2_WP_ERASE_SKIP   0x02
 Erasing write protected sector or password error.
#define MMR2_ERROR   0x04
 General or unknown error occured.
#define MMR2_CC_ERROR   0x08
 Internal card controller error.
#define MMR2_ECC_FAILED   0x10
 Bad internal ECC.
#define MMR2_WP_VIOLATION   0x20
 Failed to write to protected block.
#define MMR2_ERASE_PARAMETER   0x40
 Invalid erase parameter.
#define MMR2_OUT_OF_RANGE   0x80
 Command parameter is out of range.
#define MMCSR_OUT_OF_RANGE   0x80000000
#define MMCSR_ADDRESS_ERROR   0x40000000
#define MMCSR_BLOCK_LEN_ERROR   0x20000000
#define MMCSR_ERASE_SEQ_ERROR   0x10000000
#define MMCSR_ERASE_PARAM   0x08000000
#define MMCSR_WP_VIOLATION   0x04000000
#define MMCSR_COM_CRC_ERROR   0x00800000
#define MMCSR_ILLEGAL_COMMAND   0x00400000
#define MMCSR_ERROR   0x00080000
#define MMCSR_CIDCSD_OVERWRITE   0x00010000
#define MMCSR_WP_ERASE_SKIP   0x00008000
#define MMCSR_CARD_ECC_DISABLED   0x00004000
#define MMCSR_ERASE_RESET   0x00002000
#define MMCSR_STATE_MASK   0x00001E00
#define MMCSR_READY_FOR_DATA   0x00000100
#define MMCSR_IS_IDLE   0x00000000
#define MMCSR_IS_READY   0x00000200
#define MMCSR_IS_IDENT   0x00000400
#define MMCSR_IS_STBY   0x00000600
#define MMCSR_IS_TRAN   0x00000800
#define MMCSR_IS_DATA   0x00000A00
#define MMCSR_IS_RCV   0x00000C00
#define MMCSR_IS_PRG   0x00000E00
#define MMCSR_IS_DIS   0x00001000
#define MMDR_ACCEPTED
#define MMDR_CRC_ERROR
#define MMDR_WRITE_ERROR
#define MMCERR_TIMEOUT   0x00000001
#define MMCOP_NBUSY   0x80000000
#define MMCARD_CIDR_SIZE   16
 Number of bytes in the CID register.
#define MMCARD_CSDR_SIZE   16
 Number of bytes in the CSD register.
#define MMCARD_OCR_SIZE   32
 Number of bytes in the operating condition register.

Typedefs

typedef struct _MEMCARDSUPP MEMCARDSUPP
 Memory card support structure.
typedef struct _MMCIFC MMCIFC
 Low level access information structure.
typedef struct _MMC_CID MMC_CID
 Multimedia card identification register.
typedef struct _MMC_CSD MMC_CSD
 Multimedia card identification register.

Functions

int MmCardDevInit (NUTDEVICE *dev)
 Initialize high level MMC driver.
int MmCardIOCtl (NUTDEVICE *dev, int req, void *conf)
 Perform MMC control functions.
int MmCardBlockRead (NUTFILE *nfp, void *buffer, int len)
 Read data blocks from a mounted partition.
int MmCardBlockWrite (NUTFILE *nfp, CONST void *buffer, int len)
 Write data blocks to a mounted partition.
int MmCardBlockWrite_P (NUTFILE *nfp, PGM_P buffer, int len)
 Write data blocks from program space to a mounted partition.
NUTFILEMmCardMount (NUTDEVICE *dev, CONST char *name, int mode, int acc)
 Mount a partition.
int MmCardUnmount (NUTFILE *nfp)
 Unmount a previously mounted partition.
int SpiMmcInit (NUTDEVICE *dev)
 Initialize MMC driver.
int SpiMmcIOCtl (NUTDEVICE *dev, int req, void *conf)
 Perform MMC control functions.
int SpiMmcBlockRead (NUTFILE *nfp, void *buffer, int num)
 Read data blocks from a mounted partition.
int SpiMmcBlockWrite (NUTFILE *nfp, CONST void *buffer, int num)
 Write data blocks to a mounted partition.
int SpiMmcBlockWrite_P (NUTFILE *nfp, PGM_P buffer, int len)
 Write data blocks from program space to a mounted partition.
NUTFILESpiMmcMount (NUTDEVICE *dev, CONST char *name, int mode, int acc)
 Mount a partition.
int SpiMmcUnmount (NUTFILE *nfp)
 Unmount a previously mounted partition.

Voltage Ranges

#define MMCARD_165_195V   0x00000080
#define MMCARD_20_21V   0x00000100
#define MMCARD_21_22V   0x00000200
#define MMCARD_22_23V   0x00000400
#define MMCARD_23_24V   0x00000800
#define MMCARD_24_25V   0x00001000
#define MMCARD_25_26V   0x00002000
#define MMCARD_26_27V   0x00004000
#define MMCARD_27_28V   0x00008000
#define MMCARD_28_29V   0x00010000
#define MMCARD_29_30V   0x00020000
#define MMCARD_30_31V   0x00040000
#define MMCARD_31_32V   0x00080000
#define MMCARD_32_33V   0x00100000
#define MMCARD_33_34V   0x00200000
#define MMCARD_34_35V   0x00400000
#define MMCARD_35_36V   0x00800000

Control Codes

#define MMCARD_GETSTATUS   0x2001
 Retrieve card status.
#define MMCARD_GETOCR   0x2002
 Retrieve operation condition register.
#define MMCARD_GETCID   0x2003
 Retrieve card identification.
#define MMCARD_GETCSD   0x2004
 Retrieve card specific data.
#define MMCARD_GETEXTCSD   0x2005
 Retrieve extended card specific data.

Detailed Description

Header file for basic multimedia card driver.

 *
 * $Log$
 * Revision 1.5  2008/10/03 11:28:58  haraldkipp
 * Corrected and modified initialization of MultiMedia and SD Cards.
 *
 * Revision 1.4  2008/08/11 06:59:59  haraldkipp
 * BSD types replaced by stdint types (feature request #1282721).
 *
 * Revision 1.3  2006/10/08 16:48:09  haraldkipp
 * Documentation fixed
 *
 * Revision 1.2  2006/09/05 12:34:55  haraldkipp
 * Added commands for native MMC interface.
 *
 * Revision 1.1  2006/01/05 16:32:10  haraldkipp
 * First check-in.
 *
 *
 * 

Definition in file mmcard.h.