diff options
Diffstat (limited to 'sys/dev/dpaa/if_dtsec_fdt.c')
| -rw-r--r-- | sys/dev/dpaa/if_dtsec_fdt.c | 55 |
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)); |
