Add an `addr' locator to the `ibus' bus. This allows you to wire down
unti numbers on systems which have e.g. multiple `dc' devices on the internal bus (like the 5100).
This commit is contained in:
parent
31e0e8c669
commit
98e19f8e0e
|
@ -1,4 +1,4 @@
|
|||
# $NetBSD: files.pmax,v 1.71 1999/11/16 06:00:11 nisimura Exp $
|
||||
# $NetBSD: files.pmax,v 1.72 1999/11/23 20:07:34 thorpej Exp $
|
||||
# DECstation-specific configuration info
|
||||
|
||||
# maxpartitions must be first item in files.${ARCH}.
|
||||
|
@ -48,7 +48,7 @@ file arch/pmax/pmax/memc_3min.c dec_3min|dec_maxine
|
|||
include "dev/dec/files.dec"
|
||||
|
||||
# 3100 and 5100 ibus under mainbus
|
||||
device ibus {}
|
||||
device ibus { [addr = -1] }
|
||||
attach ibus at mainbus with ibus_pmax
|
||||
file arch/pmax/ibus/ibus.c ibus
|
||||
file arch/pmax/ibus/ibus_pmax.c ibus & (dec_3100|dec_5100)
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: ibus.c,v 1.2 1999/11/15 09:50:29 nisimura Exp $ */
|
||||
/* $NetBSD: ibus.c,v 1.3 1999/11/23 20:07:40 thorpej Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1998 Jonathan Stone. All rights reserved.
|
||||
|
@ -32,7 +32,7 @@
|
|||
|
||||
#include <sys/cdefs.h> /* RCS ID & Copyright macro defns */
|
||||
|
||||
__KERNEL_RCSID(0, "$NetBSD: ibus.c,v 1.2 1999/11/15 09:50:29 nisimura Exp $");
|
||||
__KERNEL_RCSID(0, "$NetBSD: ibus.c,v 1.3 1999/11/23 20:07:40 thorpej Exp $");
|
||||
|
||||
#include <sys/param.h>
|
||||
#include <sys/systm.h>
|
||||
|
@ -40,8 +40,12 @@ __KERNEL_RCSID(0, "$NetBSD: ibus.c,v 1.2 1999/11/15 09:50:29 nisimura Exp $");
|
|||
|
||||
#include <pmax/ibus/ibusvar.h>
|
||||
|
||||
#include "locators.h"
|
||||
|
||||
extern struct cfdriver ibus_cd;
|
||||
|
||||
int ibussubmatch __P((struct device *, struct cfdata *, void *));
|
||||
|
||||
void
|
||||
ibusattach(parent, self, aux)
|
||||
struct device *parent, *self;
|
||||
|
@ -56,9 +60,27 @@ ibusattach(parent, self, aux)
|
|||
sc->sc_intr_establish = ida->ida_establish;
|
||||
sc->sc_intr_disestablish = ida->ida_disestablish;
|
||||
|
||||
for (i = 0; i < ida->ida_ndevs; i++) {
|
||||
config_found(self, &ida->ida_devs[i], ibusprint);
|
||||
}
|
||||
for (i = 0; i < ida->ida_ndevs; i++)
|
||||
(void) config_found_sm(self, &ida->ida_devs[i], ibusprint,
|
||||
ibussubmatch);
|
||||
}
|
||||
|
||||
int
|
||||
ibussubmatch(parent, cf, aux)
|
||||
struct device *parent;
|
||||
struct cfdata *cf;
|
||||
void *aux;
|
||||
{
|
||||
struct ibus_attach_args *ia = aux;
|
||||
paddr_t pa;
|
||||
|
||||
pa = MIPS_KSEG1_TO_PHYS(ia->ia_addr);
|
||||
|
||||
if (cf->cf_loc[IBUSCF_ADDR] != IBUSCF_ADDR_DEFAULT &&
|
||||
cf->cf_loc[IBUSCF_ADDR] != pa)
|
||||
return (0);
|
||||
|
||||
return ((*cf->cf_attach->ca_match)(parent, cf, aux));
|
||||
}
|
||||
|
||||
int
|
||||
|
@ -66,8 +88,13 @@ ibusprint(aux, pnp)
|
|||
void *aux;
|
||||
const char *pnp;
|
||||
{
|
||||
struct ibus_attach_args *ia = aux;
|
||||
|
||||
if (pnp)
|
||||
return (QUIET);
|
||||
printf("%s at %s", ia->ia_name, pnp);
|
||||
|
||||
printf(" addr 0x%x", MIPS_KSEG1_TO_PHYS(ia->ia_addr));
|
||||
|
||||
return (UNCONF);
|
||||
}
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: ibusvar.h,v 1.9 1999/11/19 04:34:01 simonb Exp $ */
|
||||
/* $NetBSD: ibusvar.h,v 1.10 1999/11/23 20:07:40 thorpej Exp $ */
|
||||
|
||||
#ifndef _IBUSVAR_H_
|
||||
#define _IBUSVAR_H_ 1
|
||||
|
@ -33,9 +33,9 @@ struct ibus_dev_attach_args {
|
|||
* Arguments used to attach devices to an ibus
|
||||
*/
|
||||
struct ibus_attach_args {
|
||||
char *ia_name; /* Device name. */
|
||||
const char *ia_name; /* Device name. */
|
||||
int ia_cookie; /* Device slot (table entry). */
|
||||
u_int32_t ia_addr; /* Device address. */
|
||||
u_int32_t ia_addr; /* Device address (KSEG1). */
|
||||
};
|
||||
|
||||
void ibusattach __P((struct device *, struct device *, void *));
|
||||
|
|
Loading…
Reference in New Issue