/* $NetBSD: eisavar.h,v 1.25 2021/01/27 04:31:36 thorpej Exp $ */
/*-
* Copyright (c) 2000 The NetBSD Foundation, Inc.
* All rights reserved.
*
* This code is derived from software contributed to The NetBSD Foundation
* by Jason R. Thorpe.
*
* 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, 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.
*
* THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. 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 FOUNDATION 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.
*/
/*
* Copyright (c) 1995, 1996 Christopher G. Demetriou
* 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, 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. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by Christopher G. Demetriou
* for the NetBSD Project.
* 4. 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 ``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 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.
*/
#ifndef _DEV_EISA_EISAVAR_H_
#define _DEV_EISA_EISAVAR_H_
/*
* Definitions for EISA autoconfiguration.
*
* This file describes types and functions which are used for EISA
* configuration. Some of this information is machine-specific, and is
* separated into eisa_machdep.h.
*/
struct eisa_cfg_mem;
struct eisa_cfg_irq;
struct eisa_cfg_dma;
struct eisa_cfg_io;
#include <sys/bus.h>
#include <dev/eisa/eisareg.h> /* For ID register & string info. */
/*
* Structures and definitions needed by the machine-dependent header.
*/
struct eisabus_attach_args;
/*
* Machine-dependent definitions.
*/
#include <machine/eisa_machdep.h>
typedef int eisa_slot_t; /* really only needs to be 4 bits */
/*
* EISA bus attach arguments.
*/
struct eisabus_attach_args {
const char *_eba_busname; /* XXX placeholder */
bus_space_tag_t eba_iot; /* eisa i/o space tag */
bus_space_tag_t eba_memt; /* eisa mem space tag */
bus_dma_tag_t eba_dmat; /* DMA tag */
eisa_chipset_tag_t eba_ec;
};
/*
* EISA device attach arguments.
*/
struct eisa_attach_args {
bus_space_tag_t ea_iot; /* eisa i/o space tag */
bus_space_tag_t ea_memt; /* eisa mem space tag */
bus_dma_tag_t ea_dmat; /* DMA tag */
eisa_chipset_tag_t ea_ec;
eisa_slot_t ea_slot;
u_int8_t ea_vid[EISA_NVIDREGS];
u_int8_t ea_pid[EISA_NPIDREGS];
char ea_idstring[EISA_IDSTRINGLEN];
};
int eisabusprint(void *, const char *);
/*
* EISA Configuration entries, set up by an EISA Configuration Utility.
*/
struct eisa_cfg_mem {
bus_addr_t ecm_addr;
bus_size_t ecm_size;
int ecm_isram;
int ecm_decode;
int ecm_unitsize;
};
struct eisa_cfg_irq {
int eci_irq;
int eci_ist;
int eci_shared;
};
struct eisa_cfg_dma {
int ecd_drq;
int ecd_shared;
int ecd_size;
#define ECD_SIZE_8BIT 0
#define ECD_SIZE_16BIT 1
#define ECD_SIZE_32BIT 2
#define ECD_SIZE_RESERVED 3
int ecd_timing;
#define ECD_TIMING_ISA 0
#define ECD_TIMING_TYPEA 1
#define ECD_TIMING_TYPEB 2
#define ECD_TIMING_TYPEC 3
};
struct eisa_cfg_io {
bus_addr_t ecio_addr;
bus_size_t ecio_size;
int ecio_shared;
};
#ifdef _KERNEL
int eisa_compatible_match(const struct eisa_attach_args *,
const struct device_compatible_entry *);
const struct device_compatible_entry *
eisa_compatible_lookup(const struct eisa_attach_args *,
const struct device_compatible_entry *);
#endif /* _KERNEL */
#endif /* _DEV_EISA_EISAVAR_H_ */