19484Sgarrett.damore@Sun.COM /* 29484Sgarrett.damore@Sun.COM * CDDL HEADER START 39484Sgarrett.damore@Sun.COM * 49484Sgarrett.damore@Sun.COM * The contents of this file are subject to the terms of the 59484Sgarrett.damore@Sun.COM * Common Development and Distribution License (the "License"). 69484Sgarrett.damore@Sun.COM * You may not use this file except in compliance with the License. 79484Sgarrett.damore@Sun.COM * 89484Sgarrett.damore@Sun.COM * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 99484Sgarrett.damore@Sun.COM * or http://www.opensolaris.org/os/licensing. 109484Sgarrett.damore@Sun.COM * See the License for the specific language governing permissions 119484Sgarrett.damore@Sun.COM * and limitations under the License. 129484Sgarrett.damore@Sun.COM * 139484Sgarrett.damore@Sun.COM * When distributing Covered Code, include this CDDL HEADER in each 149484Sgarrett.damore@Sun.COM * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 159484Sgarrett.damore@Sun.COM * If applicable, add the following below this CDDL HEADER, with the 169484Sgarrett.damore@Sun.COM * fields enclosed by brackets "[]" replaced with your own identifying 179484Sgarrett.damore@Sun.COM * information: Portions Copyright [yyyy] [name of copyright owner] 189484Sgarrett.damore@Sun.COM * 199484Sgarrett.damore@Sun.COM * CDDL HEADER END 209484Sgarrett.damore@Sun.COM */ 219484Sgarrett.damore@Sun.COM /* 22*11936Sgdamore@opensolaris.org * Copyright 2010 Sun Microsystems, Inc. All rights reserved. 239484Sgarrett.damore@Sun.COM * Use is subject to license terms. 249484Sgarrett.damore@Sun.COM */ 259484Sgarrett.damore@Sun.COM 269484Sgarrett.damore@Sun.COM #ifndef _AUDIOIXP_H_ 279484Sgarrett.damore@Sun.COM #define _AUDIOIXP_H_ 289484Sgarrett.damore@Sun.COM 299484Sgarrett.damore@Sun.COM /* 309484Sgarrett.damore@Sun.COM * Header file for the audioixp device driver 319484Sgarrett.damore@Sun.COM */ 329484Sgarrett.damore@Sun.COM 339484Sgarrett.damore@Sun.COM #define IXP_DEV_CONFIG "onboard1" 349484Sgarrett.damore@Sun.COM #define IXP_DEV_VERSION "a" 359484Sgarrett.damore@Sun.COM 369484Sgarrett.damore@Sun.COM /* 379484Sgarrett.damore@Sun.COM * Driver supported configuration information 389484Sgarrett.damore@Sun.COM */ 399484Sgarrett.damore@Sun.COM #define IXP_NAME "audioixp" 409484Sgarrett.damore@Sun.COM #define IXP_MOD_NAME "ATI IXP audio driver" 419484Sgarrett.damore@Sun.COM #define IXP_CONFIG_REGS (0) /* PCI configure register */ 429484Sgarrett.damore@Sun.COM #define IXP_IO_AM_REGS (1) /* PCI base register 0x10 */ 439484Sgarrett.damore@Sun.COM 449484Sgarrett.damore@Sun.COM #define IXP_PLAY 0 459484Sgarrett.damore@Sun.COM #define IXP_REC 1 469484Sgarrett.damore@Sun.COM 479484Sgarrett.damore@Sun.COM #define IXP_BD_NUMS (8) 489484Sgarrett.damore@Sun.COM 499484Sgarrett.damore@Sun.COM /* 509484Sgarrett.damore@Sun.COM * PCI configuration registers and bits 519484Sgarrett.damore@Sun.COM */ 529484Sgarrett.damore@Sun.COM #define IXP_PCI_ID_200 (0x10024341U) 539484Sgarrett.damore@Sun.COM #define IXP_PCI_ID_300 (0x10024361U) 549484Sgarrett.damore@Sun.COM #define IXP_PCI_ID_400 (0x10024370U) 559484Sgarrett.damore@Sun.COM #define IXP_PCI_ID_SB600 (0x10024382U) 569484Sgarrett.damore@Sun.COM 579484Sgarrett.damore@Sun.COM /* 589484Sgarrett.damore@Sun.COM * Audio controller registers and bits 599484Sgarrett.damore@Sun.COM */ 609484Sgarrett.damore@Sun.COM #define IXP_AUDIO_INT (0x00) 619484Sgarrett.damore@Sun.COM #define IXP_AUDIO_INT_IN_DMA_OVERFLOW (1U<<0) 629484Sgarrett.damore@Sun.COM #define IXP_AUDIO_INT_IN_DMA (1U<<1) 639484Sgarrett.damore@Sun.COM #define IXP_AUDIO_INT_OUT_DMA_UNDERFLOW (1U<<2) 649484Sgarrett.damore@Sun.COM #define IXP_AUDIO_INT_OUT_DMA (1U<<3) 659484Sgarrett.damore@Sun.COM #define IXP_AUDIO_INT_CODEC0_NOT_READY (1U<<10) 669484Sgarrett.damore@Sun.COM #define IXP_AUDIO_INT_CODEC1_NOT_READY (1U<<11) 679484Sgarrett.damore@Sun.COM #define IXP_AUDIO_INT_CODEC2_NOT_READY (1U<<12) 689484Sgarrett.damore@Sun.COM #define IXP_AUDIO_INT_NEW_FRAME (1U<<13) 699484Sgarrett.damore@Sun.COM 709484Sgarrett.damore@Sun.COM #define IXP_AUDIO_INT_EN (0x04) 719484Sgarrett.damore@Sun.COM #define IXP_AUDIO_INT_EN_IN_DMA_OVERFLOW (1U<<0) 729484Sgarrett.damore@Sun.COM #define IXP_AUDIO_INT_EN_STATUS (1U<<1) 739484Sgarrett.damore@Sun.COM #define IXP_AUDIO_INT_EN_OUT_DMA_UNDERFLOW (1U<<2) 749484Sgarrett.damore@Sun.COM #define IXP_AUDIO_INT_EN_CODEC0_NOT_READY (1U<<10) 759484Sgarrett.damore@Sun.COM #define IXP_AUDIO_INT_EN_CODEC1_NOT_READY (1U<<11) 769484Sgarrett.damore@Sun.COM #define IXP_AUDIO_INT_EN_CODEC2_NOT_READY (1U<<12) 779484Sgarrett.damore@Sun.COM #define IXP_AUDIO_INT_EN_NEW_FRAME (1U<<13) 789484Sgarrett.damore@Sun.COM 799484Sgarrett.damore@Sun.COM #define IXP_AUDIO_CMD (0x08) 809484Sgarrett.damore@Sun.COM #define IXP_AUDIO_CMD_POWER_DOWN (1U<<0) 819484Sgarrett.damore@Sun.COM #define IXP_AUDIO_CMD_EN_IN (1U<<1) 829484Sgarrett.damore@Sun.COM #define IXP_AUDIO_CMD_EN_OUT (1U<<2) 839484Sgarrett.damore@Sun.COM #define IXP_AUDIO_CMD_EN_IN_DMA (1U<<8) 849484Sgarrett.damore@Sun.COM #define IXP_AUDIO_CMD_EN_OUT_DMA (1U<<9) 859484Sgarrett.damore@Sun.COM #define IXP_AUDIO_CMD_INTER_IN (1U<<21) 869484Sgarrett.damore@Sun.COM #define IXP_AUDIO_CMD_INTER_OUT (1U<<22) 879484Sgarrett.damore@Sun.COM #define IXP_AUDIO_CMD_BURST_EN (1U<<25) 889484Sgarrett.damore@Sun.COM #define IXP_AUDIO_CMD_AC_ACTIVE (1U<<28) 899484Sgarrett.damore@Sun.COM #define IXP_AUDIO_CMD_AC_SOFT_RESET (1U<<29) 909484Sgarrett.damore@Sun.COM #define IXP_AUDIO_CMD_AC_SYNC (1U<<30) 919484Sgarrett.damore@Sun.COM #define IXP_AUDIO_CMD_AC_RESET (1U<<31) 929484Sgarrett.damore@Sun.COM 939484Sgarrett.damore@Sun.COM #define IXP_AUDIO_OUT_PHY_ADDR_DATA (0x0c) 949484Sgarrett.damore@Sun.COM #define IXP_AUDIO_OUT_PHY_PRIMARY_CODEC (0u) 959484Sgarrett.damore@Sun.COM #define IXP_AUDIO_OUT_PHY_SECOND_CODEC (1u) 969484Sgarrett.damore@Sun.COM #define IXP_AUDIO_OUT_PHY_THIRD_CODEC (2u) 979484Sgarrett.damore@Sun.COM #define IXP_AUDIO_OUT_PHY_READ (1u<<2) 989484Sgarrett.damore@Sun.COM #define IXP_AUDIO_OUT_PHY_WRITE (0u) 999484Sgarrett.damore@Sun.COM #define IXP_AUDIO_OUT_PHY_EN (1u<<8) 1009484Sgarrett.damore@Sun.COM #define IXP_AUDIO_OUT_PHY_ADDR_SHIFT (9) 1019484Sgarrett.damore@Sun.COM #define IXP_AUDIO_OUT_PHY_ADDR_MASK (0x7fu<<9) 1029484Sgarrett.damore@Sun.COM #define IXP_AUDIO_OUT_PHY_DATA_SHIFT (16) 1039484Sgarrett.damore@Sun.COM #define IXP_AUDIO_OUT_PHY_DATA_MASK (0xffffu<<16) 1049484Sgarrett.damore@Sun.COM 1059484Sgarrett.damore@Sun.COM #define IXP_AUDIO_IN_PHY_ADDR_DATA (0x10) 1069484Sgarrett.damore@Sun.COM #define IXP_AUDIO_IN_PHY_READY (1u<<8) 1079484Sgarrett.damore@Sun.COM #define IXP_AUDIO_IN_PHY_ADDR_SHIFT (9) 1089484Sgarrett.damore@Sun.COM #define IXP_AUDIO_IN_PHY_ADDR_MASK (0x7fu<<9) 1099484Sgarrett.damore@Sun.COM #define IXP_AUDIO_IN_PHY_DATA_SHIFT (16) 1109484Sgarrett.damore@Sun.COM #define IXP_AUDIO_IN_PHY_DATA_MASK (0xffffu<<16) 1119484Sgarrett.damore@Sun.COM 1129484Sgarrett.damore@Sun.COM #define IXP_AUDIO_SLOTREQ (0x14) 1139484Sgarrett.damore@Sun.COM #define IXP_AUDIO_COUNTER (0x18) 1149484Sgarrett.damore@Sun.COM #define IXP_AUDIO_IN_FIFO_THRESHOLD (0x1c) 1159484Sgarrett.damore@Sun.COM #define IXP_AUDIO_IN_DMA_LINK_P (0x20) 1169484Sgarrett.damore@Sun.COM #define IXP_AUDIO_IN_DMA_LINK_P_EN (1u<<0) 1179484Sgarrett.damore@Sun.COM 1189484Sgarrett.damore@Sun.COM #define IXP_AUDIO_IN_DMA_DT_START (0x24) 1199484Sgarrett.damore@Sun.COM #define IXP_AUDIO_IN_DMA_DT_NEXT (0x28) 1209484Sgarrett.damore@Sun.COM #define IXP_AUDIO_IN_DMA_DT_CUR (0x2c) 1219484Sgarrett.damore@Sun.COM #define IXP_AUDIO_IN_DT_SIZE_FIFO_INFO (0x30) 1229484Sgarrett.damore@Sun.COM 1239484Sgarrett.damore@Sun.COM #define IXP_AUDIO_OUT_DMA_SLOT_EN_THRESHOLD (0x34) 1249484Sgarrett.damore@Sun.COM #define IXP_AUDIO_OUT_DMA_SLOT_3 (1U<<0) 1259484Sgarrett.damore@Sun.COM #define IXP_AUDIO_OUT_DMA_SLOT_4 (1U<<1) 1269484Sgarrett.damore@Sun.COM #define IXP_AUDIO_OUT_DMA_SLOT_5 (1U<<2) 1279484Sgarrett.damore@Sun.COM #define IXP_AUDIO_OUT_DMA_SLOT_6 (1U<<3) 1289484Sgarrett.damore@Sun.COM #define IXP_AUDIO_OUT_DMA_SLOT_7 (1U<<4) 1299484Sgarrett.damore@Sun.COM #define IXP_AUDIO_OUT_DMA_SLOT_8 (1U<<5) 1309484Sgarrett.damore@Sun.COM #define IXP_AUDIO_OUT_DMA_SLOT_9 (1U<<6) 1319484Sgarrett.damore@Sun.COM #define IXP_AUDIO_OUT_DMA_SLOT_10 (1U<<7) 1329484Sgarrett.damore@Sun.COM #define IXP_AUDIO_OUT_DMA_SLOT_11 (1U<<8) 1339484Sgarrett.damore@Sun.COM #define IXP_AUDIO_OUT_DMA_SLOT_12 (1U<<9) 1349484Sgarrett.damore@Sun.COM #define IXP_AUDIO_OUT_DMA_THRESHOLD_MASK (0x7fU<<11) 1359484Sgarrett.damore@Sun.COM #define IXP_AUDIO_OUT_DMA_THRESHOLD_SHIFT (11) 1369484Sgarrett.damore@Sun.COM 1379484Sgarrett.damore@Sun.COM #define IXP_AUDIO_OUT_DMA_LINK_P (0x38) 1389484Sgarrett.damore@Sun.COM #define IXP_AUDIO_OUT_DMA_LINK_P_EN (1U<<0) 1399484Sgarrett.damore@Sun.COM 1409484Sgarrett.damore@Sun.COM #define IXP_AUDIO_OUT_DMA_DT_START (0x3c) 1419484Sgarrett.damore@Sun.COM #define IXP_AUDIO_OUT_DMA_DT_NEXT (0x40) 1429484Sgarrett.damore@Sun.COM #define IXP_AUDIO_OUT_DMA_DT_CUR (0x44) 1439484Sgarrett.damore@Sun.COM #define IXP_AUDIO_OUT_DT_SIZE_USED_FREE (0x48) 1449484Sgarrett.damore@Sun.COM #define IXP_AUDIO_SPDIF_CMD (0x4c) 1459484Sgarrett.damore@Sun.COM #define IXP_AUDIO_SPDIF_LINK_P (0x50) 1469484Sgarrett.damore@Sun.COM #define IXP_AUDIO_SPDIF_DT_START (0x54) 1479484Sgarrett.damore@Sun.COM #define IXP_AUDIO_SPDIF_DT_NEXT (0x58) 1489484Sgarrett.damore@Sun.COM #define IXP_AUDIO_SPDIF_DT_CUR (0x5c) 1499484Sgarrett.damore@Sun.COM #define IXP_AUDIO_SPDIF_DT_SIZE_FIFO_INFO (0x60) 1509484Sgarrett.damore@Sun.COM #define IXP_AUDIO_MODEM_MIRROR (0x7c) 1519484Sgarrett.damore@Sun.COM #define IXP_AUDIO_AUDIO_MIRROR (0x80) 1529484Sgarrett.damore@Sun.COM #define IXP_AUDIO_6CH_RECORDER_EN (0x84) 1539484Sgarrett.damore@Sun.COM #define IXP_AUDIO_FIFO_FLUSH (0x88) 1549484Sgarrett.damore@Sun.COM #define IXP_AUDIO_FIFO_FLUSH_OUT (1u<<0) 1559484Sgarrett.damore@Sun.COM #define IXP_AUDIO_FIFO_FLUSH_IN (1u<<1) 1569484Sgarrett.damore@Sun.COM 1579484Sgarrett.damore@Sun.COM #define IXP_AUDIO_OUT_FIFO_INFO (0x8c) 1589484Sgarrett.damore@Sun.COM #define IXP_AUDIO_SPDIF_STATUS_BITS_REG1 (0x90) 1599484Sgarrett.damore@Sun.COM #define IXP_AUDIO_SPDIF_STATUS_BITS_REG2 (0x94) 1609484Sgarrett.damore@Sun.COM #define IXP_AUDIO_SPDIF_STATUS_BITS_REG3 (0x98) 1619484Sgarrett.damore@Sun.COM #define IXP_AUDIO_SPDIF_STATUS_BITS_REG4 (0x9c) 1629484Sgarrett.damore@Sun.COM #define IXP_AUDIO_SPDIF_STATUS_BITS_REG5 (0xa0) 1639484Sgarrett.damore@Sun.COM #define IXP_AUDIO_SPDIF_STATUS_BITS_REG6 (0xa4) 1649484Sgarrett.damore@Sun.COM #define IXP_AUDIO_PHY_SEMA (0xa8) 1659484Sgarrett.damore@Sun.COM 1669484Sgarrett.damore@Sun.COM /* 1679484Sgarrett.damore@Sun.COM * AC97 status and link control registers are located 1689484Sgarrett.damore@Sun.COM * in PCI configuration space. 1699484Sgarrett.damore@Sun.COM */ 1709484Sgarrett.damore@Sun.COM #define IXP_REG_GSR 0x40 1719484Sgarrett.damore@Sun.COM #define IXP_REG_GCR 0x41 1729484Sgarrett.damore@Sun.COM 1739484Sgarrett.damore@Sun.COM /* AC link interface status register */ 1749484Sgarrett.damore@Sun.COM #define IXP_GSR_PRI_READY 0x01 1759484Sgarrett.damore@Sun.COM #define IXP_GSR_SEC_READY 0x04 1769484Sgarrett.damore@Sun.COM #define IXP_GSR_TRI_READY 0x10 1779484Sgarrett.damore@Sun.COM #define IXP_GSR_FOUR_READY 0x20 1789484Sgarrett.damore@Sun.COM 1799484Sgarrett.damore@Sun.COM /* AC link interface control register */ 1809484Sgarrett.damore@Sun.COM #define IXP_GCR_ENAC97 0x80 1819484Sgarrett.damore@Sun.COM #define IXP_GCR_RST 0x40 1829484Sgarrett.damore@Sun.COM #define IXP_GCR_RSYNCHI 0x20 1839484Sgarrett.damore@Sun.COM #define IXP_GCR_SDO 0x10 1849484Sgarrett.damore@Sun.COM #define IXP_GCR_VSR 0x08 1859484Sgarrett.damore@Sun.COM #define IXP_GCR_3D_AUDIO_CHANNEL 0x04 1869484Sgarrett.damore@Sun.COM 1879484Sgarrett.damore@Sun.COM /* 1889484Sgarrett.damore@Sun.COM * Macro for AD1980 codec 1899484Sgarrett.damore@Sun.COM */ 1909484Sgarrett.damore@Sun.COM #define AD1980_VID1 0x4144 1919484Sgarrett.damore@Sun.COM #define AD1980_VID2 0x5370 1929484Sgarrett.damore@Sun.COM #define AD1985_VID2 0x5375 1939484Sgarrett.damore@Sun.COM #define CODEC_AD_REG_MISC 0x76 /* offset of ad1980 misc control reg */ 1949484Sgarrett.damore@Sun.COM #define AD1980_MISC_LOSEL 0x0020 /* Line-out amplifier output selector */ 1959484Sgarrett.damore@Sun.COM #define AD1980_MISC_HPSEL 0x0400 /* HP-out amplifier output selector */ 1969484Sgarrett.damore@Sun.COM 1979484Sgarrett.damore@Sun.COM struct audioixp_port { 1989484Sgarrett.damore@Sun.COM int num; 1999484Sgarrett.damore@Sun.COM struct audioixp_state *statep; 2009484Sgarrett.damore@Sun.COM ddi_dma_handle_t samp_dmah; 2019484Sgarrett.damore@Sun.COM ddi_acc_handle_t samp_acch; 2029484Sgarrett.damore@Sun.COM size_t samp_size; 2039484Sgarrett.damore@Sun.COM caddr_t samp_kaddr; 2049484Sgarrett.damore@Sun.COM uint32_t samp_paddr; 2059484Sgarrett.damore@Sun.COM 2069484Sgarrett.damore@Sun.COM ddi_dma_handle_t bdl_dmah; 2079484Sgarrett.damore@Sun.COM ddi_acc_handle_t bdl_acch; 2089484Sgarrett.damore@Sun.COM size_t bdl_size; 2099484Sgarrett.damore@Sun.COM caddr_t bdl_kaddr; 2109484Sgarrett.damore@Sun.COM uint32_t bdl_paddr; 2119484Sgarrett.damore@Sun.COM 212*11936Sgdamore@opensolaris.org unsigned nframes; 2139484Sgarrett.damore@Sun.COM unsigned fragfr; 2149484Sgarrett.damore@Sun.COM unsigned fragsz; 2159484Sgarrett.damore@Sun.COM uint64_t count; 2169484Sgarrett.damore@Sun.COM uint32_t offset; 2179484Sgarrett.damore@Sun.COM uint8_t nchan; 2189484Sgarrett.damore@Sun.COM 2199484Sgarrett.damore@Sun.COM unsigned sync_dir; 2209484Sgarrett.damore@Sun.COM 2219484Sgarrett.damore@Sun.COM boolean_t started; 2229484Sgarrett.damore@Sun.COM 2239484Sgarrett.damore@Sun.COM audio_engine_t *engine; 2249484Sgarrett.damore@Sun.COM }; 2259484Sgarrett.damore@Sun.COM typedef struct audioixp_port audioixp_port_t; 2269484Sgarrett.damore@Sun.COM 2279484Sgarrett.damore@Sun.COM /* 2289484Sgarrett.damore@Sun.COM * buffer descriptor list entry, see datasheet 2299484Sgarrett.damore@Sun.COM */ 2309484Sgarrett.damore@Sun.COM struct audioixp_bd_entry { 2319484Sgarrett.damore@Sun.COM uint32_t buf_base; /* the address of the buffer */ 2329484Sgarrett.damore@Sun.COM uint16_t status; /* status of the buffer */ 2339484Sgarrett.damore@Sun.COM uint16_t buf_len; /* size of the buffer in DWORD */ 2349484Sgarrett.damore@Sun.COM uint32_t next; /* physical addr of next bd_entry */ 2359484Sgarrett.damore@Sun.COM }; 2369484Sgarrett.damore@Sun.COM typedef struct audioixp_bd_entry audioixp_bd_entry_t; 2379484Sgarrett.damore@Sun.COM 2389484Sgarrett.damore@Sun.COM /* 2399484Sgarrett.damore@Sun.COM * audioixp_state_t -per instance state and operation data 2409484Sgarrett.damore@Sun.COM */ 2419484Sgarrett.damore@Sun.COM struct audioixp_state { 2429484Sgarrett.damore@Sun.COM kmutex_t inst_lock; /* state protection lock */ 2439484Sgarrett.damore@Sun.COM dev_info_t *dip; 2449484Sgarrett.damore@Sun.COM audio_dev_t *adev; /* audio handle */ 2459484Sgarrett.damore@Sun.COM ac97_t *ac97; 2469484Sgarrett.damore@Sun.COM audioixp_port_t *play_port; 2479484Sgarrett.damore@Sun.COM audioixp_port_t *rec_port; 2489484Sgarrett.damore@Sun.COM 2499484Sgarrett.damore@Sun.COM ddi_acc_handle_t pcih; /* pci configuration space */ 2509484Sgarrett.damore@Sun.COM ddi_acc_handle_t regsh; /* for audio mixer register */ 2519484Sgarrett.damore@Sun.COM caddr_t regsp; /* base of audio mixer regs */ 2529484Sgarrett.damore@Sun.COM 2539484Sgarrett.damore@Sun.COM boolean_t suspended; 2549484Sgarrett.damore@Sun.COM boolean_t swap_out; /* swap line-out and sur-out */ 2559484Sgarrett.damore@Sun.COM 2569484Sgarrett.damore@Sun.COM uint32_t ixp_codec_not_ready_bits; /* for codec detect */ 2579484Sgarrett.damore@Sun.COM }; 2589484Sgarrett.damore@Sun.COM typedef struct audioixp_state audioixp_state_t; 2599484Sgarrett.damore@Sun.COM 2609484Sgarrett.damore@Sun.COM /* 2619484Sgarrett.damore@Sun.COM * Useful bit twiddlers 2629484Sgarrett.damore@Sun.COM */ 2639484Sgarrett.damore@Sun.COM #define GET32(reg) \ 2649484Sgarrett.damore@Sun.COM ddi_get32(statep->regsh, (void *)(statep->regsp + (reg))) 2659484Sgarrett.damore@Sun.COM 2669484Sgarrett.damore@Sun.COM #define PUT32(reg, val) \ 2679484Sgarrett.damore@Sun.COM ddi_put32(statep->regsh, (void *)(statep->regsp + (reg)), (val)) 2689484Sgarrett.damore@Sun.COM 2699484Sgarrett.damore@Sun.COM #define SET32(reg, val) PUT32(reg, GET32(reg) | ((uint32_t)(val))) 2709484Sgarrett.damore@Sun.COM 2719484Sgarrett.damore@Sun.COM #define CLR32(reg, val) PUT32(reg, GET32(reg) & ~((uint32_t)(val))) 2729484Sgarrett.damore@Sun.COM 2739484Sgarrett.damore@Sun.COM #define IXP_INTS (175) /* default interrupt rate */ 2749484Sgarrett.damore@Sun.COM #define IXP_MIN_INTS (24) /* minimum interrupt rate */ 2759484Sgarrett.damore@Sun.COM #define IXP_MAX_INTS (500) /* maximum interrupt rate */ 2769484Sgarrett.damore@Sun.COM 2779484Sgarrett.damore@Sun.COM #endif /* _AUDIOIXP_H_ */ 278