aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/dpaa/if_dtsec_fdt.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/dpaa/if_dtsec_fdt.c')
-rw-r--r--sys/dev/dpaa/if_dtsec_fdt.c55
1 files changed, 14 insertions, 41 deletions
diff --git a/sys/dev/dpaa/if_dtsec_fdt.c b/sys/dev/dpaa/if_dtsec_fdt.c
index 441ff9c96c50..85b1998015d5 100644
--- a/sys/dev/dpaa/if_dtsec_fdt.c
+++ b/sys/dev/dpaa/if_dtsec_fdt.c
@@ -48,9 +48,7 @@
#include "miibus_if.h"
-#include <contrib/ncsw/inc/Peripherals/fm_port_ext.h>
-#include <contrib/ncsw/inc/xx_ext.h>
-
+#include "dpaa_eth.h"
#include "if_dtsec.h"
#include "fman.h"
@@ -123,7 +121,7 @@ dtsec_fdt_attach(device_t dev)
enet_node = ofw_bus_get_node(dev);
if (OF_getprop(enet_node, "local-mac-address",
- (void *)sc->sc_mac_addr, 6) == -1) {
+ (void *)sc->sc_base.sc_mac_addr, 6) == -1) {
device_printf(dev,
"Could not load local-mac-addr property from DTS\n");
return (ENXIO);
@@ -135,17 +133,17 @@ dtsec_fdt_attach(device_t dev)
else if (ofw_bus_is_compatible(dev, "fsl,fman-xgec") != 0)
sc->sc_eth_dev_type = ETH_10GSEC;
else
- return(ENXIO);
+ return (ENXIO);
/* Get PHY address */
- if (OF_getprop(enet_node, "phy-handle", (void *)&phy_node,
+ if (OF_getprop(enet_node, "tbi-handle", (void *)&phy_node,
sizeof(phy_node)) <= 0)
return (ENXIO);
phy_node = OF_node_from_xref(phy_node);
- if (OF_getprop(phy_node, "reg", (void *)&sc->sc_phy_addr,
- sizeof(sc->sc_phy_addr)) <= 0)
+ if (OF_getprop(phy_node, "reg", (void *)&sc->sc_base.sc_phy_addr,
+ sizeof(sc->sc_base.sc_phy_addr)) <= 0)
return (ENXIO);
phy_dev = OF_device_from_xref(OF_parent(phy_node));
@@ -155,12 +153,12 @@ dtsec_fdt_attach(device_t dev)
return (ENXIO);
}
- sc->sc_mdio = phy_dev;
+ sc->sc_base.sc_mdio = phy_dev;
/* Get MAC memory offset in SoC */
rid = 0;
- sc->sc_mem = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &rid, RF_ACTIVE);
- if (sc->sc_mem == NULL)
+ sc->sc_base.sc_mem = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &rid, RF_ACTIVE);
+ if (sc->sc_base.sc_mem == NULL)
return (ENXIO);
/* Get PHY connection type */
@@ -168,20 +166,10 @@ dtsec_fdt_attach(device_t dev)
sizeof(phy_type)) <= 0)
return (ENXIO);
- if (!strcmp(phy_type, "sgmii"))
- sc->sc_mac_enet_mode = e_ENET_MODE_SGMII_1000;
- else if (!strcmp(phy_type, "rgmii"))
- sc->sc_mac_enet_mode = e_ENET_MODE_RGMII_1000;
- else if (!strcmp(phy_type, "xgmii"))
- /* We set 10 Gigabit mode flag however we don't support it */
- sc->sc_mac_enet_mode = e_ENET_MODE_XGMII_10000;
- else
- return (ENXIO);
-
if (OF_getencprop(enet_node, "cell-index",
(void *)&mac_id, sizeof(mac_id)) <= 0)
return (ENXIO);
- sc->sc_eth_id = mac_id;
+ sc->sc_base.sc_eth_id = mac_id;
/* Get RX/TX port handles */
if (OF_getprop(enet_node, "fsl,fman-ports", (void *)fman_rxtx_node,
@@ -194,32 +182,17 @@ dtsec_fdt_attach(device_t dev)
if (fman_rxtx_node[1] == 0)
return (ENXIO);
- fman_rxtx_node[0] = OF_instance_to_package(fman_rxtx_node[0]);
- fman_rxtx_node[1] = OF_instance_to_package(fman_rxtx_node[1]);
-
- if (ofw_bus_node_is_compatible(fman_rxtx_node[0],
- "fsl,fman-v2-port-rx") == 0)
- return (ENXIO);
-
- if (ofw_bus_node_is_compatible(fman_rxtx_node[1],
- "fsl,fman-v2-port-tx") == 0)
- return (ENXIO);
-
- /* Get RX port HW id */
- if (OF_getprop(fman_rxtx_node[0], "reg", (void *)&sc->sc_port_rx_hw_id,
- sizeof(sc->sc_port_rx_hw_id)) <= 0)
- return (ENXIO);
+ sc->sc_base.sc_rx_port = OF_device_from_xref(fman_rxtx_node[0]);
+ sc->sc_base.sc_tx_port = OF_device_from_xref(fman_rxtx_node[1]);
- /* Get TX port HW id */
- if (OF_getprop(fman_rxtx_node[1], "reg", (void *)&sc->sc_port_tx_hw_id,
- sizeof(sc->sc_port_tx_hw_id)) <= 0)
+ if (sc->sc_base.sc_rx_port == NULL || sc->sc_base.sc_tx_port == NULL)
return (ENXIO);
if (OF_getprop(fman_rxtx_node[1], "cell-index", &fman_tx_cell,
sizeof(fman_tx_cell)) <= 0)
return (ENXIO);
/* Get QMan channel */
- sc->sc_port_tx_qman_chan = fman_qman_channel_id(device_get_parent(dev),
+ sc->sc_base.sc_port_tx_qman_chan = fman_qman_channel_id(device_get_parent(dev),
fman_tx_cell);
return (dtsec_attach(dev));