[BACK]Return to pccreg.h CVS log [TXT][DIR] Up to [local] / sys / arch / mvme68k / dev

Annotation of sys/arch/mvme68k/dev/pccreg.h, Revision 1.1.1.1

1.1       nbrk        1: /*     $OpenBSD: pccreg.h,v 1.7 2004/07/30 22:29:45 miod Exp $ */
                      2:
                      3: /*
                      4:  * Copyright (c) 1995 Theo de Raadt
                      5:  * All rights reserved.
                      6:  *
                      7:  * Redistribution and use in source and binary forms, with or without
                      8:  * modification, are permitted provided that the following conditions
                      9:  * are met:
                     10:  * 1. Redistributions of source code must retain the above copyright
                     11:  *    notice, this list of conditions and the following disclaimer.
                     12:  * 2. Redistributions in binary form must reproduce the above copyright
                     13:  *    notice, this list of conditions and the following disclaimer in the
                     14:  *    documentation and/or other materials provided with the distribution.
                     15:  *
                     16:  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
                     17:  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
                     18:  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
                     19:  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
                     20:  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
                     21:  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
                     22:  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
                     23:  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
                     24:  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
                     25:  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
                     26:  */
                     27:
                     28: /*
                     29:  * MVME147 PCC chip
                     30:  */
                     31: struct pccreg {
                     32:        volatile u_long         pcc_dmataddr;   /* dma table address */
                     33:        volatile u_long         pcc_dmadaddr;   /* dma data address */
                     34:        volatile u_long         pcc_dmabcnt;    /* dma byte count */
                     35:        volatile u_long         pcc_dmahold;    /* dma data hold register */
                     36:        volatile u_short        pcc_t1pload;    /* timer1 preload */
                     37:        volatile u_short        pcc_t1count;    /* timer1 count */
                     38:        volatile u_short        pcc_t2pload;    /* timer2 preload */
                     39:        volatile u_short        pcc_t2count;    /* timer2 count */
                     40:        volatile u_char         pcc_t1irq;      /* timer1 interrupt ctrl */
                     41:        volatile u_char         pcc_t1ctl;      /* timer1 ctrl reg */
                     42:        volatile u_char         pcc_t2irq;      /* timer2 interrupt ctrl */
                     43:        volatile u_char         pcc_t2ctl;      /* timer2 ctrl reg */
                     44:        volatile u_char         pcc_acfirq;     /* acfail intr reg */
                     45:        volatile u_char         pcc_dogirq;     /* watchdog intr reg */
                     46:        volatile u_char         pcc_lpirq;      /* printer intr reg */
                     47:        volatile u_char         pcc_lpctl;      /* printer ctrl */
                     48:        volatile u_char         pcc_dmairq;     /* dma interrupt control */
                     49:        volatile u_char         pcc_dmacsr;     /* dma csr */
                     50:        volatile u_char         pcc_busirq;     /* bus error interrupt */
                     51:        volatile u_char         pcc_dmasr;      /* dma status register */
                     52:        volatile u_char         pcc_abortirq;   /* abort interrupt control reg */
                     53:        volatile u_char         pcc_tafcr;      /* table address function code reg */
                     54:        volatile u_char         pcc_zsirq;      /* serial interrupt reg */
                     55:        volatile u_char         pcc_genctl;     /* general control register */
                     56:        volatile u_char         pcc_leirq;      /* ethernet interrupt */
                     57:        volatile u_char         pcc_gensr;      /* general status */
                     58:        volatile u_char         pcc_sbicirq;    /* sbic interrupt reg */
                     59:        volatile u_char         pcc_slavebase;  /* slave base addr reg */
                     60:        volatile u_char         pcc_sw1inq;     /* software interrupt #1 cr */
                     61:        volatile u_char         pcc_vecbase;    /* interrupt base vector register */
                     62:        volatile u_char         pcc_sw2irq;     /* software interrupt #2 cr */
                     63:        volatile u_char         pcc_chiprev;    /* revision level */
                     64: };
                     65: #define PCCSPACE_PCCCHIP_OFF   0x1000
                     66:
                     67: /*
                     68:  * points to system's PCC. This is not active until the pcc0 device
                     69:  * has been attached.
                     70:  */
                     71: extern struct pccreg *sys_pcc;
                     72:
                     73: /*
                     74:  * We lock off our interrupt vector at 0x40.
                     75:  */
                     76: #define PCC_VECBASE    0x40
                     77: #define PCC_NVEC       12
                     78:
                     79: /*
                     80:  * Vectors we use
                     81:  */
                     82: #define PCCV_ACFAIL    0
                     83: #define PCCV_BERR      1
                     84: #define PCCV_ABORT     2
                     85: #define PCCV_ZS                3
                     86: #define PCCV_LE                4
                     87: #define PCCV_SBIC      5
                     88: #define PCCV_DMA       6
                     89: #define PCCV_PRINTER   7
                     90: #define PCCV_TIMER1    8
                     91: #define PCCV_TIMER2    9
                     92: #define PCCV_SOFT1     10
                     93: #define PCCV_SOFT2     11
                     94:
                     95: #define PCC_DMABCNT_MAKEFC(fcn)        ((fcn) << 24)
                     96: #define PCC_DMABCNT_FCMASK     0x07000000
                     97: #define PCC_DMABCNT_L          0x80000000
                     98: #define PCC_DMABCNT_CNTMASK    0x00ffffff
                     99:
                    100: #define PCC_DMACSR_DONE                0x80
                    101: #define PCC_DMACSR_ERR8BIT     0x40
                    102: #define PCC_DMACSR_TNOT32      0x20
                    103: #define PCC_DMACSR_DMAERRDATA  0x10
                    104: #define PCC_DMACSR_DMAERRTABLE 0x08
                    105: #define PCC_DMACSR_TOSCSI      0x04
                    106: #define PCC_DMACSR_USETABLE    0x02
                    107: #define PCC_DMACSR_DEN         0x01
                    108:
                    109: #define PCC_SBIC_RESETIRQ      0x40
                    110: #define PCC_SBIC_RESETABS      0x20
                    111:
                    112: /*
                    113:  * Fairly standard irq register bits.
                    114:  */
                    115: #define PCC_IRQ_IPL    0x07
                    116: #define PCC_IRQ_IEN    0x08
                    117: #define PCC_IRQ_INT    0x80
                    118:
                    119: #define PCC_LPIRQ_ACK  0x20
                    120:
                    121: /*
                    122:  * clock/timer
                    123:  */
                    124: #define PCC_TIMERACK   0x80    /* ack intr */
                    125: #define PCC_TIMERCLEAR 0x00    /* reset and clear timer */
                    126: #define PCC_TIMERSTART 0x03    /* start timer */
                    127:
                    128: #define        pcc_timer_hz2lim(hz)    (65536 - (160000/(hz)))
                    129: #define        pcc_timer_us2lim(us)    (65536 - (160000/(1000000/(us))))
                    130:
                    131: /*
                    132:  * serial control
                    133:  */
                    134: #define PCC_ZS_PCCVEC  0x10    /* let PCC supply vector */
                    135:
                    136: /*
                    137:  * abort switch
                    138:  */
                    139: #define PCC_ABORT_IEN  0x08    /* enable interrupt */
                    140: #define PCC_ABORT_ABS  0x40    /* current state of switch */
                    141: #define PCC_ABORT_ACK  0x80    /* intr active; or write to ack */
                    142:
                    143: /*
                    144:  * for the console we need zs phys addr
                    145:  */
                    146: #define ZS0_PHYS_147   (INTIOBASE_147 + 0x3000)
                    147: #define ZS1_PHYS_147   (INTIOBASE_147 + 0x3800)
                    148:
                    149: /* XXX */
                    150: int    pccintr_establish(int, struct intrhand *, const char *);
                    151: int    pccspeed(struct pccreg *);
                    152:
                    153: #define PCC_GENCTL_IEN 0x10

CVSweb