Port-mac68k archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: MI SONIC Ethernet driver for mac68k



I wrote:

> but could you try the attached patch?

Ah, that doesn't work on arc.
Please try this one instead:

---
Index: dev/ic/dp83932.c
===================================================================
RCS file: /cvsroot/src/sys/dev/ic/dp83932.c,v
retrieving revision 1.23
diff -u -r1.23 dp83932.c
--- dev/ic/dp83932.c    8 Apr 2008 12:07:26 -0000       1.23
+++ dev/ic/dp83932.c    16 Apr 2008 17:37:25 -0000
@@ -1229,6 +1229,19 @@
        rcr |= RCR_AMC;
 
  setit:
+       if (sc->sc_32bit) {
+               if (entry == 16)
+                       sc->sc_cdaenable32 = htosonic32(sc, camvalid);
+               else
+                       sc->sc_cda32[entry].cda_entry =
+                           htosonic32(sc, camvalid);
+       } else {
+               if (entry == 16)
+                       sc->sc_cdaenable16 = htosonic16(sc, camvalid);
+               else
+                       sc->sc_cda16[entry].cda_entry =
+                           htosonic16(sc, camvalid);
+       }
        /* Load the CAM. */
        SONIC_CDCAMSYNC(sc, BUS_DMASYNC_PREWRITE);
        CSR_WRITE(sc, SONIC_CDP, SONIC_CDCAMADDR(sc) & 0xffff);
@@ -1243,9 +1256,6 @@
                aprint_error_dev(&sc->sc_dev, "CAM load failed\n");
        SONIC_CDCAMSYNC(sc, BUS_DMASYNC_POSTWRITE);
 
-       /* Set the CAM enable resgiter. */
-       CSR_WRITE(sc, SONIC_CER, camvalid);
-
        /* Set the receive control register. */
        CSR_WRITE(sc, SONIC_RCR, rcr);
 }
Index: dev/ic/dp83932var.h
===================================================================
RCS file: /cvsroot/src/sys/dev/ic/dp83932var.h,v
retrieving revision 1.7
diff -u -r1.7 dp83932var.h
--- dev/ic/dp83932var.h 25 Dec 2007 18:33:38 -0000      1.7
+++ dev/ic/dp83932var.h 16 Apr 2008 17:37:25 -0000
@@ -94,6 +94,7 @@
         * The CAM descriptors.
         */
        struct sonic_cda16 scd_cam[16];
+       uint16_t scd_camenable;
 };
 
 #define        SONIC_CDOFF16(x)        offsetof(struct sonic_control_data16, x)
@@ -122,6 +123,7 @@
         * The CAM descriptors.
         */
        struct sonic_cda32 scd_cam[16];
+       uint32_t scd_camenable;
 };
 
 #define        SONIC_CDOFF32(x)        offsetof(struct sonic_control_data32, x)
@@ -180,11 +182,13 @@
 #define        sc_rda16        sc_cdun.cdun_16->scd_rxdescs
 #define        sc_rra16        sc_cdun.cdun_16->scd_rxbufs
 #define        sc_cda16        sc_cdun.cdun_16->scd_cam
+#define        sc_cdaenable16  sc_cdun.cdun_16->scd_camenable
 
 #define        sc_tda32        sc_cdun.cdun_32->scd_txdescs
 #define        sc_rda32        sc_cdun.cdun_32->scd_rxdescs
 #define        sc_rra32        sc_cdun.cdun_32->scd_rxbufs
 #define        sc_cda32        sc_cdun.cdun_32->scd_cam
+#define        sc_cdaenable32  sc_cdun.cdun_32->scd_camenable
 
        int     sc_txpending;           /* number of Tx requests pending */
        int     sc_txdirty;             /* first dirty Tx descriptor */
@@ -261,11 +265,13 @@
 do {                                                                   \
        if ((sc)->sc_32bit)                                             \
                bus_dmamap_sync((sc)->sc_dmat, (sc)->sc_cddmamap,       \
-                   SONIC_CDCAMOFF32, sizeof(struct sonic_cda32) * 16,  \
+                   SONIC_CDCAMOFF32,                                   \
+                   sizeof(struct sonic_cda32) * 16 + sizeof(uint32_t), \
                    (ops));                                             \
        else                                                            \
                bus_dmamap_sync((sc)->sc_dmat, (sc)->sc_cddmamap,       \
-                   SONIC_CDCAMOFF16, sizeof(struct sonic_cda16) * 16,  \
+                   SONIC_CDCAMOFF16,                                   \
+                   sizeof(struct sonic_cda16) * 16 + sizeof(uint16_t), \
                    (ops));                                             \
 } while (/*CONSTCOND*/0)
 

---
Izumi Tsutsui


Home | Main Index | Thread Index | Old Index