Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ALSA: oxygen: add HiFier Serenade support

Add support for the TempoTec/MediaTek HiFier Serenade sound card.

The PCI ID was already there, but the driver handled it like the
Fantasia model, which resulted in a dummy recording device. As
a stereo output-only card, this model is to be handled exactly
like the HG2PCI.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>

authored by

Clemens Ladisch and committed by
Takashi Iwai
2146dcfd 18f24839

+16 -13
+1
Documentation/sound/alsa/ALSA-Configuration.txt
··· 1535 1535 * Razer Barracuda AC-1 1536 1536 * Sondigo Inferno 1537 1537 * TempoTec HiFier Fantasia 1538 + * TempoTec HiFier Serenade 1538 1539 1539 1540 This module supports autoprobe and multiple cards. 1540 1541
+1
sound/pci/Kconfig
··· 226 226 * Razer Barracuda AC-1 227 227 * Sondigo Inferno 228 228 * TempoTec/MediaTek HiFier Fantasia 229 + * TempoTec/MediaTek HiFier Serenade 229 230 230 231 To compile this driver as a module, choose M here: the module 231 232 will be called snd-oxygen.
+14 -13
sound/pci/oxygen/oxygen.c
··· 70 70 MODEL_MERIDIAN, 71 71 MODEL_CLARO, 72 72 MODEL_CLARO_HALO, 73 - MODEL_HIFIER, 74 - MODEL_HG2PCI, 73 + MODEL_FANTASIA, 74 + MODEL_2CH_OUTPUT, 75 75 }; 76 76 77 77 static DEFINE_PCI_DEVICE_TABLE(oxygen_ids) = { ··· 85 85 { OXYGEN_PCI_SUBID(0x147a, 0xa017), .driver_data = MODEL_CMEDIA_REF }, 86 86 { OXYGEN_PCI_SUBID(0x1a58, 0x0910), .driver_data = MODEL_CMEDIA_REF }, 87 87 /* Kuroutoshikou CMI8787-HG2PCI */ 88 - { OXYGEN_PCI_SUBID(0x13f6, 0xffff), .driver_data = MODEL_HG2PCI }, 88 + { OXYGEN_PCI_SUBID(0x13f6, 0xffff), .driver_data = MODEL_2CH_OUTPUT }, 89 89 /* TempoTec HiFier Fantasia */ 90 - { OXYGEN_PCI_SUBID(0x14c3, 0x1710), .driver_data = MODEL_HIFIER }, 91 - { OXYGEN_PCI_SUBID(0x14c3, 0x1711), .driver_data = MODEL_HIFIER }, 90 + { OXYGEN_PCI_SUBID(0x14c3, 0x1710), .driver_data = MODEL_FANTASIA }, 91 + /* TempoTec HiFier Serenade */ 92 + { OXYGEN_PCI_SUBID(0x14c3, 0x1711), .driver_data = MODEL_2CH_OUTPUT }, 92 93 /* AuzenTech X-Meridian */ 93 94 { OXYGEN_PCI_SUBID(0x415a, 0x5431), .driver_data = MODEL_MERIDIAN }, 94 95 /* HT-Omega Claro */ ··· 245 244 claro_enable_hp(chip); 246 245 } 247 246 248 - static void hifier_init(struct oxygen *chip) 247 + static void fantasia_init(struct oxygen *chip) 249 248 { 250 249 ak4396_init(chip); 251 250 snd_component_add(chip->card, "CS5340"); 252 251 } 253 252 254 - static void hg2pci_init(struct oxygen *chip) 253 + static void stereo_output_init(struct oxygen *chip) 255 254 { 256 255 ak4396_init(chip); 257 256 } ··· 584 583 CAPTURE_0_FROM_I2S_2 | 585 584 CAPTURE_1_FROM_SPDIF; 586 585 break; 587 - case MODEL_HIFIER: 588 - case MODEL_HG2PCI: 586 + case MODEL_FANTASIA: 587 + case MODEL_2CH_OUTPUT: 589 588 chip->model.shortname = "C-Media CMI8787"; 590 589 chip->model.chip = "CMI8787"; 591 - if (id->driver_data == MODEL_HIFIER) 592 - chip->model.init = hifier_init; 590 + if (id->driver_data == MODEL_FANTASIA) 591 + chip->model.init = fantasia_init; 593 592 else 594 - chip->model.init = hg2pci_init; 593 + chip->model.init = stereo_output_init; 595 594 chip->model.resume = stereo_resume; 596 595 chip->model.mixer_init = generic_mixer_init; 597 596 chip->model.set_adc_params = set_no_params; 598 597 chip->model.device_config = PLAYBACK_0_TO_I2S | 599 598 PLAYBACK_1_TO_SPDIF; 600 - if (id->driver_data == MODEL_HIFIER) 599 + if (id->driver_data == MODEL_FANTASIA) 601 600 chip->model.device_config |= CAPTURE_0_FROM_I2S_1; 602 601 chip->model.dac_channels = 2; 603 602 break;