// SPDX-License-Identifier: GPL-2.0-or-later /* * Additional mixer mapping * * Copyright (c) 2002 by Takashi Iwai <[email protected]> */ struct usbmix_dB_map { … }; struct usbmix_name_map { … }; struct usbmix_selector_map { … }; struct usbmix_ctl_map { … }; /* * USB control mappers for SB Exitigy */ /* * Topology of SB Extigy (see on the wide screen :) USB_IN[1] --->FU[2]------------------------------+->MU[16]-->PU[17]-+->FU[18]--+->EU[27]--+->EU[21]-->FU[22]--+->FU[23] > Dig_OUT[24] ^ | | | | USB_IN[3] -+->SU[5]-->FU[6]--+->MU[14] ->PU[15]->+ | | | +->FU[25] > Dig_OUT[26] ^ ^ | | | | Dig_IN[4] -+ | | | | +->FU[28]---------------------> Spk_OUT[19] | | | | Lin-IN[7] -+-->FU[8]---------+ | | +----------------------------------------> Hph_OUT[20] | | | Mic-IN[9] --+->FU[10]----------------------------+ | || | || +----------------------------------------------------+ VV V ++--+->SU[11]-->FU[12] --------------------------------------------------------------------------------------> USB_OUT[13] */ static const struct usbmix_name_map extigy_map[] = …; /* Sound Blaster MP3+ controls mapping * The default mixer channels have totally misleading names, * e.g. no Master and fake PCM volume * Pavel Mihaylov <[email protected]> */ static const struct usbmix_dB_map mp3plus_dB_1 = …; /* just guess */ static const struct usbmix_dB_map mp3plus_dB_2 = …; /* just guess */ static const struct usbmix_name_map mp3plus_map[] = …; /* Topology of SB Audigy 2 NX +----------------------------->EU[27]--+ | v | +----------------------------------->SU[29]---->FU[22]-->Dig_OUT[24] | | ^ USB_IN[1]-+------------+ +->EU[17]->+->FU[11]-+ | v | v | Dig_IN[4]---+->FU[6]-->MU[16]->FU[18]-+->EU[21]->SU[31]----->FU[30]->Hph_OUT[20] | ^ | | Lin_IN[7]-+--->FU[8]---+ +->EU[23]->FU[28]------------->Spk_OUT[19] | | v +--->FU[12]------------------------------------->SU[14]--->USB_OUT[15] | ^ +->FU[13]--------------------------------------+ */ static const struct usbmix_name_map audigy2nx_map[] = …; static const struct usbmix_name_map mbox1_map[] = …; static const struct usbmix_selector_map c400_selectors[] = …; static const struct usbmix_selector_map audigy2nx_selectors[] = …; /* Creative SoundBlaster Live! 24-bit External */ static const struct usbmix_name_map live24ext_map[] = …; /* LineX FM Transmitter entry - needed to bypass controls bug */ static const struct usbmix_name_map linex_map[] = …; static const struct usbmix_name_map maya44_map[] = …; /* Section "justlink_map" below added by James Courtier-Dutton <[email protected]> * sourced from Maplin Electronics (https://www.maplin.co.uk), part number A56AK * Part has 2 connectors that act as a single output. (TOSLINK Optical for digital out, and 3.5mm Jack for Analogue out.) * The USB Mixer publishes a Microphone and extra Volume controls for it, but none exist on the device, * so this map removes all unwanted sliders from alsamixer */ static const struct usbmix_name_map justlink_map[] = …; /* TerraTec Aureon 5.1 MkII USB */ static const struct usbmix_name_map aureon_51_2_map[] = …; static const struct usbmix_name_map scratch_live_map[] = …; static const struct usbmix_name_map ebox44_map[] = …; /* "Gamesurround Muse Pocket LT" looks same like "Sound Blaster MP3+" * most importand difference is SU[8], it should be set to "Capture Source" * to make alsamixer and PA working properly. * FIXME: or mp3plus_map should use "Capture Source" too, * so this maps can be merget */ static const struct usbmix_name_map hercules_usb51_map[] = …; /* Plantronics Gamecom 780 has a broken volume control, better to disable it */ static const struct usbmix_name_map gamecom780_map[] = …; /* some (all?) SCMS USB3318 devices are affected by a firmware lock up * when anything attempts to access FU 10 (control) */ static const struct usbmix_name_map scms_usb3318_map[] = …; /* Bose companion 5, the dB conversion factor is 16 instead of 256 */ static const struct usbmix_dB_map bose_companion5_dB = …; static const struct usbmix_name_map bose_companion5_map[] = …; /* Bose Revolve+ SoundLink, correction of dB maps */ static const struct usbmix_dB_map bose_soundlink_dB = …; static const struct usbmix_name_map bose_soundlink_map[] = …; /* Sennheiser Communications Headset [PC 8], the dB value is reported as -6 negative maximum */ static const struct usbmix_dB_map sennheiser_pc8_dB = …; static const struct usbmix_name_map sennheiser_pc8_map[] = …; /* * Dell usb dock with ALC4020 codec had a firmware problem where it got * screwed up when zero volume is passed; just skip it as a workaround * * Also the extension unit gives an access error, so skip it as well. */ static const struct usbmix_name_map dell_alc4020_map[] = …; /* * Corsair Virtuoso calls everything "Headset" without this, leading to * applications moving the sidetone control instead of the main one. */ static const struct usbmix_name_map corsair_virtuoso_map[] = …; /* Microsoft USB Link headset */ /* a guess work: raw playback volume values are from 2 to 129 */ static const struct usbmix_dB_map ms_usb_link_dB = …; static const struct usbmix_name_map ms_usb_link_map[] = …; /* ASUS ROG Zenith II with Realtek ALC1220-VB */ static const struct usbmix_name_map asus_zenith_ii_map[] = …; static const struct usbmix_connector_map asus_zenith_ii_connector_map[] = …; static const struct usbmix_name_map lenovo_p620_rear_map[] = …; /* TRX40 mobos with Realtek ALC1220-VB */ static const struct usbmix_name_map trx40_mobo_map[] = …; static const struct usbmix_connector_map trx40_mobo_connector_map[] = …; /* Rear panel + front mic on Gigabyte TRX40 Aorus Master with ALC1220-VB */ static const struct usbmix_name_map aorus_master_alc1220vb_map[] = …; /* MSI MPG X570S Carbon Max Wifi with ALC4080 */ static const struct usbmix_name_map msi_mpg_x570s_carbon_max_wifi_alc4080_map[] = …; /* Gigabyte B450/550 Mobo */ static const struct usbmix_name_map gigabyte_b450_map[] = …; static const struct usbmix_connector_map gigabyte_b450_connector_map[] = …; /* * Control map entries */ static const struct usbmix_ctl_map usbmix_ctl_maps[] = …; /* * Control map entries for UAC3 BADD profiles */ static const struct usbmix_name_map uac3_badd_generic_io_map[] = …; static const struct usbmix_name_map uac3_badd_headphone_map[] = …; static const struct usbmix_name_map uac3_badd_speaker_map[] = …; static const struct usbmix_name_map uac3_badd_microphone_map[] = …; /* Covers also 'headset adapter' profile */ static const struct usbmix_name_map uac3_badd_headset_map[] = …; static const struct usbmix_name_map uac3_badd_speakerphone_map[] = …; static const struct usbmix_ctl_map uac3_badd_usbmix_ctl_maps[] = …;