Module Name:    src
Committed By:   ryo
Date:           Sun Mar 15 04:12:07 UTC 2015

Modified Files:
        src/sys/arch/arm/imx: if_enet.c

Log Message:
- fix interrupt type ans interrupt masks
- change timing of callout_schedule because it doesn't schedule once enet_stop 
is called
- typo


To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 src/sys/arch/arm/imx/if_enet.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/arm/imx/if_enet.c
diff -u src/sys/arch/arm/imx/if_enet.c:1.1 src/sys/arch/arm/imx/if_enet.c:1.2
--- src/sys/arch/arm/imx/if_enet.c:1.1	Thu Sep 25 05:05:28 2014
+++ src/sys/arch/arm/imx/if_enet.c	Sun Mar 15 04:12:07 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: if_enet.c,v 1.1 2014/09/25 05:05:28 ryo Exp $	*/
+/*	$NetBSD: if_enet.c,v 1.2 2015/03/15 04:12:07 ryo Exp $	*/
 
 /*
  * Copyright (c) 2014 Ryo Shimizu <r...@nerv.org>
@@ -31,7 +31,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_enet.c,v 1.1 2014/09/25 05:05:28 ryo Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_enet.c,v 1.2 2015/03/15 04:12:07 ryo Exp $");
 
 #include "imxocotp.h"
 #include "imxccm.h"
@@ -346,11 +346,15 @@ enet_attach(device_t parent __unused, de
 
 	/* setup interrupt handlers */
 	if ((sc->sc_ih = intr_establish(aa->aa_irq, IPL_NET,
-	    IST_EDGE, enet_intr, sc)) == NULL) {
+	    IST_LEVEL, enet_intr, sc)) == NULL) {
 		aprint_error_dev(self, "unable to establish interrupt\n");
 		goto failure;
 	}
 
+	/* callout will be scheduled from enet_init() */
+	callout_init(&sc->sc_tick_ch, 0);
+	callout_setfunc(&sc->sc_tick_ch, enet_tick, sc);
+
 	/* setup ifp */
 	ifp = &sc->sc_ethercom.ec_if;
 	strlcpy(ifp->if_xname, device_xname(sc->sc_dev), IFNAMSIZ);
@@ -410,9 +414,6 @@ enet_attach(device_t parent __unused, de
 #endif
 
 	sc->sc_stopping = false;
-	callout_init(&sc->sc_tick_ch, 0);
-	callout_setfunc(&sc->sc_tick_ch, enet_tick, sc);
-	callout_schedule(&sc->sc_tick_ch, hz);
 
 	return;
 
@@ -721,7 +722,7 @@ enet_rx_intr(void *arg)
 					char flags1buf[128], flags2buf[128];
 					snprintb(flags1buf, sizeof(flags1buf),
 					    "\20" "\31MISS" "\26LENGTHVIOLATION"
-					    "\25NONOCTET" "\23CRC" "\22OVERRUN"a
+					    "\25NONOCTET" "\23CRC" "\22OVERRUN"
 					    "\21TRUNCATED", flags1);
 					snprintb(flags2buf, sizeof(flags2buf),
 					    "\20" "\40MAC" "\33PHY"
@@ -987,6 +988,7 @@ enet_init(struct ifnet *ifp)
 	ENET_REG_WRITE(sc, ENET_RDAR, ENET_RDAR_ACTIVE);
 
 	sc->sc_stopping = false;
+	callout_schedule(&sc->sc_tick_ch, hz);
 
  init_failure:
 	splx(s);
@@ -2004,7 +2006,6 @@ enet_init_regs(struct enet_softc *sc, in
 	ENET_REG_WRITE(sc, ENET_EIMR, 
 	    ENET_EIR_TXF |
 	    ENET_EIR_RXF |
-	    ENET_EIR_MII |
 	    ENET_EIR_EBERR |
 	    0);
 
@@ -2028,7 +2029,7 @@ enet_alloc_dma(struct enet_softc *sc, si
 	int nsegs, error;
 
 	if ((error = bus_dmamem_alloc(sc->sc_dmat, size, PAGE_SIZE, 0, seglist,
-	    1, &nsegs, M_WAITOK)) != 0) {
+	    1, &nsegs, M_NOWAIT)) != 0) {
 		device_printf(sc->sc_dev,
 		    "unable to allocate DMA buffer, error=%d\n", error);
 		goto fail_alloc;

Reply via email to