/* $NetBSD: ascreg.h,v 1.5 2025/05/12 00:35:35 nat Exp $ */
/*-
* Copyright (c) 2017, 2023 Nathanial Sloss <
[email protected]>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef _SYS_ARCH_MAC68K_OBIO_ASCREG_H
#define _SYS_ARCH_MAC68K_OBIO_ASCREG_H
#define ASCIRQ 5
#define EASC_VER 0xb0
#define EASC_VER2 0xbb
#define FIFO_A 0
#define FIFO_B 0x400
#define FIFO_A_ALT 0x1000
#define FIFO_B_ALT 0x1800
#define FIFO_LEN 0x400
#define VERLOC 0x800
#define ASCMODE 0x801
#define MODESTOP 0
#define MODEFIFO 1
#define MODEWAVE 2 /* not in easc */
#define ASCTRL 0x802
#define UNDERRUN __BIT(7)
#define STEREO __BIT(1)
#define ANAPWM __BIT(0)
#define FIFOPARAM 0x803
#define CLEARFIFO __BIT(7)
#define NONCOMP __BIT(1)
#define ROMCOMP __BIT(0)
#define FIFOSTATUS 0x804
#define A_HALF __BIT(0)
#define A_FULL __BIT(1)
#define B_HALF __BIT(2)
#define B_FULL __BIT(3)
#define INTVOL 0x806 /* b2-b4 Int volume. b5-b7 ext. */
#define ASCRATE 0x807
#define MACFREQ 0 /* 22254 Hz */
#define F22KHZ 2 /* 22050 Hz */
#define F44KHZ 3 /* 44100 Hz */
#define APLAYREC 0x80a
#define RECORDA __BIT(0)
#define REC22KHZ __BIT(1)
#define ASCTEST 0x80f
#define A_WRITEPTRHI 0xf00
#define A_WRITEPTRLO 0xf01
#define A_READPTRHI 0xf02
#define A_READPTRLO 0xf03
#define B_WRITEPTRHI 0xf20
#define B_WRITEPTRLO 0xf21
#define B_READPTRHI 0xf22
#define B_READPTRLO 0xf23
#define MACOS_HIGH_VOL 0x36 /* Should NOT exceed this value */
#define A_LEFT_VOL 0xf06
#define A_RIGHT_VOL 0xf07
#define B_LEFT_VOL 0xf26
#define B_RIGHT_VOL 0xf27
#define FIFOCTRLA 0xf08
#define FIFOCTRLB 0xf28
#define CDQUALITY 0x81
#define MACDEFAULTS 0x80
#define IRQA 0xf09
#define IRQB 0xf29
#define DISABLEHALFIRQ __BIT(0)
/* Digitally Filtered Audio Chip (dfac) VIA2 Bits */
#define DFAC_CLOCK (__BIT(4))
#define DFAC_DATA (__BIT(3))
#define DFAC_LATCH (__BIT(0))
/* dfac config byte */
#define DFAC_DISABLE 0
#define DFAC_GAIN_HIGH 0x0c
#endif /* !_SYS_ARCH_MAC68K_OBIO_ASCREG_H */