\r
Copyright (c) 2011-2015, ARM Limited. All rights reserved.\r
\r
- This program and the accompanying materials\r
- are licensed and made available under the terms and conditions of the BSD License\r
- which accompanies this distribution. The full text of the license may be found at\r
- http://opensource.org/licenses/bsd-license.php\r
-\r
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+ SPDX-License-Identifier: BSD-2-Clause-Patent\r
\r
**/\r
\r
\r
#define MMC_OCR_POWERUP 0x80000000\r
\r
+#define MMC_OCR_ACCESS_MASK 0x3 /* bit[30-29] */\r
+#define MMC_OCR_ACCESS_BYTE 0x1 /* bit[29] */\r
+#define MMC_OCR_ACCESS_SECTOR 0x2 /* bit[30] */\r
+\r
#define MMC_CSD_GET_CCC(Response) (Response[2] >> 20)\r
#define MMC_CSD_GET_TRANSPEED(Response) (Response[3] & 0xFF)\r
#define MMC_CSD_GET_READBLLEN(Response) ((Response[2] >> 16) & 0xF)\r
#define MMC_R0_STATE_TRAN 4\r
#define MMC_R0_STATE_DATA 5\r
\r
+#define EMMC_CMD6_ARG_ACCESS(x) (((x) & 0x3) << 24)\r
+#define EMMC_CMD6_ARG_INDEX(x) (((x) & 0xFF) << 16)\r
+#define EMMC_CMD6_ARG_VALUE(x) (((x) & 0xFF) << 8)\r
+#define EMMC_CMD6_ARG_CMD_SET(x) (((x) & 0x7) << 0)\r
+\r
+#define SWITCH_CMD_DATA_LENGTH 64\r
+#define SD_HIGH_SPEED_SUPPORTED 0x20000\r
+#define SD_DEFAULT_SPEED 25000000\r
+#define SD_HIGH_SPEED 50000000\r
+#define SWITCH_CMD_SUCCESS_MASK 0x0f000000\r
+\r
+#define SD_CARD_CAPACITY 0x00000002\r
+\r
+#define BUSWIDTH_4 4\r
+\r
typedef enum {\r
UNKNOWN_CARD,\r
MMC_CARD, //MMC card\r
UINT32 PowerUp: 1; // This bit is set to LOW if the card has not finished the power up routine\r
} OCR;\r
\r
+typedef struct {\r
+ UINT8 SD_SPEC: 4; // SD Memory Card - Spec. Version [59:56]\r
+ UINT8 SCR_STRUCTURE: 4; // SCR Structure [63:60]\r
+ UINT8 SD_BUS_WIDTHS: 4; // DAT Bus widths supported [51:48]\r
+ UINT8 DATA_STAT_AFTER_ERASE: 1; // Data Status after erases [55]\r
+ UINT8 SD_SECURITY: 3; // CPRM Security Support [54:52]\r
+ UINT8 EX_SECURITY_1: 1; // Extended Security Support [43]\r
+ UINT8 SD_SPEC4: 1; // Spec. Version 4.00 or higher [42]\r
+ UINT8 RESERVED_1: 2; // Reserved [41:40]\r
+ UINT8 SD_SPEC3: 1; // Spec. Version 3.00 or higher [47]\r
+ UINT8 EX_SECURITY_2: 3; // Extended Security Support [46:44]\r
+ UINT8 CMD_SUPPORT: 4; // Command Support bits [35:32]\r
+ UINT8 RESERVED_2: 4; // Reserved [39:36]\r
+ UINT32 RESERVED_3; // Manufacturer Usage [31:0]\r
+} SCR;\r
+\r
typedef struct {\r
UINT32 NOT_USED; // 1 [0:0]\r
UINT32 CRC; // CRC7 checksum [7:1]\r
UINT8 NSAC ; // Data read access-time 2 in CLK cycles (NSAC*100) [111:104]\r
UINT8 TAAC ; // Data read access-time 1 [119:112]\r
\r
- UINT8 RESERVED_5: 6; // Reserved [125:120]\r
+ UINT8 RESERVED_5: 2; // Reserved [121:120]\r
+ UINT8 SPEC_VERS: 4; // System specification version [125:122]\r
UINT8 CSD_STRUCTURE: 2; // CSD structure [127:126]\r
} CSD;\r
\r
OCR OCRData;\r
CID CIDData;\r
CSD CSDData;\r
- ECSD ECSDData; // MMC V4 extended card specific\r
+ ECSD *ECSDData; // MMC V4 extended card specific\r
} CARD_INFO;\r
\r
typedef struct _MMC_HOST_INSTANCE {\r