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