neomagic.h revision 139749
168349Sobrien/*- 2328875Seadler * Copyright (c) 1999 Cameron Grant <cg@freebsd.org> 368349Sobrien * All rights reserved. 468349Sobrien * 568349Sobrien * Derived from the public domain Linux driver 668349Sobrien * 768349Sobrien * Redistribution and use in source and binary forms, with or without 868349Sobrien * modification, are permitted provided that the following conditions 968349Sobrien * are met: 1068349Sobrien * 1. Redistributions of source code must retain the above copyright 1168349Sobrien * notice, this list of conditions and the following disclaimer. 1268349Sobrien * 2. Redistributions in binary form must reproduce the above copyright 13186690Sobrien * notice, this list of conditions and the following disclaimer in the 14191736Sobrien * documentation and/or other materials provided with the distribution. 1568349Sobrien * 1668349Sobrien * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 1768349Sobrien * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 1868349Sobrien * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 19103373Sobrien * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 20103373Sobrien * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 21103373Sobrien * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 22226048Sobrien * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 2368349Sobrien * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHERIN CONTRACT, STRICT 24186690Sobrien * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 25267843Sdelphij * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THEPOSSIBILITY OF 26103373Sobrien * SUCH DAMAGE. 27103373Sobrien * 28103373Sobrien * $FreeBSD: head/sys/dev/sound/pci/neomagic.h 139749 2005-01-06 01:43:34Z imp $ 29159764Sobrien */ 30103373Sobrien 31103373Sobrien#ifndef _NM256_H_ 32103373Sobrien#define _NM256_H_ 33159764Sobrien 34267843Sdelphij/* The BIOS signature. */ 35267843Sdelphij#define NM_SIGNATURE 0x4e4d0000 36267843Sdelphij/* Signature mask. */ 37267843Sdelphij#define NM_SIG_MASK 0xffff0000 38159764Sobrien 39103373Sobrien/* Size of the second memory area. */ 40103373Sobrien#define NM_PORT2_SIZE 4096 41103373Sobrien 42159764Sobrien/* The base offset of the mixer in the second memory area. */ 43103373Sobrien#define NM_MIXER_OFFSET 0x600 44159764Sobrien 45103373Sobrien/* The base offset for the AC97 test */ 46159764Sobrien#define NM_MIXER_PRESENCE 0xa06 47159764Sobrien#define NM_PRESENCE_MASK 0x050 48159764Sobrien#define NM_PRESENCE_VALUE 0x040 49159764Sobrien 50159764Sobrien/* The maximum size of a coefficient entry. */ 51159764Sobrien#define NM_MAX_COEFFICIENT 0x5000 5268349Sobrien 5368349Sobrien/* The interrupt register. */ 5468349Sobrien#define NM_INT_REG 0xa04 55186690Sobrien/* And its bits. */ 5668349Sobrien#define NM_PLAYBACK_INT 0x40 5768349Sobrien#define NM_RECORD_INT 0x100 5868349Sobrien#define NM_MISC_INT_1 0x4000 59133359Sobrien#define NM_MISC_INT_2 0x1 60133359Sobrien 61186690Sobrien/* The AV's "mixer ready" status bit and location. */ 6268349Sobrien#define NM_MIXER_STATUS_OFFSET 0xa04 6368349Sobrien#define NM_MIXER_READY_MASK 0x0800 6468349Sobrien 6568349Sobrien/* 6668349Sobrien * For the ZX. It uses the same interrupt register, but it holds 32 67186690Sobrien * bits instead of 16. 6868349Sobrien */ 6968349Sobrien#define NM2_PLAYBACK_INT 0x10000 7068349Sobrien#define NM2_RECORD_INT 0x80000 71186690Sobrien#define NM2_MISC_INT_1 0x8 7268349Sobrien#define NM2_MISC_INT_2 0x2 73186690Sobrien 7468349Sobrien/* The ZX's "mixer ready" status bit and location. */ 7568349Sobrien#define NM2_MIXER_STATUS_OFFSET 0xa06 7668349Sobrien#define NM2_MIXER_READY_MASK 0x0800 77186690Sobrien 7868349Sobrien/* The playback registers start from here. */ 7968349Sobrien#define NM_PLAYBACK_REG_OFFSET 0x0 80191736Sobrien/* The record registers start from here. */ 81191736Sobrien#define NM_RECORD_REG_OFFSET 0x200 82191736Sobrien 83191736Sobrien/* The rate register is located 2 bytes from the start of the register area. */ 84191736Sobrien#define NM_RATE_REG_OFFSET 2 8568349Sobrien 8668349Sobrien/* Mono/stereo flag, number of bits on playback, and rate mask. */ 8768349Sobrien#define NM_RATE_STEREO 1 8868349Sobrien#define NM_RATE_BITS_16 2 8968349Sobrien#define NM_RATE_MASK 0xf0 9068349Sobrien 9168349Sobrien/* Playback enable register. */ 9268349Sobrien#define NM_PLAYBACK_ENABLE_REG (NM_PLAYBACK_REG_OFFSET + 0x1) 9368349Sobrien#define NM_PLAYBACK_ENABLE_FLAG 1 9468349Sobrien#define NM_PLAYBACK_ONESHOT 2 9568349Sobrien#define NM_PLAYBACK_FREERUN 4 9668349Sobrien 9768349Sobrien/* Mutes the audio output. */ 9868349Sobrien#define NM_AUDIO_MUTE_REG (NM_PLAYBACK_REG_OFFSET + 0x18) 9968349Sobrien#define NM_AUDIO_MUTE_LEFT 0x8000 10068349Sobrien#define NM_AUDIO_MUTE_RIGHT 0x0080 10168349Sobrien#define NM_AUDIO_MUTE_BOTH 0x8080 10268349Sobrien 10368349Sobrien/* Recording enable register. */ 10468349Sobrien#define NM_RECORD_ENABLE_REG (NM_RECORD_REG_OFFSET + 0) 10568349Sobrien#define NM_RECORD_ENABLE_FLAG 1 10668349Sobrien#define NM_RECORD_FREERUN 2 10768349Sobrien 10868349Sobrien#define NM_RBUFFER_START (NM_RECORD_REG_OFFSET + 0x4) 10968349Sobrien#define NM_RBUFFER_END (NM_RECORD_REG_OFFSET + 0x10) 11068349Sobrien#define NM_RBUFFER_WMARK (NM_RECORD_REG_OFFSET + 0xc) 11168349Sobrien#define NM_RBUFFER_CURRP (NM_RECORD_REG_OFFSET + 0x8) 11268349Sobrien 11368349Sobrien#define NM_PBUFFER_START (NM_PLAYBACK_REG_OFFSET + 0x4) 11468349Sobrien#define NM_PBUFFER_END (NM_PLAYBACK_REG_OFFSET + 0x14) 11568349Sobrien#define NM_PBUFFER_WMARK (NM_PLAYBACK_REG_OFFSET + 0xc) 11668349Sobrien#define NM_PBUFFER_CURRP (NM_PLAYBACK_REG_OFFSET + 0x8) 11768349Sobrien 11868349Sobrien 119186690Sobrien#endif 120186690Sobrien