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
|