Index: arch/mips/cavium/dev/if_cnmac.c =================================================================== RCS file: /cvsroot/src/sys/arch/mips/cavium/dev/if_cnmac.c,v retrieving revision 1.17 diff -p -u -r1.17 if_cnmac.c --- arch/mips/cavium/dev/if_cnmac.c 18 Feb 2020 15:00:42 -0000 1.17 +++ arch/mips/cavium/dev/if_cnmac.c 24 Apr 2020 09:20:56 -0000 @@ -292,6 +292,8 @@ octeon_eth_attach(device_t parent, devic struct octeon_eth_softc *sc = device_private(self); struct octeon_gmx_attach_args *ga = aux; struct ifnet *ifp = &sc->sc_ethercom.ec_if; + prop_dictionary_t dict; + prop_object_t clk; uint8_t enaddr[ETHER_ADDR_LEN]; sc->sc_dev = self; @@ -399,6 +401,15 @@ octeon_eth_attach(device_t parent, devic OCTEON_EVCNT_ATTACH_EVCNTS(sc, octeon_evcnt_entries, device_xname(sc->sc_dev)); + + dict = device_properties(sc->sc_gmx->sc_dev); + + clk = prop_dictionary_get(dict, "rgmii-tx"); + KASSERT(clk != NULL); + sc->sc_gmx_port->sc_clk_tx_setting = prop_number_integer_value(clk); + clk = prop_dictionary_get(dict, "rgmii-rx"); + KASSERT(clk != NULL); + sc->sc_gmx_port->sc_clk_rx_setting = prop_number_integer_value(clk); } /* ---- submodules */ Index: arch/mips/cavium/dev/octeon_gmx.c =================================================================== RCS file: /cvsroot/src/sys/arch/mips/cavium/dev/octeon_gmx.c,v retrieving revision 1.8 diff -p -u -r1.8 octeon_gmx.c --- arch/mips/cavium/dev/octeon_gmx.c 29 Jan 2020 05:30:14 -0000 1.8 +++ arch/mips/cavium/dev/octeon_gmx.c 24 Apr 2020 09:20:56 -0000 @@ -847,9 +847,6 @@ octeon_gmx_rgmii_speed_speed(struct octe static int octeon_gmx_rgmii_timing(struct octeon_gmx_port_softc *sc) { - prop_dictionary_t dict = device_properties(sc->sc_port_gmx->sc_dev); - prop_object_t clk; - int clk_tx_setting, clk_rx_setting; uint64_t rx_frm_ctl; /* RGMII TX Threshold Registers @@ -887,14 +884,9 @@ octeon_gmx_rgmii_timing(struct octeon_gm /* RGMII TX Clock-Delay Registers * Delay setting to place n TXC (RGMII transmit clock) delay line. */ - clk = prop_dictionary_get(dict, "rgmii-tx"); - KASSERT(clk != NULL); - clk_tx_setting = prop_number_integer_value(clk); - clk = prop_dictionary_get(dict, "rgmii-rx"); - KASSERT(clk != NULL); - clk_rx_setting = prop_number_integer_value(clk); - octeon_asx_clk_set(sc->sc_port_asx, clk_tx_setting, clk_rx_setting); + octeon_asx_clk_set(sc->sc_port_asx, + sc->sc_clk_tx_setting, sc->sc_clk_rx_setting); return 0; } Index: arch/mips/cavium/dev/octeon_gmxvar.h =================================================================== RCS file: /cvsroot/src/sys/arch/mips/cavium/dev/octeon_gmxvar.h,v retrieving revision 1.2 diff -p -u -r1.2 octeon_gmxvar.h --- arch/mips/cavium/dev/octeon_gmxvar.h 19 Apr 2018 21:50:06 -0000 1.2 +++ arch/mips/cavium/dev/octeon_gmxvar.h 24 Apr 2020 09:20:56 -0000 @@ -69,6 +69,9 @@ struct octeon_gmx_port_softc { struct octeon_ipd_softc *sc_ipd; int sc_port_flowflags; + int sc_clk_tx_setting; + int sc_clk_rx_setting; + #if defined(OCTEON_DEBUG) || defined(OCTEON_ETH_DEBUG) #if 0 /* XXX */