summaryrefslogtreecommitdiff
path: root/arch/avr32/cpu/hsdramc1.h
blob: 305d2cb5d39a6b9ebd9ccb1923636a1f533cdb00 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
/*
 * Register definitions for SDRAM Controller
 */
#ifndef __ASM_AVR32_HSDRAMC1_H__
#define __ASM_AVR32_HSDRAMC1_H__

/* HSDRAMC1 register offsets */
#define HSDRAMC1_MR				0x0000
#define HSDRAMC1_TR				0x0004
#define HSDRAMC1_CR				0x0008
#define HSDRAMC1_HSR				0x000c
#define HSDRAMC1_LPR				0x0010
#define HSDRAMC1_IER				0x0014
#define HSDRAMC1_IDR				0x0018
#define HSDRAMC1_IMR				0x001c
#define HSDRAMC1_ISR				0x0020
#define HSDRAMC1_MDR				0x0024
#define HSDRAMC1_VERSION			0x00fc

/* Bitfields in MR */
#define HSDRAMC1_MODE_OFFSET			0
#define HSDRAMC1_MODE_SIZE			3

/* Bitfields in TR */
#define HSDRAMC1_COUNT_OFFSET			0
#define HSDRAMC1_COUNT_SIZE			12

/* Bitfields in CR */
#define HSDRAMC1_NC_OFFSET			0
#define HSDRAMC1_NC_SIZE			2
#define HSDRAMC1_NR_OFFSET			2
#define HSDRAMC1_NR_SIZE			2
#define HSDRAMC1_NB_OFFSET			4
#define HSDRAMC1_NB_SIZE			1
#define HSDRAMC1_CAS_OFFSET			5
#define HSDRAMC1_CAS_SIZE			2
#define HSDRAMC1_DBW_OFFSET			7
#define HSDRAMC1_DBW_SIZE			1
#define HSDRAMC1_TWR_OFFSET			8
#define HSDRAMC1_TWR_SIZE			4
#define HSDRAMC1_TRC_OFFSET			12
#define HSDRAMC1_TRC_SIZE			4
#define HSDRAMC1_TRP_OFFSET			16
#define HSDRAMC1_TRP_SIZE			4
#define HSDRAMC1_TRCD_OFFSET			20
#define HSDRAMC1_TRCD_SIZE			4
#define HSDRAMC1_TRAS_OFFSET			24
#define HSDRAMC1_TRAS_SIZE			4
#define HSDRAMC1_TXSR_OFFSET			28
#define HSDRAMC1_TXSR_SIZE			4

/* Bitfields in HSR */
#define HSDRAMC1_DA_OFFSET			0
#define HSDRAMC1_DA_SIZE			1

/* Bitfields in LPR */
#define HSDRAMC1_LPCB_OFFSET			0
#define HSDRAMC1_LPCB_SIZE			2
#define HSDRAMC1_PASR_OFFSET			4
#define HSDRAMC1_PASR_SIZE			3
#define HSDRAMC1_TCSR_OFFSET			8
#define HSDRAMC1_TCSR_SIZE			2
#define HSDRAMC1_DS_OFFSET			10
#define HSDRAMC1_DS_SIZE			2
#define HSDRAMC1_TIMEOUT_OFFSET			12
#define HSDRAMC1_TIMEOUT_SIZE			2

/* Bitfields in IDR */
#define HSDRAMC1_RES_OFFSET			0
#define HSDRAMC1_RES_SIZE			1

/* Bitfields in MDR */
#define HSDRAMC1_MD_OFFSET			0
#define HSDRAMC1_MD_SIZE			2

/* Bitfields in VERSION */
#define HSDRAMC1_VERSION_OFFSET			0
#define HSDRAMC1_VERSION_SIZE			12
#define HSDRAMC1_MFN_OFFSET			16
#define HSDRAMC1_MFN_SIZE			3

/* Constants for MODE */
#define HSDRAMC1_MODE_NORMAL			0
#define HSDRAMC1_MODE_NOP			1
#define HSDRAMC1_MODE_BANKS_PRECHARGE		2
#define HSDRAMC1_MODE_LOAD_MODE			3
#define HSDRAMC1_MODE_AUTO_REFRESH		4
#define HSDRAMC1_MODE_EXT_LOAD_MODE		5
#define HSDRAMC1_MODE_POWER_DOWN		6

/* Constants for NC */
#define HSDRAMC1_NC_8_COLUMN_BITS		0
#define HSDRAMC1_NC_9_COLUMN_BITS		1
#define HSDRAMC1_NC_10_COLUMN_BITS		2
#define HSDRAMC1_NC_11_COLUMN_BITS		3

/* Constants for NR */
#define HSDRAMC1_NR_11_ROW_BITS			0
#define HSDRAMC1_NR_12_ROW_BITS			1
#define HSDRAMC1_NR_13_ROW_BITS			2

/* Constants for NB */
#define HSDRAMC1_NB_TWO_BANKS			0
#define HSDRAMC1_NB_FOUR_BANKS			1

/* Constants for CAS */
#define HSDRAMC1_CAS_ONE_CYCLE			1
#define HSDRAMC1_CAS_TWO_CYCLES			2

/* Constants for DBW */
#define HSDRAMC1_DBW_32_BITS			0
#define HSDRAMC1_DBW_16_BITS			1

/* Constants for TIMEOUT */
#define HSDRAMC1_TIMEOUT_AFTER_END		0
#define HSDRAMC1_TIMEOUT_64_CYC_AFTER_END	1
#define HSDRAMC1_TIMEOUT_128_CYC_AFTER_END	2

/* Constants for MD */
#define HSDRAMC1_MD_SDRAM			0
#define HSDRAMC1_MD_LOW_POWER_SDRAM		1

/* Bit manipulation macros */
#define HSDRAMC1_BIT(name)					\
	(1 << HSDRAMC1_##name##_OFFSET)
#define HSDRAMC1_BF(name,value)					\
	(((value) & ((1 << HSDRAMC1_##name##_SIZE) - 1))	\
	 << HSDRAMC1_##name##_OFFSET)
#define HSDRAMC1_BFEXT(name,value)				\
	(((value) >> HSDRAMC1_##name##_OFFSET)			\
	 & ((1 << HSDRAMC1_##name##_SIZE) - 1))
#define HSDRAMC1_BFINS(name,value,old)				\
	(((old) & ~(((1 << HSDRAMC1_##name##_SIZE) - 1)		\
		    << HSDRAMC1_##name##_OFFSET))		\
	 | HSDRAMC1_BF(name,value))

/* Register access macros */
#define hsdramc1_readl(reg)					\
	readl((void *)HSDRAMC_BASE + HSDRAMC1_##reg)
#define hsdramc1_writel(reg,value)				\
	writel((value), (void *)HSDRAMC_BASE + HSDRAMC1_##reg)

#endif /* __ASM_AVR32_HSDRAMC1_H__ */