root/dev/sbus/sbusvar.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


    1 /*      $OpenBSD: sbusvar.h,v 1.12 2007/05/31 17:23:14 sobrado Exp $    */
    2 /*      $NetBSD: sbusvar.h,v 1.11 2000/11/01 06:18:45 eeh Exp $ */
    3 
    4 /*-
    5  * Copyright (c) 1998 The NetBSD Foundation, Inc.
    6  * All rights reserved.
    7  *
    8  * This code is derived from software contributed to The NetBSD Foundation
    9  * by Paul Kranenburg.
   10  *
   11  * Redistribution and use in source and binary forms, with or without
   12  * modification, are permitted provided that the following conditions
   13  * are met:
   14  * 1. Redistributions of source code must retain the above copyright
   15  *    notice, this list of conditions and the following disclaimer.
   16  * 2. Redistributions in binary form must reproduce the above copyright
   17  *    notice, this list of conditions and the following disclaimer in the
   18  *    documentation and/or other materials provided with the distribution.
   19  * 3. All advertising materials mentioning features or use of this software
   20  *    must display the following acknowledgement:
   21  *        This product includes software developed by the NetBSD
   22  *        Foundation, Inc. and its contributors.
   23  * 4. Neither the name of The NetBSD Foundation nor the names of its
   24  *    contributors may be used to endorse or promote products derived
   25  *    from this software without specific prior written permission.
   26  *
   27  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
   28  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
   29  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
   30  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
   31  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
   32  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
   33  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
   34  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
   35  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
   36  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
   37  * POSSIBILITY OF SUCH DAMAGE.
   38  */
   39 
   40 #ifndef _SBUS_VAR_H
   41 #define _SBUS_VAR_H
   42 
   43 struct sbus_softc;
   44 
   45 /*
   46  * S-bus variables.
   47  */
   48 
   49 /* Device register space description */
   50 struct sbus_reg {
   51         u_int32_t       sbr_slot;
   52         u_int32_t       sbr_offset;
   53         u_int32_t       sbr_size;
   54 };
   55 
   56 /* Interrupt information */
   57 struct sbus_intr {
   58         u_int32_t       sbi_pri;        /* priority (IPL) */
   59         u_int32_t       sbi_vec;        /* vector (always 0?) */
   60 };
   61 
   62 /* Address translation across busses */
   63 struct sbus_range {
   64         u_int32_t       cspace;         /* Client space */
   65         u_int32_t       coffset;        /* Client offset */
   66         u_int32_t       pspace;         /* Parent space */
   67         u_int32_t       poffset;        /* Parent offset */
   68         u_int32_t       size;           /* Size in bytes of this range */
   69 };
   70 
   71 /*
   72  * SBus driver attach arguments.
   73  */
   74 struct sbus_attach_args {
   75         int             sa_placeholder; /* for obio attach args sharing */
   76         bus_space_tag_t sa_bustag;
   77         bus_dma_tag_t   sa_dmatag;
   78         char            *sa_name;       /* PROM node name */
   79         int             sa_node;        /* PROM handle */
   80         struct sbus_reg *sa_reg;        /* SBus register space for device */
   81         int             sa_nreg;        /* Number of SBus register spaces */
   82 #define sa_slot         sa_reg[0].sbr_slot
   83 #define sa_offset       sa_reg[0].sbr_offset
   84 #define sa_size         sa_reg[0].sbr_size
   85 
   86         struct sbus_intr *sa_intr;      /* SBus interrupts for device */
   87         int             sa_nintr;       /* Number of interrupts */
   88 #define sa_pri          sa_intr[0].sbi_pri
   89 
   90         u_int32_t       *sa_promvaddrs;/* PROM-supplied virtual addresses -- 32-bit */
   91         int             sa_npromvaddrs; /* Number of PROM VAs */
   92 #define sa_promvaddr    sa_promvaddrs[0]
   93         int             sa_frequency;   /* SBus clockrate */
   94 };
   95 
   96 int     sbus_print(void *, const char *);
   97 
   98 int     sbus_setup_attach_args(
   99                 struct sbus_softc *,
  100                 bus_space_tag_t,
  101                 bus_dma_tag_t,
  102                 int,                    /*node*/
  103                 struct sbus_attach_args *);
  104 
  105 void    sbus_destroy_attach_args(struct sbus_attach_args *);
  106 
  107 #define sbus_bus_map(t, slot, offset, sz, flags, unused, hp) \
  108         bus_space_map(t, BUS_ADDR(slot, offset), sz, flags, hp)
  109 
  110 #if notyet
  111 /* variables per SBus */
  112 struct sbus_softc {
  113         struct  device sc_dev;          /* base device */
  114         bus_space_tag_t sc_bustag;
  115         bus_dma_tag_t   sc_dmatag;
  116         int     sc_clockfreq;           /* clock frequency (in Hz) */
  117         struct  sbus_range *sc_range;
  118         int     sc_nrange;
  119         int     sc_burst;               /* burst transfer sizes supported */
  120         /* machdep stuff follows here */
  121         int     *sc_intr2ipl;           /* Interrupt level translation */
  122         int     *sc_intr_compat;        /* `intr' property to sbus compat */
  123 };
  124 #endif
  125 
  126 
  127 /*
  128  * PROM-reported DMA burst sizes for the SBus
  129  */
  130 #define SBUS_BURST_1    0x1
  131 #define SBUS_BURST_2    0x2
  132 #define SBUS_BURST_4    0x4
  133 #define SBUS_BURST_8    0x8
  134 #define SBUS_BURST_16   0x10
  135 #define SBUS_BURST_32   0x20
  136 #define SBUS_BURST_64   0x40
  137 
  138 /* We use #defined(SUN4*) here while the ports are in flux */
  139 #if defined(__sparc__) && !defined(__sparc64__)
  140 #include <sparc/dev/sbusvar.h>
  141 #define INTLEV(x)       (x)
  142 #elif defined(__sparc64__)
  143 #include <sparc64/dev/sbusvar.h>
  144 #include <sparc64/dev/iommureg.h>
  145 #endif
  146 
  147 #endif /* _SBUS_VAR_H */

/* [<][>][^][v][top][bottom][index][help] */