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