1 /*-
2 * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
3 *
4 * Copyright (c) 2022 Adrian Chadd <adrian@FreeBSD.org>.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:
9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * 2. Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution.
14 *
15 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
16 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
19 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
21 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25 * SUCH DAMAGE.
26 */
27
28 #include <dt-bindings/net/qcom-qca807x.h>
29
30 / {
31 soc {
32 mdio: mdio@90000 {
33 #address-cells = <1>;
34 #size-cells = <0>;
35 compatible = "qcom,ipq4019-mdio";
36 reg = <0x90000 0x64>;
37 status = "disabled";
38 };
39
40 ess-switch@c000000 {
41 compatible = "qcom,ess-switch";
42 reg = <0xc000000 0x80000>;
43 resets = <&gcc ESS_RESET>;
44 reset-names = "ess_rst";
45 clocks = <&gcc GCC_ESS_CLK>;
46 clock-names = "ess_clk";
47
48 /*
49 * The port bitmap describing which ports are CPU
50 * facing. It's almost always going to be port 0
51 * (ie bit 0.)
52 */
53 switch_cpu_bmp = <0x1>;
54
55 /*
56 * The port bitmap describing which ports are in
57 * the LAN group. This defaults to VLAN 1 in the
58 * switch driver.
59 */
60 switch_lan_bmp = <0x1e>;
61
62 /*
63 * The port bitmap describing which ports are
64 * in the WAN group. This defaults to VLAN 2
65 * in the switch driver.
66 */
67 switch_wan_bmp = <0x20>;
68
69 /*
70 * Which interface to use to talk to an external
71 * PHY. In this instance we default to
72 * PORT_WRAPPER_PSGMII as we're defaulting to
73 * a PSGMII (well, Qualcomm SGMII) facing a 5
74 * port Malibu PHY.
75 */
76 switch_mac_mode = <0>;
77 status = "disabled";
78 };
79
80 ess-psgmii@98000 {
81 compatible = "qcom,ess-psgmii";
82 reg = <0x98000 0x800>;
83 status = "disabled";
84 };
85
86 edma@c080000 {
87 compatible = "qcom,ess-edma";
88 reg = <0xc080000 0x8000>;
89
90 /*
91 * This is a hold-over from the Qualcomm Linux driver
92 * and controls whether to allocate a full PAGE_SIZE
93 * page entry per RX buffer or not.
94 *
95 * For now it's parsed but ignored by FreeBSD.
96 */
97 qcom,page-mode = <0>;
98
99 /*
100 * This sets the size of the RX head buffer.
101 *
102 * If qcom,page_mode is set to 1 then this is ignored.
103 *
104 * Again, this is currently parsed but ignored by
105 * FreeBSD.
106 */
107 qcom,rx_head_buf_size = <1540>;
108
109 /*
110 * These two fields control whether the GMAC driver
111 * should be polling the MDIO bus to determine if
112 * a gmac interface should be considered link
113 * up or down.
114 *
115 * It currently isn't supported by FreeBSD.
116 */
117 qcom,mdio_supported;
118 qcom,poll_required = <1>;
119
120 /*
121 * How many virtual ethernet interfaces to create.
122 * The interfaces are created based on a port bitmap
123 * and default VLAN ID.
124 *
125 * These would do well to map to the default lan/wan
126 * bit map fields in the ESS switch configuration
127 * above.
128 */
129 qcom,num_gmac = <2>;
130
131 /*
132 * Support up to 16 TX and 16 RX interrupts.
133 * For now the hardware only uses 16 TX and 8
134 * RX interrupts/queues, but for some reason
135 * they're all allocated just in case.
136 */
137 interrupts = <0 65 IRQ_TYPE_EDGE_RISING
138 0 66 IRQ_TYPE_EDGE_RISING
139 0 67 IRQ_TYPE_EDGE_RISING
140 0 68 IRQ_TYPE_EDGE_RISING
141 0 69 IRQ_TYPE_EDGE_RISING
142 0 70 IRQ_TYPE_EDGE_RISING
143 0 71 IRQ_TYPE_EDGE_RISING
144 0 72 IRQ_TYPE_EDGE_RISING
145 0 73 IRQ_TYPE_EDGE_RISING
146 0 74 IRQ_TYPE_EDGE_RISING
147 0 75 IRQ_TYPE_EDGE_RISING
148 0 76 IRQ_TYPE_EDGE_RISING
149 0 77 IRQ_TYPE_EDGE_RISING
150 0 78 IRQ_TYPE_EDGE_RISING
151 0 79 IRQ_TYPE_EDGE_RISING
152 0 80 IRQ_TYPE_EDGE_RISING
153 0 240 IRQ_TYPE_EDGE_RISING
154 0 241 IRQ_TYPE_EDGE_RISING
155 0 242 IRQ_TYPE_EDGE_RISING
156 0 243 IRQ_TYPE_EDGE_RISING
157 0 244 IRQ_TYPE_EDGE_RISING
158 0 245 IRQ_TYPE_EDGE_RISING
159 0 246 IRQ_TYPE_EDGE_RISING
160 0 247 IRQ_TYPE_EDGE_RISING
161 0 248 IRQ_TYPE_EDGE_RISING
162 0 249 IRQ_TYPE_EDGE_RISING
163 0 250 IRQ_TYPE_EDGE_RISING
164 0 251 IRQ_TYPE_EDGE_RISING
165 0 252 IRQ_TYPE_EDGE_RISING
166 0 253 IRQ_TYPE_EDGE_RISING
167 0 254 IRQ_TYPE_EDGE_RISING
168 0 255 IRQ_TYPE_EDGE_RISING>;
169
170 status = "disabled";
171
172 /*
173 * This is the LAN gmac interface.
174 */
175 gmac0: gmac0 {
176 /*
177 * Default to an all-zero MAC address for
178 * this interface. Ideally bootloaders will
179 * override this in a DTS overlay but that
180 * doesn't happen all that often.
181 *
182 * If the driver finds an all-zero MAC address
183 * and no platform hint / routine for fetching
184 * it from flash it will simply choose a
185 * random MAC address.
186 *
187 * Note this isn't programmed into the
188 * hardware! The ethernet switch filters what
189 * is visible to the ethernet MAC through
190 * normal ethernet switch MAC address learning
191 * rules.
192 */
193 local-mac-address = [00 00 00 00 00 00];
194
195 /*
196 * The VLAN tag and port map. Yes, they used
197 * the same entry for both fields. The first
198 * integer is the default VLAN ID, and second
199 * field is the port map.
200 *
201 * When 802.1q VLANs are not used the switch
202 * will simply use the portmap to limit which
203 * ports can transmit the frames. It's used
204 * for sending broadcast/multicast or flooded
205 * traffic.
206 *
207 * When 802.1q VLANs are used then it's both
208 * the portmap and the 802.1q tag port
209 * membership that define which ports can
210 * be flooded as above.
211 */
212 vlan_tag = <1 0x1f>;
213 };
214
215 /*
216 * This is the WAN gmac interface.
217 */
218 gmac1: gmac1 {
219 local-mac-address = [00 00 00 00 00 00];
220
221 /*
222 * Whether to poll the MDIO port / PHY for
223 * link status or not.
224 *
225 * This is how the interface would get a
226 * logical link status for WAN events to tie
227 * things like dhclient to.
228 *
229 * For now it's unsupported in FreeBSD.
230 */
231 qcom,phy_mdio_addr = <4>;
232 qcom,poll_required = <1>;
233
234 vlan_tag = <2 0x20>;
235 };
236 };
237 };
238 };
Cache object: 3310484e4251056e921268e4d4908165
|