aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/neta
diff options
context:
space:
mode:
authorWojciech Macek <wma@FreeBSD.org>2021-09-14 07:11:15 +0000
committerWojciech Macek <wma@FreeBSD.org>2021-09-21 07:38:38 +0000
commit5572fda3a2f305fc4fb4c853d8d578c13d59c1a5 (patch)
treec77d9500a4f499e5d47fb1d6c3c23fe3ca6194da /sys/dev/neta
parent44fb3c695f5e672ec00bdef0fa0f13793e6269a1 (diff)
Diffstat (limited to 'sys/dev/neta')
-rw-r--r--sys/dev/neta/if_mvneta.c45
-rw-r--r--sys/dev/neta/if_mvneta_fdt.c44
-rw-r--r--sys/dev/neta/if_mvnetavar.h1
3 files changed, 50 insertions, 40 deletions
diff --git a/sys/dev/neta/if_mvneta.c b/sys/dev/neta/if_mvneta.c
index 71552bf2c515..fe86f4a5effe 100644
--- a/sys/dev/neta/if_mvneta.c
+++ b/sys/dev/neta/if_mvneta.c
@@ -68,10 +68,6 @@ __FBSDID("$FreeBSD$");
#include <dev/mii/mii.h>
#include <dev/mii/miivar.h>
-#include <dev/ofw/openfirm.h>
-#include <dev/ofw/ofw_bus.h>
-#include <dev/ofw/ofw_bus_subr.h>
-
#include <dev/mdio/mdio.h>
#include <arm/mv/mvvar.h>
@@ -222,11 +218,6 @@ static device_method_t mvneta_methods[] = {
DEVMETHOD_END
};
-static struct ofw_compat_data compat_data[] = {
- { "marvell,armada-3700-neta", true },
- { NULL, false }
-};
-
DEFINE_CLASS_0(mvneta, mvneta_driver, mvneta_methods, sizeof(struct mvneta_softc));
DRIVER_MODULE(miibus, mvneta, miibus_driver, miibus_devclass, 0, 0);
@@ -234,7 +225,7 @@ DRIVER_MODULE(mdio, mvneta, mdio_driver, mdio_devclass, 0, 0);
MODULE_DEPEND(mvneta, mdio, 1, 1, 1);
MODULE_DEPEND(mvneta, ether, 1, 1, 1);
MODULE_DEPEND(mvneta, miibus, 1, 1, 1);
-SIMPLEBUS_PNP_INFO(compat_data);
+MODULE_DEPEND(mvneta, mvxpbm, 1, 1, 1);
/*
* List of MIB register and names
@@ -419,39 +410,13 @@ mvneta_get_mac_address(struct mvneta_softc *sc, uint8_t *addr)
}
STATIC boolean_t
-mvneta_find_ethernet_prop_switch(phandle_t ethernet, phandle_t node)
-{
- boolean_t ret;
- phandle_t child, switch_eth_handle, switch_eth;
-
- for (child = OF_child(node); child != 0; child = OF_peer(child)) {
- if (OF_getencprop(child, "ethernet", (void*)&switch_eth_handle,
- sizeof(switch_eth_handle)) > 0) {
- if (switch_eth_handle > 0) {
- switch_eth = OF_node_from_xref(
- switch_eth_handle);
-
- if (switch_eth == ethernet)
- return (true);
- }
- }
-
- ret = mvneta_find_ethernet_prop_switch(ethernet, child);
- if (ret != 0)
- return (ret);
- }
-
- return (false);
-}
-
-STATIC boolean_t
mvneta_has_switch(device_t self)
{
- phandle_t node;
-
- node = ofw_bus_get_node(self);
+#ifdef FDT
+ return (mvneta_has_switch_fdt(self));
+#endif
- return mvneta_find_ethernet_prop_switch(node, OF_finddevice("/"));
+ return (false);
}
STATIC int
diff --git a/sys/dev/neta/if_mvneta_fdt.c b/sys/dev/neta/if_mvneta_fdt.c
index df7840845fcd..bedf4b253a45 100644
--- a/sys/dev/neta/if_mvneta_fdt.c
+++ b/sys/dev/neta/if_mvneta_fdt.c
@@ -58,6 +58,12 @@ __FBSDID("$FreeBSD$");
#include "if_mvnetareg.h"
#include "if_mvnetavar.h"
+#ifdef MVNETA_DEBUG
+#define STATIC /* nothing */
+#else
+#define STATIC static
+#endif
+
#define PHY_MODE_MAXLEN 10
#define INBAND_STATUS_MAXLEN 16
@@ -89,6 +95,8 @@ static struct ofw_compat_data compat_data[] = {
{NULL, false}
};
+SIMPLEBUS_PNP_INFO(compat_data);
+
static int
mvneta_fdt_probe(device_t dev)
{
@@ -250,3 +258,39 @@ mvneta_fdt_mac_address(struct mvneta_softc *sc, uint8_t *addr)
return (0);
}
+
+STATIC boolean_t
+mvneta_find_ethernet_prop_switch(phandle_t ethernet, phandle_t node)
+{
+ boolean_t ret;
+ phandle_t child, switch_eth_handle, switch_eth;
+
+ for (child = OF_child(node); child != 0; child = OF_peer(child)) {
+ if (OF_getencprop(child, "ethernet", (void*)&switch_eth_handle,
+ sizeof(switch_eth_handle)) > 0) {
+ if (switch_eth_handle > 0) {
+ switch_eth = OF_node_from_xref(
+ switch_eth_handle);
+
+ if (switch_eth == ethernet)
+ return (true);
+ }
+ }
+
+ ret = mvneta_find_ethernet_prop_switch(ethernet, child);
+ if (ret != 0)
+ return (ret);
+ }
+
+ return (false);
+}
+
+boolean_t
+mvneta_has_switch_fdt(device_t self)
+{
+ phandle_t node;
+
+ node = ofw_bus_get_node(self);
+
+ return mvneta_find_ethernet_prop_switch(node, OF_finddevice("/"));
+}
diff --git a/sys/dev/neta/if_mvnetavar.h b/sys/dev/neta/if_mvnetavar.h
index 00bfd1f0848c..0e6cf7829197 100644
--- a/sys/dev/neta/if_mvnetavar.h
+++ b/sys/dev/neta/if_mvnetavar.h
@@ -321,6 +321,7 @@ struct mvneta_softc {
int mvneta_attach(device_t);
#ifdef FDT
+boolean_t mvneta_has_switch_fdt(device_t);
int mvneta_fdt_mac_address(struct mvneta_softc *, uint8_t *);
#endif