[BACK]Return to pciide_hpt_reg.h CVS log [TXT][DIR] Up to [local] / sys / dev / pci

Annotation of sys/dev/pci/pciide_hpt_reg.h, Revision 1.1.1.1

1.1       nbrk        1: /*     $OpenBSD: pciide_hpt_reg.h,v 1.10 2004/09/24 07:38:38 grange Exp $      */
                      2: /*      $NetBSD: pciide_hpt_reg.h,v 1.4 2001/07/23 14:55:27 bouyer Exp $       */
                      3:
                      4: /*
                      5:  * Copyright (c) 2000 Manuel Bouyer.
                      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:  * 3. All advertising materials mentioning features or use of this software
                     16:  *    must display the following acknowledgement:
                     17:  *      This product includes software developed by Manuel Bouyer.
                     18:  * 4. Neither the name of the University nor the names of its contributors
                     19:  *    may be used to endorse or promote products derived from this software
                     20:  *    without specific prior written permission.
                     21:  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
                     22:  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
                     23:  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
                     24:  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
                     25:  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
                     26:  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
                     27:  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
                     28:  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
                     29:  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
                     30:  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
                     31:  *
                     32:  */
                     33:
                     34: #ifndef _DEV_PCI_PCIIDE_HPT_REG_H_
                     35: #define _DEV_PCI_PCIIDE_HPT_REG_H_
                     36:
                     37: /*
                     38:  * Register definitions for Highpoint PCI IDE controllers.
                     39:  *
                     40:  * The HPT366 has 2 PCI IDE functions, each of them has only one channel.
                     41:  * The HPT370 and HPT372 has the 2 channels on the same PCI IDE function.
                     42:  */
                     43:
                     44: /*
                     45:  * The HPT366, HPT370 and HPT372 have the same vendor/device ID but not the
                     46:  * same revision.
                     47:  */
                     48: #define HPT366_REV 0x01
                     49: #define HPT370_REV 0x03
                     50: #define HPT370A_REV 0x04
                     51: #define HPT372_REV 0x05
                     52: #define HPT374_REV 0x07
                     53:
                     54: #define HPT_IDETIM(chan, drive) (0x40 + ((drive) * 4) + ((chan) * 8))
                     55: #define HPT_IDETIM_BUFEN               0x80000000
                     56: #define HPT_IDETIM_MSTEN               0x40000000
                     57: #define HPT_IDETIM_DMAEN               0x20000000
                     58: #define HPT_IDETIM_UDMAEN              0x10000000
                     59:
                     60: #define HPT366_CTRL1           0x50
                     61: #define HPT366_CTRL1_BLKDIS(chan)      (0x40 << (chan))
                     62: #define HPT366_CTRL1_CHANEN(chan)      (0x10 << (chan))
                     63: #define HPT366_CTRL1_CLRBUF(chan)      (0x04 << (chan))
                     64: #define HPT366_CTRL1_LEG(chan)         (0x01 << (chan))
                     65:
                     66: #define HPT366_CTRL2           0x51
                     67: #define HPT366_CTRL2_FASTIRQ           0x80
                     68: #define HPT366_CTRL2_HOLDIRQ(chan)     (0x20 << (chan))
                     69: #define HPT366_CTRL2_SGEN              0x10
                     70: #define HPT366_CTRL2_CLEARFIFO(chan)   (0x04 << (chan))
                     71: #define HPT366_CTRL2_CLEARBMSM         0x02
                     72: #define HPT366_CTRL2_CLEARSG           0x01
                     73:
                     74: #define HPT366_CTRL3(chan)     (0x52 + ((chan) * 4))
                     75: #define HPT366_CTRL3_PDMA              0x8000
                     76: #define HPT366_CTRL3_BP                        0x4000
                     77: #define HPT366_CTRL3_FASTIRQ_OFFSET    9
                     78: #define HPT366_CTRL3_FASTIRQ_MASK      0x3
                     79:
                     80: #define HPT370_CTRL1(chan)     (0x50 + ((chan) * 4))
                     81: #define HPT370_CTRL1_CLRSG             0x80
                     82: #define HPT370_CTRL1_READF             0x40
                     83: #define HPT370_CTRL1_CLRST             0x20
                     84: #define HPT370_CTRL1_CLRSGC            0x10
                     85: #define HPT370_CTRL1_BLKDIS            0x08
                     86: #define HPT370_CTRL1_EN                        0x04
                     87: #define HPT370_CTRL1_CLRDBUF           0x02
                     88: #define HPT370_CTRL1_LEGEN             0x01
                     89:
                     90: #define HPT370_CTRL2(chan)     (0x51 + ((chan) * 4))
                     91: #define HPT370_CTRL2_FASTIRQ           0x02
                     92: #define HPT370_CTRL2_HIRQ              0x01
                     93:
                     94: #define HPT370_CTRL3(chan)     (0x52 + ((chan) * 4))
                     95: #define HPT370_CTRL3_HIZ               0x8000
                     96: #define HPT370_CTRL3_BP                        0x4000
                     97: #define HPT370_CTRL3_FASTIRQ_OFFSET    9
                     98: #define HPT370_CTRL3_FASTIRQ_MASK      0x3
                     99:
                    100: #define HPT_STAT1              0x58
                    101: #define HPT_STAT1_IRQPOLL(chan)                (0x40 << (chan)) /* 366 only */
                    102: #define HPT_STAT1_DMARQ(chan)          (0x04 << ((chan) * 3))
                    103: #define HPT_STAT1_DMACK(chan)          (0x02 << ((chan) * 3))
                    104: #define HPT_STAT1_IORDY(chan)          (0x01 << ((chan) * 3))
                    105:
                    106: #define HPT_STAT2              0x59
                    107: #define HPT_STAT2_FLT_RST              0x40 /* 366 only */
                    108: #define HPT_STAT2_RST(chan)            (0x40 << (chan))  /* 370 only */
                    109: #define HPT_STAT2_POLLEN(chan)         (0x04 << ((chan) * 3))
                    110: #define HPT_STAT2_IRQD1(chan)          (0x02 << ((chan) * 3))
                    111: #define HPT_STAT2_IRQD0_CH1            0x08
                    112: #define HPT_STAT2_POLLST               0x01
                    113:
                    114: #define HPT_CSEL               0x5a
                    115: #define HPT_CSEL_IRQDIS                        0x10 /* 370 only */
                    116: #define HPT_CSEL_PCIDIS                        0x08 /* 370 only */
                    117: #define HPT_CSEL_PCIWR                 0x04 /* 370 only */
                    118: #define HPT_CSEL_CBLID(chan)            (0x01 << (1 - (chan)))
                    119:
                    120: #define HPT_SC2                0x5b
                    121: #define HPT_SC2_OSC_OK 0x80
                    122: #define HPT_SC2_OSC_EN 0x20
                    123: #define HPT_SC2_ECLK   0x10
                    124: #define HPT_SC2_BPIO   0x08
                    125: #define HPT_SC2_DMARQW 0x04
                    126: #define HPT_SC2_SCLK   0x02
                    127: #define HPT_SC2_MAEN   0x01
                    128:
                    129: static u_int32_t hpt366_pio[] =
                    130:        {0x00d0a7aa, 0x00c8a753, 0x00c8a742, 0x00c8a731};
                    131: static u_int32_t hpt366_dma[] =
                    132:        {0x20c8a797, 0x20c8a742, 0x20c8a731};
                    133: static u_int32_t hpt366_udma[] =
                    134:        {0x10c8a731, 0x10cba731, 0x10caa731, 0x10cfa731, 0x10c9a731};
                    135:
                    136: static u_int32_t hpt370_pio[] =
                    137:        {0x06914e8a, 0x06914e65, 0x06514e33, 0x06514e22, 0x06514e21};
                    138: static u_int32_t hpt370_dma[] =
                    139:        {0x26514e97, 0x26514e33, 0x26514e21};
                    140: static u_int32_t hpt370_udma[] =
                    141:        {0x16514e31, 0x164d4e31, 0x16494e31, 0x166d4e31, 0x16454e31,
                    142:         0x16454e31};
                    143:
                    144: static u_int32_t hpt372_pio[] =
                    145:        {0x0d029d5e, 0x0d029d26, 0x0c829ca6, 0x0c829c84, 0x0c829c62};
                    146: static u_int32_t hpt372_dma[] =
                    147:        {0x2c82922e, 0x2c829266, 0x2c829262};
                    148: static u_int32_t hpt372_udma[] =
                    149:        {0x1c82dc62, 0x1c9adc62, 0x1c91dc62, 0x1c8edc62, 0x1c8ddc62,
                    150:         0x1c6ddc62, 0x1c81dc62};
                    151:
                    152: static u_int32_t hpt374_pio[] =
                    153:        {0x0ac1f48a, 0x0ac1f465, 0x0a81f454, 0x0a81f443, 0x0a81f442};
                    154: static u_int32_t hpt374_dma[] =
                    155:        {0x228082ea, 0x22808254, 0x22808242};
                    156: static u_int32_t hpt374_udma[] =
                    157:        {0x121882ea, 0x12148254, 0x120c8242, 0x128c8242, 0x12ac8242,
                    158:         0x12848242, 0x12808242};
                    159:
                    160: #endif /* !_DEV_PCI_PCIIDE_HPT_REG_H_ */

CVSweb