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