Nuke __BROKEN_DK_ESTABLISH, and add __HAVE_DEVICE_REGISTER.
This commit is contained in:
parent
714a495a4a
commit
2f335ce72b
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: if_ie.c,v 1.5 2000/06/29 08:04:03 mrg Exp $ */
|
/* $NetBSD: if_ie.c,v 1.6 2000/07/25 20:52:27 scw Exp $ */
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
* Copyright (c) 1999 The NetBSD Foundation, Inc.
|
* Copyright (c) 1999 The NetBSD Foundation, Inc.
|
||||||
@ -338,10 +338,6 @@ ie_pcctwo_attach(parent, self, args)
|
|||||||
/* Attach the MI back-end */
|
/* Attach the MI back-end */
|
||||||
i82586_attach(sc, "onboard", ethaddr, NULL, 0, 0);
|
i82586_attach(sc, "onboard", ethaddr, NULL, 0, 0);
|
||||||
|
|
||||||
/* Are we the boot device? */
|
|
||||||
if (PCCTWO_PADDR(pa->pa_offset) == bootaddr)
|
|
||||||
booted_device = self;
|
|
||||||
|
|
||||||
/* Finally, hook the hardware interrupt */
|
/* Finally, hook the hardware interrupt */
|
||||||
pcc2_reg_write(sys_pcctwo, PCC2REG_ETH_ICSR, 0);
|
pcc2_reg_write(sys_pcctwo, PCC2REG_ETH_ICSR, 0);
|
||||||
pcctwointr_establish(PCCTWOV_LANC_IRQ, i82586_intr, pa->pa_ipl, sc);
|
pcctwointr_establish(PCCTWOV_LANC_IRQ, i82586_intr, pa->pa_ipl, sc);
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: if_le.c,v 1.21 2000/03/18 22:33:03 scw Exp $ */
|
/* $NetBSD: if_le.c,v 1.22 2000/07/25 20:52:27 scw Exp $ */
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
* Copyright (c) 1998 The NetBSD Foundation, Inc.
|
* Copyright (c) 1998 The NetBSD Foundation, Inc.
|
||||||
@ -224,10 +224,6 @@ le_pcc_attach(parent, self, aux)
|
|||||||
|
|
||||||
am7990_config(&lsc->sc_am7990);
|
am7990_config(&lsc->sc_am7990);
|
||||||
|
|
||||||
/* Are we the boot device? */
|
|
||||||
if (PCC_PADDR(pa->pa_offset) == bootaddr)
|
|
||||||
booted_device = self;
|
|
||||||
|
|
||||||
pccintr_establish(PCCV_LE, am7990_intr, pa->pa_ipl, sc);
|
pccintr_establish(PCCV_LE, am7990_intr, pa->pa_ipl, sc);
|
||||||
|
|
||||||
pcc_reg_write(sys_pcc, PCCREG_LANCE_INTR_CTRL,
|
pcc_reg_write(sys_pcc, PCCREG_LANCE_INTR_CTRL,
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: ncrsc_pcctwo.c,v 1.4 2000/03/18 22:33:03 scw Exp $ */
|
/* $NetBSD: ncrsc_pcctwo.c,v 1.5 2000/07/25 20:52:28 scw Exp $ */
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
* Copyright (c) 1999 The NetBSD Foundation, Inc.
|
* Copyright (c) 1999 The NetBSD Foundation, Inc.
|
||||||
@ -122,7 +122,6 @@ ncrsc_pcctwo_attach(parent, self, args)
|
|||||||
struct siop_softc *sc;
|
struct siop_softc *sc;
|
||||||
bus_space_handle_t bush;
|
bus_space_handle_t bush;
|
||||||
int clk, ctest7;
|
int clk, ctest7;
|
||||||
int tmp;
|
|
||||||
|
|
||||||
pa = (struct pcctwo_attach_args *) args;
|
pa = (struct pcctwo_attach_args *) args;
|
||||||
sc = (struct siop_softc *) self;
|
sc = (struct siop_softc *) self;
|
||||||
@ -174,18 +173,7 @@ ncrsc_pcctwo_attach(parent, self, args)
|
|||||||
pcc2_reg_write(sys_pcctwo, PCC2REG_SCSI_ICSR,
|
pcc2_reg_write(sys_pcctwo, PCC2REG_SCSI_ICSR,
|
||||||
pa->pa_ipl | PCCTWO_ICR_IEN);
|
pa->pa_ipl | PCCTWO_ICR_IEN);
|
||||||
|
|
||||||
/*
|
|
||||||
* Attach all scsi units on us, watching for boot device
|
|
||||||
* (see dk_establish).
|
|
||||||
*/
|
|
||||||
tmp = bootpart;
|
|
||||||
|
|
||||||
if (PCCTWO_PADDR(pa->pa_offset) != bootaddr)
|
|
||||||
bootpart = -1; /* Invalid flag to dk_establish */
|
|
||||||
|
|
||||||
(void) config_found(self, &sc->sc_link, scsiprint);
|
(void) config_found(self, &sc->sc_link, scsiprint);
|
||||||
|
|
||||||
bootpart = tmp; /* Restore old value */
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: pcctworeg.h,v 1.4 2000/03/18 22:33:03 scw Exp $ */
|
/* $NetBSD: pcctworeg.h,v 1.5 2000/07/25 20:52:28 scw Exp $ */
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
* Copyright (c) 1999 The NetBSD Foundation, Inc.
|
* Copyright (c) 1999 The NetBSD Foundation, Inc.
|
||||||
@ -45,6 +45,8 @@
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* Offsets to the various devices which hang off the PCCChip2.
|
* Offsets to the various devices which hang off the PCCChip2.
|
||||||
|
* Note that these are offsets from the base of the PCCChip2's
|
||||||
|
* own registers.
|
||||||
*/
|
*/
|
||||||
#define PCCTWO_REG_OFF 0x00000 /* Offset of PCCChip2's own registers */
|
#define PCCTWO_REG_OFF 0x00000 /* Offset of PCCChip2's own registers */
|
||||||
#define PCCTWO_LPT_OFF 0x00000 /* Offset of parallel port registers */
|
#define PCCTWO_LPT_OFF 0x00000 /* Offset of parallel port registers */
|
||||||
@ -60,7 +62,7 @@
|
|||||||
* (The physical address of the boot device's registers are passed in
|
* (The physical address of the boot device's registers are passed in
|
||||||
* from the Boot ROM)
|
* from the Boot ROM)
|
||||||
*/
|
*/
|
||||||
#define PCCTWO_PADDR(off) ((void *)(0xfff40000u + (off)))
|
#define PCCTWO_PADDR(off) ((void *)(0xfff42000u + (off)))
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: wdsc.c,v 1.17 2000/03/18 22:33:05 scw Exp $ */
|
/* $NetBSD: wdsc.c,v 1.18 2000/07/25 20:52:29 scw Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1996 Steve Woodford
|
* Copyright (c) 1996 Steve Woodford
|
||||||
@ -173,15 +173,7 @@ wdsc_pcc_attach(pdp, dp, auxp)
|
|||||||
pcc_reg_write(sys_pcc, PCCREG_SCSI_INTR_CTRL,
|
pcc_reg_write(sys_pcc, PCCREG_SCSI_INTR_CTRL,
|
||||||
sc->sc_ipl | PCC_IENABLE | PCC_ICLEAR);
|
sc->sc_ipl | PCC_IENABLE | PCC_ICLEAR);
|
||||||
|
|
||||||
/*
|
|
||||||
* Attach all scsi units on us, watching for boot device
|
|
||||||
* (see dk_establish).
|
|
||||||
*/
|
|
||||||
tmp = bootpart;
|
|
||||||
if (PCC_PADDR(pa->pa_offset) != bootaddr)
|
|
||||||
bootpart = -1; /* invalid flag to dk_establish */
|
|
||||||
(void)config_found(dp, &sc->sc_link, scsiprint);
|
(void)config_found(dp, &sc->sc_link, scsiprint);
|
||||||
bootpart = tmp; /* restore old value */
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
/* $NetBSD: types.h,v 1.6 2000/07/23 20:51:18 scw Exp $ */
|
/* $NetBSD: types.h,v 1.7 2000/07/25 20:52:30 scw Exp $ */
|
||||||
|
|
||||||
#ifndef _MACHINE_TYPES_H_
|
#ifndef _MACHINE_TYPES_H_
|
||||||
#define _MACHINE_TYPES_H_
|
#define _MACHINE_TYPES_H_
|
||||||
|
|
||||||
#include <m68k/types.h>
|
#include <m68k/types.h>
|
||||||
|
|
||||||
#define __BROKEN_DK_ESTABLISH
|
#define __HAVE_DEVICE_REGISTER
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: autoconf.c,v 1.25 2000/07/20 20:40:39 scw Exp $ */
|
/* $NetBSD: autoconf.c,v 1.26 2000/07/25 20:52:30 scw Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1988 University of Utah.
|
* Copyright (c) 1988 University of Utah.
|
||||||
@ -63,6 +63,17 @@
|
|||||||
#include <machine/autoconf.h>
|
#include <machine/autoconf.h>
|
||||||
#include <machine/pte.h>
|
#include <machine/pte.h>
|
||||||
|
|
||||||
|
#include <dev/scsipi/scsi_all.h>
|
||||||
|
#include <dev/scsipi/scsipi_all.h>
|
||||||
|
#include <dev/scsipi/scsiconf.h>
|
||||||
|
|
||||||
|
#ifdef MVME147
|
||||||
|
#include <mvme68k/dev/pccreg.h>
|
||||||
|
#endif
|
||||||
|
#if defined(MVME167) || defined(MVME177)
|
||||||
|
#include <mvme68k/dev/pcctworeg.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
struct device *booted_device; /* boot device */
|
struct device *booted_device; /* boot device */
|
||||||
|
|
||||||
@ -85,8 +96,110 @@ void
|
|||||||
cpu_rootconf()
|
cpu_rootconf()
|
||||||
{
|
{
|
||||||
|
|
||||||
printf("boot device: %s\n",
|
printf("boot device: %s",
|
||||||
(booted_device) ? booted_device->dv_xname : "<unknown>");
|
(booted_device) ? booted_device->dv_xname : "<unknown>");
|
||||||
|
|
||||||
setroot(booted_device, 0);
|
if (bootpart)
|
||||||
|
printf(" (partition %d)\n", bootpart);
|
||||||
|
else
|
||||||
|
printf("\n");
|
||||||
|
|
||||||
|
setroot(booted_device, bootpart);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
device_register(dev, aux)
|
||||||
|
struct device *dev;
|
||||||
|
void *aux;
|
||||||
|
{
|
||||||
|
static struct device *controller;
|
||||||
|
static int foundboot;
|
||||||
|
struct device *parent;
|
||||||
|
struct cfdriver *cd;
|
||||||
|
|
||||||
|
if (foundboot)
|
||||||
|
return;
|
||||||
|
|
||||||
|
parent = dev->dv_parent;
|
||||||
|
cd = dev->dv_cfdata->cf_driver;
|
||||||
|
|
||||||
|
if (controller == NULL && parent) {
|
||||||
|
struct cfdriver *pcd = parent->dv_cfdata->cf_driver;
|
||||||
|
|
||||||
|
switch (machineid) {
|
||||||
|
#ifdef MVME147
|
||||||
|
case MVME_147:
|
||||||
|
/*
|
||||||
|
* We currently only support booting from the 147's
|
||||||
|
* onboard scsi and ethernet. So ensure this
|
||||||
|
* device's parent is the PCC driver.
|
||||||
|
*/
|
||||||
|
if (strcmp(pcd->cd_name, "pcc"))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (bootaddr == PCC_PADDR(PCC_WDSC_OFF) &&
|
||||||
|
strcmp(cd->cd_name, "wdsc") == 0) {
|
||||||
|
controller = dev;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (bootaddr == PCC_PADDR(PCC_LE_OFF) &&
|
||||||
|
strcmp(cd->cd_name, "le") == 0) {
|
||||||
|
booted_device = dev;
|
||||||
|
foundboot = 1;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
#endif /* MVME_147 */
|
||||||
|
|
||||||
|
#if defined(MVME167) || defined(MVME177)
|
||||||
|
case MVME_167:
|
||||||
|
case MVME_177:
|
||||||
|
/*
|
||||||
|
* We currently only support booting from the 167's
|
||||||
|
* onboard scsi and ethernet. So ensure this
|
||||||
|
* device's parent is the PCCTWO driver.
|
||||||
|
*/
|
||||||
|
if (strcmp(pcd->cd_name, "pcctwo"))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (bootaddr == PCCTWO_PADDR(PCCTWO_NCRSC_OFF) &&
|
||||||
|
strcmp(cd->cd_name, "ncrsc") == 0) {
|
||||||
|
controller = dev;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (bootaddr == PCCTWO_PADDR(PCCTWO_IE_OFF) &&
|
||||||
|
strcmp(cd->cd_name, "ie") == 0) {
|
||||||
|
booted_device = dev;
|
||||||
|
foundboot = 1;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
#endif /* MVME_167 || MVME_177 */
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Find out which device on the scsibus we booted from
|
||||||
|
*/
|
||||||
|
if (strcmp(cd->cd_name, "sd") == 0 ||
|
||||||
|
strcmp(cd->cd_name, "cd") == 0 ||
|
||||||
|
strcmp(cd->cd_name, "st") == 0) {
|
||||||
|
struct scsipibus_attach_args *sa = aux;
|
||||||
|
|
||||||
|
if (parent->dv_parent != controller ||
|
||||||
|
bootdevlun != sa->sa_sc_link->scsipi_scsi.target)
|
||||||
|
return;
|
||||||
|
|
||||||
|
booted_device = dev;
|
||||||
|
foundboot = 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: disksubr.c,v 1.18 2000/03/18 22:33:06 scw Exp $ */
|
/* $NetBSD: disksubr.c,v 1.19 2000/07/25 20:52:31 scw Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1995 Dale Rahn.
|
* Copyright (c) 1995 Dale Rahn.
|
||||||
@ -58,44 +58,6 @@ static void printlp __P((struct disklabel *lp, char *str));
|
|||||||
static void printclp __P((struct cpu_disklabel *clp, char *str));
|
static void printclp __P((struct cpu_disklabel *clp, char *str));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void
|
|
||||||
dk_establish(dk, dev)
|
|
||||||
struct disk *dk;
|
|
||||||
struct device *dev;
|
|
||||||
{
|
|
||||||
struct scsibus_softc *sbsc;
|
|
||||||
int target, lun;
|
|
||||||
|
|
||||||
if (bootpart == -1) /* ignore flag from controller driver? */
|
|
||||||
return;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* scsi: sd,cd
|
|
||||||
*/
|
|
||||||
|
|
||||||
if (strncmp("sd", dev->dv_xname, 2) == 0 ||
|
|
||||||
strncmp("cd", dev->dv_xname, 2) == 0) {
|
|
||||||
|
|
||||||
sbsc = (struct scsibus_softc *)dev->dv_parent;
|
|
||||||
target = bootctrllun % 8; /* XXX: 147 only */
|
|
||||||
lun = bootdevlun; /* XXX: 147, untested */
|
|
||||||
|
|
||||||
/*
|
|
||||||
* XXX: on the 167:
|
|
||||||
* ignore bootctrllun
|
|
||||||
* target = bootdevlun / 10
|
|
||||||
* lun = bootdevlun % 10
|
|
||||||
*/
|
|
||||||
|
|
||||||
if (sbsc->sc_link[target][lun] != NULL &&
|
|
||||||
sbsc->sc_link[target][lun]->device_softc == (void *)dev) {
|
|
||||||
booted_device = dev;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Attempt to read a disk label from a device
|
* Attempt to read a disk label from a device
|
||||||
|
Loading…
Reference in New Issue
Block a user