]> git.kernelconcepts.de Git - karo-tx-redboot.git/blob - packages/devs/flash/arm/mxc/v2_0/include/mxcmci_core.h
TX51/TX53 Release 2011-08-19
[karo-tx-redboot.git] / packages / devs / flash / arm / mxc / v2_0 / include / mxcmci_core.h
1 #ifndef _MXCMCI_CORE_H_
2 #define _MXCMCI_CORE_H_
3
4 /*=================================================================================
5
6     Module Name:  mxcmci_core.h
7
8     General Description: Limited Bootloader eSDHC Driver.
9
10 ===================================================================================
11                                Copyright: 2004,2005,2006,2007,2008 FREESCALE, INC.
12                    All Rights Reserved. This file contains copyrighted material.
13                    Use of this file is restricted by the provisions of a
14                    Freescale Software License Agreement, which has either
15                    accompanied the delivery of this software in shrink wrap
16                    form or been expressly executed between the parties.
17
18
19 Revision History:
20                             Modification     Tracking
21 Author (core ID)                Date          Number     Description of Changes
22 -------------------------   ------------    ----------   --------------------------
23 Lewis Liu                  18-June-2008
24
25
26 Portability: Portable to other compilers or platforms.
27
28 ====================================================================================================*/
29
30 #include "mxcmci_mmc.h"
31 #include "mxcmci_host.h"
32
33 #define SUCCESS                                         0
34 #define FAIL                                            1
35 #define NO_ARG                                          0
36 #define RCA_SHIFT                                       16
37 #define MMCSD_READY_TIMEOUT                     3000  /* ~(3s / (2 * 48 * 10us)) */
38 #define ESDHC_ACMD41_TIMEOUT            48000 /* 1.5 sec =1500 msec delay for ACMD41 cmd */
39 #define MMCSD_SUPPORT
40
41 #define CURR_CARD_STATE(r) ((cyg_uint32) ((r) & 0x1E00) >> 9)
42
43 /* Defines of CSD data*/
44 #define CSD_STRUCT_MSK                                          0x00C00000
45 #define CSD_STRUCT_SHIFT                                        22
46 #define MMC_CSD_SPEC_VERS_MASK                          0x003C0000
47 #define MMC_CSD_SPEC_VERS_SHIFT                         18
48
49 extern cyg_uint32 Card_rca;
50 extern cyg_uint32 address_mode;
51 extern cyg_uint32 MMC_Spec_vers;
52 extern card_specific_data csd;  /* Global variable for Card Specific Data */
53 extern cyg_uint32 Card_capacity_size; /* Capacity size (C_SIZE) for card*/
54 extern cyg_uint32 CCC; /* Card Command Class */
55 extern int HighCapacityCard;
56
57
58 /* Defines the id for each command */
59 enum commands
60 {
61         CMD0= 0,
62         CMD1= 1,
63         CMD2= 2,
64         CMD3= 3,
65         CMD5= 5,
66         CMD6=6,
67         ACMD6= 6,
68         CMD7= 7,
69         CMD8=8,
70         CMD9=9,
71         CMD12   = 12,
72         CMD13   = 13,
73         CMD16   = 16,
74         CMD17   = 17,
75         CMD18   = 18,
76         CMD24   = 24,
77         CMD25   = 25,
78         CMD26   = 26,
79         CMD32   = 32,
80         CMD33   = 33,
81         CMD35   = 35,
82         CMD36   = 36,
83         CMD37   = 37,
84         CMD38   = 38,
85         CMD39   = 39,
86         ACMD41  = 41,
87         CMD43   = 43,
88         ACMD51  = 51,
89         CMD55   = 55,
90         CMD60   = 60,
91         CMD61   = 61,
92         CMD62   = 62,
93 };
94
95 /* Defines for the states of the card*/
96 enum states
97 {
98         IDLE,
99         READY,
100         IDENT,
101         STBY,
102         TRAN,
103         DATA,
104         RCV,
105         PRG,
106         DIS
107 };
108
109 /* Defines for card types */
110 typedef enum
111 {
112         TYPE_NONE,
113         SD_CSD_1_0,
114         SD_CSD_2_0,
115         MMC_CSD_1_0,
116         MMC_CSD_1_1,
117         MMC_CSD_1_2,
118         MMC_UNKNOWN
119 } card_type;
120
121 typedef struct
122 {
123         cyg_uint32 cid0;
124         cyg_uint32 cid1;
125         cyg_uint32 cid2;
126         cyg_uint32 cid3;
127 } card_ident;
128
129
130 /* CARD Flash Configuration Parameters Structure */
131 typedef struct {
132         cyg_uint32      length;                 /* Length of Card data to read */
133 } CARD_FLASH_CFG_PARMS_T;
134
135 /*==================================================================================================
136                                              ENUMS
137 ==================================================================================================*/
138
139 /*==================================================================================================
140                                           Global Function
141 ==================================================================================================*/
142 extern cyg_uint32 mxcmci_init (cyg_uint32 bus_width, cyg_uint32 base_address);
143 extern cyg_uint32 mxcmci_data_read (cyg_uint32* dest_ptr,cyg_uint32 len,cyg_uint32 offset);
144 extern cyg_uint32 mxcmci_software_reset (void);
145 extern cyg_uint32 mxcmci_get_cid (void);
146 extern cyg_uint32 mxcmci_trans_prepare(void);
147 extern void   mxcmci_cmd_config (command_t *cmd_config,cyg_uint32 index,cyg_uint32 argument,xfer_type_t transfer,response_format_t format,
148                                   data_present_select data,crc_check_enable crc,cmdindex_check_enable cmdindex);
149 extern cyg_uint32 mxcmci_trans_status(void);
150 extern cyg_uint32 card_get_csd(void);
151
152
153 #endif //_MXCMCI_CORE_H_