Lines Matching +full:0 +full:x07ffffff
59 #define HAS_51 0x0001
60 #define HAS_71 0x0002
61 #define HAS_AC97 0x0004
63 #define IS_EMU10K1 0x0008
64 #define IS_EMU10K2 0x0010
65 #define IS_CA0102 0x0020
66 #define IS_CA0108 0x0040
67 #define IS_UNKNOWN 0x0080
69 #define BROKEN_DIGITAL 0x0100
70 #define DIGITAL_ONLY 0x0200
72 #define IS_CARDBUS 0x0400
79 #define MACS 0x0
80 #define MACS1 0x1
81 #define MACW 0x2
82 #define MACW1 0x3
83 #define MACINTS 0x4
84 #define MACINTW 0x5
85 #define ACC3 0x6
86 #define MACMV 0x7
87 #define ANDXOR 0x8
88 #define TSTNEG 0x9
89 #define LIMIT 0xA
90 #define LIMIT1 0xB
91 #define LOG 0xC
92 #define EXP 0xD
93 #define INTERP 0xE
94 #define SKIP 0xF
103 #define COND_NORMALIZED DSP_CONST(0x1)
104 #define COND_BORROW DSP_CONST(0x2)
105 #define COND_MINUS DSP_CONST(0x3)
106 #define COND_LESS_ZERO DSP_CONST(0x4)
107 #define COND_EQ_ZERO DSP_CONST(0x5)
108 #define COND_SATURATION DSP_CONST(0x6)
109 #define COND_NEQ_ZERO DSP_CONST(0x8)
111 #define DSP_ACCUM DSP_CONST(0x16)
112 #define DSP_CCR DSP_CONST(0x17)
115 #define IN_AC97_L 0x00
116 #define IN_AC97_R 0x01
118 #define IN_SPDIF_CD_L 0x02
119 #define IN_SPDIF_CD_R 0x03
121 #define IN_ZOOM_L 0x04
122 #define IN_ZOOM_R 0x05
124 #define IN_TOSLINK_L 0x06
125 #define IN_TOSLINK_R 0x07
127 #define IN_LINE1_L 0x08
128 #define IN_LINE1_R 0x09
130 #define IN_COAX_SPDIF_L 0x0a
131 #define IN_COAX_SPDIF_R 0x0b
133 #define IN_LINE2_L 0x0c
134 #define IN_LINE2_R 0x0d
136 #define IN_0E 0x0e
137 #define IN_0F 0x0f
140 #define OUT_AC97_L 0x00
141 #define OUT_AC97_R 0x01
144 #define OUT_TOSLINK_L 0x02
145 #define OUT_TOSLINK_R 0x03
147 #define OUT_D_CENTER 0x04
148 #define OUT_D_SUB 0x05
149 #define OUT_HEADPHONE_L 0x06
150 #define OUT_HEADPHONE_R 0x07
152 #define OUT_REAR_L 0x08
153 #define OUT_REAR_R 0x09
155 #define OUT_ADC_REC_L 0x0a
156 #define OUT_ADC_REC_R 0x0b
158 #define OUT_MIC_CAP 0x0c
161 #define OUT_A_CENTER 0x11
162 #define OUT_A_SUB 0x12
165 #define A_IN_AC97_L 0x00
166 #define A_IN_AC97_R 0x01
168 #define A_IN_SPDIF_CD_L 0x02
169 #define A_IN_SPDIF_CD_R 0x03
171 #define A_IN_O_SPDIF_L 0x04
172 #define A_IN_O_SPDIF_R 0x05
174 #define A_IN_LINE2_L 0x08
175 #define A_IN_LINE2_R 0x09
177 #define A_IN_R_SPDIF_L 0x0a
178 #define A_IN_R_SPDIF_R 0x0b
180 #define A_IN_AUX2_L 0x0c
181 #define A_IN_AUX2_R 0x0d
185 #define A_OUT_D_FRONT_L 0x00
186 #define A_OUT_D_FRONT_R 0x01
188 #define A_OUT_D_CENTER 0x02
189 #define A_OUT_D_SUB 0x03
190 #define A_OUT_D_SIDE_L 0x04
191 #define A_OUT_D_SIDE_R 0x05
193 #define A_OUT_D_REAR_L 0x06
194 #define A_OUT_D_REAR_R 0x07
198 #define A_OUT_HPHONE_L 0x04
199 #define A_OUT_HPHONE_R 0x05
202 #define A_OUT_A_FRONT_L 0x08
203 #define A_OUT_A_FRONT_R 0x09
205 #define A_OUT_A_CENTER 0x0a
206 #define A_OUT_A_SUB 0x0b
207 #define A_OUT_A_SIDE_L 0x0c
208 #define A_OUT_A_SIDE_R 0x0d
210 #define A_OUT_A_REAR_L 0x0e
211 #define A_OUT_A_REAR_R 0x0f
213 #define A_OUT_AC97_L 0x10
214 #define A_OUT_AC97_R 0x11
216 #define A_OUT_ADC_REC_L 0x16
217 #define A_OUT_ADC_REC_R 0x17
220 #define EMU_DATA2 0x24
221 #define EMU_IPR2 0x28
222 #define EMU_INTE2 0x2c
223 #define EMU_IPR3 0x38
224 #define EMU_INTE3 0x3c
226 #define EMU_A2_SRCSel 0x60
227 #define EMU_A2_SRCMULTI_ENABLE 0x6e
229 #define EMU_A_I2S_CAPTURE_96000 0x00000400
231 #define EMU_A2_MIXER_I2S_ENABLE 0x7B
232 #define EMU_A2_MIXER_SPDIF_ENABLE 0x7A
234 #define C_FRONT_L 0
246 #define CDSPDIFMUTE 0
440 } while (0)
443 } while (0)
449 } while (0)
454 } while (0)
468 {0xffff, 0xffff, 0xffff, 0xffff, "BADCRD", "Not a compatible card", 0},
469 /* 0x0020..0x002f 4.0 EMU10K1 cards */
470 {0x1102, 0x0002, 0x1102, 0x0020, "CT4850", "SBLive! Value", HAS_AC97 | IS_EMU10K1},
471 {0x1102, 0x0002, 0x1102, 0x0021, "CT4620", "SBLive!", HAS_AC97 | IS_EMU10K1},
472 …{0x1102, 0x0002, 0x1102, 0x002f, "CT????", "SBLive! mainboard implementation", HAS_AC97 | IS_EMU10…
475 {0x1102, 0x0002, 0x1102, 0x100a, "CT????", "SBLive! 5.1", HAS_AC97 | HAS_51 | IS_EMU10K1},
477 /* 0x80??..0x805? 4.0 EMU10K1 cards */
478 {0x1102, 0x0002, 0x1102, 0x8022, "CT4780", "SBLive! Value", HAS_AC97 | IS_EMU10K1},
479 {0x1102, 0x0002, 0x1102, 0x8023, "CT4790", "SB PCI512", HAS_AC97 | IS_EMU10K1},
480 {0x1102, 0x0002, 0x1102, 0x8024, "CT4760", "SBLive!", HAS_AC97 | IS_EMU10K1},
481 …{0x1102, 0x0002, 0x1102, 0x8025, "CT????", "SBLive! Mainboard Implementation", HAS_AC97 | IS_EMU10…
482 {0x1102, 0x0002, 0x1102, 0x8026, "CT4830", "SBLive! Value", HAS_AC97 | IS_EMU10K1},
483 {0x1102, 0x0002, 0x1102, 0x8027, "CT4832", "SBLive! Value", HAS_AC97 | IS_EMU10K1},
484 {0x1102, 0x0002, 0x1102, 0x8028, "CT4760", "SBLive! OEM version", HAS_AC97 | IS_EMU10K1},
485 {0x1102, 0x0002, 0x1102, 0x8031, "CT4831", "SBLive! Value", HAS_AC97 | IS_EMU10K1},
486 {0x1102, 0x0002, 0x1102, 0x8040, "CT4760", "SBLive!", HAS_AC97 | IS_EMU10K1},
487 {0x1102, 0x0002, 0x1102, 0x8051, "CT4850", "SBLive! Value", HAS_AC97 | IS_EMU10K1},
489 /* 0x8061..0x???? 5.1 EMU10K1 cards */
490 {0x1102, 0x0002, 0x1102, 0x8061, "SB????", "SBLive! Player 5.1", HAS_AC97 | HAS_51 | IS_EMU10K1},
491 {0x1102, 0x0002, 0x1102, 0x8062, "CT4830", "SBLive! 1024", HAS_AC97 | HAS_51 | IS_EMU10K1},
492 {0x1102, 0x0002, 0x1102, 0x8064, "SB????", "SBLive! 5.1", HAS_AC97 | HAS_51 | IS_EMU10K1},
493 {0x1102, 0x0002, 0x1102, 0x8065, "SB0220", "SBLive! 5.1 Digital", HAS_AC97 | HAS_51 | IS_EMU10K1},
494 {0x1102, 0x0002, 0x1102, 0x8066, "CT4780", "SBLive! 5.1 Digital", HAS_AC97 | HAS_51 | IS_EMU10K1},
495 {0x1102, 0x0002, 0x1102, 0x8067, "SB????", "SBLive!", HAS_AC97 | HAS_51 | IS_EMU10K1},
498 {0x1102, 0x0002, 0x1102, 0x0000, "SB????", "SBLive! (Unknown model)", HAS_AC97 | IS_EMU10K1},
500 /* 0x0041..0x0043 EMU10K2 (some kind of Audigy) cards */
502 /* 0x0051..0x0051 5.1 CA0100-IAF cards */
503 {0x1102, 0x0004, 0x1102, 0x0051, "SB0090", "Audigy", HAS_AC97 | HAS_51 | IS_EMU10K2},
505 …{0x1102, 0x0004, 0x1102, 0x0052, "SB0160", "Audigy ES", HAS_AC97 | HAS_71 | IS_EMU10K2 | BROKEN_DI…
506 /* 0x0053..0x005C 5.1 CA0101-NAF cards */
507 {0x1102, 0x0004, 0x1102, 0x0053, "SB0090", "Audigy Player/OEM", HAS_AC97 | HAS_51 | IS_EMU10K2},
508 {0x1102, 0x0004, 0x1102, 0x0058, "SB0090", "Audigy Player/OEM", HAS_AC97 | HAS_51 | IS_EMU10K2},
510 /* 0x1002..0x1009 5.1 CA0102-IAT cards */
511 {0x1102, 0x0004, 0x1102, 0x1002, "SB????", "Audigy 2 Platinum", HAS_51 | IS_CA0102},
512 {0x1102, 0x0004, 0x1102, 0x1005, "SB????", "Audigy 2 Platinum EX", HAS_51 | IS_CA0102},
513 {0x1102, 0x0004, 0x1102, 0x1007, "SB0240", "Audigy 2", HAS_AC97 | HAS_51 | IS_CA0102},
515 /* 0x2001..0x2003 7.1 CA0102-ICT cards */
516 {0x1102, 0x0004, 0x1102, 0x2001, "SB0350", "Audigy 2 ZS", HAS_AC97 | HAS_71 | IS_CA0102},
517 {0x1102, 0x0004, 0x1102, 0x2002, "SB0350", "Audigy 2 ZS", HAS_AC97 | HAS_71 | IS_CA0102},
518 /* XXX No reports about 0x2003 & 0x2004 cards */
519 {0x1102, 0x0004, 0x1102, 0x2003, "SB0350", "Audigy 2 ZS", HAS_AC97 | HAS_71 | IS_CA0102},
520 {0x1102, 0x0004, 0x1102, 0x2004, "SB0350", "Audigy 2 ZS", HAS_AC97 | HAS_71 | IS_CA0102},
521 {0x1102, 0x0004, 0x1102, 0x2005, "SB0350", "Audigy 2 ZS", HAS_AC97 | HAS_71 | IS_CA0102},
524 {0x1102, 0x0004, 0x1102, 0x2007, "SB0380", "Audigy 4 Pro", HAS_AC97 | HAS_71 | IS_CA0102},
527 …{0x1102, 0x0004, 0x1102, 0x0000, "SB????", "Audigy (Unknown model)", HAS_AC97 | HAS_51 | IS_EMU10K…
535 /* 0x1000..0x1001 7.1 CA0108-IAT cards */
536 …{0x1102, 0x0008, 0x1102, 0x1000, "SB????", "Audigy 2 LS", HAS_AC97 | HAS_51 | IS_CA0108 | DIGITAL_…
537 …{0x1102, 0x0008, 0x1102, 0x1001, "SB0400", "Audigy 2 Value", HAS_AC97 | HAS_71 | IS_CA0108 | DIGIT…
538 …{0x1102, 0x0008, 0x1102, 0x1021, "SB0610", "Audigy 4", HAS_AC97 | HAS_71 | IS_CA0108 | DIGITAL_ONL…
540 …{0x1102, 0x0008, 0x1102, 0x2001, "SB0530", "Audigy 2 ZS CardBus", HAS_AC97 | HAS_71 | IS_CA0108 | …
542 …{0x1102, 0x0008, 0x0000, 0x0000, "SB????", "Audigy 2 Value (Unknown model)", HAS_AC97 | HAS_51 | I…
548 {0x1102, 0x0002, 0x1102, 0x4001, "EMUAPS", "E-mu APS", 0},
549 {0x1102, 0x0002, 0x1102, 0x4002, "EMUAPS", "E-mu APS", 0},
550 {0x1102, 0x0004, 0x1102, 0x4001, "EMU???", "E-mu 1212m [4001]", 0},
552 {0x1102, 0x8064, 0x0000, 0x0000, "SB0100", "SBLive! 5.1 OEM", 0},
553 {0x1102, 0x0006, 0x0000, 0x0000, "SB0200", "DELL OEM SBLive! Value", 0},
554 {0x1102, 0x0007, 0x0000, 0x0000, "SB0310", "Audigy LS", 0},
571 thiscard = 0; in emu_getcard()
578 if (0x0000 == emu_cards[i].subdevice) { in emu_getcard()
588 for (i = 0; i < nitems(emu_bad_cards); i++) { in emu_getcard()
591 thiscard = 0; in emu_getcard()
594 if (0x0000 == emu_bad_cards[i].subdevice) { in emu_getcard()
595 thiscard = 0; in emu_getcard()
620 return (0xffffffff); in emu_rd_nolock()
662 if (reg & 0xff000000) { in emu_rdptr()
663 size = (reg >> 24) & 0x3f; in emu_rdptr()
664 offset = (reg >> 16) & 0x1f; in emu_rdptr()
686 if (reg & 0xff000000) { in emu_wrptr()
687 size = (reg >> 24) & 0x3f; in emu_wrptr()
688 offset = (reg >> 16) & 0x1f; in emu_wrptr()
734 * 0x38 is IPE3 (CD S/PDIF interrupt pending register) on CA0102. Seems in emu_wr_cbptr()
739 emu_rd_nolock(sc, 0x38, 4); in emu_wr_cbptr()
740 emu_wr_nolock(sc, 0x38, data, 4); in emu_wr_cbptr()
741 emu_rd_nolock(sc, 0x38, 4); in emu_wr_cbptr()
814 for (i = 0; i < EMU_MAX_IRQ_CONSUMERS; i++) in emu_timer_create()
815 if (sc->timer[i] == 0) { in emu_timer_create()
831 if (timer < 0) in emu_timer_set()
835 RANGE(timer, 0, EMU_MAX_IRQ_CONSUMERS-1); in emu_timer_set()
839 for (i = 0; i < EMU_MAX_IRQ_CONSUMERS; i++) in emu_timer_set()
844 emu_wr(sc, EMU_TIMER, sc->timerinterval & 0x03ff, 2); in emu_timer_set()
857 if (timer < 0) in emu_timer_enable()
860 RANGE(timer, 0, EMU_MAX_IRQ_CONSUMERS-1); in emu_timer_enable()
864 if ((go == 1) && (sc->timer[timer] < 0)) in emu_timer_enable()
866 if ((go == 0) && (sc->timer[timer] > 0)) in emu_timer_enable()
869 ena_int = 0; in emu_timer_enable()
870 for (i = 0; i < EMU_MAX_IRQ_CONSUMERS; i++) { in emu_timer_enable()
873 if (sc->timer[i] > 0) in emu_timer_enable()
877 emu_wr(sc, EMU_TIMER, sc->timerinterval & 0x03ff, 2); in emu_timer_enable()
889 return (0); in emu_timer_enable()
895 if (timer < 0) in emu_timer_clear()
898 RANGE(timer, 0, EMU_MAX_IRQ_CONSUMERS-1); in emu_timer_clear()
900 emu_timer_enable(sc, timer, 0); in emu_timer_clear()
903 if (sc->timer[timer] != 0) in emu_timer_clear()
904 sc->timer[timer] = 0; in emu_timer_clear()
920 for (i = 0; i < EMU_MAX_IRQ_CONSUMERS; i++) in emu_intr_register()
921 if (sc->ihandler[i].inte_mask == 0) { in emu_intr_register()
950 if (sc->ihandler[hnumber].inte_mask == 0) { in emu_intr_unregister()
958 sc->ihandler[hnumber].inte_mask = 0; in emu_intr_unregister()
959 sc->ihandler[hnumber].intr_mask = 0; in emu_intr_unregister()
964 for (i = 0; i < EMU_MAX_IRQ_CONSUMERS; i++) in emu_intr_unregister()
965 if (sc->ihandler[i].inte_mask != 0) in emu_intr_unregister()
983 ack = 0; in emu_intr()
984 if (stat == 0) in emu_intr()
987 for (i = 0; i < EMU_MAX_IRQ_CONSUMERS; i++) { in emu_intr()
988 if ((((sc->ihandler[i].intr_mask) & stat) != 0) && in emu_intr()
1002 ack = 0; in emu_intr()
1003 if (stat == 0) in emu_intr()
1016 ack = 0; in emu_intr()
1017 if (stat == 0) in emu_intr()
1043 *phys = error ? 0 : (bus_addr_t) segs->ds_addr; in emu_setmap()
1059 *addr = 0; in emu_malloc()
1065 if ((error = bus_dmamap_load(mem->dmat, *map, dmabuf, sz, emu_setmap, addr, 0)) || !*addr) { in emu_malloc()
1097 found = 0; in emu_memalloc()
1103 found = 0; in emu_memalloc()
1131 blk->owner[15] = '\0'; in emu_memalloc()
1132 ofs = 0; in emu_memalloc()
1164 return (0); in emu_memfree()
1186 0x00000, 0x02dfc, 0x05b9e, 0x088e6, 0x0b5d6, 0x0e26f, 0x10eb3, 0x13aa2, in emu_rate_to_pitch()
1187 0x1663f, 0x1918a, 0x1bc84, 0x1e72e, 0x2118b, 0x23b9a, 0x2655d, 0x28ed5, in emu_rate_to_pitch()
1188 0x2b803, 0x2e0e8, 0x30985, 0x331db, 0x359eb, 0x381b6, 0x3a93d, 0x3d081, in emu_rate_to_pitch()
1189 0x3f782, 0x41e42, 0x444c1, 0x46b01, 0x49101, 0x4b6c4, 0x4dc49, 0x50191, in emu_rate_to_pitch()
1190 0x5269e, 0x54b6f, 0x57006, 0x59463, 0x5b888, 0x5dc74, 0x60029, 0x623a7, in emu_rate_to_pitch()
1191 0x646ee, 0x66a00, 0x68cdd, 0x6af86, 0x6d1fa, 0x6f43c, 0x7164b, 0x73829, in emu_rate_to_pitch()
1192 0x759d4, 0x77b4f, 0x79c9a, 0x7bdb5, 0x7dea1, 0x7ff5e, 0x81fed, 0x8404e, in emu_rate_to_pitch()
1193 0x86082, 0x88089, 0x8a064, 0x8c014, 0x8df98, 0x8fef1, 0x91e20, 0x93d26, in emu_rate_to_pitch()
1194 0x95c01, 0x97ab4, 0x9993e, 0x9b79f, 0x9d5d9, 0x9f3ec, 0xa11d8, 0xa2f9d, in emu_rate_to_pitch()
1195 0xa4d3c, 0xa6ab5, 0xa8808, 0xaa537, 0xac241, 0xadf26, 0xafbe7, 0xb1885, in emu_rate_to_pitch()
1196 0xb3500, 0xb5157, 0xb6d8c, 0xb899f, 0xba58f, 0xbc15e, 0xbdd0c, 0xbf899, in emu_rate_to_pitch()
1197 0xc1404, 0xc2f50, 0xc4a7b, 0xc6587, 0xc8073, 0xc9b3f, 0xcb5ed, 0xcd07c, in emu_rate_to_pitch()
1198 0xceaec, 0xd053f, 0xd1f73, 0xd398a, 0xd5384, 0xd6d60, 0xd8720, 0xda0c3, in emu_rate_to_pitch()
1199 0xdba4a, 0xdd3b4, 0xded03, 0xe0636, 0xe1f4e, 0xe384a, 0xe512c, 0xe69f3, in emu_rate_to_pitch()
1200 0xe829f, 0xe9b31, 0xeb3a9, 0xecc08, 0xee44c, 0xefc78, 0xf148a, 0xf2c83, in emu_rate_to_pitch()
1201 0xf4463, 0xf5c2a, 0xf73da, 0xf8b71, 0xfa2f0, 0xfba57, 0xfd1a7, 0xfe8df in emu_rate_to_pitch()
1204 0x5c, 0x5c, 0x5b, 0x5a, 0x5a, 0x59, 0x58, 0x58, in emu_rate_to_pitch()
1205 0x57, 0x56, 0x56, 0x55, 0x55, 0x54, 0x53, 0x53, in emu_rate_to_pitch()
1206 0x52, 0x52, 0x51, 0x51, 0x50, 0x50, 0x4f, 0x4f, in emu_rate_to_pitch()
1207 0x4e, 0x4d, 0x4d, 0x4d, 0x4c, 0x4c, 0x4b, 0x4b, in emu_rate_to_pitch()
1208 0x4a, 0x4a, 0x49, 0x49, 0x48, 0x48, 0x47, 0x47, in emu_rate_to_pitch()
1209 0x47, 0x46, 0x46, 0x45, 0x45, 0x45, 0x44, 0x44, in emu_rate_to_pitch()
1210 0x43, 0x43, 0x43, 0x42, 0x42, 0x42, 0x41, 0x41, in emu_rate_to_pitch()
1211 0x41, 0x40, 0x40, 0x40, 0x3f, 0x3f, 0x3f, 0x3e, in emu_rate_to_pitch()
1212 0x3e, 0x3e, 0x3d, 0x3d, 0x3d, 0x3c, 0x3c, 0x3c, in emu_rate_to_pitch()
1213 0x3b, 0x3b, 0x3b, 0x3b, 0x3a, 0x3a, 0x3a, 0x39, in emu_rate_to_pitch()
1214 0x39, 0x39, 0x39, 0x38, 0x38, 0x38, 0x38, 0x37, in emu_rate_to_pitch()
1215 0x37, 0x37, 0x37, 0x36, 0x36, 0x36, 0x36, 0x35, in emu_rate_to_pitch()
1216 0x35, 0x35, 0x35, 0x34, 0x34, 0x34, 0x34, 0x34, in emu_rate_to_pitch()
1217 0x33, 0x33, 0x33, 0x33, 0x32, 0x32, 0x32, 0x32, in emu_rate_to_pitch()
1218 0x32, 0x31, 0x31, 0x31, 0x31, 0x31, 0x30, 0x30, in emu_rate_to_pitch()
1219 0x30, 0x30, 0x30, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f in emu_rate_to_pitch()
1223 if (rate == 0) in emu_rate_to_pitch()
1224 return (0); in emu_rate_to_pitch()
1225 rate *= 11185; /* Scale 48000 to 0x20002380 */ in emu_rate_to_pitch()
1226 for (i = 31; i > 0; i--) { in emu_rate_to_pitch()
1227 if (rate & 0x80000000) { /* Detect leading "1" */ in emu_rate_to_pitch()
1229 logMagTable[0x7f & (rate >> 24)] + in emu_rate_to_pitch()
1230 (0x7f & (rate >> 17)) * in emu_rate_to_pitch()
1231 logSlopeTable[0x7f & (rate >> 24)]); in emu_rate_to_pitch()
1236 return (0); in emu_rate_to_pitch()
1254 for (i = 0; i < NUM_G && sc->voice[i].busy; i++); in emu_valloc()
1268 for (int i = 0; i < NUM_G; i++) { in emu_vfree()
1270 v->busy = 0; in emu_vfree()
1299 if (m->start < 0) { in emu_vinit()
1306 m->speed = 0; in emu_vinit()
1307 m->b16 = 0; in emu_vinit()
1308 m->stereo = 0; in emu_vinit()
1309 m->running = 0; in emu_vinit()
1311 m->vol = 0xff; in emu_vinit()
1318 s->speed = 0; in emu_vinit()
1319 s->b16 = 0; in emu_vinit()
1320 s->stereo = 0; in emu_vinit()
1321 s->running = 0; in emu_vinit()
1322 s->ismaster = 0; in emu_vinit()
1328 return (0); in emu_vinit()
1335 v->b16 = (fmt & AFMT_16BIT) ? 1 : 0; in emu_vsetup()
1336 v->stereo = (AFMT_CHANNEL(fmt) > 1) ? 1 : 0; in emu_vsetup()
1354 for (i = 0; i < 8; i++) { in emu_vroute()
1358 if ((v->stereo) && (v->ismaster == 0)) in emu_vroute()
1359 for (i = 0; i < 8; i++) { in emu_vroute()
1374 s = (v->stereo ? 1 : 0) + (v->b16 ? 1 : 0); in emu_vwrite()
1382 emu_wrptr(sc, v->vnum, EMU_CHAN_CPF, 0); in emu_vwrite()
1392 (v->routing[0] << 0)) << 16); in emu_vwrite()
1397 (v->routing[0] << 0)); in emu_vwrite()
1401 (v->routing[4] << 0)); in emu_vwrite()
1405 (v->amounts[4] << 0)); in emu_vwrite()
1407 emu_wrptr(sc, v->vnum, EMU_CHAN_PTRX, (v->amounts[0] << 8) | (v->amounts[1] << 0)); in emu_vwrite()
1411 emu_wrptr(sc, v->vnum, EMU_CHAN_CCCA, start | (v->b16 ? 0 : EMU_CHAN_CCCA_8BITSELECT)); in emu_vwrite()
1412 emu_wrptr(sc, v->vnum, EMU_CHAN_Z1, 0); in emu_vwrite()
1413 emu_wrptr(sc, v->vnum, EMU_CHAN_Z2, 0); in emu_vwrite()
1421 emu_wrptr(sc, v->vnum, EMU_CHAN_ATKHLDM, 0); in emu_vwrite()
1423 emu_wrptr(sc, v->vnum, EMU_CHAN_LFOVAL1, 0x8000); in emu_vwrite()
1424 emu_wrptr(sc, v->vnum, EMU_CHAN_LFOVAL2, 0x8000); in emu_vwrite()
1425 emu_wrptr(sc, v->vnum, EMU_CHAN_FMMOD, 0); in emu_vwrite()
1426 emu_wrptr(sc, v->vnum, EMU_CHAN_TREMFRQ, 0); in emu_vwrite()
1427 emu_wrptr(sc, v->vnum, EMU_CHAN_FM2FRQ2, 0); in emu_vwrite()
1428 emu_wrptr(sc, v->vnum, EMU_CHAN_ENVVAL, 0x8000); in emu_vwrite()
1431 emu_wrptr(sc, v->vnum, EMU_CHAN_ENVVOL, 0x8000); in emu_vwrite()
1433 emu_wrptr(sc, v->vnum, EMU_CHAN_PEFE_FILTERAMOUNT, 0x7f); in emu_vwrite()
1434 emu_wrptr(sc, v->vnum, EMU_CHAN_PEFE_PITCHAMOUNT, 0); in emu_vwrite()
1444 reg = (channel & 0x20) ? EMU_SOLEH : EMU_SOLEL; in emu_vstop()
1445 channel &= 0x1f; in emu_vstop()
1448 emu_wrptr(sc, 0, reg, enable); in emu_vstop()
1463 sample = v->b16 ? 0x00000000 : 0x80808080; in emu_vtrigger()
1464 for (i = 0; i < cs; i++) in emu_vtrigger()
1466 emu_wrptr(sc, v->vnum, EMU_CHAN_CCR_CACHEINVALIDSIZE, 0); in emu_vtrigger()
1470 emu_wrptr(sc, v->vnum, EMU_CHAN_IFATN, 0xff00); in emu_vtrigger()
1471 emu_wrptr(sc, v->vnum, EMU_CHAN_VTFT, 0xffffffff); in emu_vtrigger()
1472 emu_wrptr(sc, v->vnum, EMU_CHAN_CVCF, 0xffffffff); in emu_vtrigger()
1473 emu_wrptr(sc, v->vnum, EMU_CHAN_DCYSUSV, 0x00007f7f); in emu_vtrigger()
1474 emu_vstop(sc, v->vnum, 0); in emu_vtrigger()
1482 emu_wrptr(sc, v->vnum, EMU_CHAN_PTRX_PITCHTARGET, 0); in emu_vtrigger()
1483 emu_wrptr(sc, v->vnum, EMU_CHAN_CPF_PITCH, 0); in emu_vtrigger()
1484 emu_wrptr(sc, v->vnum, EMU_CHAN_IFATN, 0xffff); in emu_vtrigger()
1485 emu_wrptr(sc, v->vnum, EMU_CHAN_VTFT, 0x0000ffff); in emu_vtrigger()
1486 emu_wrptr(sc, v->vnum, EMU_CHAN_CVCF, 0x0000ffff); in emu_vtrigger()
1487 emu_wrptr(sc, v->vnum, EMU_CHAN_IP, 0); in emu_vtrigger()
1499 s = (v->b16 ? 1 : 0) + (v->stereo ? 1 : 0); in emu_vpos()
1501 return (ptr & ~0x0000001f); in emu_vpos()
1508 emu_wrptr(sc, 0, sc->code_base + pc, data); in emu_wrefx()
1535 err = sysctl_handle_int(oidp, &new_vol, 0, req); in sysctl_emu_mixer_control()
1539 if (new_vol < 0 || new_vol > 100) in sysctl_emu_mixer_control()
1543 return (0); in sysctl_emu_mixer_control()
1583 new_val = (sc->mode == MODE_DIGITAL) ? 1 : 0; in sysctl_emu_digitalswitch_control()
1584 err = sysctl_handle_int(oidp, &new_val, 0, req); in sysctl_emu_digitalswitch_control()
1588 if (new_val < 0 || new_val > 1) in sysctl_emu_digitalswitch_control()
1592 case 0: in sysctl_emu_digitalswitch_control()
1599 return (0); in sysctl_emu_digitalswitch_control()
1608 sc, 0, sysctl_emu_digitalswitch_control, "I", in emu_digitalswitch()
1622 DSP_CONST(0), \
1623 DSP_CONST(0), \
1624 DSP_CONST(0), \
1626 } while (0)
1638 } while (0)
1646 DSP_CONST(0), \
1650 } while (0)
1656 DSP_CONST(0), \
1660 } while (0)
1662 /* skip next OPCOUNT instructions if FLAG != 0 */
1665 DSP_CONST(0), \
1667 DSP_CONST(0), \
1668 DSP_CONST(0), \
1676 } while (0)
1681 DSP_CONST(0), \
1682 DSP_CONST(0), \
1685 } while (0)
1695 emu_wrptr(sc, 0, EMU_DBG, EMU_DBG_SINGLE_STEP); in emu_initefx()
1697 emu_wrptr(sc, 0, EMU_A_DBG, EMU_A_DBG_SINGLE_STEP); in emu_initefx()
1701 pc = 0; in emu_initefx()
1702 for (i = 0; i < sc->code_size; i++) { in emu_initefx()
1704 emu_addefxop(sc, ACC3, DSP_CONST(0x0), DSP_CONST(0x0), DSP_CONST(0x0), DSP_CONST(0x0), &pc); in emu_initefx()
1706 emu_addefxop(sc, SKIP, DSP_CONST(0x0), DSP_CONST(0x0), DSP_CONST(0xf), DSP_CONST(0x0), &pc); in emu_initefx()
1711 for (i = 0; i < NUM_MUTE; i++) { in emu_initefx()
1717 pc = 0; in emu_initefx()
1724 * x*0x7fffffff may not be equal to x ! in emu_initefx()
1728 for (i = 0; i < 16 ; i++) { in emu_initefx()
1729 emu_addefxop(sc, ACC3, OUTP(i), DSP_CONST(0), DSP_CONST(0), DSP_CONST(0), &pc); in emu_initefx()
1739 EFX_ROUTE("pcm_front_l", FX(0), M_FX0_FRONT_L, C_FRONT_L, 100); in emu_initefx()
1741 EFX_ROUTE(NULL, FX(0), M_FX0_REC_L, C_REC_L, 0); in emu_initefx()
1742 EFX_ROUTE(NULL, FX(1), M_FX1_REC_R, C_REC_R, 0); in emu_initefx()
1745 EFX_ROUTE("ac97_front_l", INP(IN_AC97_L), M_IN0_FRONT_L, C_FRONT_L, 0); in emu_initefx()
1746 EFX_ROUTE("ac97_front_r", INP(IN_AC97_R), M_IN0_FRONT_R, C_FRONT_R, 0); in emu_initefx()
1747 EFX_ROUTE("ac97_rec_l", INP(IN_AC97_L), M_IN0_REC_L, C_REC_L, 0); in emu_initefx()
1748 EFX_ROUTE("ac97_rec_r", INP(IN_AC97_R), M_IN0_REC_R, C_REC_R, 0); in emu_initefx()
1753 EFX_ROUTE(NULL, INP(IN_SPDIF_CD_L), M_IN1_FRONT_L, C_FRONT_L, 0); in emu_initefx()
1754 EFX_ROUTE(NULL, INP(IN_SPDIF_CD_R), M_IN1_FRONT_R, C_FRONT_R, 0); in emu_initefx()
1755 EFX_ROUTE(NULL, INP(IN_SPDIF_CD_L), M_IN1_REC_L, C_REC_L, 0); in emu_initefx()
1756 EFX_ROUTE(NULL, INP(IN_SPDIF_CD_R), M_IN1_REC_R, C_REC_R, 0); in emu_initefx()
1758 if (sc->dbg_level > 0) { in emu_initefx()
1760 EFX_ROUTE("zoom_front_l", INP(IN_ZOOM_L), M_IN2_FRONT_L, C_FRONT_L, 0); in emu_initefx()
1761 EFX_ROUTE("zoom_front_r", INP(IN_ZOOM_R), M_IN2_FRONT_R, C_FRONT_R, 0); in emu_initefx()
1762 EFX_ROUTE("zoom_rec_l", INP(IN_ZOOM_L), M_IN2_REC_L, C_REC_L, 0); in emu_initefx()
1763 EFX_ROUTE("zoom_rec_r", INP(IN_ZOOM_R), M_IN2_REC_R, C_REC_R, 0); in emu_initefx()
1767 EFX_ROUTE(NULL, INP(IN_TOSLINK_L), M_IN3_FRONT_L, C_FRONT_L, 0); in emu_initefx()
1768 EFX_ROUTE(NULL, INP(IN_TOSLINK_R), M_IN3_FRONT_R, C_FRONT_R, 0); in emu_initefx()
1769 EFX_ROUTE(NULL, INP(IN_TOSLINK_L), M_IN3_REC_L, C_REC_L, 0); in emu_initefx()
1770 EFX_ROUTE(NULL, INP(IN_TOSLINK_R), M_IN3_REC_R, C_REC_R, 0); in emu_initefx()
1772 EFX_ROUTE(NULL, INP(IN_LINE1_L), M_IN4_FRONT_L, C_FRONT_L, 0); in emu_initefx()
1773 EFX_ROUTE(NULL, INP(IN_LINE1_R), M_IN4_FRONT_R, C_FRONT_R, 0); in emu_initefx()
1774 EFX_ROUTE(NULL, INP(IN_LINE1_L), M_IN4_REC_L, C_REC_L, 0); in emu_initefx()
1775 EFX_ROUTE(NULL, INP(IN_LINE1_R), M_IN4_REC_R, C_REC_R, 0); in emu_initefx()
1778 EFX_ROUTE(NULL, INP(IN_COAX_SPDIF_L), M_IN5_FRONT_L, C_FRONT_L, 0); in emu_initefx()
1779 EFX_ROUTE(NULL, INP(IN_COAX_SPDIF_R), M_IN5_FRONT_R, C_FRONT_R, 0); in emu_initefx()
1780 EFX_ROUTE(NULL, INP(IN_COAX_SPDIF_L), M_IN5_REC_L, C_REC_L, 0); in emu_initefx()
1781 EFX_ROUTE(NULL, INP(IN_COAX_SPDIF_R), M_IN5_REC_R, C_REC_R, 0); in emu_initefx()
1784 EFX_ROUTE(NULL, INP(IN_LINE2_L), M_IN6_FRONT_L, C_FRONT_L, 0); in emu_initefx()
1785 EFX_ROUTE(NULL, INP(IN_LINE2_R), M_IN6_FRONT_R, C_FRONT_R, 0); in emu_initefx()
1786 EFX_ROUTE(NULL, INP(IN_LINE2_L), M_IN6_REC_L, C_REC_L, 0); in emu_initefx()
1787 EFX_ROUTE(NULL, INP(IN_LINE2_R), M_IN6_REC_R, C_REC_R, 0); in emu_initefx()
1789 if (sc->dbg_level > 0) { in emu_initefx()
1791 EFX_ROUTE("in7_front_l", INP(0xE), M_IN7_FRONT_L, C_FRONT_L, 0); in emu_initefx()
1792 EFX_ROUTE("in7_front_r", INP(0xF), M_IN7_FRONT_R, C_FRONT_R, 0); in emu_initefx()
1793 EFX_ROUTE("in7_rec_l", INP(0xE), M_IN7_REC_L, C_REC_L, 0); in emu_initefx()
1794 EFX_ROUTE("in7_rec_r", INP(0xF), M_IN7_REC_R, C_REC_R, 0); in emu_initefx()
1851 #if 0 in emu_initefx()
1860 DSP_CONST(0xd), /* = 1/2 */ in emu_initefx()
1866 DSP_CONST(0xd), /* = 1/2 */ in emu_initefx()
1881 DSP_CONST(0xd), /* = 1/2 */ in emu_initefx()
1887 DSP_CONST(0xd), /* = 1/2 */ in emu_initefx()
1909 * Use sync substream (offset 0x3E) to let userland find in emu_initefx()
1915 * 0x00..0x1E - outputs in emu_initefx()
1916 * 0x20..0x3E - FX, inputs and sync stream in emu_initefx()
1919 /* First 2 channels (offset 0x20,0x22) are empty */ in emu_initefx()
1920 for(i = (sc->has_51 ? 2 : 0); i < 2; i++) in emu_initefx()
1921 EFX_COPY(FX2(i), DSP_CONST(0)); in emu_initefx()
1923 /* PCM Playback monitoring, offset 0x24..0x2A */ in emu_initefx()
1924 for(i = 0; i < 4; i++) in emu_initefx()
1927 /* Copy of some inputs, offset 0x2C..0x3C */ in emu_initefx()
1928 for(i = 0; i < 9; i++) in emu_initefx()
1931 /* sync data (0xc0de, offset 0x3E) */ in emu_initefx()
1933 emumix_set_gpr(sc, sc->dummy_gpr, 0xc0de0000); in emu_initefx()
1948 EFX_ROUTE(NULL, FX(0), M_FX0_FRONT_L, C_FRONT_L, 100); in emu_initefx()
1950 EFX_ROUTE(NULL, FX(0), M_FX0_REC_L, C_REC_L, 0); in emu_initefx()
1951 EFX_ROUTE(NULL, FX(1), M_FX1_REC_R, C_REC_R, 0); in emu_initefx()
1956 EFX_ROUTE(NULL, INP(A_IN_AC97_L), M_IN0_REC_L, C_REC_L, 0); in emu_initefx()
1957 EFX_ROUTE(NULL, INP(A_IN_AC97_R), M_IN0_REC_R, C_REC_R, 0); in emu_initefx()
1960 EFX_ROUTE(NULL, INP(A_IN_SPDIF_CD_L), M_IN1_FRONT_L, C_FRONT_L, 0); in emu_initefx()
1961 EFX_ROUTE(NULL, INP(A_IN_SPDIF_CD_R), M_IN1_FRONT_R, C_FRONT_R, 0); in emu_initefx()
1962 EFX_ROUTE(NULL, INP(A_IN_SPDIF_CD_L), M_IN1_REC_L, C_REC_L, 0); in emu_initefx()
1963 EFX_ROUTE(NULL, INP(A_IN_SPDIF_CD_R), M_IN1_REC_R, C_REC_R, 0); in emu_initefx()
1966 /* XXX Should be muted when GPRSCS valid stream == 0 */ in emu_initefx()
1967 EFX_ROUTE(NULL, INP(A_IN_O_SPDIF_L), M_IN2_FRONT_L, C_FRONT_L, 0); in emu_initefx()
1968 EFX_ROUTE(NULL, INP(A_IN_O_SPDIF_R), M_IN2_FRONT_R, C_FRONT_R, 0); in emu_initefx()
1969 EFX_ROUTE(NULL, INP(A_IN_O_SPDIF_L), M_IN2_REC_L, C_REC_L, 0); in emu_initefx()
1970 EFX_ROUTE(NULL, INP(A_IN_O_SPDIF_R), M_IN2_REC_R, C_REC_R, 0); in emu_initefx()
1972 if (sc->dbg_level > 0) { in emu_initefx()
1974 EFX_ROUTE("in3_front_l", INP(0x6), M_IN3_FRONT_L, C_FRONT_L, 0); in emu_initefx()
1975 EFX_ROUTE("in3_front_r", INP(0x7), M_IN3_FRONT_R, C_FRONT_R, 0); in emu_initefx()
1976 EFX_ROUTE("in3_rec_l", INP(0x6), M_IN3_REC_L, C_REC_L, 0); in emu_initefx()
1977 EFX_ROUTE("in3_rec_r", INP(0x7), M_IN3_REC_R, C_REC_R, 0); in emu_initefx()
1981 EFX_ROUTE(NULL, INP(A_IN_LINE2_L), M_IN4_FRONT_L, C_FRONT_L, 0); in emu_initefx()
1982 EFX_ROUTE(NULL, INP(A_IN_LINE2_R), M_IN4_FRONT_R, C_FRONT_R, 0); in emu_initefx()
1983 EFX_ROUTE(NULL, INP(A_IN_LINE2_L), M_IN4_REC_L, C_REC_L, 0); in emu_initefx()
1984 EFX_ROUTE(NULL, INP(A_IN_LINE2_R), M_IN4_REC_R, C_REC_R, 0); in emu_initefx()
1987 EFX_ROUTE(NULL, INP(A_IN_R_SPDIF_L), M_IN5_FRONT_L, C_FRONT_L, 0); in emu_initefx()
1988 EFX_ROUTE(NULL, INP(A_IN_R_SPDIF_R), M_IN5_FRONT_R, C_FRONT_R, 0); in emu_initefx()
1989 EFX_ROUTE(NULL, INP(A_IN_R_SPDIF_L), M_IN5_REC_L, C_REC_L, 0); in emu_initefx()
1990 EFX_ROUTE(NULL, INP(A_IN_R_SPDIF_R), M_IN5_REC_R, C_REC_R, 0); in emu_initefx()
1993 EFX_ROUTE(NULL, INP(A_IN_AUX2_L), M_IN6_FRONT_L, C_FRONT_L, 0); in emu_initefx()
1994 EFX_ROUTE(NULL, INP(A_IN_AUX2_R), M_IN6_FRONT_R, C_FRONT_R, 0); in emu_initefx()
1995 EFX_ROUTE(NULL, INP(A_IN_AUX2_L), M_IN6_REC_L, C_REC_L, 0); in emu_initefx()
1996 EFX_ROUTE(NULL, INP(A_IN_AUX2_R), M_IN6_REC_R, C_REC_R, 0); in emu_initefx()
1998 if (sc->dbg_level > 0) { in emu_initefx()
2000 EFX_ROUTE("in7_front_l", INP(0xE), M_IN7_FRONT_L, C_FRONT_L, 0); in emu_initefx()
2001 EFX_ROUTE("in7_front_r", INP(0xF), M_IN7_FRONT_R, C_FRONT_R, 0); in emu_initefx()
2002 EFX_ROUTE("in7_rec_l", INP(0xE), M_IN7_REC_L, C_REC_L, 0); in emu_initefx()
2003 EFX_ROUTE("in7_rec_r", INP(0xF), M_IN7_REC_R, C_REC_R, 0); in emu_initefx()
2041 #if 0 in emu_initefx()
2052 #if 0 in emu_initefx()
2084 DSP_CONST(0xd), /* = 1/2 */ in emu_initefx()
2090 DSP_CONST(0xd), /* = 1/2 */ in emu_initefx()
2105 DSP_CONST(0xd), /* = 1/2 */ in emu_initefx()
2111 DSP_CONST(0xd), /* = 1/2 */ in emu_initefx()
2129 * 0x00..0x3E - outputs in emu_initefx()
2130 * 0x40..0x7E - FX, inputs in emu_initefx()
2136 * some outputs (offsets 0x20..0x3F) and one in emu_initefx()
2137 * input (offset 0x7E). in emu_initefx()
2140 /* PCM Playback monitoring, offsets 0x40..0x5E */ in emu_initefx()
2141 for(i = 0; i < 16; i++) in emu_initefx()
2144 /* Copy of all inputs, offsets 0x60..0x7E */ in emu_initefx()
2145 for(i = 0; i < 16; i++) in emu_initefx()
2147 #if 0 in emu_initefx()
2149 /* sync data (0xc0de), offset 0x7E */ in emu_initefx()
2151 emumix_set_gpr(sc, sc->dummy_gpr, 0xc0de0000); in emu_initefx()
2161 emu_wrptr(sc, 0, EMU_DBG, 0); in emu_initefx()
2163 emu_wrptr(sc, 0, EMU_A_DBG, 0); in emu_initefx()
2194 if (sbuf_new(&sc->emu10kx_sbuf, NULL, 4096, 0) == NULL) { in emu10kx_open()
2198 sc->emu10kx_bufptr = 0; in emu10kx_open()
2199 error = (emu10kx_prepare(sc, &sc->emu10kx_sbuf) > 0) ? 0 : ENOMEM; in emu10kx_open()
2203 sc->emu10kx_isopen = 0; in emu10kx_open()
2222 sc->emu10kx_isopen = 0; in emu10kx_close()
2225 return (0); in emu10kx_close()
2243 err = (l > 0) ? uiomove(sbuf_data(&sc->emu10kx_sbuf) + sc->emu10kx_bufptr, l, buf) : 0; in emu10kx_read()
2282 for (i = 0; i < RT_COUNT; i++) in emu10kx_prepare()
2287 if (sc->midi[0] != NULL) in emu10kx_prepare()
2288 if (device_is_attached(sc->midi[0])) { in emu10kx_prepare()
2290 sbuf_printf(s, "\tOn-card connector on %s\n", device_get_nameunit(sc->midi[0])); in emu10kx_prepare()
2296 if (sc->midi[0] != NULL) in emu10kx_prepare()
2297 if (device_is_attached(sc->midi[0])) { in emu10kx_prepare()
2312 mtx_init(&sc->emu10kx_lock, device_get_nameunit(sc->dev), "kxdevlock", 0); in emu10kx_dev_init()
2318 return (0); in emu10kx_dev_init()
2336 return (0); in emu10kx_dev_uninit()
2354 rm->num_used = 0; in emu_rm_init()
2357 for (i = 0; i < rm->num_gprs; i++) in emu_rm_init()
2358 rm->allocmap[i] = 0; in emu_rm_init()
2359 /* pre-allocate gpr[0] */ in emu_rm_init()
2360 rm->allocmap[0] = 1; in emu_rm_init()
2363 return (0); in emu_rm_init()
2374 if (sc->rm->allocmap[i] > 0) in emu_rm_uninit()
2381 return (0); in emu_rm_uninit()
2401 i = 0; in emu_rm_gpr_alloc()
2404 if (rm->allocmap[i] > 0) { in emu_rm_gpr_alloc()
2409 if (rm->allocmap[i + j] != 0) in emu_rm_gpr_alloc()
2424 if (allocated_gpr >= 0) in emu_rm_gpr_alloc()
2448 a_iocfg = 0; in emumix_set_mode()
2470 a_iocfg |= 0x80; /* XXX */ in emumix_set_mode()
2482 a_iocfg |= 0x20; /* XXX */ in emumix_set_mode()
2499 emumix_set_gpr(sc, sc->mute_gpr[ANALOGMUTE], 0); in emumix_set_mode()
2521 EMU_SPCS_GENERATIONSTATUS | 0x00001200 | 0x00000000 | in emumix_set_spdif_mode()
2526 emu_wrptr(sc, 0, EMU_SPCS0, spcs); in emumix_set_spdif_mode()
2527 emu_wrptr(sc, 0, EMU_SPCS1, spcs); in emumix_set_spdif_mode()
2528 emu_wrptr(sc, 0, EMU_SPCS2, spcs); in emumix_set_spdif_mode()
2534 0x572C5CA, /* 100..90 */
2535 0x3211625, /* 90..80 */
2536 0x1CC1A76, /* 80..70 */
2537 0x108428F, /* 70..60 */
2538 0x097C70A, /* 60..50 */
2539 0x0572C5C, /* 50..40 */
2540 0x0321162, /* 40..30 */
2541 0x01CC1A7, /* 30..20 */
2542 0x0108428, /* 20..10 */
2543 0x016493D /* 10..0 */
2547 0x4984461A, /* 90 */
2548 0x2A3968A7, /* 80 */
2549 0x18406003, /* 70 */
2550 0x0DEDC66D, /* 60 */
2551 0x07FFFFFF, /* 50 */
2552 0x04984461, /* 40 */
2553 0x02A3968A, /* 30 */
2554 0x01840600, /* 20 */
2555 0x00DEDC66, /* 10 */
2556 0x00000000 /* 0 */
2565 if (log_t <= 0) { in log2lin()
2566 lin_t = 0x00000000; in log2lin()
2571 lin_t = 0x7fffffff; in log2lin()
2593 if (gpr == 0) { in emumix_set_gpr()
2601 emu_wrptr(sc, 0, GPR(gpr), val); in emumix_set_gpr()
2608 RANGE(volume, 0, 100); in emumix_set_volume()
2618 if ((mixer_idx < NUM_MIXERS) && (mixer_idx >= 0)) in emumix_get_volume()
2633 emu_wr_cbptr(sc, (0x00d0 << 16) | 0x0000); in emu_cardbus_init()
2634 emu_wr_cbptr(sc, (0x00d0 << 16) | 0x0001); in emu_cardbus_init()
2635 emu_wr_cbptr(sc, (0x00d0 << 16) | 0x005f); in emu_cardbus_init()
2636 emu_wr_cbptr(sc, (0x00d0 << 16) | 0x007f); in emu_cardbus_init()
2638 emu_wr_cbptr(sc, (0x0090 << 16) | 0x007f); in emu_cardbus_init()
2640 return (0); in emu_cardbus_init()
2657 emu_wrptr(sc, 0, EMU_MICBS, EMU_RECBS_BUFSIZE_NONE); in emu_init()
2658 emu_wrptr(sc, 0, EMU_MICBA, 0); in emu_init()
2659 emu_wrptr(sc, 0, EMU_FXBS, EMU_RECBS_BUFSIZE_NONE); in emu_init()
2660 emu_wrptr(sc, 0, EMU_FXBA, 0); in emu_init()
2661 emu_wrptr(sc, 0, EMU_ADCBS, EMU_RECBS_BUFSIZE_NONE); in emu_init()
2662 emu_wrptr(sc, 0, EMU_ADCBA, 0); in emu_init()
2666 emu_wrptr(sc, 0, EMU_CLIEL, 0); in emu_init()
2667 emu_wrptr(sc, 0, EMU_CLIEH, 0); in emu_init()
2668 emu_wrptr(sc, 0, EMU_SOLEL, 0); in emu_init()
2669 emu_wrptr(sc, 0, EMU_SOLEH, 0); in emu_init()
2673 emu_wr(sc, EMU_INTE2, 0, 4); in emu_init()
2676 emu_wr(sc, EMU_INTE3, 0, 4); in emu_init()
2679 ac97slot = 0; in emu_init()
2685 ac97slot |= 0x40; in emu_init()
2686 emu_wrptr(sc, 0, EMU_AC97SLOT, ac97slot); in emu_init()
2689 emu_wrptr(sc, 0, EMU_SPBYPASS, 0xf00); /* What will happen if in emu_init()
2693 /* alignment */ 2, /* boundary */ 0, in emu_init()
2694 /* lowaddr */ (1U << 31) - 1, /* can only access 0-2gb */ in emu_init()
2697 /* maxsize */ EMU_MAX_BUFSZ, /* nsegments */ 1, /* maxsegz */ 0x3ffff, in emu_init()
2698 /* flags */ 0, /* lockfunc */NULL, /* lockarg */NULL, in emu_init()
2699 &sc->mem.dmat) != 0) { in emu_init()
2719 for (i = 0; i < EMU_MAXPAGES; i++) in emu_init()
2722 for (ch = 0; ch < NUM_G; ch++) { in emu_init()
2726 emu_wrptr(sc, 0, EMU_PTB, (sc->mem.ptb_pages_addr)); in emu_init()
2727 emu_wrptr(sc, 0, EMU_TCB, 0); /* taken from original driver */ in emu_init()
2728 emu_wrptr(sc, 0, EMU_TCBS, 0); /* taken from original driver */ in emu_init()
2731 for (ch = 0; ch < NUM_G; ch++) { in emu_init()
2732 emu_wrptr(sc, ch, EMU_CHAN_DCYSUSV, 0); in emu_init()
2733 emu_wrptr(sc, ch, EMU_CHAN_IP, 0); in emu_init()
2734 emu_wrptr(sc, ch, EMU_CHAN_VTFT, 0xffff); in emu_init()
2735 emu_wrptr(sc, ch, EMU_CHAN_CVCF, 0xffff); in emu_init()
2736 emu_wrptr(sc, ch, EMU_CHAN_PTRX, 0); in emu_init()
2737 emu_wrptr(sc, ch, EMU_CHAN_CPF, 0); in emu_init()
2738 emu_wrptr(sc, ch, EMU_CHAN_CCR, 0); in emu_init()
2740 emu_wrptr(sc, ch, EMU_CHAN_PSST, 0); in emu_init()
2741 emu_wrptr(sc, ch, EMU_CHAN_DSL, 0x10); in emu_init()
2742 emu_wrptr(sc, ch, EMU_CHAN_CCCA, 0); in emu_init()
2743 emu_wrptr(sc, ch, EMU_CHAN_Z1, 0); in emu_init()
2744 emu_wrptr(sc, ch, EMU_CHAN_Z2, 0); in emu_init()
2745 emu_wrptr(sc, ch, EMU_CHAN_FXRT, 0xd01c0000); in emu_init()
2747 emu_wrptr(sc, ch, EMU_CHAN_ATKHLDM, 0); in emu_init()
2748 emu_wrptr(sc, ch, EMU_CHAN_DCYSUSM, 0); in emu_init()
2749 emu_wrptr(sc, ch, EMU_CHAN_IFATN, 0xffff); in emu_init()
2750 emu_wrptr(sc, ch, EMU_CHAN_PEFE, 0); in emu_init()
2751 emu_wrptr(sc, ch, EMU_CHAN_FMMOD, 0); in emu_init()
2754 emu_wrptr(sc, ch, EMU_CHAN_TEMPENV, 0); in emu_init()
2757 emu_wrptr(sc, ch, EMU_CHAN_LFOVAL2, 0); in emu_init()
2758 emu_wrptr(sc, ch, EMU_CHAN_LFOVAL1, 0); in emu_init()
2759 emu_wrptr(sc, ch, EMU_CHAN_ATKHLDV, 0); in emu_init()
2760 emu_wrptr(sc, ch, EMU_CHAN_ENVVOL, 0); in emu_init()
2761 emu_wrptr(sc, ch, EMU_CHAN_ENVVAL, 0); in emu_init()
2764 emu_wrptr(sc, ch, 0x4c, 0x0); in emu_init()
2765 emu_wrptr(sc, ch, 0x4d, 0x0); in emu_init()
2766 emu_wrptr(sc, ch, 0x4e, 0x0); in emu_init()
2767 emu_wrptr(sc, ch, 0x4f, 0x0); in emu_init()
2768 emu_wrptr(sc, ch, EMU_A_CHAN_FXRT1, 0x3f3f3f3f); in emu_init()
2769 emu_wrptr(sc, ch, EMU_A_CHAN_FXRT2, 0x3f3f3f3f); in emu_init()
2770 emu_wrptr(sc, ch, EMU_A_CHAN_SENDAMOUNTS, 0x0); in emu_init()
2777 emu_wrptr(sc, 0, EMU_A_SPDIF_SAMPLERATE, EMU_A_SPDIF_48000); in emu_init()
2786 spdif_sr = emu_rdptr(sc, 0, EMU_A_SPDIF_SAMPLERATE); in emu_init()
2787 spdif_sr &= 0xfffff1ff; in emu_init()
2789 emu_wrptr(sc, 0, EMU_A_SPDIF_SAMPLERATE, spdif_sr); in emu_init()
2792 emu_wr_p16vptr(sc, 0, EMU_A2_SRCSel, 0x14); in emu_init()
2796 emu_wr_p16vptr(sc, 0, EMU_A2_SRCMULTI_ENABLE, 0xFF00FF00); in emu_init()
2798 emu_wr_p16vptr(sc, 0, EMU_A2_MIXER_I2S_ENABLE, 0xFF000000); in emu_init()
2799 emu_wr_p16vptr(sc, 0, EMU_A2_MIXER_SPDIF_ENABLE, 0xFF000000); in emu_init()
2802 emu_wr(sc, EMU_A_IOCFG, tmp & ~0x8, 2); in emu_init()
2818 device_printf(sc->dev, "Card Configuration ( 0x%08x )\n", tmp); in emu_init()
2819 device_printf(sc->dev, "Card Configuration ( & 0xff000000 ) : %s%s%s%s%s%s%s%s\n", in emu_init()
2820 (tmp & 0x80000000 ? "[Legacy MPIC] " : ""), in emu_init()
2821 (tmp & 0x40000000 ? "[0x40] " : ""), in emu_init()
2822 (tmp & 0x20000000 ? "[0x20] " : ""), in emu_init()
2823 (tmp & 0x10000000 ? "[0x10] " : ""), in emu_init()
2824 (tmp & 0x08000000 ? "[0x08] " : ""), in emu_init()
2825 (tmp & 0x04000000 ? "[0x04] " : ""), in emu_init()
2826 (tmp & 0x02000000 ? "[0x02] " : ""), in emu_init()
2827 (tmp & 0x01000000 ? "[0x01]" : " ")); in emu_init()
2828 device_printf(sc->dev, "Card Configuration ( & 0x00ff0000 ) : %s%s%s%s%s%s%s%s\n", in emu_init()
2829 (tmp & 0x00800000 ? "[0x80] " : ""), in emu_init()
2830 (tmp & 0x00400000 ? "[0x40] " : ""), in emu_init()
2831 (tmp & 0x00200000 ? "[Legacy INT] " : ""), in emu_init()
2832 (tmp & 0x00100000 ? "[0x10] " : ""), in emu_init()
2833 (tmp & 0x00080000 ? "[0x08] " : ""), in emu_init()
2834 (tmp & 0x00040000 ? "[Codec4] " : ""), in emu_init()
2835 (tmp & 0x00020000 ? "[Codec2] " : ""), in emu_init()
2836 (tmp & 0x00010000 ? "[I2S Codec]" : " ")); in emu_init()
2837 device_printf(sc->dev, "Card Configuration ( & 0x0000ff00 ) : %s%s%s%s%s%s%s%s\n", in emu_init()
2838 (tmp & 0x00008000 ? "[0x80] " : ""), in emu_init()
2839 (tmp & 0x00004000 ? "[GPINPUT0] " : ""), in emu_init()
2840 (tmp & 0x00002000 ? "[GPINPUT1] " : ""), in emu_init()
2841 (tmp & 0x00001000 ? "[GPOUT0] " : ""), in emu_init()
2842 (tmp & 0x00000800 ? "[GPOUT1] " : ""), in emu_init()
2843 (tmp & 0x00000400 ? "[GPOUT2] " : ""), in emu_init()
2844 (tmp & 0x00000200 ? "[Joystick] " : ""), in emu_init()
2845 (tmp & 0x00000100 ? "[0x01]" : " ")); in emu_init()
2846 device_printf(sc->dev, "Card Configuration ( & 0x000000ff ) : %s%s%s%s%s%s%s%s\n", in emu_init()
2847 (tmp & 0x00000080 ? "[0x80] " : ""), in emu_init()
2848 (tmp & 0x00000040 ? "[0x40] " : ""), in emu_init()
2849 (tmp & 0x00000020 ? "[0x20] " : ""), in emu_init()
2850 (tmp & 0x00000010 ? "[AUTOMUTE] " : ""), in emu_init()
2851 (tmp & 0x00000008 ? "[LOCKSOUNDCACHE] " : ""), in emu_init()
2852 (tmp & 0x00000004 ? "[LOCKTANKCACHE] " : ""), in emu_init()
2853 (tmp & 0x00000002 ? "[MUTEBUTTONENABLE] " : ""), in emu_init()
2854 (tmp & 0x00000001 ? "[AUDIOENABLE]" : " ")); in emu_init()
2858 device_printf(sc->dev, "Audigy Card Configuration ( 0x%04x )\n", tmp); in emu_init()
2859 device_printf(sc->dev, "Audigy Card Configuration ( & 0xff00 )"); in emu_init()
2861 (tmp & 0x8000 ? "[Rear Speakers] " : ""), in emu_init()
2862 (tmp & 0x4000 ? "[Front Speakers] " : ""), in emu_init()
2863 (tmp & 0x2000 ? "[0x20] " : ""), in emu_init()
2864 (tmp & 0x1000 ? "[0x10] " : ""), in emu_init()
2865 (tmp & 0x0800 ? "[0x08] " : ""), in emu_init()
2866 (tmp & 0x0400 ? "[0x04] " : ""), in emu_init()
2867 (tmp & 0x0200 ? "[0x02] " : ""), in emu_init()
2868 (tmp & 0x0100 ? "[AudigyDrive Phones]" : " ")); in emu_init()
2869 device_printf(sc->dev, "Audigy Card Configuration ( & 0x00ff )"); in emu_init()
2871 (tmp & 0x0080 ? "[0x80] " : ""), in emu_init()
2872 (tmp & 0x0040 ? "[Mute AnalogOut] " : ""), in emu_init()
2873 (tmp & 0x0020 ? "[0x20] " : ""), in emu_init()
2874 (tmp & 0x0010 ? "[0x10] " : ""), in emu_init()
2875 (tmp & 0x0008 ? "[0x08] " : ""), in emu_init()
2876 (tmp & 0x0004 ? "[GPOUT0] " : ""), in emu_init()
2877 (tmp & 0x0002 ? "[GPOUT1] " : ""), in emu_init()
2878 (tmp & 0x0001 ? "[GPOUT2]" : " ")); in emu_init()
2881 return (0); in emu_init()
2890 emu_wr(sc, EMU_INTE, 0, 4); in emu_uninit()
2891 for (ch = 0; ch < NUM_G; ch++) in emu_uninit()
2892 emu_wrptr(sc, ch, EMU_CHAN_DCYSUSV, 0); in emu_uninit()
2893 for (ch = 0; ch < NUM_G; ch++) { in emu_uninit()
2894 emu_wrptr(sc, ch, EMU_CHAN_VTFT, 0); in emu_uninit()
2895 emu_wrptr(sc, ch, EMU_CHAN_CVCF, 0); in emu_uninit()
2896 emu_wrptr(sc, ch, EMU_CHAN_PTRX, 0); in emu_uninit()
2897 emu_wrptr(sc, ch, EMU_CHAN_CPF, 0); in emu_uninit()
2903 emu_wrptr(sc, 0, EMU_PTB, 0); in emu_uninit()
2905 emu_wrptr(sc, 0, EMU_MICBS, EMU_RECBS_BUFSIZE_NONE); in emu_uninit()
2906 emu_wrptr(sc, 0, EMU_MICBA, 0); in emu_uninit()
2907 emu_wrptr(sc, 0, EMU_FXBS, EMU_RECBS_BUFSIZE_NONE); in emu_uninit()
2908 emu_wrptr(sc, 0, EMU_FXBA, 0); in emu_uninit()
2909 emu_wrptr(sc, 0, EMU_FXWC, 0); in emu_uninit()
2910 emu_wrptr(sc, 0, EMU_ADCBS, EMU_RECBS_BUFSIZE_NONE); in emu_uninit()
2911 emu_wrptr(sc, 0, EMU_ADCBA, 0); in emu_uninit()
2912 emu_wrptr(sc, 0, EMU_TCB, 0); in emu_uninit()
2913 emu_wrptr(sc, 0, EMU_TCBS, 0); in emu_uninit()
2916 emu_wrptr(sc, 0, EMU_CLIEL, 0); in emu_uninit()
2917 emu_wrptr(sc, 0, EMU_CLIEH, 0); in emu_uninit()
2918 emu_wrptr(sc, 0, EMU_SOLEL, 0); in emu_uninit()
2919 emu_wrptr(sc, 0, EMU_SOLEH, 0); in emu_uninit()
2931 return (0); in emu_uninit()
2967 return (0); in emu_read_ivar()
2976 case 0: in emu_write_ivar()
2987 unsigned int thiscard = 0; in emu_pci_probe()
2991 if (vendor != 0x1102) in emu_pci_probe()
2995 if (thiscard == 0) in emu_pci_probe()
3010 #if 0 in emu_pci_attach()
3032 RANGE(sc->mch_disabled, 0, 1); in emu_pci_attach()
3035 …OID_AUTO, "multichannel_disabled", CTLFLAG_RD, &(sc->mch_disabled), 0, "Multichannel playback sett… in emu_pci_attach()
3038 RANGE(sc->mch_rec, 0, 1); in emu_pci_attach()
3041 …OID_AUTO, "multichannel_recording", CTLFLAG_RD, &(sc->mch_rec), 0, "Multichannel recording settin… in emu_pci_attach()
3044 RANGE(sc->mch_rec, 0, 2); in emu_pci_attach()
3047 OID_AUTO, "debug", CTLFLAG_RW, &(sc->dbg_level), 0, "Debug level"); in emu_pci_attach()
3055 sc->enable_ir = 0; in emu_pci_attach()
3056 sc->has_ac97 = 0; in emu_pci_attach()
3057 sc->has_51 = 0; in emu_pci_attach()
3058 sc->has_71 = 0; in emu_pci_attach()
3059 sc->broken_digital = 0; in emu_pci_attach()
3060 sc->is_emu10k1 = 0; in emu_pci_attach()
3061 sc->is_emu10k2 = 0; in emu_pci_attach()
3062 sc->is_ca0102 = 0; in emu_pci_attach()
3063 sc->is_ca0108 = 0; in emu_pci_attach()
3064 sc->is_cardbus = 0; in emu_pci_attach()
3082 sc->is_emu10k2 = 0; in emu_pci_attach()
3098 sc->opcode_shift = 0; in emu_pci_attach()
3104 /* sc->fx_base = 0x0 */ in emu_pci_attach()
3105 sc->input_base = 0x40; in emu_pci_attach()
3106 /* sc->p16vinput_base = 0x50; */ in emu_pci_attach()
3107 sc->output_base = 0x60; in emu_pci_attach()
3108 sc->efxc_base = 0x80; in emu_pci_attach()
3109 /* sc->output32h_base = 0xa0; */ in emu_pci_attach()
3110 /* sc->output32l_base = 0xb0; */ in emu_pci_attach()
3111 sc->dsp_zero = 0xc0; in emu_pci_attach()
3112 /* 0xe0...0x100 are unknown */ in emu_pci_attach()
3113 /* sc->tram_base = 0x200 */ in emu_pci_attach()
3114 /* sc->tram_addr_base = 0x300 */ in emu_pci_attach()
3116 sc->num_gprs = 0x200; in emu_pci_attach()
3118 sc->code_size = 0x800 / 2; /* 0x600-0xdff, 2048 words, in emu_pci_attach()
3128 sc->has_51 = 0; /* We don't support 5.1 sound on SB Live! 5.1 */ in emu_pci_attach()
3132 sc->code_size = 0x400 / 2; /* 0x400-0x7ff, 1024 words, in emu_pci_attach()
3135 sc->num_gprs = 0x100; in emu_pci_attach()
3136 sc->input_base = 0x10; in emu_pci_attach()
3137 sc->output_base = 0x20; in emu_pci_attach()
3140 * They use output+0x11/+0x12 (=efxc+1/+2). in emu_pci_attach()
3143 sc->efxc_base = 0x30; in emu_pci_attach()
3144 sc->dsp_zero = 0x40; in emu_pci_attach()
3145 sc->mchannel_fx = 0; in emu_pci_attach()
3151 if (sc->opcode_shift == 0) in emu_pci_attach()
3156 i = PCIR_BAR(0); in emu_pci_attach()
3165 for (i = 0; i < EMU_MAX_IRQ_CONSUMERS; i++) in emu_pci_attach()
3166 sc->timer[i] = 0; /* disable it */ in emu_pci_attach()
3168 i = 0; in emu_pci_attach()
3176 if (emu_rm_init(sc) != 0) { in emu_pci_attach()
3181 if (emu_cardbus_init(sc) != 0) { in emu_pci_attach()
3185 if (emu_init(sc) != 0) { in emu_pci_attach()
3189 if (emu10kx_dev_init(sc) != 0) { in emu_pci_attach()
3193 …snprintf(status, 255, "rev %d at io 0x%jx irq %jd", sc->rev, rman_get_start(sc->reg), rman_get_sta… in emu_pci_attach()
3196 for (i = 0; i < NUM_G; i++) { in emu_pci_attach()
3199 sc->voice[i].busy = 0; in emu_pci_attach()
3200 sc->voice[i].ismaster = 0; in emu_pci_attach()
3201 sc->voice[i].running = 0; in emu_pci_attach()
3202 sc->voice[i].b16 = 0; in emu_pci_attach()
3203 sc->voice[i].stereo = 0; in emu_pci_attach()
3204 sc->voice[i].speed = 0; in emu_pci_attach()
3205 sc->voice[i].start = 0; in emu_pci_attach()
3206 sc->voice[i].end = 0; in emu_pci_attach()
3210 for (i = 0; i < RT_COUNT; i++) in emu_pci_attach()
3283 for (i = 0; i < 2; i++) in emu_pci_attach()
3287 #if 0 in emu_pci_attach()
3303 sc->midi[0] = device_add_child(dev, "midi", DEVICE_UNIT_ANY); in emu_pci_attach()
3304 device_set_ivars(sc->midi[0], func); in emu_pci_attach()
3322 return (0); in emu_pci_attach()
3331 bus_release_resource(dev, SYS_RES_IOPORT, PCIR_BAR(0), sc->reg); in emu_pci_attach()
3335 bus_release_resource(dev, SYS_RES_IRQ, 0, sc->irq); in emu_pci_attach()
3357 int r = 0; in emu_pci_detach()
3362 if (r != 0) in emu_pci_detach()
3377 bus_release_resource(dev, SYS_RES_IOPORT, PCIR_BAR(0), sc->reg); in emu_pci_detach()
3379 bus_release_resource(dev, SYS_RES_IRQ, 0, sc->irq); in emu_pci_detach()
3383 return (0); in emu_pci_detach()
3404 0,
3411 int err = 0; in emu_modevent()