blob: a1aec516210ff00097e11fddcefa21898fd69e63 [file] [log] [blame]
/*This file is prepared for Doxygen automatic documentation generation.*/
/*! \file *********************************************************************
*
* \brief SD/MMC card command list.
*
* - Compiler: IAR EWAVR32 and GNU GCC for AVR32
* - Supported devices: All AVR32 devices with an MCI module can be used.
* - AppNote:
*
* \author Atmel Corporation: http://www.atmel.com \n
* Support and FAQ: http://support.atmel.no/
*
******************************************************************************/
/* Copyright (c) 2009 Atmel Corporation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* 3. The name of Atmel may not be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* 4. This software may only be redistributed and used in connection with an Atmel
* AVR product.
*
* THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
* EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE
*
*/
#ifndef _SD_MMC_CMD_H_
#define _SD_MMC_CMD_H_
/*_____ I N C L U D E S ____________________________________________________*/
#include "compiler.h"
#include "mci.h"
//-- Class 0 & 1 commands: Basic commands and Read Stream commands
#define SD_MMC_GO_IDLE_STATE_CMD (0 | MCI_TRCMD_NO | MCI_SPCMD_NONE )
#define SD_MMC_INIT_STATE_CMD (0 | MCI_TRCMD_NO | MCI_SPCMD_INIT )
#define SD_MMC_MMC_GO_IDLE_STATE_CMD (0 | MCI_TRCMD_NO | MCI_SPCMD_NONE | MCI_OPDCMD)
#define SD_MMC_MMC_SEND_OP_COND_CMD (1 | MCI_TRCMD_NO | MCI_SPCMD_NONE | MCI_RSPTYP_48 | MCI_OPDCMD)
#define SD_MMC_ALL_SEND_CID_CMD (2 | MCI_TRCMD_NO | MCI_SPCMD_NONE | MCI_RSPTYP_136 )
#define SD_MMC_MMC_ALL_SEND_CID_CMD (2 | MCI_TRCMD_NO | MCI_SPCMD_NONE | MCI_RSPTYP_136| MCI_OPDCMD)
#define SD_MMC_SET_RELATIVE_ADDR_CMD (3 | MCI_TRCMD_NO | MCI_SPCMD_NONE | MCI_RSPTYP_48 | MCI_MAXLAT )
#define SD_MMC_MMC_SET_RELATIVE_ADDR_CMD (3 | MCI_TRCMD_NO | MCI_SPCMD_NONE | MCI_RSPTYP_48 | MCI_MAXLAT | MCI_OPDCMD)
#define MCI_SET_DSR_CMD (4 | MCI_TRCMD_NO | SPCMD_NONE | MCI_RSPTYP_NO | MCI_MAXLAT )
#define SD_MMC_SEL_DESEL_CARD_CMD (7 | MCI_TRCMD_NO | MCI_SPCMD_NONE | MCI_RSPTYP_48B | MCI_MAXLAT )
#define SD_MMC_SEND_EXT_CSD_CMD (8 | MCI_TRCMD_START | MCI_SPCMD_NONE | MCI_RSPTYP_48 | MCI_TRDIR | MCI_MAXLAT )
#define SD_MMC_SEND_CSD_CMD (9 | MCI_TRCMD_NO | MCI_SPCMD_NONE | MCI_RSPTYP_136 | MCI_MAXLAT )
#define SD_MMC_SEND_CID_CMD (10| MCI_TRCMD_NO | MCI_SPCMD_NONE | MCI_RSPTYP_136 | MCI_MAXLAT )
#define SD_MMC_MMC_READ_DAT_UNTIL_STOP_CMD (11| MCI_TRTYP_STREAM | MCI_SPCMD_NONE | MCI_RSPTYP_48 | MCI_TRDIR | MCI_TRCMD_START | MCI_MAXLAT )
#define SD_MMC_STOP_READ_TRANSMISSION_CMD (12| MCI_TRCMD_STOP | MCI_SPCMD_NONE | MCI_RSPTYP_48 | MCI_MAXLAT )
#define SD_MMC_STOP_WRITE_TRANSMISSION_CMD (12| MCI_TRCMD_STOP | MCI_SPCMD_NONE | MCI_RSPTYP_48B | MCI_MAXLAT )
#define SD_MMC_STOP_TRANSMISSION_SYNC_CMD (12| MCI_TRCMD_STOP | MCI_SPCMD_SYNC | MCI_RSPTYP_48 | MCI_MAXLAT )
#define SD_MMC_SEND_STATUS_CMD (13| MCI_TRCMD_NO | MCI_SPCMD_NONE | MCI_RSPTYP_48 | MCI_MAXLAT )
#define SD_MMC_GO_INACTIVE_STATE_CMD (15| MCI_RSPTYP_NO )
//*------------------------------------------------
//* Class 2 commands: Block oriented Read commands
//*------------------------------------------------
#define SD_MMC_SET_BLOCKLEN_CMD (16 | MCI_TRCMD_NO | MCI_SPCMD_NONE | MCI_RSPTYP_48 | MCI_MAXLAT )
#define SD_MMC_READ_SINGLE_BLOCK_CMD (17 | MCI_SPCMD_NONE | MCI_RSPTYP_48 | MCI_TRCMD_START | MCI_TRTYP_BLOCK | MCI_TRDIR | MCI_MAXLAT)
#define SD_MMC_READ_MULTIPLE_BLOCK_CMD (18 | MCI_SPCMD_NONE | MCI_RSPTYP_48 | MCI_TRCMD_START | MCI_TRTYP_MULTIPLE | MCI_TRDIR | MCI_MAXLAT)
//*--------------------------------------------
//* Class 3 commands: Sequential write commands
//*--------------------------------------------
#define SD_MMC_MMC_WRITE_DAT_UNTIL_STOP_CMD (20 | MCI_TRTYP_STREAM | MCI_SPCMD_NONE | MCI_RSPTYP_48 & ~(MCI_TRDIR) | MCI_TRCMD_START | MCI_MAXLAT ) // MMC
//*------------------------------------------------
//* Class 4 commands: Block oriented write commands
//*------------------------------------------------
#define SD_MMC_WRITE_BLOCK_CMD (24 | MCI_SPCMD_NONE | MCI_RSPTYP_48 | MCI_TRCMD_START | (MCI_TRTYP_BLOCK & ~(MCI_TRDIR)) | MCI_MAXLAT)
#define SD_MMC_WRITE_MULTIPLE_BLOCK_CMD (25 | MCI_SPCMD_NONE | MCI_RSPTYP_48 | MCI_TRCMD_START | (MCI_TRTYP_MULTIPLE & ~(MCI_TRDIR)) | MCI_MAXLAT)
#define SD_MMC_PROGRAM_CSD_CMD (27 | MCI_RSPTYP_48 )
//*----------------------------------------
//* Class 6 commands: Group Write protect
//*----------------------------------------
#define SD_MMC_SET_WRITE_PROT_CMD (28 | MCI_RSPTYP_48)
#define SD_MMC_CLR_WRITE_PROT_CMD (29 | MCI_RSPTYP_48)
#define SD_MMC_SEND_WRITE_PROT_CMD (30 | MCI_RSPTYP_48)
//*----------------------------------------
//* Class 5 commands: Erase commands
//*----------------------------------------
#define SD_MMC_TAG_SECTOR_START_CMD (32 | MCI_SPCMD_NONE | MCI_RSPTYP_48 | MCI_TRCMD_NO | MCI_MAXLAT)
#define SD_MMC_TAG_SECTOR_END_CMD (33 | MCI_SPCMD_NONE | MCI_RSPTYP_48 | MCI_TRCMD_NO | MCI_MAXLAT)
#define SD_MMC_MMC_UNTAG_SECTOR_CMD (34 | MCI_RSPTYP_48 )
#define SD_MMC_MMC_TAG_ERASE_GROUP_START_CMD (35 | MCI_RSPTYP_48 )
#define SD_MMC_MMC_TAG_ERASE_GROUP_END_CMD (36 | MCI_RSPTYP_48 )
#define SD_MMC_MMC_UNTAG_ERASE_GROUP_CMD (37 | MCI_RSPTYP_48 )
#define SD_MMC_ERASE_CMD (38 | MCI_SPCMD_NONE | MCI_RSPTYP_48 | MCI_TRCMD_NO | MCI_MAXLAT )
//*----------------------------------------
//* Class 7 commands: Lock commands
//*----------------------------------------
#define SD_MMC_LOCK_UNLOCK (42 | MCI_SPCMD_NONE | MCI_RSPTYP_48 | MCI_TRCMD_NO | MCI_MAXLAT) // no tested
//*-----------------------------------------------
// Class 8 commands: Application specific commands
//*-----------------------------------------------
#define SD_MMC_SD_SEND_IF_COND_CMD (8 | MCI_TRCMD_NO | MCI_SPCMD_NONE | MCI_RSPTYP_48 | MCI_MAXLAT )
#define SD_MMC_APP_CMD (55 | MCI_SPCMD_NONE | MCI_RSPTYP_48 | MCI_TRCMD_NO | MCI_MAXLAT)
#define SD_MMC_GEN_CMD (56 | MCI_SPCMD_NONE | MCI_RSPTYP_48 | MCI_TRCMD_NO | MCI_MAXLAT) // no tested
#define MMC_SWITCH_CMD (6 | MCI_SPCMD_NONE | MCI_RSPTYP_48B | MCI_TRCMD_NO | MCI_MAXLAT)
#define SD_SWITCH_FUNC (6 | MCI_SPCMD_NONE | MCI_RSPTYP_48 | MCI_TRCMD_START | MCI_TRTYP_BLOCK | MCI_TRDIR | MCI_MAXLAT)
#define SD_MMC_SDCARD_SET_BUS_WIDTH_CMD (6 | MCI_SPCMD_NONE | MCI_RSPTYP_48 | MCI_TRCMD_NO | MCI_MAXLAT)
#define SD_MMC_SDCARD_STATUS_CMD (13 | MCI_SPCMD_NONE | MCI_RSPTYP_48 | MCI_TRCMD_NO | MCI_MAXLAT)
#define SD_MMC_SDCARD_SEND_NUM_WR_BLOCKS_CMD (22 | MCI_SPCMD_NONE | MCI_RSPTYP_48 | MCI_TRCMD_NO | MCI_MAXLAT)
#define SD_MMC_SDCARD_SET_WR_BLK_ERASE_COUNT_CMD (23 | MCI_SPCMD_NONE | MCI_RSPTYP_48 | MCI_TRCMD_NO | MCI_MAXLAT)
#define SD_MMC_SDCARD_APP_OP_COND_CMD (41 | MCI_SPCMD_NONE | MCI_RSPTYP_48 | MCI_TRCMD_NO )
#define SD_MMC_SDCARD_SET_CLR_CARD_DETECT_CMD (42 | MCI_SPCMD_NONE | MCI_RSPTYP_48 | MCI_TRCMD_NO | MCI_MAXLAT)
#define SD_MMC_SDCARD_SEND_SCR_CMD (51 | MCI_SPCMD_NONE | MCI_RSPTYP_48 | MCI_TRCMD_NO | MCI_MAXLAT)
#define SD_MMC_SDCARD_APP_ALL_CMD ( MCI_SDCARD_SET_BUS_WIDTH_CMD +\
MCI_SDCARD_STATUS_CMD +\
MCI_SDCARD_SEND_NUM_WR_BLOCKS_CMD +\
MCI_SDCARD_SET_WR_BLK_ERASE_COUNT_CMD +\
MCI_SDCARD_APP_OP_COND_CMD +\
MCI_SDCARD_SET_CLR_CARD_DETECT_CMD +\
MCI_SDCARD_SEND_SCR_CMD)
//*----------------------------------------
//* Class 9 commands: IO Mode commands
//*----------------------------------------
#define SD_MMC_FAST_IO_CMD (39 | MCI_SPCMD_NONE | MCI_RSPTYP_48 | MCI_MAXLAT)
#define SD_MMC_GO_IRQ_STATE_CMD (40 | MCI_SPCMD_NONE | MCI_RSPTYP_48 | MCI_TRCMD_NO | MCI_MAXLAT)
#endif // _SD_MMC_CMD_H_