aboutsummaryrefslogtreecommitdiff
path: root/include/asm-arm/arch-arm720t/netarm_gen_module.h
blob: 6ab5cc10faf21c2a21ff3b91fd5ce2cc5cf51195 (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
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
/*
 * include/asm-armnommu/arch-netarm/netarm_gen_module.h
 *
 * Copyright (C) 2000, 2001 NETsilicon, Inc.
 * Copyright (C) 2000, 2001 Red Hat, Inc.
 *
 * This software is copyrighted by Red Hat. LICENSEE agrees that
 * it will not delete this copyright notice, trademarks or protective
 * notices from any copy made by LICENSEE.
 *
 * This software is provided "AS-IS" and any express or implied
 * warranties or conditions, including but not limited to any
 * implied warranties of merchantability and fitness for a particular
 * purpose regarding this software. In no event shall Red Hat
 * be liable for any indirect, consequential, or incidental damages,
 * loss of profits or revenue, loss of use or data, or interruption
 * of business, whether the alleged damages are labeled in contract,
 * tort, or indemnity.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 *
 * author(s) : Joe deBlaquiere
 */

#ifndef __NETARM_GEN_MODULE_REGISTERS_H
#define __NETARM_GEN_MODULE_REGISTERS_H

/* GEN unit register offsets */

#define	NETARM_GEN_MODULE_BASE		(0xFFB00000)

#define get_gen_reg_addr(c) ((volatile unsigned int *)(NETARM_GEN_MODULE_BASE + (c)))

#define	NETARM_GEN_SYSTEM_CONTROL	(0x00)
#define	NETARM_GEN_STATUS_CONTROL	(0x04)
#define	NETARM_GEN_PLL_CONTROL		(0x08)
#define	NETARM_GEN_SOFTWARE_SERVICE	(0x0c)

#define	NETARM_GEN_TIMER1_CONTROL	(0x10)
#define	NETARM_GEN_TIMER1_STATUS	(0x14)
#define	NETARM_GEN_TIMER2_CONTROL	(0x18)
#define	NETARM_GEN_TIMER2_STATUS	(0x1c)

#define	NETARM_GEN_PORTA		(0x20)
#define	NETARM_GEN_PORTB		(0x24)
#define	NETARM_GEN_PORTC		(0x28)

#define	NETARM_GEN_INTR_ENABLE		(0x30)
#define	NETARM_GEN_INTR_ENABLE_SET	(0x34)
#define	NETARM_GEN_INTR_ENABLE_CLR	(0x38)
#define	NETARM_GEN_INTR_STATUS_EN	(0x34)
#define	NETARM_GEN_INTR_STATUS_RAW	(0x38)

#define	NETARM_GEN_CACHE_CONTROL1	(0x40)
#define	NETARM_GEN_CACHE_CONTROL2	(0x44)

/* select bitfield definitions */

/* System Control Register ( 0xFFB0_0000 ) */

#define NETARM_GEN_SYS_CFG_LENDIAN	(0x80000000)
#define NETARM_GEN_SYS_CFG_BENDIAN	(0x00000000)

#define NETARM_GEN_SYS_CFG_BUSQRTR	(0x00000000)
#define NETARM_GEN_SYS_CFG_BUSHALF	(0x20000000)
#define NETARM_GEN_SYS_CFG_BUSFULL	(0x40000000)

#define NETARM_GEN_SYS_CFG_BCLK_DISABLE	(0x10000000)

#define NETARM_GEN_SYS_CFG_WDOG_EN	(0x01000000)
#define NETARM_GEN_SYS_CFG_WDOG_IRQ	(0x00000000)
#define NETARM_GEN_SYS_CFG_WDOG_FIQ	(0x00400000)
#define NETARM_GEN_SYS_CFG_WDOG_RST	(0x00800000)
#define NETARM_GEN_SYS_CFG_WDOG_24	(0x00000000)
#define NETARM_GEN_SYS_CFG_WDOG_26	(0x00100000)
#define NETARM_GEN_SYS_CFG_WDOG_28	(0x00200000)
#define NETARM_GEN_SYS_CFG_WDOG_29	(0x00300000)

#define NETARM_GEN_SYS_CFG_BUSMON_EN	(0x00040000)
#define NETARM_GEN_SYS_CFG_BUSMON_128	(0x00000000)
#define NETARM_GEN_SYS_CFG_BUSMON_64	(0x00010000)
#define NETARM_GEN_SYS_CFG_BUSMON_32	(0x00020000)
#define NETARM_GEN_SYS_CFG_BUSMON_16	(0x00030000)

#define NETARM_GEN_SYS_CFG_USER_EN	(0x00008000)
#define NETARM_GEN_SYS_CFG_BUSER_EN	(0x00004000)

#define NETARM_GEN_SYS_CFG_BUSARB_INT	(0x00002000)
#define NETARM_GEN_SYS_CFG_BUSARB_EXT	(0x00000000)

#define NETARM_GEN_SYS_CFG_DMATST	(0x00001000)

#define NETARM_GEN_SYS_CFG_TEALAST	(0x00000800)

#define NETARM_GEN_SYS_CFG_ALIGN_ABORT	(0x00000400)

#define NETARM_GEN_SYS_CFG_CACHE_EN	(0x00000200)

#define NETARM_GEN_SYS_CFG_WRI_BUF_EN	(0x00000100)

#define NETARM_GEN_SYS_CFG_CACHE_INIT	(0x00000080)

/* PLL Control Register ( 0xFFB0_0008 ) */

#define NETARM_GEN_PLL_CTL_PLLCNT_MASK	(0x0F000000)

#define NETARM_GEN_PLL_CTL_PLLCNT(x)	(((x)<<24) & \
                                         NETARM_GEN_PLL_CTL_PLLCNT_MASK)

/* Defaults for POLTST and ICP Fields in PLL CTL */
#define NETARM_GEN_PLL_CTL_OUTDIV(x)    (x)
#define NETARM_GEN_PLL_CTL_INDIV(x)     ((x)<<6)
#define NETARM_GEN_PLL_CTL_POLTST_DEF   (0x00000E00)
#define NETARM_GEN_PLL_CTL_ICP_DEF      (0x0000003C)


/* Software Service Register ( 0xFFB0_000C ) */

#define	NETARM_GEN_SW_SVC_RESETA	(0x123)
#define	NETARM_GEN_SW_SVC_RESETB	(0x321)

/* PORT C Register ( 0xFFB0_0028 ) */

#define	NETARM_GEN_PORT_MODE(x)		(((x)<<24) + (0xFF00))
#define	NETARM_GEN_PORT_DIR(x)		(((x)<<16) + (0xFF00))

/* Timer Registers ( 0xFFB0_0010 0xFFB0_0018 ) */

#define	NETARM_GEN_TCTL_ENABLE		(0x80000000)
#define	NETARM_GEN_TCTL_INT_ENABLE	(0x40000000)

#define	NETARM_GEN_TCTL_USE_IRQ		(0x00000000)
#define	NETARM_GEN_TCTL_USE_FIQ		(0x20000000)

#define	NETARM_GEN_TCTL_USE_PRESCALE	(0x10000000)
#define	NETARM_GEN_TCTL_INIT_COUNT(x)	((x) & 0x1FF)

#define	NETARM_GEN_TSTAT_INTPEN		(0x40000000)
#define	NETARM_GEN_TSTAT_CTC_MASK	(0x000001FF)

/* prescale to msecs conversion */

#define	NETARM_GEN_TIMER_MSEC_P(x)	( ( ( 20480 ) * ( 0x1FF - ( (x) &	    \
                                            NETARM_GEN_TSTAT_CTC_MASK ) +   \
					    1 ) ) / (NETARM_XTAL_FREQ/1000) )

#define	NETARM_GEN_TIMER_SET_HZ(x)	( ( ((NETARM_XTAL_FREQ/(20480*(x)))-1) & \
					  NETARM_GEN_TSTAT_CTC_MASK ) | \
					  NETARM_GEN_TCTL_USE_PRESCALE )

#if 0
/* ifdef CONFIG_NETARM_PLL_BYPASS else */
#error test
#define	NETARM_GEN_TIMER_MSEC_P(x)	( ( ( 4096 ) * ( 0x1FF - ( (x) &    \
                                            NETARM_GEN_TSTAT_CTC_MASK ) +   \
					    1 ) ) / (NETARM_XTAL_FREQ/1000) )

#define	NETARM_GEN_TIMER_SET_HZ(x)	( ( ((NETARM_XTAL_FREQ/(4096*(x)))-1) & \
					  NETARM_GEN_TSTAT_CTC_MASK ) | \
					  NETARM_GEN_TCTL_USE_PRESCALE )
#endif

#endif