198 | | parent = auich_create_group_control(multi, &index, 0, 0, "Record"); |
| 208 | parent2 = auich_create_group_control(multi, &index, parent, 0, info->name); |
| 209 | |
| 210 | if(info->type & B_MIX_GAIN) { |
| 211 | if(info->type & B_MIX_MUTE) { |
| 212 | multi->controls[index].mix_control.id = EMU_MULTI_CONTROL_FIRSTID + index; |
| 213 | multi->controls[index].mix_control.flags = B_MULTI_MIX_ENABLE; |
| 214 | multi->controls[index].mix_control.master = EMU_MULTI_CONTROL_MASTERID; |
| 215 | multi->controls[index].mix_control.parent = parent2; |
| 216 | multi->controls[index].mix_control.string = S_MUTE; |
| 217 | multi->controls[index].cookie = info; |
| 218 | multi->controls[index].type = B_MIX_MUTE; |
| 219 | multi->controls[index].get = &auich_ac97_get_mix; |
| 220 | multi->controls[index].set = &auich_ac97_set_mix; |
| 221 | index++; |
| 222 | } |
| 224 | multi->controls[index].mix_control.id = EMU_MULTI_CONTROL_FIRSTID + index; |
| 225 | multi->controls[index].mix_control.flags = B_MULTI_MIX_GAIN; |
| 226 | multi->controls[index].mix_control.master = EMU_MULTI_CONTROL_MASTERID; |
| 227 | multi->controls[index].mix_control.parent = parent2; |
| 228 | strcpy(multi->controls[index].mix_control.name, info->name); |
| 229 | multi->controls[index].mix_control.u.gain.min_gain = info->min_gain; |
| 230 | multi->controls[index].mix_control.u.gain.max_gain = info->max_gain; |
| 231 | multi->controls[index].mix_control.u.gain.granularity = info->granularity; |
| 232 | multi->controls[index].cookie = info; |
| 233 | multi->controls[index].type = B_MIX_GAIN; |
| 234 | multi->controls[index].get = &auich_ac97_get_mix; |
| 235 | multi->controls[index].set = &auich_ac97_set_mix; |
| 236 | id = multi->controls[index].mix_control.id; |
| 237 | index++; |
| 238 | |
| 239 | if(info->type & B_MIX_STEREO) { |
| 240 | multi->controls[index].mix_control.id = EMU_MULTI_CONTROL_FIRSTID + index; |
| 241 | multi->controls[index].mix_control.flags = B_MULTI_MIX_GAIN; |
| 242 | multi->controls[index].mix_control.master = id; |
| 243 | multi->controls[index].mix_control.parent = parent2; |
| 244 | strcpy(multi->controls[index].mix_control.name, info->name); |
| 245 | multi->controls[index].mix_control.u.gain.min_gain = info->min_gain; |
| 246 | multi->controls[index].mix_control.u.gain.max_gain = info->max_gain; |
| 247 | multi->controls[index].mix_control.u.gain.granularity = info->granularity; |
| 248 | multi->controls[index].cookie = info; |
| 249 | multi->controls[index].type = B_MIX_GAIN; |
| 250 | multi->controls[index].get = &auich_ac97_get_mix; |
| 251 | multi->controls[index].set = &auich_ac97_set_mix; |
| 252 | index++; |
| 253 | } |
| 254 | |
| 255 | if(info->type & B_MIX_MICBOOST) { |
| 256 | multi->controls[index].mix_control.id = EMU_MULTI_CONTROL_FIRSTID + index; |
| 257 | multi->controls[index].mix_control.flags = B_MULTI_MIX_ENABLE; |
| 258 | multi->controls[index].mix_control.master = EMU_MULTI_CONTROL_MASTERID; |
| 259 | multi->controls[index].mix_control.parent = parent2; |
| 260 | strcpy(multi->controls[index].mix_control.name, "+20 dB"); |
| 261 | multi->controls[index].cookie = info; |
| 262 | multi->controls[index].type = B_MIX_MICBOOST; |
| 263 | multi->controls[index].get = &auich_ac97_get_mix; |
| 264 | multi->controls[index].set = &auich_ac97_set_mix; |
| 265 | index++; |
| 266 | } |
| 267 | } |
| 268 | } |
| 269 | |
305 | | |
306 | | parent = auich_create_group_control(multi, &index, 0, 0, "AC97 Mixer"); |
307 | | |
308 | | count = source_info_size; |
309 | | count--; |
310 | | |
311 | | for(i=1; i < count ; i++) { |
312 | | info = &source_info[i]; |
313 | | PRINT(("name : %s\n", info->name)); |
314 | | |
315 | | parent2 = auich_create_group_control(multi, &index, parent, 0, info->name); |
316 | | |
317 | | if(info->type & B_MIX_GAIN) { |
318 | | if(info->type & B_MIX_MUTE) { |
319 | | multi->controls[index].mix_control.id = EMU_MULTI_CONTROL_FIRSTID + index; |
320 | | multi->controls[index].mix_control.flags = B_MULTI_MIX_ENABLE; |
321 | | multi->controls[index].mix_control.master = EMU_MULTI_CONTROL_MASTERID; |
322 | | multi->controls[index].mix_control.parent = parent2; |
323 | | multi->controls[index].mix_control.string = S_MUTE; |
324 | | multi->controls[index].cookie = info; |
325 | | multi->controls[index].type = B_MIX_MUTE; |
326 | | multi->controls[index].get = &auich_ac97_get_mix; |
327 | | multi->controls[index].set = &auich_ac97_set_mix; |
328 | | index++; |
329 | | } |
331 | | multi->controls[index].mix_control.id = EMU_MULTI_CONTROL_FIRSTID + index; |
332 | | multi->controls[index].mix_control.flags = B_MULTI_MIX_GAIN; |
333 | | multi->controls[index].mix_control.master = EMU_MULTI_CONTROL_MASTERID; |
334 | | multi->controls[index].mix_control.parent = parent2; |
335 | | strcpy(multi->controls[index].mix_control.name, info->name); |
336 | | multi->controls[index].mix_control.u.gain.min_gain = info->min_gain; |
337 | | multi->controls[index].mix_control.u.gain.max_gain = info->max_gain; |
338 | | multi->controls[index].mix_control.u.gain.granularity = info->granularity; |
339 | | multi->controls[index].cookie = info; |
340 | | multi->controls[index].type = B_MIX_GAIN; |
341 | | multi->controls[index].get = &auich_ac97_get_mix; |
342 | | multi->controls[index].set = &auich_ac97_set_mix; |
343 | | id = multi->controls[index].mix_control.id; |
344 | | index++; |
345 | | |
346 | | if(info->type & B_MIX_STEREO) { |
347 | | multi->controls[index].mix_control.id = EMU_MULTI_CONTROL_FIRSTID + index; |
348 | | multi->controls[index].mix_control.flags = B_MULTI_MIX_GAIN; |
349 | | multi->controls[index].mix_control.master = id; |
350 | | multi->controls[index].mix_control.parent = parent2; |
351 | | strcpy(multi->controls[index].mix_control.name, info->name); |
352 | | multi->controls[index].mix_control.u.gain.min_gain = info->min_gain; |
353 | | multi->controls[index].mix_control.u.gain.max_gain = info->max_gain; |
354 | | multi->controls[index].mix_control.u.gain.granularity = info->granularity; |
355 | | multi->controls[index].cookie = info; |
356 | | multi->controls[index].type = B_MIX_GAIN; |
357 | | multi->controls[index].get = &auich_ac97_get_mix; |
358 | | multi->controls[index].set = &auich_ac97_set_mix; |
359 | | index++; |
360 | | } |
361 | | } |
362 | | } |
363 | | |
364 | | parent = auich_create_group_control(multi, &index, 0, S_SETUP, NULL); |
365 | | |
366 | | /* AC97 20db Boost Mic */ |
367 | | info = &source_info[6]; |
368 | | |
369 | | if(info->type & B_MIX_GAIN && info->type & B_MIX_MICBOOST) { |
370 | | multi->controls[index].mix_control.id = EMU_MULTI_CONTROL_FIRSTID + index; |
371 | | multi->controls[index].mix_control.flags = B_MULTI_MIX_ENABLE; |
372 | | multi->controls[index].mix_control.master = EMU_MULTI_CONTROL_MASTERID; |
373 | | multi->controls[index].mix_control.parent = parent; |
374 | | strcpy(multi->controls[index].mix_control.name, "Mic +20dB"); |
375 | | multi->controls[index].cookie = info; |
376 | | multi->controls[index].type = B_MIX_MICBOOST; |
377 | | multi->controls[index].get = &auich_ac97_get_mix; |
378 | | multi->controls[index].set = &auich_ac97_set_mix; |
379 | | index++; |
380 | | } |
381 | | |