Module Name:    src
Committed By:   thorpej
Date:           Sun Mar  1 05:50:56 UTC 2020

Modified Files:
        src/sys/dev/ic: gem.c gemvar.h

Log Message:
- Support 64-bit DMA addresses for the Tx and Rx ring addresses.
- g/c and unused define.


To generate a diff of this commit:
cvs rdiff -u -r1.128 -r1.129 src/sys/dev/ic/gem.c
cvs rdiff -u -r1.26 -r1.27 src/sys/dev/ic/gemvar.h

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

Modified files:

Index: src/sys/dev/ic/gem.c
diff -u src/sys/dev/ic/gem.c:1.128 src/sys/dev/ic/gem.c:1.129
--- src/sys/dev/ic/gem.c:1.128	Fri Feb  7 00:56:48 2020
+++ src/sys/dev/ic/gem.c	Sun Mar  1 05:50:56 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: gem.c,v 1.128 2020/02/07 00:56:48 thorpej Exp $ */
+/*	$NetBSD: gem.c,v 1.129 2020/03/01 05:50:56 thorpej Exp $ */
 
 /*
  *
@@ -37,7 +37,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: gem.c,v 1.128 2020/02/07 00:56:48 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: gem.c,v 1.129 2020/03/01 05:50:56 thorpej Exp $");
 
 #include "opt_inet.h"
 
@@ -815,8 +815,8 @@ gem_reset_rxdma(struct gem_softc *sc)
 	GEM_CDSYNC(sc, BUS_DMASYNC_PREREAD);
 
 	/* Reprogram Descriptor Ring Base Addresses */
-	/* NOTE: we use only 32-bit DMA addresses here. */
-	bus_space_write_4(t, h, GEM_RX_RING_PTR_HI, 0);
+	bus_space_write_4(t, h, GEM_RX_RING_PTR_HI,
+	    ((uint64_t)GEM_CDRXADDR(sc, 0)) >> 32);
 	bus_space_write_4(t, h, GEM_RX_RING_PTR_LO, GEM_CDRXADDR(sc, 0));
 
 	/* Redo ERX Configuration */
@@ -1171,11 +1171,12 @@ gem_init(struct ifnet *ifp)
 	gem_setladrf(sc);
 
 	/* step 6 & 7. Program Descriptor Ring Base Addresses */
-	/* NOTE: we use only 32-bit DMA addresses here. */
-	bus_space_write_4(t, h, GEM_TX_RING_PTR_HI, 0);
+	bus_space_write_4(t, h, GEM_TX_RING_PTR_HI,
+	    ((uint64_t)GEM_CDTXADDR(sc, 0)) >> 32);
 	bus_space_write_4(t, h, GEM_TX_RING_PTR_LO, GEM_CDTXADDR(sc, 0));
 
-	bus_space_write_4(t, h, GEM_RX_RING_PTR_HI, 0);
+	bus_space_write_4(t, h, GEM_RX_RING_PTR_HI,
+	    ((uint64_t)GEM_CDRXADDR(sc, 0)) >> 32);
 	bus_space_write_4(t, h, GEM_RX_RING_PTR_LO, GEM_CDRXADDR(sc, 0));
 
 	/* step 8. Global Configuration & Interrupt Mask */

Index: src/sys/dev/ic/gemvar.h
diff -u src/sys/dev/ic/gemvar.h:1.26 src/sys/dev/ic/gemvar.h:1.27
--- src/sys/dev/ic/gemvar.h:1.26	Fri Sep 13 07:55:06 2019
+++ src/sys/dev/ic/gemvar.h	Sun Mar  1 05:50:56 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: gemvar.h,v 1.26 2019/09/13 07:55:06 msaitoh Exp $ */
+/*	$NetBSD: gemvar.h,v 1.27 2020/03/01 05:50:56 thorpej Exp $ */
 
 /*
  *
@@ -246,8 +246,6 @@ struct gem_softc {
 #define	GEM_CDTXADDR(sc, x)	((sc)->sc_cddma + GEM_CDTXOFF((x)))
 #define	GEM_CDRXADDR(sc, x)	((sc)->sc_cddma + GEM_CDRXOFF((x)))
 
-#define	GEM_CDADDR(sc)	((sc)->sc_cddma + GEM_CDOFF)
-
 #define	GEM_CDTXSYNC(sc, x, n, ops)					\
 do {									\
 	int __x, __n;							\

Reply via email to