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

Annotation of sys/dev/pci/auixpreg.h, Revision 1.1

1.1     ! nbrk        1: /* $OpenBSD: auixpreg.h,v 1.1 2005/08/07 20:08:45 mickey Exp $ */
        !             2: /* $NetBSD: auixpreg.h,v 1.2 2005/01/12 00:28:03 reinoud Exp $ */
        !             3:
        !             4: /*
        !             5:  * Copyright (c) 2004, 2005 Reinoud Zandijk <reinoud@netbsd.org>
        !             6:  * All rights reserved.
        !             7:  *
        !             8:  * Redistribution and use in source and binary forms, with or without
        !             9:  * modification, are permitted provided that the following conditions
        !            10:  * are met:
        !            11:  * 1. Redistributions of source code must retain the above copyright
        !            12:  *    notice, this list of conditions and the following disclaimer.
        !            13:  * 2. The name of the author may not be used to endorse or promote products
        !            14:  *    derived from this software without specific prior written permission.
        !            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 the NetBSD
        !            18:  *     Foundation, Inc. and its contributors.
        !            19:  * 4. Neither the name of The NetBSD Foundation nor the names of its
        !            20:  *    contributors may be used to endorse or promote products derived
        !            21:  *    from this software without specific prior written permission.
        !            22:  *
        !            23:  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
        !            24:  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
        !            25:  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
        !            26:  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
        !            27:  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
        !            28:  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
        !            29:  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
        !            30:  * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
        !            31:  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
        !            32:  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
        !            33:  * SUCH DAMAGE.
        !            34:  */
        !            35:
        !            36: /*
        !            37:  * NetBSD audio driver for ATI IXP-{150,200,...} audio driver hardware.
        !            38:  *
        !            39:  * Thanks are due to Takashi Iwai for the constants.
        !            40:  */
        !            41:
        !            42:
        !            43: #define ATI_IXP_CODECS 3
        !            44:
        !            45:
        !            46: typedef struct atiixp_dma_desc {
        !            47:        u_int32_t       addr;           /* DMA buffer address */
        !            48:        u_int16_t       status;         /* status bits; function unknown */
        !            49:        u_int16_t       size;           /* size of this DMA packet in dwords */
        !            50:        u_int32_t       next;           /* phys pointer to next packet descriptor */
        !            51: } __packed atiixp_dma_desc_t;
        !            52:
        !            53:
        !            54: #define ATI_REG_ISR                    0x00            /* interrupt source */
        !            55: #define  ATI_REG_ISR_IN_XRUN           (1U<<0)
        !            56: #define  ATI_REG_ISR_IN_STATUS         (1U<<1)
        !            57: #define  ATI_REG_ISR_OUT_XRUN          (1U<<2)
        !            58: #define  ATI_REG_ISR_OUT_STATUS                (1U<<3)
        !            59: #define  ATI_REG_ISR_SPDF_XRUN         (1U<<4)
        !            60: #define  ATI_REG_ISR_SPDF_STATUS       (1U<<5)
        !            61: #define  ATI_REG_ISR_PHYS_INTR         (1U<<8)
        !            62: #define  ATI_REG_ISR_PHYS_MISMATCH     (1U<<9)
        !            63: #define  ATI_REG_ISR_CODEC0_NOT_READY  (1U<<10)
        !            64: #define  ATI_REG_ISR_CODEC1_NOT_READY  (1U<<11)
        !            65: #define  ATI_REG_ISR_CODEC2_NOT_READY  (1U<<12)
        !            66: #define  ATI_REG_ISR_NEW_FRAME         (1U<<13)
        !            67:
        !            68: #define ATI_REG_IER                    0x04            /* interrupt enable */
        !            69: #define  ATI_REG_IER_IN_XRUN_EN                (1U<<0)
        !            70: #define  ATI_REG_IER_IO_STATUS_EN      (1U<<1)
        !            71: #define  ATI_REG_IER_OUT_XRUN_EN       (1U<<2)
        !            72: #define  ATI_REG_IER_OUT_XRUN_COND     (1U<<3)
        !            73: #define  ATI_REG_IER_SPDF_XRUN_EN      (1U<<4)
        !            74: #define  ATI_REG_IER_SPDF_STATUS_EN    (1U<<5)
        !            75: #define  ATI_REG_IER_PHYS_INTR_EN      (1U<<8)
        !            76: #define  ATI_REG_IER_PHYS_MISMATCH_EN  (1U<<9)
        !            77: #define  ATI_REG_IER_CODEC0_INTR_EN    (1U<<10)
        !            78: #define  ATI_REG_IER_CODEC1_INTR_EN    (1U<<11)
        !            79: #define  ATI_REG_IER_CODEC2_INTR_EN    (1U<<12)
        !            80: #define  ATI_REG_IER_NEW_FRAME_EN      (1U<<13)        /* (RO) */
        !            81: #define  ATI_REG_IER_SET_BUS_BUSY      (1U<<14)        /* (WO) audio is running */
        !            82:
        !            83: #define ATI_REG_CMD                    0x08            /* command */
        !            84: #define  ATI_REG_CMD_POWERDOWN         (1U<<0)
        !            85: #define  ATI_REG_CMD_RECEIVE_EN                (1U<<1)
        !            86: #define  ATI_REG_CMD_SEND_EN           (1U<<2)
        !            87: #define  ATI_REG_CMD_STATUS_MEM                (1U<<3)
        !            88: #define  ATI_REG_CMD_SPDF_OUT_EN       (1U<<4)
        !            89: #define  ATI_REG_CMD_SPDF_STATUS_MEM   (1U<<5)
        !            90: #define  ATI_REG_CMD_SPDF_THRESHOLD    (3U<<6)
        !            91: #define  ATI_REG_CMD_SPDF_THRESHOLD_SHIFT      6
        !            92: #define  ATI_REG_CMD_IN_DMA_EN         (1U<<8)
        !            93: #define  ATI_REG_CMD_OUT_DMA_EN                (1U<<9)
        !            94: #define  ATI_REG_CMD_SPDF_DMA_EN       (1U<<10)
        !            95: #define  ATI_REG_CMD_SPDF_OUT_STOPPED  (1U<<11)
        !            96: #define  ATI_REG_CMD_SPDF_CONFIG_MASK  (7U<<12)
        !            97: #define   ATI_REG_CMD_SPDF_CONFIG_34   (1U<<12)
        !            98: #define   ATI_REG_CMD_SPDF_CONFIG_78   (2U<<12)
        !            99: #define   ATI_REG_CMD_SPDF_CONFIG_69   (3U<<12)
        !           100: #define   ATI_REG_CMD_SPDF_CONFIG_01   (4U<<12)
        !           101: #define  ATI_REG_CMD_INTERLEAVE_SPDF   (1U<<16)
        !           102: #define  ATI_REG_CMD_AUDIO_PRESENT     (1U<<20)
        !           103: #define  ATI_REG_CMD_INTERLEAVE_IN     (1U<<21)
        !           104: #define  ATI_REG_CMD_INTERLEAVE_OUT    (1U<<22)
        !           105: #define  ATI_REG_CMD_LOOPBACK_EN       (1U<<23)
        !           106: #define  ATI_REG_CMD_PACKED_DIS                (1U<<24)
        !           107: #define  ATI_REG_CMD_BURST_EN          (1U<<25)
        !           108: #define  ATI_REG_CMD_PANIC_EN          (1U<<26)
        !           109: #define  ATI_REG_CMD_MODEM_PRESENT     (1U<<27)
        !           110: #define  ATI_REG_CMD_ACLINK_ACTIVE     (1U<<28)
        !           111: #define  ATI_REG_CMD_AC_SOFT_RESET     (1U<<29)
        !           112: #define  ATI_REG_CMD_AC_SYNC           (1U<<30)
        !           113: #define  ATI_REG_CMD_AC_RESET          (1U<<31)
        !           114:
        !           115: #define ATI_REG_PHYS_OUT_ADDR          0x0c
        !           116: #define  ATI_REG_PHYS_OUT_CODEC_MASK   (3U<<0)
        !           117: #define  ATI_REG_PHYS_OUT_RW           (1U<<2)
        !           118: #define  ATI_REG_PHYS_OUT_ADDR_EN      (1U<<8)
        !           119: #define  ATI_REG_PHYS_OUT_ADDR_SHIFT   9
        !           120: #define  ATI_REG_PHYS_OUT_DATA_SHIFT   16
        !           121:
        !           122: #define ATI_REG_PHYS_IN_ADDR           0x10
        !           123: #define  ATI_REG_PHYS_IN_READ_FLAG     (1U<<8)
        !           124: #define  ATI_REG_PHYS_IN_ADDR_SHIFT    9
        !           125: #define  ATI_REG_PHYS_IN_DATA_SHIFT    16
        !           126:
        !           127: #define ATI_REG_SLOTREQ                        0x14
        !           128:
        !           129: #define ATI_REG_COUNTER                        0x18
        !           130: #define  ATI_REG_COUNTER_SLOT          (3U<<0)         /* slot # */
        !           131: #define  ATI_REG_COUNTER_BITCLOCK      (31U<<8)
        !           132:
        !           133: #define ATI_REG_IN_FIFO_THRESHOLD      0x1c
        !           134:
        !           135: #define ATI_REG_IN_DMA_LINKPTR         0x20
        !           136: #define ATI_REG_IN_DMA_DT_START                0x24            /* RO */
        !           137: #define ATI_REG_IN_DMA_DT_NEXT         0x28            /* RO */
        !           138: #define ATI_REG_IN_DMA_DT_CUR          0x2c            /* RO */
        !           139: #define ATI_REG_IN_DMA_DT_SIZE         0x30
        !           140:
        !           141: #define ATI_REG_OUT_DMA_SLOT           0x34
        !           142: #define  ATI_REG_OUT_DMA_SLOT_BIT(x)   (1U << ((x) - 3))
        !           143: #define  ATI_REG_OUT_DMA_SLOT_MASK     0x1ff
        !           144: #define  ATI_REG_OUT_DMA_THRESHOLD_MASK        0xf800
        !           145: #define  ATI_REG_OUT_DMA_THRESHOLD_SHIFT       11
        !           146:
        !           147: #define ATI_REG_OUT_DMA_LINKPTR                0x38
        !           148: #define ATI_REG_OUT_DMA_DT_START       0x3c            /* RO */
        !           149: #define ATI_REG_OUT_DMA_DT_NEXT                0x40            /* RO */
        !           150: #define ATI_REG_OUT_DMA_DT_CUR         0x44            /* RO */
        !           151: #define ATI_REG_OUT_DMA_DT_SIZE                0x48
        !           152:
        !           153: #define ATI_REG_SPDF_CMD               0x4c
        !           154: #define  ATI_REG_SPDF_CMD_LFSR         (1U<<4)
        !           155: #define  ATI_REG_SPDF_CMD_SINGLE_CH    (1U<<5)
        !           156: #define  ATI_REG_SPDF_CMD_LFSR_ACC     (0xff<<8)       /* RO */
        !           157:
        !           158: #define ATI_REG_SPDF_DMA_LINKPTR       0x50
        !           159: #define ATI_REG_SPDF_DMA_DT_START      0x54            /* RO */
        !           160: #define ATI_REG_SPDF_DMA_DT_NEXT       0x58            /* RO */
        !           161: #define ATI_REG_SPDF_DMA_DT_CUR                0x5c            /* RO */
        !           162: #define ATI_REG_SPDF_DMA_DT_SIZE       0x60
        !           163:
        !           164: #define ATI_REG_MODEM_MIRROR           0x7c
        !           165: #define ATI_REG_AUDIO_MIRROR           0x80
        !           166:
        !           167: #define ATI_REG_6CH_REORDER            0x84            /* reorder slots for 6ch */
        !           168: #define  ATI_REG_6CH_REORDER_EN                (1U<<0)         /* 3,4,7,8,6,9 -> 3,4,6,9,7,8 */
        !           169:
        !           170: #define ATI_REG_FIFO_FLUSH             0x88
        !           171: #define  ATI_REG_FIFO_OUT_FLUSH                (1U<<0)
        !           172: #define  ATI_REG_FIFO_IN_FLUSH         (1U<<1)
        !           173:
        !           174: /* LINKPTR */
        !           175: #define  ATI_REG_LINKPTR_EN            (1U<<0)
        !           176:
        !           177: /* [INT|OUT|SPDIF]_DMA_DT_SIZE */
        !           178: #define  ATI_REG_DMA_DT_SIZE           (0xffffU<<0)
        !           179: #define  ATI_REG_DMA_FIFO_USED         (0x1fU<<16)
        !           180: #define  ATI_REG_DMA_FIFO_FREE         (0x1fU<<21)
        !           181: #define  ATI_REG_DMA_STATE             (7U<<26)

CVSweb