OpenCores
URL https://opencores.org/ocsvn/sdcard_mass_storage_controller/sdcard_mass_storage_controller/trunk

Subversion Repositories sdcard_mass_storage_controller

[/] [sdcard_mass_storage_controller/] [trunk/] [sw/] [sdc_dma/] [sd_controller.h] - Blame information for rev 126

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 69 tac2
#ifndef  __sd_controller_h_
2
#define __sd_controller_h_
3
 
4
 
5
//SD_CONTROLLER Register
6
uint32 test_readwrite(unsigned long arg, unsigned short reg);
7
 
8
#define WORD_0 0x00
9
#define WORD_1 0x40
10
#define WORD_2 0x80
11
#define WORD_3 0xC0
12
 
13
 
14
#define SD_ARG 0x00
15
#define SD_COMMAND 0x04 
16
#define SD_STATUS 0x08
17
#define SD_RESP1 0x0c
18
 
19
#define SD_CTRL 0x1c
20
#define SD_BLOCK 0x20
21
#define SD_POWER 0x24
22
#define SD_SOFTWARE_RST 0x28
23
#define SD_TIMEOUT 0x2c
24
#define SD_NORMAL_INT_STATUS 0x30
25
#define SD_ERROR_INT_STATUS 0x34
26
#define SD_NORMAL_INT_STATUS_ENABLE 0x38
27
#define SD_ERROR_INT_STATUS_ENABLE 0x3c
28
#define SD_NOMAL_INT_SIGNAL_ENABLE  0x40
29
#define SD_ERROR_INT_SIGNAL_ENABLE  0x44
30
#define SD_CAPABILITY  0x48
31
#define SD_CLOCK_D  0x4c
32
#define BD_STATUS 0x50
33
#define BD_ISR 0x54
34
#define BD_RX 0x60
35
#define BD_TX 0x80
36
 
37
 
38
#define CLK_CARD 25000000
39
#define CLK_CPU 50000000
40
#define CMD_TIMEOUT_MS ((CLK_CPU/CLK_CARD) * 512)
41
#define MAX_POL 1000
42
#define SD_REG(REG)  REG32(SD_CONTROLLER_BASE+REG) 
43
 
44
 
45
 
46
//Commands
47
#define CMD2 0x200
48
#define CMD3 0x300
49
#define CMD7 0x700
50
#define CMD8  0x800
51
#define CMD9  0x900
52
#define CMD16  0x1000
53
#define CMD17  0x1100
54
 
55
#define ACMD41 0x2900
56
#define ACMD6 0x600
57
#define CMD55 0x3700
58
 
59
//CMD ARG
60
//CMD8
61
#define VHS  0x100 //2.7-3.6V
62
#define CHECK_PATTERN 0xAA
63
//ACMD41
64
#define BUSY 0x80000000
65
#define HCS 0x40000000
66
#define VOLTAGE_MASK 0xFFFFFF
67
 
68
//CMD7
69
#define READY_FOR_DATA 0x100
70
#define CARD_STATUS_STB  0x600
71
 
72
//Command setting
73
#define CICE 0x10
74
#define CRCE 0x08
75
#define RSP_48 0x2
76
#define RSP_146 0x1
77
 
78
//Status Mask
79
//Normal interupt status
80
#define CMD_COMPLETE 0x1
81
#define EI 0x8000
82
 
83
//Error interupt status
84
#define CMD_TIMEOUT 0x1
85
#define CCRC 0x1
86
#define CIE  0x8
87
 
88
#define CID_MID_MASK 0x7F8000
89
#define CID_OID_MASK 0x7FFF             
90
#define CID_B1 0x7F800000
91
#define CID_B2 0x7F8000
92
#define CID_B3 0x7F80
93
#define CID_B4 0x7F
94
 
95
#define RCA_RCA_MASK 0xFFFF0000
96
 
97
 
98
typedef struct {
99
        unsigned int pad:18;
100
        unsigned  int cmdi:6;
101
        unsigned  int cmdt:2;
102
        unsigned  int dps:1;
103
        unsigned  int cice:1;
104
        unsigned  int crce:1;
105
        unsigned  int  rsvd:1;
106
        unsigned  int rts:2;
107
}sd_controller_csr ;
108
 
109
 
110
typedef struct {
111
        uint8 mid:8;
112
        uint16 oid:16;
113
        unsigned char pnm[5];
114
        uint8 prv:8;
115
        uint32 psn:32;
116
        uint8 rsv:4;
117
        uint16 mdt:12;
118
}sd_card_cid;
119
 
120
typedef struct {
121
}sd_card_csd;
122
 
123
typedef struct  {
124
        uint32 rca;
125
        uint32 Voltage_window;
126
        uint8 HCS_s;
127
        uint8 Active;
128
        uint8 phys_spec_2_0;
129
         sd_card_cid * cid_reg;
130
        sd_card_csd * csd_reg;
131
 
132
}sd_card ;
133
 
134
 
135
 
136
 
137
 
138
 
139
 
140
 
141
 
142
int sd_cmd_free();
143
int sd_get_cid(sd_card *d);
144
int sd_get_rca(sd_card *d);
145
uint8 sd_wait_rsp();
146
unsigned long sd_ocr_set (unsigned long cmd1, unsigned long arg1, unsigned long cmd2, unsigned long  arg2);
147
sd_card sd_controller_init ();
148
 
149
 
150
 
151
 
152
#endif
153
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.