Index: dev/schizo.c =================================================================== RCS file: /cvsroot/src/sys/arch/sparc64/dev/schizo.c,v retrieving revision 1.28 diff -p -r1.28 schizo.c *** dev/schizo.c 18 Mar 2012 05:26:58 -0000 1.28 --- dev/schizo.c 22 Mar 2012 08:39:41 -0000 *************** schizo_attach(struct device *parent, str *** 195,200 **** --- 195,202 ---- return; } + sc->sc_ver = prom_getpropint(sc->sc_node, "version#", 0); + if (prom_getprop(sc->sc_node, "ranges", sizeof(struct schizo_range), &pbm->sp_nrange, (void **)&pbm->sp_range)) panic("schizo: can't get ranges"); *************** schizo_attach(struct device *parent, str *** 204,212 **** 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]); aprint_naive("\n"); if (bus_space_subregion(pbm->sp_regt, sc->sc_ctrlh, --- 206,213 ---- 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", 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, *************** schizo_attach(struct device *parent, str *** 280,287 **** 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; schizo_pbm_write(pbm, SCZ_PCI_CTRL, reg); reg = schizo_pbm_read(pbm, SCZ_PCI_DIAG); --- 281,300 ---- reg = schizo_pbm_read(pbm, SCZ_PCI_CTRL); /* enable/disable error interrupts and arbiter */ ! 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); Index: dev/schizoreg.h =================================================================== RCS file: /cvsroot/src/sys/arch/sparc64/dev/schizoreg.h,v retrieving revision 1.8 diff -p -r1.8 schizoreg.h *** dev/schizoreg.h 20 Mar 2011 20:43:34 -0000 1.8 --- dev/schizoreg.h 22 Mar 2012 08:39:41 -0000 *************** struct schizo_regs { *** 203,214 **** --- 203,218 ---- #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" Index: dev/schizovar.h =================================================================== RCS file: /cvsroot/src/sys/arch/sparc64/dev/schizovar.h,v retrieving revision 1.5 diff -p -r1.5 schizovar.h *** dev/schizovar.h 3 Jun 2011 02:58:07 -0000 1.5 --- dev/schizovar.h 22 Mar 2012 08:39:41 -0000 *************** struct schizo_softc { *** 63,68 **** --- 63,69 ---- int sc_busa; int sc_tomatillo; + uint32_t sc_ver; }; #define schizo_read(sc,r) \ Index: sparc64/locore.s =================================================================== RCS file: /cvsroot/src/sys/arch/sparc64/sparc64/locore.s,v retrieving revision 1.341 diff -p -r1.341 locore.s *** sparc64/locore.s 17 Mar 2012 22:19:53 -0000 1.341 --- sparc64/locore.s 22 Mar 2012 08:39:42 -0000 *************** romtba: POINTER 0 *** 207,213 **** #define TRAP(type) VTRAP(type, slowtrap) /* architecturally undefined traps (cause panic) */ ! #ifndef DEBUG #define UTRAP(type) sir; VTRAP(type, slowtrap) #else #define UTRAP(type) VTRAP(type, slowtrap) --- 207,214 ---- #define TRAP(type) VTRAP(type, slowtrap) /* architecturally undefined traps (cause panic) */ ! #define SIR_UNKNOWN_TRAPS ! #if !defined(DEBUG) || defined(SIR_UNKNOWN_TRAPS) #define UTRAP(type) sir; VTRAP(type, slowtrap) #else #define UTRAP(type) VTRAP(type, slowtrap)