Source-Changes-HG archive

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

[src/trunk]: src/sys/arch/sparc64/dev - save the "version#" in the softc, we ...



details:   https://anonhg.NetBSD.org/src/rev/dbc844912c29
branches:  trunk
changeset: 778406:dbc844912c29
user:      mrg <mrg%NetBSD.org@localhost>
date:      Sun Mar 25 03:13:08 2012 +0000

description:
- save the "version#" in the softc, we will want it later
- enable some more things in the schizo CSR:
        - tomatillo: DMA arbitration enable:
        - tomatillo: prefetch read multiple / one / line
        - schizo: enable parking unless "no-bus-parking" is set
        - schizo: enable streaming buffer interrupts
        - schizo: enable bus arbitration for schizo, not these reseved
          bits for tomatillo

partly from and entirely inspired by freebsd schizo_attach().

diffstat:

 sys/arch/sparc64/dev/schizo.c    |  40 +++++++++++++++++++++++++---------------
 sys/arch/sparc64/dev/schizoreg.h |   6 +++++-
 sys/arch/sparc64/dev/schizovar.h |   3 ++-
 3 files changed, 32 insertions(+), 17 deletions(-)

diffs (147 lines):

diff -r ae508517296b -r dbc844912c29 sys/arch/sparc64/dev/schizo.c
--- a/sys/arch/sparc64/dev/schizo.c     Sun Mar 25 02:31:00 2012 +0000
+++ b/sys/arch/sparc64/dev/schizo.c     Sun Mar 25 03:13:08 2012 +0000
@@ -1,10 +1,10 @@
-/*     $NetBSD: schizo.c,v 1.28 2012/03/18 05:26:58 mrg Exp $  */
+/*     $NetBSD: schizo.c,v 1.29 2012/03/25 03:13:08 mrg Exp $  */
 /*     $OpenBSD: schizo.c,v 1.55 2008/08/18 20:29:37 brad Exp $        */
 
 /*
  * Copyright (c) 2002 Jason L. Wright (jason%thought.net@localhost)
  * Copyright (c) 2003 Henric Jungheim
- * Copyright (c) 2008, 2009, 2010 Matthew R. Green
+ * Copyright (c) 2008, 2009, 2010, 2012 Matthew R. Green
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: schizo.c,v 1.28 2012/03/18 05:26:58 mrg Exp $");
+__KERNEL_RCSID(0, "$NetBSD: schizo.c,v 1.29 2012/03/25 03:13:08 mrg Exp $");
 
 #include <sys/param.h>
 #include <sys/device.h>
@@ -152,6 +152,9 @@
        str = prom_getpropstring(ma->ma_node, "compatible");
        if (strcmp(str, "pci108e,a801") == 0)
                sc->sc_tomatillo = 1;
+
+       sc->sc_ver = prom_getpropint(sc->sc_node, "version#", 0);
+
        sc->sc_dev = self;
        sc->sc_node = ma->ma_node;
        sc->sc_dmat = ma->ma_dmatag;
@@ -204,9 +207,8 @@
                panic("schizo: can't get bus-range");
 
        aprint_normal(": \"%s\", version %d, ign %x, bus %c %d to %d\n",
-           sc->sc_tomatillo ? "Tomatillo" : "Schizo",
-           prom_getpropint(sc->sc_node, "version#", 0), sc->sc_ign,
-           pbm->sp_bus_a ? 'A' : 'B', busranges[0], busranges[1]);
+           sc->sc_tomatillo ? "Tomatillo" : "Schizo", sc->sc_ver,
+           sc->sc_ign, pbm->sp_bus_a ? 'A' : 'B', busranges[0], busranges[1]);
        aprint_naive("\n");
 
        if (bus_space_subregion(pbm->sp_regt, sc->sc_ctrlh,
@@ -280,8 +282,20 @@
 
        reg = schizo_pbm_read(pbm, SCZ_PCI_CTRL);
        /* enable/disable error interrupts and arbiter */
-       reg |= SCZ_PCICTRL_EEN | SCZ_PCICTRL_MMU_INT | SCZ_PCICTRL_ARB;
-       reg &= ~SCZ_PCICTRL_SBH_INT;
+       reg |= SCZ_PCICTRL_EEN | SCZ_PCICTRL_MMU_INT;
+       if (sc->sc_tomatillo) {
+               reg &= ~SCZ_PCICTRL_SBH_INT;
+               reg |= TOM_PCICTRL_ARB;
+               reg |= TOM_PCICTRL_PRM | TOM_PCICTRL_PRO |
+                      TOM_PCICTRL_PRL;
+               if (sc->sc_ver <= 1)    /* 2.0 */
+                       reg |= TOM_PCICTRL_DTO_INT;
+               else
+                       reg |= SCZ_PCICTRL_PTO;
+       } else
+               reg |= SCZ_PCICTRL_SBH_INT | SCZ_PCICTRL_ARB;
+       if (OF_getproplen(sc->sc_node, "no-bus-parking") < 0)
+               reg |= SCZ_PCICTRL_PARK;
        schizo_pbm_write(pbm, SCZ_PCI_CTRL, reg);
 
        reg = schizo_pbm_read(pbm, SCZ_PCI_DIAG);
@@ -315,7 +329,6 @@
                              TOM_IOCACHE_CSR_PEN_RDM |
                              TOM_IOCACHE_CSR_PEN_ONE |
                              TOM_IOCACHE_CSR_PEN_LINE;
-
                schizo_pbm_write(pbm, SCZ_PCI_IOCACHE_CSR, iocache_csr);
        }
 
@@ -547,22 +560,19 @@
 bus_space_tag_t
 schizo_alloc_mem_tag(struct schizo_pbm *sp)
 {
-       return (schizo_alloc_bus_tag(sp, "mem",
-           PCI_MEMORY_BUS_SPACE));
+       return (schizo_alloc_bus_tag(sp, "mem", PCI_MEMORY_BUS_SPACE));
 }
 
 bus_space_tag_t
 schizo_alloc_io_tag(struct schizo_pbm *sp)
 {
-       return (schizo_alloc_bus_tag(sp, "io",
-           PCI_IO_BUS_SPACE));
+       return (schizo_alloc_bus_tag(sp, "io", PCI_IO_BUS_SPACE));
 }
 
 bus_space_tag_t
 schizo_alloc_config_tag(struct schizo_pbm *sp)
 {
-       return (schizo_alloc_bus_tag(sp, "cfg",
-           PCI_CONFIG_BUS_SPACE));
+       return (schizo_alloc_bus_tag(sp, "cfg", PCI_CONFIG_BUS_SPACE));
 }
 
 bus_space_tag_t
diff -r ae508517296b -r dbc844912c29 sys/arch/sparc64/dev/schizoreg.h
--- a/sys/arch/sparc64/dev/schizoreg.h  Sun Mar 25 02:31:00 2012 +0000
+++ b/sys/arch/sparc64/dev/schizoreg.h  Sun Mar 25 03:13:08 2012 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: schizoreg.h,v 1.8 2011/03/20 20:43:34 mrg Exp $        */
+/*     $NetBSD: schizoreg.h,v 1.9 2012/03/25 03:13:08 mrg Exp $        */
 /*     $OpenBSD: schizoreg.h,v 1.20 2008/07/12 13:08:04 kettenis Exp $ */
 
 /*
@@ -203,12 +203,16 @@
 #define        SCZ_PCICTRL_SBH_ERR             (1ULL << 35UL)          /* pci strm hole */
 #define        SCZ_PCICTRL_SERR                (1ULL << 34UL)          /* pci serr# sampled */
 #define        SCZ_PCICTRL_PCISPD              (1ULL << 33UL)          /* speed (0=clk/2,1=clk) */
+#define        TOM_PCICTRL_PRM                 (1ULL << 30UL)          /* prefetch read multiple */
+#define        TOM_PCICTRL_PRO                 (1ULL << 29UL)          /* prefetch read one */
+#define        TOM_PCICTRL_PRL                 (1ULL << 28UL)          /* prefetch read line */
 #define        SCZ_PCICTRL_PTO                 (3UL << 24UL)           /* pci timeout interval */
 #define        SCZ_PCICTRL_MMU_INT             (1UL << 19UL)           /* mmu intr en */
 #define        SCZ_PCICTRL_SBH_INT             (1UL << 18UL)           /* strm byte hole intr en */
 #define        SCZ_PCICTRL_EEN                 (1UL << 17UL)           /* error intr en */
 #define        SCZ_PCICTRL_PARK                (1UL << 16UL)           /* bus parked */
 #define        SCZ_PCICTRL_PCIRST              (1UL <<  8UL)           /* pci reset */
+#define        TOM_PCICTRL_ARB                 (0xffUL << 0UL)         /* dma arb enables, tomatillo */
 #define        SCZ_PCICTRL_ARB                 (0x3fUL << 0UL)         /* dma arb enables */
 #define SCZ_PCICTRL_BITS "\20\277UNUS\276DTO\275DTO_INT\263ESLCK\246TTO\245RTRY\244MMU\243SBH\242SERR\241SPD\223MMU_INT\222SBH_INT\221EEN\220PARK\210PCIRST"
 
diff -r ae508517296b -r dbc844912c29 sys/arch/sparc64/dev/schizovar.h
--- a/sys/arch/sparc64/dev/schizovar.h  Sun Mar 25 02:31:00 2012 +0000
+++ b/sys/arch/sparc64/dev/schizovar.h  Sun Mar 25 03:13:08 2012 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: schizovar.h,v 1.5 2011/06/03 02:58:07 christos Exp $   */
+/*     $NetBSD: schizovar.h,v 1.6 2012/03/25 03:13:08 mrg Exp $        */
 /*     $OpenBSD: schizovar.h,v 1.10 2007/01/14 16:19:49 kettenis Exp $ */
 
 /*
@@ -63,6 +63,7 @@
 
        int sc_busa;
        int sc_tomatillo;
+       uint32_t sc_ver;
 };
 
 #define        schizo_read(sc,r) \



Home | Main Index | Thread Index | Old Index