Annotation of sys/arch/sparc/dev/daadioreg.h, Revision 1.1
1.1 ! nbrk 1: /* $OpenBSD: daadioreg.h,v 1.2 2003/06/02 18:40:59 jason Exp $ */
! 2:
! 3: /*
! 4: * Copyright (c) 1999 Jason L. Wright (jason@thought.net)
! 5: * All rights reserved.
! 6: *
! 7: * This software was developed by Jason L. Wright under contract with
! 8: * RTMX Incorporated (http://www.rtmx.com).
! 9: *
! 10: * Redistribution and use in source and binary forms, with or without
! 11: * modification, are permitted provided that the following conditions
! 12: * are met:
! 13: * 1. Redistributions of source code must retain the above copyright
! 14: * notice, this list of conditions and the following disclaimer.
! 15: * 2. Redistributions in binary form must reproduce the above copyright
! 16: * notice, this list of conditions and the following disclaimer in the
! 17: * documentation and/or other materials provided with the distribution.
! 18: *
! 19: * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
! 20: * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
! 21: * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
! 22: * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
! 23: * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
! 24: * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
! 25: * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
! 26: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
! 27: * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
! 28: * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
! 29: * POSSIBILITY OF SUCH DAMAGE.
! 30: */
! 31:
! 32: /*
! 33: * Register definitions for Matrix Corporation MD-DAADIO VME
! 34: * digital/analog, analog/digitial, parallel i/o board.
! 35: * Definitions from "MD-DAADIO User's Manual" revision B.3
! 36: */
! 37:
! 38: struct daadioregs {
! 39: volatile u_int8_t _unused0[32]; /* reserved */
! 40: /* PIO module: 0x20-0x27 */
! 41: volatile u_int8_t pio_portb; /* port b */
! 42: volatile u_int8_t pio_porta; /* port a */
! 43: volatile u_int8_t pio_portd; /* port d */
! 44: volatile u_int8_t pio_portc; /* port c */
! 45: volatile u_int8_t pio_portf; /* port f */
! 46: volatile u_int8_t pio_porte; /* port e */
! 47: volatile u_int8_t _unused1[1]; /* reserved */
! 48: volatile u_int8_t pio_oc; /* output control */
! 49:
! 50: volatile u_int8_t _unused2[24]; /* reserved */
! 51:
! 52: /* DAC module: 0x40-0x4f */
! 53: volatile u_int16_t dac_channel[8]; /* dac channels 0-7 */
! 54:
! 55: volatile u_int8_t _unused3[16]; /* reserved */
! 56:
! 57: /* Miscellaneous: 0x60-0x69 */
! 58: volatile u_int8_t _unused4; /* reserved */
! 59: volatile u_int8_t gvrilr; /* gain value/irq level */
! 60: volatile u_int8_t _unused5; /* reserved */
! 61: volatile u_int8_t ier; /* irq enable (wo) */
! 62: volatile u_int8_t _unused6; /* reserved */
! 63: volatile u_int8_t pio_pattern; /* pio pattern */
! 64: volatile u_int8_t _unused7; /* reserved */
! 65: volatile u_int8_t sid; /* status/id */
! 66: volatile u_int8_t _unused8; /* reserved */
! 67: volatile u_int8_t isr; /* interrupt status */
! 68:
! 69: volatile u_int8_t _unused9[22]; /* reserved */
! 70:
! 71: /* ADC module: 0x80-0xff */
! 72: volatile u_int16_t adc12bit[32]; /* adc 12 bit channels 0-31 */
! 73: volatile u_int16_t adc8bit[32]; /* adc 8 bit channels 0-31 */
! 74: };
! 75:
! 76: /*
! 77: * The board occupies the space from 0 - 3ff (from some board configured
! 78: * offset). There are four register mappings (the last three are redundant
! 79: * mappings of the first)
! 80: */
! 81: struct daadioboard {
! 82: struct daadioregs regs0;
! 83: struct daadioregs regs1;
! 84: struct daadioregs regs2;
! 85: struct daadioregs regs3;
! 86: };
! 87:
! 88: /* gain value register/irq level register (gvr/ilr) */
! 89: #define ILR_TRIGGER 0x80 /* 0=internal,1=external */
! 90: #define ILR_IRQ_MASK 0x70 /* IRQ level */
! 91: #define ILR_IRQ_SHIFT 4 /* irq shift to/from lsbits */
! 92: #define ILR_ADC_GAINMASK 0x07 /* adc gain select bits */
! 93: #define ILR_ADC_GAIN1 0x00 /* 1x adc gain */
! 94: #define ILR_ADC_GAIN2 0x01 /* 2x adc gain */
! 95: #define ILR_ADC_GAIN4 0x02 /* 4x adc gain */
! 96: #define ILR_ADC_GAIN8 0x03 /* 8x adc gain */
! 97: #define ILR_ADC_GAIN16 0x04 /* 16x adc gain */
! 98:
! 99: /* interrupt enable register (ier): WRITE ONLY */
! 100: #define IER_MASK 0x07 /* interrupt bits */
! 101: #define IER_PIPELINE 0x04 /* adc pipeline empty */
! 102: #define IER_CONVERSION 0x02 /* adc conversion done */
! 103: #define IER_PIOEVENT 0x01 /* pio event triggered */
! 104:
! 105: /* interrupt status register (isr) */
! 106: #define ISR_MASK 0x07 /* interrupt bits */
! 107: #define ISR_PIPELINE 0x04 /* adc pipeline empty */
! 108: #define ISR_CONVERSION 0x02 /* adc conversion done */
! 109: #define ISR_PIOEVENT 0x01 /* pio event triggered */
! 110:
! 111: /* analog/digital data register */
! 112: #define ADC_IV 0x1000 /* invalid (out of range) */
! 113: #define ADC_PR 0x2000 /* pipeline empty */
! 114: #define ADC_DR 0x4000 /* data ready (valid) */
! 115: #define ADC_OW 0x8000 /* data overwritten */
! 116: #define ADC_DATAMASK 0x0fff /* the actual data */
! 117:
! 118: /* output control register (pio_oc) */
! 119: #define PIOC_OCA 0x01 /* enable port A output */
! 120: #define PIOC_OCB 0x02 /* enable port B output */
! 121: #define PIOC_OCC 0x03 /* enable port C output */
! 122: #define PIOC_OCD 0x04 /* enable port D output */
! 123: #define PIOC_OCE 0x05 /* enable port E output */
! 124: #define PIOC_OCF 0x06 /* enable port F output */
! 125:
CVSweb