Source-Changes-HG archive

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

[src/trunk]: src/sys/arch/sandpoint/stand/altboot Some code cleanup, suggeste...



details:   https://anonhg.NetBSD.org/src/rev/6be6ec5e6a8a
branches:  trunk
changeset: 763158:6be6ec5e6a8a
user:      phx <phx%NetBSD.org@localhost>
date:      Fri Mar 11 17:46:30 2011 +0000

description:
Some code cleanup, suggested by nisimura@.

diffstat:

 sys/arch/sandpoint/stand/altboot/brdsetup.c |  24 +++++++++++---------
 sys/arch/sandpoint/stand/altboot/stg.c      |  34 ++++++++++++----------------
 2 files changed, 28 insertions(+), 30 deletions(-)

diffs (131 lines):

diff -r 02d0ea7b3b1e -r 6be6ec5e6a8a sys/arch/sandpoint/stand/altboot/brdsetup.c
--- a/sys/arch/sandpoint/stand/altboot/brdsetup.c       Fri Mar 11 17:12:43 2011 +0000
+++ b/sys/arch/sandpoint/stand/altboot/brdsetup.c       Fri Mar 11 17:46:30 2011 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: brdsetup.c,v 1.8 2011/03/10 21:11:49 phx Exp $ */
+/* $NetBSD: brdsetup.c,v 1.9 2011/03/11 17:46:30 phx Exp $ */
 
 /*-
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -969,27 +969,29 @@
 }
 
 /*
- * For cost saving reasons some NAS boxes are missing the ROM for the
- * NIC's ethernet address and keep it in their Flash memory.
+ * For cost saving reasons some NAS boxes lack SEEPROM for NIC's
+ * ethernet address and keep it in their Flash memory instead.
  */
 void
 read_mac_from_flash(uint8_t *mac)
 {
        uint8_t *p;
 
-       if (brdtype == BRD_SYNOLOGY) {
+       switch (brdtype) {
+       case BRD_SYNOLOGY:
                p = redboot_fis_lookup("vendor");
-               if (p != NULL) {
-                       memcpy(mac, p, 6);
-                       return;
-               }
-       } else if (brdtype == BRD_DLINKDSM) {
+               if (p == NULL)
+                       break;
+               memcpy(mac, p, 6);
+               return;
+       case BRD_DLINKDSM:
                read_mac_string(mac, (char *)0xfff0ff80);
                return;
-       }
-       else
+       default:
                printf("Warning: This board has no known method defined "
                    "to determine its MAC address!\n");
+               break;
+       }
 
        /* set to 00:00:00:00:00:00 in case of error */
        memset(mac, 0, 6);
diff -r 02d0ea7b3b1e -r 6be6ec5e6a8a sys/arch/sandpoint/stand/altboot/stg.c
--- a/sys/arch/sandpoint/stand/altboot/stg.c    Fri Mar 11 17:12:43 2011 +0000
+++ b/sys/arch/sandpoint/stand/altboot/stg.c    Fri Mar 11 17:46:30 2011 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: stg.c,v 1.3 2011/03/10 21:11:50 phx Exp $ */
+/* $NetBSD: stg.c,v 1.4 2011/03/11 17:46:30 phx Exp $ */
 
 /*-
  * Copyright (c) 2011 Frank Wille.
@@ -55,12 +55,13 @@
        uint64_t xd0, xd1, xd2, dummy;
 };
 #define T1_EMPTY               (1U << 31)      /* no Tx frame available */
-#define T1_NOALIGN             (03 << 16)      /* allow any Tx alignment */
+#define T1_NOALIGN             (3U << 16)      /* allow any Tx alignment */
 #define T1_CNTSHIFT            24              /* Tx fragment count */
-#define T2_LENSHIFT            48              /* Tx frame length */
+#define T2_LENSHIFT            48              /* Tx fragment length */
 #define R1_DONE                        (1U << 31)      /* desc has a Rx frame */
 #define R1_FL_MASK             0xffff          /* Rx frame length */
 #define R1_ER_MASK             0x3f0000        /* Rx error indication */
+#define R2_LENSHIFT            48              /* Rx fragment length */
 
 #define STGE_DMACtrl           0x00
 #define  DMAC_RxDMAPollNow     (1U << 4)
@@ -161,6 +162,10 @@
        uint8_t *en;
        unsigned i;
        uint32_t macctl, reg;
+       static uint8_t bad[2][6] = {
+               { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
+               { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }
+       };
 
        l = ALLOC(struct local, 32);            /* desc alignment */
        memset(l, 0, sizeof(struct local));
@@ -187,20 +192,10 @@
 
        /* read ethernet address */
        en = data;
-       if (PCI_PRODUCT(pcicfgread(tag, PCI_ID_REG)) != 0x1023) {
-               /* read from station address registers when not ST1023 */
-               en[0] = CSR_READ_2(l, STGE_StationAddress0) & 0xff;
-               en[1] = CSR_READ_2(l, STGE_StationAddress0) >> 8;
-               en[2] = CSR_READ_2(l, STGE_StationAddress1) & 0xff;
-               en[3] = CSR_READ_2(l, STGE_StationAddress1) >> 8;
-               en[4] = CSR_READ_2(l, STGE_StationAddress2) & 0xff;
-               en[5] = CSR_READ_2(l, STGE_StationAddress2) >> 8;
-       } else {
-               /* ST1023: read the address from the serial EEPROM */
-               static uint8_t bad[2][6] = {
-                       { 0x00,0x00,0x00,0x00,0x00,0x00 },
-                       { 0xff,0xff,0xff,0xff,0xff,0xff }
-               };
+       for (i = 0; i < 6; i++)
+               en[i] = CSR_READ_1(l, STGE_StationAddress0 + i);
+
+       if (memcmp(en, bad[0], 6) == 0 || memcmp(en, bad[1], 6) == 0) {
                uint16_t addr[3];
 
                for (i = 0; i < 3; i++) {
@@ -223,6 +218,7 @@
                for (i = 0; i < 6; i++)
                        CSR_WRITE_1(l, STGE_StationAddress0 + i, en[i]);
        }
+
        printf("MAC address %02x:%02x:%02x:%02x:%02x:%02x\n",
            en[0], en[1], en[2], en[3], en[4], en[5]);
 
@@ -237,10 +233,10 @@
        txd[1].xd1 = htole64(T1_EMPTY);
        rxd = &l->rxd[0];
        rxd[0].xd0 = htole64(VTOPHYS(&rxd[1]));
-       rxd[0].xd2 = htole64((uint64_t)VTOPHYS(l->rxstore[0]) |
+       rxd[0].xd2 = htole64(VTOPHYS(l->rxstore[0]) |
            ((uint64_t)FRAMESIZE << 48));
        rxd[1].xd0 = htole64(VTOPHYS(&rxd[0]));
-       rxd[1].xd2 = htole64((uint64_t)VTOPHYS(l->rxstore[1]) |
+       rxd[1].xd2 = htole64(VTOPHYS(l->rxstore[1]) |
            ((uint64_t)FRAMESIZE << 48));
        wbinv(l, sizeof(struct local));
 



Home | Main Index | Thread Index | Old Index