[BACK]Return to mcbusvar.h CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / sys / arch / alpha / mcbus

File: [cvs.NetBSD.org] / src / sys / arch / alpha / mcbus / mcbusvar.h (download)

Revision 1.3, Thu Apr 15 22:19:52 1999 UTC (21 years, 10 months ago) by thorpej
Branch: MAIN
CVS Tags: wrstuden-devbsize-base, wrstuden-devbsize-19991221, wrstuden-devbsize, thorpej_scsipi_nbase, thorpej_scsipi_beforemerge, thorpej_scsipi_base, thorpej_scsipi, thorpej-mips-cache-base, thorpej-mips-cache, thorpej-devvp-base3, thorpej-devvp-base2, thorpej-devvp-base, thorpej-devvp, pre-chs-ubcperf, post-chs-ubcperf, newlock-base, newlock, netbsd-1-6-base, netbsd-1-6-RELEASE, netbsd-1-6-RC3, netbsd-1-6-RC2, netbsd-1-6-RC1, netbsd-1-6-PATCH002-RELEASE, netbsd-1-6-PATCH002-RC4, netbsd-1-6-PATCH002-RC3, netbsd-1-6-PATCH002-RC2, netbsd-1-6-PATCH002-RC1, netbsd-1-6-PATCH002, netbsd-1-6-PATCH001-RELEASE, netbsd-1-6-PATCH001-RC3, netbsd-1-6-PATCH001-RC2, netbsd-1-6-PATCH001-RC1, netbsd-1-6-PATCH001, netbsd-1-6, netbsd-1-5-base, netbsd-1-5-RELEASE, netbsd-1-5-PATCH003, netbsd-1-5-PATCH002, netbsd-1-5-PATCH001, netbsd-1-5-BETA2, netbsd-1-5-BETA, netbsd-1-5-ALPHA2, netbsd-1-5, minoura-xpg4dl-base, minoura-xpg4dl, ifpoll-base, gehenna-devsw-base, gehenna-devsw, fvdl-softdep-base, fvdl-softdep, eeh-devprop-base, eeh-devprop, comdex-fall-1999-base, comdex-fall-1999, chs-ubc2-newbase, chs-ubc2-base
Branch point for: nathanw_sa, kqueue
Changes since 1.2: +6 -2 lines

- Add a comment explaining why we probe for MCPCIAs in the shuffled
  MID order.
- Export the shuffled MID order; other files now need it.
- Don't derive the GID from the unit number of the mcbus.  A user could
  render his kernel non-bootable by using a different unit number in the
  kernel config file.  We (and the hardware) only support one MCBUS, so
  simply use instance 0.  Note that this will need to be adjusted if there
  are even any multiple-MCBUS systems.

/* $NetBSD: mcbusvar.h,v 1.3 1999/04/15 22:19:52 thorpej Exp $ */

/*
 * Copyright (c) 1998 by Matthew Jacob
 * NASA AMES Research Center.
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice immediately at the beginning of the file, without modification,
 *    this list of conditions, and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. The name of the author may not be used to endorse or promote products
 *    derived from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR
 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 */

/*
 * Soft definitions for the MCBUS main system
 * bus found on AlphaServer 4100 systems.
 */

/*
 * The structure used to attach devices to the MCbus.
 */
struct mcbus_dev_attach_args {
	char *		ma_name;	/* so things aren't confused */
	u_int8_t	ma_gid;		/* GID of MCBUS (MCBUS #) */
	u_int8_t	ma_mid;		/* Module ID on MCBUS */
	u_int8_t	ma_type;	/* Module "type" */
	u_int8_t	ma_configured;	/* nonzero if configured */
};
#define	MCBUS_GID_FROM_INSTANCE(unit)	(7 - unit)

/*
 * Bus-dependent structure for CPUs. This is dynamically allocated
 * for each CPU on the MCbus, and glued into the cpu_softc as sc_busdep,
 * if there is such a beast available. Otherwise, a single global version
 * is used so that the MCPCIA configuration code can determine toads
 * like module id and bcache size of the master CPU.
 */
struct mcbus_cpu_busdep {
	u_int8_t	mcbus_cpu_mid;	/* MCbus Module ID */
	u_int8_t	mcbus_bcache;	/* BCache on this CPU */
	u_int8_t	mcbus_valid;
};

#define	MCBUS_CPU_BCACHE_0MB	0
#define	MCBUS_CPU_BCACHE_1MB	1
#define	MCBUS_CPU_BCACHE_4MB	2

/*
 * "types"
 */
#define	MCBUS_TYPE_RES	0
#define	MCBUS_TYPE_UNK	1
#define	MCBUS_TYPE_MEM	2
#define	MCBUS_TYPE_CPU	3
#define	MCBUS_TYPE_PCI	4

#ifdef _KERNEL
extern struct mcbus_cpu_busdep mcbus_primary;
extern const int mcbus_mcpcia_probe_order[];
#endif