xref: /openbmc/qemu/hw/audio/gustate.h (revision 1c8e93fb)
147b43a1fSPaolo Bonzini /*
247b43a1fSPaolo Bonzini  * GUSEMU32 - persistent GUS register state
347b43a1fSPaolo Bonzini  *
447b43a1fSPaolo Bonzini  * Copyright (C) 2000-2007 Tibor "TS" Schütz
547b43a1fSPaolo Bonzini  *
647b43a1fSPaolo Bonzini  * Permission is hereby granted, free of charge, to any person obtaining a copy
747b43a1fSPaolo Bonzini  * of this software and associated documentation files (the "Software"), to deal
847b43a1fSPaolo Bonzini  * in the Software without restriction, including without limitation the rights
947b43a1fSPaolo Bonzini  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
1047b43a1fSPaolo Bonzini  * copies of the Software, and to permit persons to whom the Software is
1147b43a1fSPaolo Bonzini  * furnished to do so, subject to the following conditions:
1247b43a1fSPaolo Bonzini  *
1347b43a1fSPaolo Bonzini  * The above copyright notice and this permission notice shall be included in
1447b43a1fSPaolo Bonzini  * all copies or substantial portions of the Software.
1547b43a1fSPaolo Bonzini  *
1647b43a1fSPaolo Bonzini  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1747b43a1fSPaolo Bonzini  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1847b43a1fSPaolo Bonzini  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
1947b43a1fSPaolo Bonzini  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
2047b43a1fSPaolo Bonzini  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
2147b43a1fSPaolo Bonzini  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
2247b43a1fSPaolo Bonzini  * THE SOFTWARE.
2347b43a1fSPaolo Bonzini  */
2447b43a1fSPaolo Bonzini 
2547b43a1fSPaolo Bonzini #ifndef GUSTATE_H
2647b43a1fSPaolo Bonzini #define GUSTATE_H
2747b43a1fSPaolo Bonzini 
2847b43a1fSPaolo Bonzini /*state block offset*/
2947b43a1fSPaolo Bonzini #define gusdata (0)
3047b43a1fSPaolo Bonzini 
3147b43a1fSPaolo Bonzini /* data stored using this structure is in host byte order! */
3247b43a1fSPaolo Bonzini 
3347b43a1fSPaolo Bonzini /*access type*/
3447b43a1fSPaolo Bonzini #define PortRead  (0)
3547b43a1fSPaolo Bonzini #define PortWrite (1)
3647b43a1fSPaolo Bonzini 
3747b43a1fSPaolo Bonzini #define Port8Bitacc  (0)
3847b43a1fSPaolo Bonzini #define Port16Bitacc (1)
3947b43a1fSPaolo Bonzini 
4047b43a1fSPaolo Bonzini /*voice register offsets (in bytes)*/
4147b43a1fSPaolo Bonzini #define VSRegs (0)
4247b43a1fSPaolo Bonzini #define VSRControl          (0)
4347b43a1fSPaolo Bonzini #define VSRegsEnd (VSRControl+VSRegs + 32*(16*2))
4447b43a1fSPaolo Bonzini #define VSRFreq             (2)
4547b43a1fSPaolo Bonzini #define VSRLoopStartHi      (4)
4647b43a1fSPaolo Bonzini #define VSRLoopStartLo      (6)
4747b43a1fSPaolo Bonzini #define VSRLoopEndHi        (8)
4847b43a1fSPaolo Bonzini #define VSRLoopEndLo       (10)
4947b43a1fSPaolo Bonzini #define VSRVolRampRate     (12)
5047b43a1fSPaolo Bonzini #define VSRVolRampStartVol (14)
5147b43a1fSPaolo Bonzini #define VSRVolRampEndVol   (16)
5247b43a1fSPaolo Bonzini #define VSRCurrVol         (18)
5347b43a1fSPaolo Bonzini #define VSRCurrPosHi       (20)
5447b43a1fSPaolo Bonzini #define VSRCurrPosLo       (22)
5547b43a1fSPaolo Bonzini #define VSRPanning         (24)
5647b43a1fSPaolo Bonzini #define VSRVolRampControl  (26)
5747b43a1fSPaolo Bonzini 
5847b43a1fSPaolo Bonzini /*voice register offsets (in words)*/
5947b43a1fSPaolo Bonzini #define wVSRegs (0)
6047b43a1fSPaolo Bonzini #define wVSRControl         (0)
6147b43a1fSPaolo Bonzini #define wVSRegsEnd (wVSRControl+wVSRegs + 32*(16))
6247b43a1fSPaolo Bonzini #define wVSRFreq            (1)
6347b43a1fSPaolo Bonzini #define wVSRLoopStartHi     (2)
6447b43a1fSPaolo Bonzini #define wVSRLoopStartLo     (3)
6547b43a1fSPaolo Bonzini #define wVSRLoopEndHi       (4)
6647b43a1fSPaolo Bonzini #define wVSRLoopEndLo       (5)
6747b43a1fSPaolo Bonzini #define wVSRVolRampRate     (6)
6847b43a1fSPaolo Bonzini #define wVSRVolRampStartVol (7)
6947b43a1fSPaolo Bonzini #define wVSRVolRampEndVol   (8)
7047b43a1fSPaolo Bonzini #define wVSRCurrVol         (9)
7147b43a1fSPaolo Bonzini #define wVSRCurrPosHi      (10)
7247b43a1fSPaolo Bonzini #define wVSRCurrPosLo      (11)
7347b43a1fSPaolo Bonzini #define wVSRPanning        (12)
7447b43a1fSPaolo Bonzini #define wVSRVolRampControl (13)
7547b43a1fSPaolo Bonzini 
7647b43a1fSPaolo Bonzini /*GUS register state block: 32 voices, padding filled with remaining registers*/
7747b43a1fSPaolo Bonzini #define DataRegLoByte3x4  (VSRVolRampControl+2)
7847b43a1fSPaolo Bonzini #define  DataRegWord3x4 (DataRegLoByte3x4)
7947b43a1fSPaolo Bonzini #define DataRegHiByte3x5  (VSRVolRampControl+2       +1)
8047b43a1fSPaolo Bonzini #define DMA_2xB (VSRVolRampControl+2+2)
8147b43a1fSPaolo Bonzini #define IRQ_2xB (VSRVolRampControl+2+3)
8247b43a1fSPaolo Bonzini 
8347b43a1fSPaolo Bonzini #define RegCtrl_2xF       (VSRVolRampControl+2+(16*2))
8447b43a1fSPaolo Bonzini #define Jumper_2xB        (VSRVolRampControl+2+(16*2)+1)
8547b43a1fSPaolo Bonzini #define GUS42DMAStart     (VSRVolRampControl+2+(16*2)+2)
8647b43a1fSPaolo Bonzini 
8747b43a1fSPaolo Bonzini #define GUS43DRAMIOlo     (VSRVolRampControl+2+(16*2)*2)
8847b43a1fSPaolo Bonzini #define  GUSDRAMPOS24bit (GUS43DRAMIOlo)
8947b43a1fSPaolo Bonzini #define GUS44DRAMIOhi     (VSRVolRampControl+2+(16*2)*2+2)
9047b43a1fSPaolo Bonzini 
9147b43a1fSPaolo Bonzini #define voicewavetableirq (VSRVolRampControl+2+(16*2)*3) /* voice IRQ pseudoqueue: 1 bit per voice */
9247b43a1fSPaolo Bonzini 
9347b43a1fSPaolo Bonzini #define voicevolrampirq   (VSRVolRampControl+2+(16*2)*4) /* voice IRQ pseudoqueue: 1 bit per voice */
9447b43a1fSPaolo Bonzini 
9547b43a1fSPaolo Bonzini #define startvoices       (VSRVolRampControl+2+(16*2)*5) /* statistics / optimizations */
9647b43a1fSPaolo Bonzini 
9747b43a1fSPaolo Bonzini #define IRQStatReg2x6     (VSRVolRampControl+2+(16*2)*6)
9847b43a1fSPaolo Bonzini #define TimerStatus2x8    (VSRVolRampControl+2+(16*2)*6+1)
9947b43a1fSPaolo Bonzini #define TimerDataReg2x9   (VSRVolRampControl+2+(16*2)*6+2)
10047b43a1fSPaolo Bonzini #define MixerCtrlReg2x0   (VSRVolRampControl+2+(16*2)*6+3)
10147b43a1fSPaolo Bonzini 
10247b43a1fSPaolo Bonzini #define VoiceSelReg3x2    (VSRVolRampControl+2+(16*2)*7)
10347b43a1fSPaolo Bonzini #define FunkSelReg3x3     (VSRVolRampControl+2+(16*2)*7+1)
10447b43a1fSPaolo Bonzini #define AdLibStatus2x8    (VSRVolRampControl+2+(16*2)*7+2)
10547b43a1fSPaolo Bonzini #define StatRead_2xF      (VSRVolRampControl+2+(16*2)*7+3)
10647b43a1fSPaolo Bonzini 
10747b43a1fSPaolo Bonzini #define GUS48SampSpeed    (VSRVolRampControl+2+(16*2)*8)
10847b43a1fSPaolo Bonzini #define GUS41DMACtrl      (VSRVolRampControl+2+(16*2)*8+1)
10947b43a1fSPaolo Bonzini #define GUS45TimerCtrl    (VSRVolRampControl+2+(16*2)*8+2)
11047b43a1fSPaolo Bonzini #define GUS46Counter1     (VSRVolRampControl+2+(16*2)*8+3)
11147b43a1fSPaolo Bonzini 
11247b43a1fSPaolo Bonzini #define GUS47Counter2     (VSRVolRampControl+2+(16*2)*9)
11347b43a1fSPaolo Bonzini #define GUS49SampCtrl     (VSRVolRampControl+2+(16*2)*9+1)
11447b43a1fSPaolo Bonzini #define GUS4cReset        (VSRVolRampControl+2+(16*2)*9+2)
11547b43a1fSPaolo Bonzini #define NumVoices         (VSRVolRampControl+2+(16*2)*9+3)
11647b43a1fSPaolo Bonzini 
11747b43a1fSPaolo Bonzini #define TimerIRQs         (VSRVolRampControl+2+(16*2)*10)   /* delayed IRQ, statistics */
11847b43a1fSPaolo Bonzini #define BusyTimerIRQs     (VSRVolRampControl+2+(16*2)*10+2) /* delayed IRQ, statistics */
11947b43a1fSPaolo Bonzini 
12047b43a1fSPaolo Bonzini #define AdLibCommand2xA   (VSRVolRampControl+2+(16*2)*11)
12147b43a1fSPaolo Bonzini #define AdLibData2x9      (VSRVolRampControl+2+(16*2)*11+1)
12247b43a1fSPaolo Bonzini #define SB2xCd            (VSRVolRampControl+2+(16*2)*11+2)
12347b43a1fSPaolo Bonzini #define SB2xE             (VSRVolRampControl+2+(16*2)*11+3)
12447b43a1fSPaolo Bonzini 
12547b43a1fSPaolo Bonzini #define SynVoiceIRQ8f     (VSRVolRampControl+2+(16*2)*12)
12647b43a1fSPaolo Bonzini #define GUS50DMAHigh      (VSRVolRampControl+2+(16*2)*12+1)
12747b43a1fSPaolo Bonzini 
12847b43a1fSPaolo Bonzini #define portaccesses (VSRegsEnd) /* statistics / suspend mode */
12947b43a1fSPaolo Bonzini 
13047b43a1fSPaolo Bonzini #define gusdataend (VSRegsEnd+4)
13147b43a1fSPaolo Bonzini 
132*175de524SMarkus Armbruster #endif /* GUSTATE_H */
133