|
61 | 61 | /* the relevant bits and zero to the other bits */ |
62 | 62 | #define IPR_P16V 0x80000000 /* Bit set when the CA0151 P16V chip wishes |
63 | 63 | to interrupt */ |
64 | | -#define IPR_GPIOMSG 0x20000000 /* GPIO message interrupt (RE'd, still not sure |
65 | | - which INTE bits enable it) */ |
| 64 | +#define IPR_WATERMARK_REACHED 0x40000000 |
| 65 | +#define IPR_A_GPIO 0x20000000 /* GPIO input pin change */ |
66 | 66 |
|
67 | 67 | /* The next two interrupts are for the midi port on the Audigy Drive (A_MPU1) */ |
68 | 68 | #define IPR_A_MIDITRANSBUFEMPTY2 0x10000000 /* MIDI UART transmit buffer empty */ |
|
122 | 122 | /* behavior and possibly random segfaults and */ |
123 | 123 | /* lockups if enabled. */ |
124 | 124 |
|
| 125 | +#define INTE_A_GPIOENABLE 0x00040000 /* Enable GPIO input change interrupts */ |
| 126 | + |
125 | 127 | /* The next two interrupts are for the midi port on the Audigy Drive (A_MPU1) */ |
126 | 128 | #define INTE_A_MIDITXENABLE2 0x00020000 /* Enable MIDI transmit-buffer-empty interrupts */ |
127 | 129 | #define INTE_A_MIDIRXENABLE2 0x00010000 /* Enable MIDI receive-buffer-empty interrupts */ |
128 | 130 |
|
| 131 | +#define INTE_A_SPDIF_BUFFULL_ENABLE 0x00008000 |
| 132 | +#define INTE_A_SPDIF_HALFBUFFULL_ENABLE 0x00004000 |
129 | 133 |
|
130 | 134 | #define INTE_SAMPLERATETRACKER 0x00002000 /* Enable sample rate tracker interrupts */ |
131 | 135 | /* NOTE: This bit must always be enabled */ |
|
146 | 150 | #define WC 0x10 /* Wall Clock register */ |
147 | 151 | #define WC_SAMPLECOUNTER_MASK 0x03FFFFC0 /* Sample periods elapsed since reset */ |
148 | 152 | #define WC_SAMPLECOUNTER 0x14060010 |
149 | | -#define WC_CURRENTCHANNEL 0x0000003F /* Channel [0..63] currently being serviced */ |
| 153 | +#define WC_CURRENTCHANNEL_MASK 0x0000003F /* Channel [0..63] currently being serviced */ |
150 | 154 | /* NOTE: Each channel takes 1/64th of a sample */ |
151 | 155 | /* period to be serviced. */ |
| 156 | +#define WC_CURRENTCHANNEL 0x06000010 |
152 | 157 |
|
153 | 158 | #define HCFG 0x14 /* Hardware config register */ |
154 | 159 | /* NOTE: There is no reason to use the legacy */ |
|
276 | 281 | /* NOTE: After the rate is changed, a maximum */ |
277 | 282 | /* of 1024 sample periods should be allowed */ |
278 | 283 | /* before the new rate is guaranteed accurate. */ |
279 | | -#define TIMER_RATE_MASK 0x000003ff /* Timer interrupt rate in sample periods */ |
| 284 | +#define TIMER_RATE_MASK 0x03ff /* Timer interrupt rate in sample periods */ |
280 | 285 | /* 0 == 1024 periods, [1..4] are not useful */ |
281 | 286 |
|
282 | 287 | #define AC97DATA 0x1c /* AC97 register set data register (16 bit) */ |
|
425 | 430 |
|
426 | 431 | #define CCCA 0x08 /* Filter Q, interp. ROM, byte size, cur. addr register */ |
427 | 432 | #define CCCA_RESONANCE 0xf0000000 /* Lowpass filter resonance (Q) height */ |
428 | | -#define CCCA_INTERPROMMASK 0x0e000000 /* Selects passband of interpolation ROM */ |
| 433 | +#define CCCA_INTERPROM_MASK 0x0e000000 /* Selects passband of interpolation ROM */ |
429 | 434 | /* 1 == full band, 7 == lowpass */ |
430 | 435 | /* ROM 0 is used when pitch shifting downward or less */ |
431 | 436 | /* then 3 semitones upward. Increasingly higher ROM */ |
|
487 | 492 | /* 0x8000-n == 666*n usec delay */ |
488 | 493 |
|
489 | 494 | #define ATKHLDV 0x11 /* Volume envelope hold and attack register */ |
490 | | -#define ATKHLDV_PHASE0 0x00008000 /* 0 = Begin attack phase */ |
| 495 | +#define ATKHLDV_PHASE0_MASK 0x00008000 /* 0 = Begin attack phase */ |
491 | 496 | #define ATKHLDV_HOLDTIME_MASK 0x00007f00 /* Envelope hold time (127-n == n*88.2msec) */ |
492 | 497 | #define ATKHLDV_ATTACKTIME_MASK 0x0000007f /* Envelope attack time, log encoded */ |
493 | 498 | /* 0 = infinite, 1 = 10.9msec, ... 0x7f = 5.5msec */ |
|
510 | 515 | /* 0x8000-n == 666*n usec delay */ |
511 | 516 |
|
512 | 517 | #define ATKHLDM 0x15 /* Modulation envelope hold and attack register */ |
513 | | -#define ATKHLDM_PHASE0 0x00008000 /* 0 = Begin attack phase */ |
| 518 | +#define ATKHLDM_PHASE0_MASK 0x00008000 /* 0 = Begin attack phase */ |
514 | 519 | #define ATKHLDM_HOLDTIME 0x00007f00 /* Envelope hold time (127-n == n*42msec) */ |
515 | 520 | #define ATKHLDM_ATTACKTIME 0x0000007f /* Envelope attack time, log encoded */ |
516 | 521 | /* 0 = infinite, 1 = 11msec, ... 0x7f = 5.5msec */ |
|
839 | 844 | #define A_FXWC1 0x74 /* Selects 0x7f-0x60 for FX recording */ |
840 | 845 | #define A_FXWC2 0x75 /* Selects 0x9f-0x80 for FX recording */ |
841 | 846 |
|
842 | | -/* Extended Hardware Control */ |
843 | | -#define A_SPDIF_SAMPLERATE 0x76 /* Set the sample rate of SPDIF output */ |
844 | | -#define A_SAMPLE_RATE 0x76 /* Various sample rate settings. */ |
845 | | -#define A_SAMPLE_RATE_NOT_USED 0x0ffc111e /* Bits that are not used and cannot be set. */ |
846 | | -#define A_SAMPLE_RATE_UNKNOWN 0xf0030001 /* Bits that can be set, but have unknown use. */ |
| 847 | +#define A_EHC 0x76 /* Extended Hardware Control */ |
| 848 | + |
| 849 | +#define A_SPDIF_SAMPLERATE A_EHC /* Set the sample rate of SPDIF output */ |
847 | 850 | #define A_SPDIF_RATE_MASK 0x000000e0 /* Any other values for rates, just use 48000 */ |
848 | | -#define A_SPDIF_48000 0x00000000 |
| 851 | +#define A_SPDIF_48000 0x00000000 /* kX calls this BYPASS */ |
849 | 852 | #define A_SPDIF_192000 0x00000020 |
850 | 853 | #define A_SPDIF_96000 0x00000040 |
851 | 854 | #define A_SPDIF_44100 0x00000080 |
| 855 | +#define A_SPDIF_MUTED 0x000000c0 |
852 | 856 |
|
853 | 857 | #define A_I2S_CAPTURE_RATE_MASK 0x00000e00 /* This sets the capture PCM rate, but it is */ |
854 | 858 | #define A_I2S_CAPTURE_48000 0x00000000 /* unclear if this sets the ADC rate as well. */ |
855 | 859 | #define A_I2S_CAPTURE_192000 0x00000200 |
856 | 860 | #define A_I2S_CAPTURE_96000 0x00000400 |
857 | 861 | #define A_I2S_CAPTURE_44100 0x00000800 |
858 | 862 |
|
859 | | -#define A_PCM_RATE_MASK 0x0000e000 /* This sets the playback PCM rate on the P16V */ |
860 | | -#define A_PCM_48000 0x00000000 |
861 | | -#define A_PCM_192000 0x00002000 |
862 | | -#define A_PCM_96000 0x00004000 |
863 | | -#define A_PCM_44100 0x00008000 |
| 863 | +#define A_EHC_SRC48_MASK 0x0000e000 /* This sets the playback PCM rate on the P16V */ |
| 864 | +#define A_EHC_SRC48_BYPASS 0x00000000 |
| 865 | +#define A_EHC_SRC48_192 0x00002000 |
| 866 | +#define A_EHC_SRC48_96 0x00004000 |
| 867 | +#define A_EHC_SRC48_44 0x00008000 |
| 868 | +#define A_EHC_SRC48_MUTED 0x0000c000 |
| 869 | + |
| 870 | +#define A_EHC_P17V_TVM 0x00000001 /* Tank virtual memory mode */ |
| 871 | +#define A_EHC_P17V_SEL0_MASK 0x00030000 /* Aka A_EHC_P16V_PB_RATE; 00: 48, 01: 44.1, 10: 96, 11: 192 */ |
| 872 | +#define A_EHC_P17V_SEL1_MASK 0x000c0000 |
| 873 | +#define A_EHC_P17V_SEL2_MASK 0x00300000 |
| 874 | +#define A_EHC_P17V_SEL3_MASK 0x00c00000 |
| 875 | + |
| 876 | +#define A_EHC_ASYNC_BYPASS 0x80000000 |
864 | 877 |
|
865 | 878 | #define A_SRT3 0x77 /* I2S0 Sample Rate Tracker Status */ |
866 | 879 | #define A_SRT4 0x78 /* I2S1 Sample Rate Tracker Status */ |
867 | 880 | #define A_SRT5 0x79 /* I2S2 Sample Rate Tracker Status */ |
868 | 881 | /* - default to 0x01080000 on my audigy 2 ZS --rlrevell */ |
869 | 882 |
|
| 883 | +#define A_SRT_ESTSAMPLERATE 0x001fffff |
| 884 | +#define A_SRT_RATELOCKED 0x01000000 |
| 885 | + |
870 | 886 | #define A_TTDA 0x7a /* Tank Table DMA Address */ |
871 | 887 | #define A_TTDD 0x7b /* Tank Table DMA Data */ |
872 | 888 |
|
|
981 | 997 | #define EMU_HANA_WCLOCK_INT_44_1K 0x01 |
982 | 998 | #define EMU_HANA_WCLOCK_HANA_SPDIF_IN 0x02 |
983 | 999 | #define EMU_HANA_WCLOCK_HANA_ADAT_IN 0x03 |
984 | | -#define EMU_HANA_WCLOCK_SYNC_BNCN 0x04 |
| 1000 | +#define EMU_HANA_WCLOCK_SYNC_BNC 0x04 |
985 | 1001 | #define EMU_HANA_WCLOCK_2ND_HANA 0x05 |
986 | 1002 | #define EMU_HANA_WCLOCK_SRC_RESERVED 0x06 |
987 | 1003 | #define EMU_HANA_WCLOCK_OFF 0x07 /* For testing, forces fallback to DEFCLOCK */ |
|
1010 | 1026 | #define EMU_HANA_IRQ_DOCK_LOST 0x08 |
1011 | 1027 |
|
1012 | 1028 | #define EMU_HANA_SPDIF_MODE 0x0a /* 00xxxxx 5 bits SPDIF MODE */ |
1013 | | -#define EMU_HANA_SPDIF_MODE_TX_COMSUMER 0x00 |
| 1029 | +#define EMU_HANA_SPDIF_MODE_TX_CONSUMER 0x00 |
1014 | 1030 | #define EMU_HANA_SPDIF_MODE_TX_PRO 0x01 |
1015 | 1031 | #define EMU_HANA_SPDIF_MODE_TX_NOCOPY 0x02 |
1016 | | -#define EMU_HANA_SPDIF_MODE_RX_COMSUMER 0x00 |
| 1032 | +#define EMU_HANA_SPDIF_MODE_RX_CONSUMER 0x00 |
1017 | 1033 | #define EMU_HANA_SPDIF_MODE_RX_PRO 0x04 |
1018 | 1034 | #define EMU_HANA_SPDIF_MODE_RX_NOCOPY 0x08 |
1019 | 1035 | #define EMU_HANA_SPDIF_MODE_RX_INVALID 0x10 |
|
1025 | 1041 | #define EMU_HANA_OPTICAL_OUT_ADAT 0x02 |
1026 | 1042 |
|
1027 | 1043 | #define EMU_HANA_MIDI_IN 0x0c /* 000000x 1 bit Control MIDI */ |
1028 | | -#define EMU_HANA_MIDI_IN_FROM_HAMOA 0x00 /* HAMOA MIDI in to Alice 2 MIDI B */ |
1029 | | -#define EMU_HANA_MIDI_IN_FROM_DOCK 0x01 /* Audio Dock MIDI in to Alice 2 MIDI B */ |
| 1044 | +#define EMU_HANA_MIDI_INA_FROM_HAMOA 0x01 /* HAMOA MIDI in to Alice 2 MIDI A */ |
| 1045 | +#define EMU_HANA_MIDI_INA_FROM_DOCK1 0x02 /* Audio Dock-1 MIDI in to Alice 2 MIDI A */ |
| 1046 | +#define EMU_HANA_MIDI_INA_FROM_DOCK2 0x03 /* Audio Dock-2 MIDI in to Alice 2 MIDI A */ |
| 1047 | +#define EMU_HANA_MIDI_INB_FROM_HAMOA 0x08 /* HAMOA MIDI in to Alice 2 MIDI B */ |
| 1048 | +#define EMU_HANA_MIDI_INB_FROM_DOCK1 0x10 /* Audio Dock-1 MIDI in to Alice 2 MIDI B */ |
| 1049 | +#define EMU_HANA_MIDI_INB_FROM_DOCK2 0x18 /* Audio Dock-2 MIDI in to Alice 2 MIDI B */ |
1030 | 1050 |
|
1031 | 1051 | #define EMU_HANA_DOCK_LEDS_1 0x0d /* 000xxxx 4 bit Audio Dock LEDs */ |
1032 | 1052 | #define EMU_HANA_DOCK_LEDS_1_MIDI1 0x01 /* MIDI 1 LED on */ |
|
1119 | 1139 |
|
1120 | 1140 | /* 0x30 - 0x3f Unused Read only registers */ |
1121 | 1141 |
|
| 1142 | +// The meaning of this is not clear; kX-project just calls it "lock" in some info-only code. |
| 1143 | +#define EMU_HANA_LOCK_STS_LO 0x38 /* 0xxxxxx lower 6 bits */ |
| 1144 | +#define EMU_HANA_LOCK_STS_HI 0x39 /* 0xxxxxx upper 6 bits */ |
| 1145 | + |
1122 | 1146 | /************************************************************************************************/ |
1123 | 1147 | /* EMU1010 Audio Destinations */ |
1124 | 1148 | /************************************************************************************************/ |
|
1257 | 1281 | #define EMU_DST_DOCK_SPDIF_RIGHT2 0x011f /* Audio Dock SPDIF Right, 2nd or 96kHz */ |
1258 | 1282 | #define EMU_DST_HANA_SPDIF_LEFT1 0x0200 /* Hana SPDIF Left, 1st or 48kHz only */ |
1259 | 1283 | #define EMU_DST_HANA_SPDIF_LEFT2 0x0202 /* Hana SPDIF Left, 2nd or 96kHz */ |
| 1284 | +#define EMU_DST_HANA_SPDIF_LEFT3 0x0204 /* Hana SPDIF Left, 3rd or 192kHz */ |
| 1285 | +#define EMU_DST_HANA_SPDIF_LEFT4 0x0206 /* Hana SPDIF Left, 4th or 192kHz */ |
1260 | 1286 | #define EMU_DST_HANA_SPDIF_RIGHT1 0x0201 /* Hana SPDIF Right, 1st or 48kHz only */ |
1261 | 1287 | #define EMU_DST_HANA_SPDIF_RIGHT2 0x0203 /* Hana SPDIF Right, 2nd or 96kHz */ |
| 1288 | +#define EMU_DST_HANA_SPDIF_RIGHT3 0x0205 /* Hana SPDIF Right, 3rd or 192kHz */ |
| 1289 | +#define EMU_DST_HANA_SPDIF_RIGHT4 0x0207 /* Hana SPDIF Right, 4th or 192kHz */ |
1262 | 1290 | #define EMU_DST_HAMOA_DAC_LEFT1 0x0300 /* Hamoa DAC Left, 1st or 48kHz only */ |
1263 | 1291 | #define EMU_DST_HAMOA_DAC_LEFT2 0x0302 /* Hamoa DAC Left, 2nd or 96kHz */ |
1264 | 1292 | #define EMU_DST_HAMOA_DAC_LEFT3 0x0304 /* Hamoa DAC Left, 3rd or 192kHz */ |
|
1409 | 1437 | #define EMU_SRC_HANA_ADAT 0x0400 /* Hana ADAT 8 channel in +0 to +7 */ |
1410 | 1438 | #define EMU_SRC_HANA_SPDIF_LEFT1 0x0500 /* Hana SPDIF Left, 1st or 48kHz only */ |
1411 | 1439 | #define EMU_SRC_HANA_SPDIF_LEFT2 0x0502 /* Hana SPDIF Left, 2nd or 96kHz */ |
| 1440 | +#define EMU_SRC_HANA_SPDIF_LEFT3 0x0504 /* Hana SPDIF Left, 3rd or 192kHz */ |
| 1441 | +#define EMU_SRC_HANA_SPDIF_LEFT4 0x0506 /* Hana SPDIF Left, 4th or 192kHz */ |
1412 | 1442 | #define EMU_SRC_HANA_SPDIF_RIGHT1 0x0501 /* Hana SPDIF Right, 1st or 48kHz only */ |
1413 | 1443 | #define EMU_SRC_HANA_SPDIF_RIGHT2 0x0503 /* Hana SPDIF Right, 2nd or 96kHz */ |
| 1444 | +#define EMU_SRC_HANA_SPDIF_RIGHT3 0x0505 /* Hana SPDIF Right, 3rd or 192kHz */ |
| 1445 | +#define EMU_SRC_HANA_SPDIF_RIGHT4 0x0507 /* Hana SPDIF Right, 4th or 192kHz */ |
1414 | 1446 |
|
1415 | 1447 | /* Additional inputs for 1616(M)/Microdock */ |
1416 | 1448 |
|
|
0 commit comments