Lines Matching +full:rx +full:- +full:port +full:- +full:mapping
1 /*-
2 * SPDX-License-Identifier: BSD-2-Clause
4 * Copyright (c) 2011-2012 Stefan Bethke.
76 * + The switch port is GMII/RGMII; in ar8316_hw_setup()
77 * + Port 4 is either connected to the CPU or to the internal switch. in ar8316_hw_setup()
79 if (sc->is_rgmii && sc->phy4cpu) { in ar8316_hw_setup()
80 arswitch_writereg(sc->sc_dev, AR8X16_REG_MODE, in ar8316_hw_setup()
82 device_printf(sc->sc_dev, in ar8316_hw_setup()
83 "%s: MAC port == RGMII, port 4 = dedicated PHY\n", in ar8316_hw_setup()
85 } else if (sc->is_rgmii) { in ar8316_hw_setup()
86 arswitch_writereg(sc->sc_dev, AR8X16_REG_MODE, in ar8316_hw_setup()
88 device_printf(sc->sc_dev, in ar8316_hw_setup()
89 "%s: MAC port == RGMII, port 4 = switch port\n", in ar8316_hw_setup()
91 } else if (sc->is_gmii) { in ar8316_hw_setup()
92 arswitch_writereg(sc->sc_dev, AR8X16_REG_MODE, in ar8316_hw_setup()
94 device_printf(sc->sc_dev, "%s: MAC port == GMII\n", __func__); in ar8316_hw_setup()
96 device_printf(sc->sc_dev, "%s: unknown switch PHY config\n", in ar8316_hw_setup()
104 * If port 4 is RGMII, force workaround in ar8316_hw_setup()
106 if (sc->is_rgmii && sc->phy4cpu) { in ar8316_hw_setup()
107 device_printf(sc->sc_dev, in ar8316_hw_setup()
108 "%s: port 4 RGMII workaround\n", in ar8316_hw_setup()
112 arswitch_writedbg(sc->sc_dev, 4, 0x12, 0x480c); in ar8316_hw_setup()
113 /* rx delay */ in ar8316_hw_setup()
114 arswitch_writedbg(sc->sc_dev, 4, 0x0, 0x824e); in ar8316_hw_setup()
116 arswitch_writedbg(sc->sc_dev, 4, 0x5, 0x3d47); in ar8316_hw_setup()
132 arswitch_writereg(sc->sc_dev, 0x38, AR8X16_MAGIC); in ar8316_hw_global_setup()
134 /* Enable CPU port and disable mirror port. */ in ar8316_hw_global_setup()
135 arswitch_writereg(sc->sc_dev, AR8X16_REG_CPU_PORT, in ar8316_hw_global_setup()
138 /* Setup TAG priority mapping. */ in ar8316_hw_global_setup()
139 arswitch_writereg(sc->sc_dev, AR8X16_REG_TAG_PRIO, 0xfa50); in ar8316_hw_global_setup()
143 * broadcasts to the cpu port. in ar8316_hw_global_setup()
145 arswitch_writereg(sc->sc_dev, AR8X16_REG_FLOOD_MASK, in ar8316_hw_global_setup()
149 arswitch_modifyreg(sc->sc_dev, AR8X16_REG_GLOBAL_CTRL, in ar8316_hw_global_setup()
153 arswitch_modifyreg(sc->sc_dev, AR8X16_REG_SERVICE_TAG, in ar8316_hw_global_setup()
164 sc->hal.arswitch_hw_setup = ar8316_hw_setup; in ar8316_attach()
165 sc->hal.arswitch_hw_global_setup = ar8316_hw_global_setup; in ar8316_attach()
168 sc->info.es_vlan_caps = ETHERSWITCH_VLAN_DOT1Q | in ar8316_attach()
170 sc->info.es_nvlangroups = AR8X16_MAX_VLANS; in ar8316_attach()