From owner-svn-src-head@FreeBSD.ORG Tue Apr 7 15:43:35 2009 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 69F5E1065677; Tue, 7 Apr 2009 15:43:35 +0000 (UTC) (envelope-from imp@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 3D2DA8FC08; Tue, 7 Apr 2009 15:43:35 +0000 (UTC) (envelope-from imp@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n37FhZtP013058; Tue, 7 Apr 2009 15:43:35 GMT (envelope-from imp@svn.freebsd.org) Received: (from imp@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n37FhZFr013057; Tue, 7 Apr 2009 15:43:35 GMT (envelope-from imp@svn.freebsd.org) Message-Id: <200904071543.n37FhZFr013057@svn.freebsd.org> From: Warner Losh Date: Tue, 7 Apr 2009 15:43:35 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r190804 - head/sys/dev/ed X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 07 Apr 2009 15:43:36 -0000 Author: imp Date: Tue Apr 7 15:43:34 2009 New Revision: 190804 URL: http://svn.freebsd.org/changeset/base/190804 Log: Move tick to end of file for better code references. Modified: head/sys/dev/ed/if_ed_pccard.c Modified: head/sys/dev/ed/if_ed_pccard.c ============================================================================== --- head/sys/dev/ed/if_ed_pccard.c Tue Apr 7 15:40:38 2009 (r190803) +++ head/sys/dev/ed/if_ed_pccard.c Tue Apr 7 15:43:34 2009 (r190804) @@ -239,6 +239,7 @@ static const struct ed_product { */ static int ed_pccard_probe(device_t); static int ed_pccard_attach(device_t); +static void ed_pccard_tick(void *); static int ed_pccard_dl100xx(device_t dev, const struct ed_product *); static void ed_pccard_dl100xx_mii_reset(struct ed_softc *sc); @@ -426,30 +427,6 @@ ed_pccard_mediachg(struct ed_softc *sc) mii_mediachg(mii); } -static void -ed_pccard_tick(void *arg) -{ - struct ed_softc *sc = arg; - struct mii_data *mii; - int media = 0; - - ED_ASSERT_LOCKED(sc); - if (sc->miibus != NULL) { - mii = device_get_softc(sc->miibus); - media = mii->mii_media_status; - mii_tick(mii); - if (mii->mii_media_status & IFM_ACTIVE && - media != mii->mii_media_status && 0 && - sc->chip_type == ED_CHIP_TYPE_DL10022) { - ed_asic_outb(sc, ED_DL10022_DIAG, - (mii->mii_media_active & IFM_FDX) ? - ED_DL10022_COLLISON_DIS : 0); - } - - } - callout_reset(&sc->tick_ch, hz, ed_pccard_tick, sc); -} - static int ed_pccard_attach(device_t dev) { @@ -1204,6 +1181,36 @@ ed_child_detached(device_t dev, device_t sc->miibus = NULL; } +static void +ed_pccard_tick(void *arg) +{ + struct ed_softc *sc = arg; + struct mii_data *mii; + int media = 0; + + ED_ASSERT_LOCKED(sc); + if (sc->miibus != NULL) { + mii = device_get_softc(sc->miibus); + media = mii->mii_media_status; + mii_tick(mii); + if (mii->mii_media_status & IFM_ACTIVE && + media != mii->mii_media_status) { + if (sc->chip_type == ED_CHIP_TYPE_DL10022) { + printf("Enabling 10022 workaround\n"); + ed_asic_outb(sc, ED_DL10022_DIAG, + (mii->mii_media_active & IFM_FDX) ? + ED_DL10022_COLLISON_DIS : 0); + } else if (sc->chip_type == ED_CHIP_TYPE_DL10019) { + write_asic(sc, ED_DL10019_MAGIC, + (mii->mii_media_active & IFM_FDX) ? + DL19FDUPLX : 0); + } + } + + } + callout_reset(&sc->tick_ch, hz, ed_pccard_tick, sc); +} + static device_method_t ed_pccard_methods[] = { /* Device interface */ DEVMETHOD(device_probe, ed_pccard_probe),