summaryrefslogtreecommitdiff
path: root/include/linux/mfd/syscon/atmel-mc.h
blob: 99c56205c410907eb84ed3e9fd31d4472c97be0f (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
/* SPDX-License-Identifier: GPL-2.0+ */
/*
 * Copyright (C) 2005 Ivan Kokshaysky
 * Copyright (C) SAN People
 *
 * Memory Controllers (MC, EBI, SMC, SDRAMC, BFC) - System peripherals
 * registers.
 * Based on AT91RM9200 datasheet revision E.
 */

#ifndef _LINUX_MFD_SYSCON_ATMEL_MC_H_
#define _LINUX_MFD_SYSCON_ATMEL_MC_H_

/* Memory Controller */
#define AT91_MC_RCR			0x00
#define AT91_MC_RCB			BIT(0)

#define AT91_MC_ASR			0x04
#define AT91_MC_UNADD			BIT(0)
#define AT91_MC_MISADD			BIT(1)
#define AT91_MC_ABTSZ			GENMASK(9, 8)
#define AT91_MC_ABTSZ_BYTE		(0 << 8)
#define AT91_MC_ABTSZ_HALFWORD		(1 << 8)
#define AT91_MC_ABTSZ_WORD		(2 << 8)
#define AT91_MC_ABTTYP			GENMASK(11, 10)
#define AT91_MC_ABTTYP_DATAREAD		(0 << 10)
#define AT91_MC_ABTTYP_DATAWRITE	(1 << 10)
#define AT91_MC_ABTTYP_FETCH		(2 << 10)
#define AT91_MC_MST(n)			BIT(16 + (n))
#define AT91_MC_SVMST(n)		BIT(24 + (n))

#define AT91_MC_AASR			0x08

#define AT91_MC_MPR			0x0c
#define AT91_MPR_MSTP(n)		GENMASK(2 + ((x) * 4), ((x) * 4))

/* External Bus Interface (EBI) registers */
#define AT91_MC_EBI_CSA			0x60
#define AT91_MC_EBI_CS(n)		BIT(x)
#define AT91_MC_EBI_NUM_CS		8

#define AT91_MC_EBI_CFGR		0x64
#define AT91_MC_EBI_DBPUC		BIT(0)

/* Static Memory Controller (SMC) registers */
#define AT91_MC_SMC_CSR(n)		(0x70 + ((n) * 4))
#define AT91_MC_SMC_NWS			GENMASK(6, 0)
#define AT91_MC_SMC_NWS_(x)		((x) << 0)
#define AT91_MC_SMC_WSEN		BIT(7)
#define AT91_MC_SMC_TDF			GENMASK(11, 8)
#define AT91_MC_SMC_TDF_(x)		((x) << 8)
#define AT91_MC_SMC_TDF_MAX		0xf
#define AT91_MC_SMC_BAT			BIT(12)
#define AT91_MC_SMC_DBW			GENMASK(14, 13)
#define AT91_MC_SMC_DBW_16		(1 << 13)
#define AT91_MC_SMC_DBW_8		(2 << 13)
#define AT91_MC_SMC_DPR			BIT(15)
#define AT91_MC_SMC_ACSS		GENMASK(17, 16)
#define AT91_MC_SMC_ACSS_(x)		((x) << 16)
#define AT91_MC_SMC_ACSS_MAX		3
#define AT91_MC_SMC_RWSETUP		GENMASK(26, 24)
#define AT91_MC_SMC_RWSETUP_(x)		((x) << 24)
#define AT91_MC_SMC_RWHOLD		GENMASK(30, 28)
#define AT91_MC_SMC_RWHOLD_(x)		((x) << 28)
#define AT91_MC_SMC_RWHOLDSETUP_MAX	7

/* SDRAM Controller registers */
#define AT91_MC_SDRAMC_MR		0x90
#define AT91_MC_SDRAMC_MODE		GENMASK(3, 0)
#define AT91_MC_SDRAMC_MODE_NORMAL	(0 << 0)
#define AT91_MC_SDRAMC_MODE_NOP		(1 << 0)
#define AT91_MC_SDRAMC_MODE_PRECHARGE	(2 << 0)
#define AT91_MC_SDRAMC_MODE_LMR		(3 << 0)
#define AT91_MC_SDRAMC_MODE_REFRESH	(4 << 0)
#define AT91_MC_SDRAMC_DBW_16		BIT(4)

#define AT91_MC_SDRAMC_TR		0x94
#define AT91_MC_SDRAMC_COUNT		GENMASK(11, 0)

#define AT91_MC_SDRAMC_CR		0x98
#define AT91_MC_SDRAMC_NC		GENMASK(1, 0)
#define AT91_MC_SDRAMC_NC_8		(0 << 0)
#define AT91_MC_SDRAMC_NC_9		(1 << 0)
#define AT91_MC_SDRAMC_NC_10		(2 << 0)
#define AT91_MC_SDRAMC_NC_11		(3 << 0)
#define AT91_MC_SDRAMC_NR		GENMASK(3, 2)
#define AT91_MC_SDRAMC_NR_11		(0 << 2)
#define AT91_MC_SDRAMC_NR_12		(1 << 2)
#define AT91_MC_SDRAMC_NR_13		(2 << 2)
#define AT91_MC_SDRAMC_NB		BIT(4)
#define AT91_MC_SDRAMC_NB_2		(0 << 4)
#define AT91_MC_SDRAMC_NB_4		(1 << 4)
#define AT91_MC_SDRAMC_CAS		GENMASK(6, 5)
#define AT91_MC_SDRAMC_CAS_2		(2 << 5)
#define AT91_MC_SDRAMC_TWR		GENMASK(10,  7)
#define AT91_MC_SDRAMC_TRC		GENMASK(14, 11)
#define AT91_MC_SDRAMC_TRP		GENMASK(18, 15)
#define AT91_MC_SDRAMC_TRCD		GENMASK(22, 19)
#define AT91_MC_SDRAMC_TRAS		GENMASK(26, 23)
#define AT91_MC_SDRAMC_TXSR		GENMASK(30, 27)

#define AT91_MC_SDRAMC_SRR		0x9c
#define AT91_MC_SDRAMC_SRCB		BIT(0)

#define AT91_MC_SDRAMC_LPR		0xa0
#define AT91_MC_SDRAMC_LPCB		BIT(0)

#define AT91_MC_SDRAMC_IER		0xa4
#define AT91_MC_SDRAMC_IDR		0xa8
#define AT91_MC_SDRAMC_IMR		0xac
#define AT91_MC_SDRAMC_ISR		0xb0
#define AT91_MC_SDRAMC_RES		BIT(0)

/* Burst Flash Controller register */
#define AT91_MC_BFC_MR			0xc0
#define AT91_MC_BFC_BFCOM		GENMASK(1, 0)
#define AT91_MC_BFC_BFCOM_DISABLED	(0 << 0)
#define AT91_MC_BFC_BFCOM_ASYNC		(1 << 0)
#define AT91_MC_BFC_BFCOM_BURST		(2 << 0)
#define AT91_MC_BFC_BFCC		GENMASK(3, 2)
#define AT91_MC_BFC_BFCC_MCK		(1 << 2)
#define AT91_MC_BFC_BFCC_DIV2		(2 << 2)
#define AT91_MC_BFC_BFCC_DIV4		(3 << 2)
#define AT91_MC_BFC_AVL			GENMASK(7,  4)
#define AT91_MC_BFC_PAGES		GENMASK(10, 8)
#define AT91_MC_BFC_PAGES_NO_PAGE	(0 << 8)
#define AT91_MC_BFC_PAGES_16		(1 << 8)
#define AT91_MC_BFC_PAGES_32		(2 << 8)
#define AT91_MC_BFC_PAGES_64		(3 << 8)
#define AT91_MC_BFC_PAGES_128		(4 << 8)
#define AT91_MC_BFC_PAGES_256		(5 << 8)
#define AT91_MC_BFC_PAGES_512		(6 << 8)
#define AT91_MC_BFC_PAGES_1024		(7 << 8)
#define AT91_MC_BFC_OEL			GENMASK(13, 12)
#define AT91_MC_BFC_BAAEN		BIT(16)
#define AT91_MC_BFC_BFOEH		BIT(17)
#define AT91_MC_BFC_MUXEN		BIT(18)
#define AT91_MC_BFC_RDYEN		BIT(19)

#endif /* _LINUX_MFD_SYSCON_ATMEL_MC_H_ */