summaryrefslogtreecommitdiff
path: root/sys/dev/fdt/sunxireg.h
blob: 83426392517c4c15c21c48963e578b2c2a6c2325 (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
/*	$OpenBSD: sunxireg.h,v 1.1 2017/01/21 08:26:49 patrick Exp $	*/
/*
 * Copyright (c) 2013 Artturi Alm
 *
 * Permission to use, copy, modify, and distribute this software for any
 * purpose with or without fee is hereby granted, provided that the above
 * copyright notice and this permission notice appear in all copies.
 *
 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 */

#define SXIREAD1(sc, reg)						\
	(bus_space_read_1((sc)->sc_iot, (sc)->sc_ioh, (reg)))
#define SXIWRITE1(sc, reg, val)						\
	bus_space_write_1((sc)->sc_iot, (sc)->sc_ioh, (reg), (val))
#define SXISET1(sc, reg, bits)						\
	SXIWRITE1((sc), (reg), SXIREAD1((sc), (reg)) | (bits))
#define SXICLR1(sc, reg, bits)						\
	SXIWRITE1((sc), (reg), SXIREAD1((sc), (reg)) & ~(bits))
#define	SXICMS1(sc, reg, mask, bits)					\
	SXIWRITE1((sc), (reg), (SXIREAD1((sc), (reg)) & ~(mask)) | (bits))

#define SXIREAD4(sc, reg)						\
	(bus_space_read_4((sc)->sc_iot, (sc)->sc_ioh, (reg)))
#define SXIWRITE4(sc, reg, val)						\
	bus_space_write_4((sc)->sc_iot, (sc)->sc_ioh, (reg), (val))
#define SXISET4(sc, reg, bits)						\
	SXIWRITE4((sc), (reg), SXIREAD4((sc), (reg)) | (bits))
#define SXICLR4(sc, reg, bits)						\
	SXIWRITE4((sc), (reg), SXIREAD4((sc), (reg)) & ~(bits))
#define	SXICMS4(sc, reg, mask, bits)					\
	SXIWRITE4((sc), (reg), (SXIREAD4((sc), (reg)) & ~(mask)) | (bits))

#define	TIMER0_FREQUENCY	(24000000)
#define	TIMER1_FREQUENCY	(24000000)
#define	TIMER2_FREQUENCY	(24000000)
#define	COUNTER_FREQUENCY	(24000000)

/* SRAM Controller / System Control */
#define	SYSCTRL_ADDR		0x01c00000
#define	SYSCTRL_SIZE		0x1000

#define	DMAC_ADDR		0x01c02000
#define	DMAC_SIZE		0x1000
#define	DMAC_IRQ		27

#define	SDMMC0_ADDR		0x01c0f000
#define	SDMMCx_SIZE		0x1000
#define	SDMMC0_IRQ		32

#define	SATA_ADDR		0x01c18000
#define	SATA_SIZE		0x1000
#define	SATA_IRQ		56

#define	TIMER_ADDR		0x01c20c00
#define	TIMERx_SIZE		0x200
#define	TIMER0_IRQ		22
#define	TIMER1_IRQ		23
#define	TIMER2_IRQ		24
#define	STATTIMER_IRQ		TIMER1_IRQ /* XXX */

#define	WDOG_ADDR		0x01c20c90
#define	WDOG_SIZE		0x08
#define	WDOG_IRQ		24

#define	RTC_ADDR		0x01c20d00
#define	RTC_SIZE		0x20

/* Clock Control Module/Unit */
#define	CCMU_ADDR		0x01c20000
#define	CCMU_SIZE		0x400

#define	PIO_ADDR		0x01c20800
#define	PIOx_SIZE		0x400
#define	PIO_IRQ			28

/* Secure ID */
#define SID_ADDR		0x01c23800
#define SID_SIZE		0x400

#define	UARTx_SIZE		0x400
#define	UART0_ADDR		0x01c28000
#define	UART1_ADDR		0x01c28400
#define	UART2_ADDR		0x01c28800
#define	UART3_ADDR		0x01c28c00
#define	UART4_ADDR		0x01c29000
#define	UART5_ADDR		0x01c29400
#define	UART6_ADDR		0x01c29800
#define	UART7_ADDR		0x01c29c00
#define	UART0_IRQ		1
#define	UART1_IRQ		2
#define	UART2_IRQ		3
#define	UART3_IRQ		4
#define	UART4_IRQ		17
#define	UART5_IRQ		18
#define	UART6_IRQ		19
#define	UART7_IRQ		20

#define	USB0_ADDR		0x01c13000 /* usb otg */
#define	USB1_ADDR		0x01c14000 /* first port up from pcb */
#define	USB2_ADDR		0x01c1c000 /* 'top port' == above USB1 */
#define	USBx_SIZE		0x1000
#define	USB0_IRQ		38
#define	USB1_IRQ		39
#define	USB2_IRQ		40

/* Ethernet MAC Controller */
#define	EMAC_ADDR		0x01c0b000
#define	EMAC_SIZE		0x1000
#define	EMAC_IRQ		55
#define	SXIESRAM_ADDR		0x00008000 /* combined area for EMAC fifos */
#define	SXIESRAM_SIZE		0x4000

/* Security System */
#define	SS_ADDR			0x01c15000
#define	SS_SIZE			0x1000
#define	SS_IRQ			54

/* GMAC */
#define	GMAC_ADDR		0x01c50000
#define	GMAC_SIZE		0x10000
#define	GMAC_IRQ		85

/* A1x / Cortex-A8 */
#define	INTC_ADDR		0x01c20400
#define	INTC_SIZE		0x400

/* A20 / Cortex-A7 */
#define	GIC_ADDR		0x01c80000 /* = periphbase */
#define	GIC_SIZE		0x8000
#define	CPUCONFG_ADDR		0x01c25c00 /* not in use */
#define	CPUCONFG_SIZE		0x200
#define	CPUCNTRS_ADDR		0x01c25e00 /* used by sxitimer */
#define	CPUCNTRS_SIZE		0x200