~pmdj/ubuntu/trusty/qemu/2.9+applesmc+fadtv3

« back to all changes in this revision

Viewing changes to roms/u-boot/include/atmel_mci.h

  • Committer: Phil Dennis-Jordan
  • Date: 2017-07-21 08:03:43 UTC
  • mfrom: (1.1.1)
  • Revision ID: phil@philjordan.eu-20170721080343-2yr2vdj7713czahv
New upstream release 2.9.0.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * Copyright (C) 2005-2006 Atmel Corporation
 
3
 *
 
4
 * SPDX-License-Identifier:     GPL-2.0+
 
5
 */
 
6
#ifndef __ATMEL_MCI_H__
 
7
#define __ATMEL_MCI_H__
 
8
 
 
9
int atmel_mci_init(void *regs);
 
10
 
 
11
#ifndef __ASSEMBLY__
 
12
 
 
13
/*
 
14
 * Structure for struct SoC access.
 
15
 * Names starting with '_' are fillers.
 
16
 */
 
17
typedef struct atmel_mci {
 
18
        /*      reg     Offset */
 
19
        u32     cr;     /* 0x00 */
 
20
        u32     mr;     /* 0x04 */
 
21
        u32     dtor;   /* 0x08 */
 
22
        u32     sdcr;   /* 0x0c */
 
23
        u32     argr;   /* 0x10 */
 
24
        u32     cmdr;   /* 0x14 */
 
25
        u32     blkr;   /* 0x18 */
 
26
        u32     _1c;    /* 0x1c */
 
27
        u32     rspr;   /* 0x20 */
 
28
        u32     rspr1;  /* 0x24 */
 
29
        u32     rspr2;  /* 0x28 */
 
30
        u32     rspr3;  /* 0x2c */
 
31
        u32     rdr;    /* 0x30 */
 
32
        u32     tdr;    /* 0x34 */
 
33
        u32     _38;    /* 0x38 */
 
34
        u32     _3c;    /* 0x3c */
 
35
        u32     sr;     /* 0x40 */
 
36
        u32     ier;    /* 0x44 */
 
37
        u32     idr;    /* 0x48 */
 
38
        u32     imr;    /* 0x4c */
 
39
        u32     reserved[43];
 
40
        u32     version;
 
41
} atmel_mci_t;
 
42
 
 
43
#endif /* __ASSEMBLY__ */
 
44
 
 
45
/* Bitfields in CR */
 
46
#define MMCI_MCIEN_OFFSET                       0
 
47
#define MMCI_MCIEN_SIZE                         1
 
48
#define MMCI_MCIDIS_OFFSET                      1
 
49
#define MMCI_MCIDIS_SIZE                        1
 
50
#define MMCI_PWSEN_OFFSET                       2
 
51
#define MMCI_PWSEN_SIZE                         1
 
52
#define MMCI_PWSDIS_OFFSET                      3
 
53
#define MMCI_PWSDIS_SIZE                        1
 
54
#define MMCI_SWRST_OFFSET                       7
 
55
#define MMCI_SWRST_SIZE                         1
 
56
 
 
57
/* Bitfields in MR */
 
58
#define MMCI_CLKDIV_OFFSET                      0
 
59
#define MMCI_CLKDIV_SIZE                        8
 
60
#define MMCI_PWSDIV_OFFSET                      8
 
61
#define MMCI_PWSDIV_SIZE                        3
 
62
#define MMCI_RDPROOF_OFFSET                     11
 
63
#define MMCI_RDPROOF_SIZE                       1
 
64
#define MMCI_WRPROOF_OFFSET                     12
 
65
#define MMCI_WRPROOF_SIZE                       1
 
66
#define MMCI_PDCPADV_OFFSET                     14
 
67
#define MMCI_PDCPADV_SIZE                       1
 
68
#define MMCI_PDCMODE_OFFSET                     15
 
69
#define MMCI_PDCMODE_SIZE                       1
 
70
#define MMCI_BLKLEN_OFFSET                      16
 
71
#define MMCI_BLKLEN_SIZE                        16
 
72
 
 
73
/* Bitfields in DTOR */
 
74
#define MMCI_DTOCYC_OFFSET                      0
 
75
#define MMCI_DTOCYC_SIZE                        4
 
76
#define MMCI_DTOMUL_OFFSET                      4
 
77
#define MMCI_DTOMUL_SIZE                        3
 
78
 
 
79
/* Bitfields in SDCR */
 
80
#define MMCI_SCDSEL_OFFSET                      0
 
81
#define MMCI_SCDSEL_SIZE                        4
 
82
#define MMCI_SCDBUS_OFFSET                      7
 
83
#define MMCI_SCDBUS_SIZE                        1
 
84
 
 
85
/* Bitfields in ARGR */
 
86
#define MMCI_ARG_OFFSET                         0
 
87
#define MMCI_ARG_SIZE                           32
 
88
 
 
89
/* Bitfields in CMDR */
 
90
#define MMCI_CMDNB_OFFSET                       0
 
91
#define MMCI_CMDNB_SIZE                         6
 
92
#define MMCI_RSPTYP_OFFSET                      6
 
93
#define MMCI_RSPTYP_SIZE                        2
 
94
#define MMCI_SPCMD_OFFSET                       8
 
95
#define MMCI_SPCMD_SIZE                         3
 
96
#define MMCI_OPDCMD_OFFSET                      11
 
97
#define MMCI_OPDCMD_SIZE                        1
 
98
#define MMCI_MAXLAT_OFFSET                      12
 
99
#define MMCI_MAXLAT_SIZE                        1
 
100
#define MMCI_TRCMD_OFFSET                       16
 
101
#define MMCI_TRCMD_SIZE                         2
 
102
#define MMCI_TRDIR_OFFSET                       18
 
103
#define MMCI_TRDIR_SIZE                         1
 
104
#define MMCI_TRTYP_OFFSET                       19
 
105
#define MMCI_TRTYP_SIZE                         2
 
106
 
 
107
/* Bitfields in BLKR */
 
108
/* MMCI_BLKLEN_OFFSET/SIZE already defined in MR */
 
109
#define MMCI_BCNT_OFFSET                        0
 
110
#define MMCI_BCNT_SIZE                  16
 
111
 
 
112
/* Bitfields in RSPRx */
 
113
#define MMCI_RSP_OFFSET                         0
 
114
#define MMCI_RSP_SIZE                           32
 
115
 
 
116
/* Bitfields in SR/IER/IDR/IMR */
 
117
#define MMCI_CMDRDY_OFFSET                      0
 
118
#define MMCI_CMDRDY_SIZE                        1
 
119
#define MMCI_RXRDY_OFFSET                       1
 
120
#define MMCI_RXRDY_SIZE                         1
 
121
#define MMCI_TXRDY_OFFSET                       2
 
122
#define MMCI_TXRDY_SIZE                         1
 
123
#define MMCI_BLKE_OFFSET                        3
 
124
#define MMCI_BLKE_SIZE                          1
 
125
#define MMCI_DTIP_OFFSET                        4
 
126
#define MMCI_DTIP_SIZE                          1
 
127
#define MMCI_NOTBUSY_OFFSET                     5
 
128
#define MMCI_NOTBUSY_SIZE                       1
 
129
#define MMCI_ENDRX_OFFSET                       6
 
130
#define MMCI_ENDRX_SIZE                         1
 
131
#define MMCI_ENDTX_OFFSET                       7
 
132
#define MMCI_ENDTX_SIZE                         1
 
133
#define MMCI_RXBUFF_OFFSET                      14
 
134
#define MMCI_RXBUFF_SIZE                        1
 
135
#define MMCI_TXBUFE_OFFSET                      15
 
136
#define MMCI_TXBUFE_SIZE                        1
 
137
#define MMCI_RINDE_OFFSET                       16
 
138
#define MMCI_RINDE_SIZE                         1
 
139
#define MMCI_RDIRE_OFFSET                       17
 
140
#define MMCI_RDIRE_SIZE                         1
 
141
#define MMCI_RCRCE_OFFSET                       18
 
142
#define MMCI_RCRCE_SIZE                         1
 
143
#define MMCI_RENDE_OFFSET                       19
 
144
#define MMCI_RENDE_SIZE                         1
 
145
#define MMCI_RTOE_OFFSET                        20
 
146
#define MMCI_RTOE_SIZE                          1
 
147
#define MMCI_DCRCE_OFFSET                       21
 
148
#define MMCI_DCRCE_SIZE                         1
 
149
#define MMCI_DTOE_OFFSET                        22
 
150
#define MMCI_DTOE_SIZE                          1
 
151
#define MMCI_OVRE_OFFSET                        30
 
152
#define MMCI_OVRE_SIZE                          1
 
153
#define MMCI_UNRE_OFFSET                        31
 
154
#define MMCI_UNRE_SIZE                          1
 
155
 
 
156
/* Constants for DTOMUL */
 
157
#define MMCI_DTOMUL_1_CYCLE                     0
 
158
#define MMCI_DTOMUL_16_CYCLES                   1
 
159
#define MMCI_DTOMUL_128_CYCLES                  2
 
160
#define MMCI_DTOMUL_256_CYCLES                  3
 
161
#define MMCI_DTOMUL_1024_CYCLES                 4
 
162
#define MMCI_DTOMUL_4096_CYCLES                 5
 
163
#define MMCI_DTOMUL_65536_CYCLES                6
 
164
#define MMCI_DTOMUL_1048576_CYCLES              7
 
165
 
 
166
/* Constants for RSPTYP */
 
167
#define MMCI_RSPTYP_NO_RESP                     0
 
168
#define MMCI_RSPTYP_48_BIT_RESP                 1
 
169
#define MMCI_RSPTYP_136_BIT_RESP                2
 
170
 
 
171
/* Constants for SPCMD */
 
172
#define MMCI_SPCMD_NO_SPEC_CMD                  0
 
173
#define MMCI_SPCMD_INIT_CMD                     1
 
174
#define MMCI_SPCMD_SYNC_CMD                     2
 
175
#define MMCI_SPCMD_INT_CMD                      4
 
176
#define MMCI_SPCMD_INT_RESP                     5
 
177
 
 
178
/* Constants for TRCMD */
 
179
#define MMCI_TRCMD_NO_TRANS                     0
 
180
#define MMCI_TRCMD_START_TRANS                  1
 
181
#define MMCI_TRCMD_STOP_TRANS                   2
 
182
 
 
183
/* Constants for TRTYP */
 
184
#define MMCI_TRTYP_BLOCK                        0
 
185
#define MMCI_TRTYP_MULTI_BLOCK                  1
 
186
#define MMCI_TRTYP_STREAM                       2
 
187
 
 
188
/* Bit manipulation macros */
 
189
#define MMCI_BIT(name)                                  \
 
190
        (1 << MMCI_##name##_OFFSET)
 
191
#define MMCI_BF(name,value)                             \
 
192
        (((value) & ((1 << MMCI_##name##_SIZE) - 1))    \
 
193
         << MMCI_##name##_OFFSET)
 
194
#define MMCI_BFEXT(name,value)                          \
 
195
        (((value) >> MMCI_##name##_OFFSET)\
 
196
         & ((1 << MMCI_##name##_SIZE) - 1))
 
197
#define MMCI_BFINS(name,value,old)                      \
 
198
        (((old) & ~(((1 << MMCI_##name##_SIZE) - 1)     \
 
199
                    << MMCI_##name##_OFFSET))           \
 
200
         | MMCI_BF(name,value))
 
201
 
 
202
#endif /* __ATMEL_MCI_H__ */