octeon1p_iobus.c revision 1.6 1 1.6 jmcneill /* $NetBSD: octeon1p_iobus.c,v 1.6 2020/08/17 21:25:12 jmcneill Exp $ */
2 1.1 hikaru
3 1.1 hikaru /*
4 1.1 hikaru * Copyright (c) 2007 Internet Initiative Japan, Inc.
5 1.1 hikaru * All rights reserved.
6 1.1 hikaru *
7 1.1 hikaru * Redistribution and use in source and binary forms, with or without
8 1.1 hikaru * modification, are permitted provided that the following conditions
9 1.1 hikaru * are met:
10 1.1 hikaru * 1. Redistributions of source code must retain the above copyright
11 1.1 hikaru * notice, this list of conditions and the following disclaimer.
12 1.1 hikaru * 2. Redistributions in binary form must reproduce the above copyright
13 1.1 hikaru * notice, this list of conditions and the following disclaimer in the
14 1.1 hikaru * documentation and/or other materials provided with the distribution.
15 1.1 hikaru *
16 1.1 hikaru * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
17 1.1 hikaru * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18 1.1 hikaru * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19 1.1 hikaru * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
20 1.1 hikaru * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21 1.1 hikaru * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22 1.1 hikaru * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23 1.1 hikaru * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24 1.1 hikaru * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25 1.1 hikaru * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26 1.1 hikaru * SUCH DAMAGE.
27 1.1 hikaru */
28 1.1 hikaru
29 1.1 hikaru /*
30 1.1 hikaru * Octeon I (CN30XX, CN31XX), Plus (CN50XX) I/O Bus devices
31 1.1 hikaru */
32 1.1 hikaru
33 1.1 hikaru #include <sys/cdefs.h>
34 1.6 jmcneill __KERNEL_RCSID(0, "$NetBSD: octeon1p_iobus.c,v 1.6 2020/08/17 21:25:12 jmcneill Exp $");
35 1.1 hikaru
36 1.1 hikaru #include <sys/param.h>
37 1.1 hikaru #include <sys/systm.h>
38 1.1 hikaru
39 1.1 hikaru #include <sys/bus.h>
40 1.1 hikaru
41 1.1 hikaru #include <mips/cavium/include/iobusvar.h>
42 1.1 hikaru
43 1.1 hikaru /* ---- UART */
44 1.1 hikaru #include <mips/cavium/dev/octeon_uartreg.h>
45 1.4 simonb static const struct iobus_unit iobus_units_octuart[] = {
46 1.1 hikaru {
47 1.1 hikaru .addr = MIO_UART0_BASE
48 1.1 hikaru },
49 1.1 hikaru {
50 1.1 hikaru .addr = MIO_UART1_BASE
51 1.1 hikaru }
52 1.1 hikaru };
53 1.1 hikaru
54 1.4 simonb static const struct iobus_dev iobus_dev_octuart = {
55 1.1 hikaru .name = "com",
56 1.1 hikaru .nunits = 2,
57 1.4 simonb .units = iobus_units_octuart
58 1.1 hikaru };
59 1.1 hikaru
60 1.1 hikaru /* ---- RNM */
61 1.1 hikaru #include <mips/cavium/dev/octeon_rnmreg.h>
62 1.4 simonb static const struct iobus_unit iobus_units_octrnm[] = {
63 1.1 hikaru {
64 1.1 hikaru .addr = RNM_BASE
65 1.1 hikaru }
66 1.1 hikaru };
67 1.1 hikaru
68 1.4 simonb static const struct iobus_dev iobus_dev_octrnm = {
69 1.3 simonb .name = "octrnm",
70 1.6 jmcneill .flags = IOBUS_DEV_FDT,
71 1.1 hikaru .nunits = RNM_NUNITS,
72 1.4 simonb .units = iobus_units_octrnm
73 1.1 hikaru };
74 1.1 hikaru
75 1.1 hikaru /* ---- TWSI */
76 1.1 hikaru #include <mips/cavium/dev/octeon_twsireg.h>
77 1.4 simonb static const struct iobus_unit iobus_units_octtwsi[] = {
78 1.1 hikaru {
79 1.1 hikaru .addr = MIO_TWS_BASE_0
80 1.1 hikaru }
81 1.1 hikaru };
82 1.1 hikaru
83 1.4 simonb static const struct iobus_dev iobus_dev_octtwsi = {
84 1.3 simonb .name = "octtwsi",
85 1.1 hikaru .nunits = MIO_TWS_NUNITS,
86 1.4 simonb .units = iobus_units_octtwsi
87 1.1 hikaru };
88 1.1 hikaru
89 1.1 hikaru /* ---- MPI/SPI */
90 1.1 hikaru #include <mips/cavium/dev/octeon_mpireg.h>
91 1.4 simonb static const struct iobus_unit iobus_units_octmpi[] = {
92 1.1 hikaru {
93 1.1 hikaru .addr = MPI_BASE
94 1.1 hikaru }
95 1.1 hikaru };
96 1.1 hikaru
97 1.4 simonb static const struct iobus_dev iobus_dev_octmpi = {
98 1.3 simonb .name = "octmpi",
99 1.1 hikaru .nunits = MPI_NUNITS,
100 1.4 simonb .units = iobus_units_octmpi
101 1.1 hikaru };
102 1.1 hikaru
103 1.5 simonb /* ---- SMI */
104 1.5 simonb #include <mips/cavium/dev/octeon_smireg.h>
105 1.5 simonb static const struct iobus_unit iobus_units_octsmi[] = {
106 1.5 simonb {
107 1.5 simonb .addr = SMI_BASE
108 1.5 simonb }
109 1.5 simonb };
110 1.5 simonb
111 1.5 simonb static const struct iobus_dev iobus_dev_octsmi = {
112 1.5 simonb .name = "octsmi",
113 1.5 simonb .nunits = SMI_NUNITS,
114 1.5 simonb .units = iobus_units_octsmi
115 1.5 simonb };
116 1.5 simonb
117 1.5 simonb /* ---- PIP */
118 1.5 simonb #include <mips/cavium/dev/octeon_pipreg.h>
119 1.5 simonb static const struct iobus_unit iobus_units_octpip[] = {
120 1.1 hikaru {
121 1.5 simonb .addr = PIP_BASE
122 1.1 hikaru }
123 1.1 hikaru };
124 1.1 hikaru
125 1.5 simonb static const struct iobus_dev iobus_dev_octpip = {
126 1.5 simonb .name = "octpip",
127 1.5 simonb .nunits = 1,
128 1.5 simonb .units = iobus_units_octpip
129 1.1 hikaru };
130 1.1 hikaru
131 1.1 hikaru
132 1.1 hikaru /* ---- USBN */
133 1.1 hikaru #include <mips/cavium/dev/octeon_usbnreg.h>
134 1.4 simonb static const struct iobus_unit iobus_units_octusbn[] = {
135 1.1 hikaru {
136 1.1 hikaru .addr = USBN_BASE
137 1.1 hikaru }
138 1.1 hikaru };
139 1.1 hikaru
140 1.4 simonb static const struct iobus_dev iobus_dev_octusbn = {
141 1.2 hikaru .name = "dwctwo",
142 1.1 hikaru .nunits = USBN_NUNITS,
143 1.4 simonb .units = iobus_units_octusbn
144 1.1 hikaru };
145 1.1 hikaru
146 1.1 hikaru /* ---- global */
147 1.1 hikaru
148 1.1 hikaru const struct iobus_dev * const iobus_devs[] = {
149 1.4 simonb &iobus_dev_octuart,
150 1.4 simonb &iobus_dev_octrnm,
151 1.4 simonb &iobus_dev_octtwsi,
152 1.4 simonb &iobus_dev_octmpi,
153 1.5 simonb &iobus_dev_octsmi,
154 1.5 simonb &iobus_dev_octpip,
155 1.4 simonb &iobus_dev_octusbn,
156 1.1 hikaru };
157 1.1 hikaru
158 1.1 hikaru const size_t iobus_ndevs = __arraycount(iobus_devs);
159