Deleted Added
full compact
if_arge.c (234862) if_arge.c (234907)
1/*-
2 * Copyright (c) 2009, Oleksandr Tymoshenko
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 12 unchanged lines hidden (view full) ---

21 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25 * SUCH DAMAGE.
26 */
27
28#include <sys/cdefs.h>
1/*-
2 * Copyright (c) 2009, Oleksandr Tymoshenko
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 12 unchanged lines hidden (view full) ---

21 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25 * SUCH DAMAGE.
26 */
27
28#include <sys/cdefs.h>
29__FBSDID("$FreeBSD: head/sys/mips/atheros/if_arge.c 234862 2012-05-01 06:18:30Z adrian $");
29__FBSDID("$FreeBSD: head/sys/mips/atheros/if_arge.c 234907 2012-05-02 04:51:43Z adrian $");
30
31/*
32 * AR71XX gigabit ethernet driver
33 */
34#ifdef HAVE_KERNEL_OPTION_HEADERS
35#include "opt_device_polling.h"
36#endif
37

--- 733 unchanged lines hidden (view full) ---

771 if (mii == NULL || ifp == NULL ||
772 (ifp->if_drv_flags & IFF_DRV_RUNNING) == 0) {
773 return;
774 }
775
776 if (mii->mii_media_status & IFM_ACTIVE) {
777
778 media = IFM_SUBTYPE(mii->mii_media_active);
30
31/*
32 * AR71XX gigabit ethernet driver
33 */
34#ifdef HAVE_KERNEL_OPTION_HEADERS
35#include "opt_device_polling.h"
36#endif
37

--- 733 unchanged lines hidden (view full) ---

771 if (mii == NULL || ifp == NULL ||
772 (ifp->if_drv_flags & IFF_DRV_RUNNING) == 0) {
773 return;
774 }
775
776 if (mii->mii_media_status & IFM_ACTIVE) {
777
778 media = IFM_SUBTYPE(mii->mii_media_active);
779
780 if (media != IFM_NONE) {
781 sc->arge_link_status = 1;
782 duplex = mii->mii_media_active & IFM_GMASK;
779 if (media != IFM_NONE) {
780 sc->arge_link_status = 1;
781 duplex = mii->mii_media_active & IFM_GMASK;
782 ARGEDEBUG(sc, ARGE_DBG_MII, "%s: media=%d, duplex=%d\n",
783 __func__,
784 media,
785 duplex);
783 arge_set_pll(sc, media, duplex);
784 }
785 } else {
786 sc->arge_link_status = 0;
787 }
788}
789
790static void
791arge_set_pll(struct arge_softc *sc, int media, int duplex)
792{
793 uint32_t cfg, ifcontrol, rx_filtmask;
786 arge_set_pll(sc, media, duplex);
787 }
788 } else {
789 sc->arge_link_status = 0;
790 }
791}
792
793static void
794arge_set_pll(struct arge_softc *sc, int media, int duplex)
795{
796 uint32_t cfg, ifcontrol, rx_filtmask;
794 uint32_t fifo_tx;
797 uint32_t fifo_tx, pll;
795 int if_speed;
796
797 ARGEDEBUG(sc, ARGE_DBG_MII, "set_pll(%04x, %s)\n", media,
798 duplex == IFM_FDX ? "full" : "half");
799 cfg = ARGE_READ(sc, AR71XX_MAC_CFG2);
800 cfg &= ~(MAC_CFG2_IFACE_MODE_1000
801 | MAC_CFG2_IFACE_MODE_10_100
802 | MAC_CFG2_FULL_DUPLEX);

--- 24 unchanged lines hidden (view full) ---

827 if_speed = 1000;
828 break;
829 default:
830 if_speed = 100;
831 device_printf(sc->arge_dev,
832 "Unknown media %d\n", media);
833 }
834
798 int if_speed;
799
800 ARGEDEBUG(sc, ARGE_DBG_MII, "set_pll(%04x, %s)\n", media,
801 duplex == IFM_FDX ? "full" : "half");
802 cfg = ARGE_READ(sc, AR71XX_MAC_CFG2);
803 cfg &= ~(MAC_CFG2_IFACE_MODE_1000
804 | MAC_CFG2_IFACE_MODE_10_100
805 | MAC_CFG2_FULL_DUPLEX);

--- 24 unchanged lines hidden (view full) ---

830 if_speed = 1000;
831 break;
832 default:
833 if_speed = 100;
834 device_printf(sc->arge_dev,
835 "Unknown media %d\n", media);
836 }
837
838 ARGEDEBUG(sc, ARGE_DBG_MII, "%s: if_speed=%d\n", __func__, if_speed);
839
835 switch (ar71xx_soc) {
836 case AR71XX_SOC_AR7240:
837 case AR71XX_SOC_AR7241:
838 case AR71XX_SOC_AR7242:
839 fifo_tx = 0x01f00140;
840 break;
841 case AR71XX_SOC_AR9130:
842 case AR71XX_SOC_AR9132:

--- 5 unchanged lines hidden (view full) ---

848
849 ARGE_WRITE(sc, AR71XX_MAC_CFG2, cfg);
850 ARGE_WRITE(sc, AR71XX_MAC_IFCONTROL, ifcontrol);
851 ARGE_WRITE(sc, AR71XX_MAC_FIFO_RX_FILTMASK,
852 rx_filtmask);
853 ARGE_WRITE(sc, AR71XX_MAC_FIFO_TX_THRESHOLD, fifo_tx);
854
855 /* set PLL registers */
840 switch (ar71xx_soc) {
841 case AR71XX_SOC_AR7240:
842 case AR71XX_SOC_AR7241:
843 case AR71XX_SOC_AR7242:
844 fifo_tx = 0x01f00140;
845 break;
846 case AR71XX_SOC_AR9130:
847 case AR71XX_SOC_AR9132:

--- 5 unchanged lines hidden (view full) ---

853
854 ARGE_WRITE(sc, AR71XX_MAC_CFG2, cfg);
855 ARGE_WRITE(sc, AR71XX_MAC_IFCONTROL, ifcontrol);
856 ARGE_WRITE(sc, AR71XX_MAC_FIFO_RX_FILTMASK,
857 rx_filtmask);
858 ARGE_WRITE(sc, AR71XX_MAC_FIFO_TX_THRESHOLD, fifo_tx);
859
860 /* set PLL registers */
856 ar71xx_device_set_pll_ge(sc->arge_mac_unit, if_speed);
861 pll = ar71xx_device_get_eth_pll(sc->arge_mac_unit, if_speed);
862
863 /* XXX ensure pll != 0 */
864 ar71xx_device_set_pll_ge(sc->arge_mac_unit, if_speed, pll);
865
866 /* set MII registers */
867 ar71xx_device_set_mii_speed(sc->arge_mac_unit, if_speed);
857}
858
859
860static void
861arge_reset_dma(struct arge_softc *sc)
862{
863 ARGE_WRITE(sc, AR71XX_DMA_RX_CONTROL, 0);
864 ARGE_WRITE(sc, AR71XX_DMA_TX_CONTROL, 0);

--- 1242 unchanged lines hidden ---
868}
869
870
871static void
872arge_reset_dma(struct arge_softc *sc)
873{
874 ARGE_WRITE(sc, AR71XX_DMA_RX_CONTROL, 0);
875 ARGE_WRITE(sc, AR71XX_DMA_TX_CONTROL, 0);

--- 1242 unchanged lines hidden ---