Commit 2146dcfd authored by Clemens Ladisch's avatar Clemens Ladisch Committed by Takashi Iwai

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: default avatarClemens Ladisch <clemens@ladisch.de>
Signed-off-by: Takashi Iwai's avatarTakashi Iwai <tiwai@suse.de>
parent 18f24839
...@@ -1535,6 +1535,7 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed. ...@@ -1535,6 +1535,7 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
* Razer Barracuda AC-1 * Razer Barracuda AC-1
* Sondigo Inferno * Sondigo Inferno
* TempoTec HiFier Fantasia * TempoTec HiFier Fantasia
* TempoTec HiFier Serenade
This module supports autoprobe and multiple cards. This module supports autoprobe and multiple cards.
......
...@@ -226,6 +226,7 @@ config SND_OXYGEN ...@@ -226,6 +226,7 @@ config SND_OXYGEN
* Razer Barracuda AC-1 * Razer Barracuda AC-1
* Sondigo Inferno * Sondigo Inferno
* TempoTec/MediaTek HiFier Fantasia * TempoTec/MediaTek HiFier Fantasia
* TempoTec/MediaTek HiFier Serenade
To compile this driver as a module, choose M here: the module To compile this driver as a module, choose M here: the module
will be called snd-oxygen. will be called snd-oxygen.
......
...@@ -70,8 +70,8 @@ enum { ...@@ -70,8 +70,8 @@ enum {
MODEL_MERIDIAN, MODEL_MERIDIAN,
MODEL_CLARO, MODEL_CLARO,
MODEL_CLARO_HALO, MODEL_CLARO_HALO,
MODEL_HIFIER, MODEL_FANTASIA,
MODEL_HG2PCI, MODEL_2CH_OUTPUT,
}; };
static DEFINE_PCI_DEVICE_TABLE(oxygen_ids) = { static DEFINE_PCI_DEVICE_TABLE(oxygen_ids) = {
...@@ -85,10 +85,11 @@ static DEFINE_PCI_DEVICE_TABLE(oxygen_ids) = { ...@@ -85,10 +85,11 @@ static DEFINE_PCI_DEVICE_TABLE(oxygen_ids) = {
{ OXYGEN_PCI_SUBID(0x147a, 0xa017), .driver_data = MODEL_CMEDIA_REF }, { OXYGEN_PCI_SUBID(0x147a, 0xa017), .driver_data = MODEL_CMEDIA_REF },
{ OXYGEN_PCI_SUBID(0x1a58, 0x0910), .driver_data = MODEL_CMEDIA_REF }, { OXYGEN_PCI_SUBID(0x1a58, 0x0910), .driver_data = MODEL_CMEDIA_REF },
/* Kuroutoshikou CMI8787-HG2PCI */ /* Kuroutoshikou CMI8787-HG2PCI */
{ OXYGEN_PCI_SUBID(0x13f6, 0xffff), .driver_data = MODEL_HG2PCI }, { OXYGEN_PCI_SUBID(0x13f6, 0xffff), .driver_data = MODEL_2CH_OUTPUT },
/* TempoTec HiFier Fantasia */ /* TempoTec HiFier Fantasia */
{ OXYGEN_PCI_SUBID(0x14c3, 0x1710), .driver_data = MODEL_HIFIER }, { OXYGEN_PCI_SUBID(0x14c3, 0x1710), .driver_data = MODEL_FANTASIA },
{ OXYGEN_PCI_SUBID(0x14c3, 0x1711), .driver_data = MODEL_HIFIER }, /* TempoTec HiFier Serenade */
{ OXYGEN_PCI_SUBID(0x14c3, 0x1711), .driver_data = MODEL_2CH_OUTPUT },
/* AuzenTech X-Meridian */ /* AuzenTech X-Meridian */
{ OXYGEN_PCI_SUBID(0x415a, 0x5431), .driver_data = MODEL_MERIDIAN }, { OXYGEN_PCI_SUBID(0x415a, 0x5431), .driver_data = MODEL_MERIDIAN },
/* HT-Omega Claro */ /* HT-Omega Claro */
...@@ -244,13 +245,13 @@ static void claro_halo_init(struct oxygen *chip) ...@@ -244,13 +245,13 @@ static void claro_halo_init(struct oxygen *chip)
claro_enable_hp(chip); claro_enable_hp(chip);
} }
static void hifier_init(struct oxygen *chip) static void fantasia_init(struct oxygen *chip)
{ {
ak4396_init(chip); ak4396_init(chip);
snd_component_add(chip->card, "CS5340"); snd_component_add(chip->card, "CS5340");
} }
static void hg2pci_init(struct oxygen *chip) static void stereo_output_init(struct oxygen *chip)
{ {
ak4396_init(chip); ak4396_init(chip);
} }
...@@ -583,20 +584,20 @@ static int __devinit get_oxygen_model(struct oxygen *chip, ...@@ -583,20 +584,20 @@ static int __devinit get_oxygen_model(struct oxygen *chip,
CAPTURE_0_FROM_I2S_2 | CAPTURE_0_FROM_I2S_2 |
CAPTURE_1_FROM_SPDIF; CAPTURE_1_FROM_SPDIF;
break; break;
case MODEL_HIFIER: case MODEL_FANTASIA:
case MODEL_HG2PCI: case MODEL_2CH_OUTPUT:
chip->model.shortname = "C-Media CMI8787"; chip->model.shortname = "C-Media CMI8787";
chip->model.chip = "CMI8787"; chip->model.chip = "CMI8787";
if (id->driver_data == MODEL_HIFIER) if (id->driver_data == MODEL_FANTASIA)
chip->model.init = hifier_init; chip->model.init = fantasia_init;
else else
chip->model.init = hg2pci_init; chip->model.init = stereo_output_init;
chip->model.resume = stereo_resume; chip->model.resume = stereo_resume;
chip->model.mixer_init = generic_mixer_init; chip->model.mixer_init = generic_mixer_init;
chip->model.set_adc_params = set_no_params; chip->model.set_adc_params = set_no_params;
chip->model.device_config = PLAYBACK_0_TO_I2S | chip->model.device_config = PLAYBACK_0_TO_I2S |
PLAYBACK_1_TO_SPDIF; PLAYBACK_1_TO_SPDIF;
if (id->driver_data == MODEL_HIFIER) if (id->driver_data == MODEL_FANTASIA)
chip->model.device_config |= CAPTURE_0_FROM_I2S_1; chip->model.device_config |= CAPTURE_0_FROM_I2S_1;
chip->model.dac_channels = 2; chip->model.dac_channels = 2;
break; break;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment