Loading sound/pci/oxygen/oxygen.h +2 −1 Original line number Diff line number Diff line Loading @@ -56,7 +56,8 @@ struct oxygen { u8 spdif_playback_enable; u8 ak4396_reg1; u8 revision; u8 has_2nd_ac97_codec; u8 has_ac97_0; u8 has_ac97_1; u32 spdif_bits; u32 spdif_pcm_bits; struct snd_pcm_substream *streams[PCM_COUNT]; Loading sound/pci/oxygen/oxygen_lib.c +50 −32 Original line number Diff line number Diff line Loading @@ -142,6 +142,7 @@ static void oxygen_proc_read(struct snd_info_entry *entry, } if (mutex_lock_interruptible(&chip->mutex) < 0) return; if (chip->has_ac97_0) { snd_iprintf(buffer, "\nAC97\n"); for (i = 0; i < 0x80; i += 0x10) { snd_iprintf(buffer, "%02x:", i); Loading @@ -150,6 +151,17 @@ static void oxygen_proc_read(struct snd_info_entry *entry, oxygen_read_ac97(chip, 0, i + j)); snd_iprintf(buffer, "\n"); } } if (chip->has_ac97_1) { snd_iprintf(buffer, "\nAC97 2\n"); for (i = 0; i < 0x80; i += 0x10) { snd_iprintf(buffer, "%02x:", i); for (j = 0; j < 0x10; j += 2) snd_iprintf(buffer, " %04x", oxygen_read_ac97(chip, 1, i + j)); snd_iprintf(buffer, "\n"); } } mutex_unlock(&chip->mutex); } Loading Loading @@ -184,6 +196,10 @@ static void __devinit oxygen_init(struct oxygen *chip) if (chip->revision == 1) oxygen_set_bits8(chip, OXYGEN_MISC, OXYGEN_MISC_MAGIC); i = oxygen_read16(chip, OXYGEN_AC97_CONTROL); chip->has_ac97_0 = (i & OXYGEN_AC97_CODEC_0) != 0; chip->has_ac97_1 = (i & OXYGEN_AC97_CODEC_1) != 0; oxygen_set_bits8(chip, OXYGEN_FUNCTION, OXYGEN_FUNCTION_RESET_CODEC | OXYGEN_FUNCTION_ENABLE_SPI_4_5); Loading @@ -202,6 +218,7 @@ static void __devinit oxygen_init(struct oxygen *chip) oxygen_write16(chip, OXYGEN_DMA_STATUS, 0); oxygen_write8(chip, OXYGEN_AC97_INTERRUPT_MASK, 0x00); if (chip->has_ac97_0) { oxygen_clear_bits16(chip, OXYGEN_AC97_OUT_CONFIG, OXYGEN_AC97_OUT_MAGIC3); oxygen_set_bits16(chip, OXYGEN_AC97_IN_CONFIG, Loading @@ -228,6 +245,7 @@ static void __devinit oxygen_init(struct oxygen *chip) oxygen_ac97_set_bits(chip, 0, AC97_EXTENDED_STATUS, AC97_EA_PRI | AC97_EA_PRJ | AC97_EA_PRK); } } static void oxygen_card_free(struct snd_card *card) { Loading sound/pci/oxygen/oxygen_mixer.c +23 −2 Original line number Diff line number Diff line Loading @@ -597,6 +597,9 @@ static const struct snd_kcontrol_new controls[] = { .info = spdif_info, .get = spdif_input_default_get, }, }; static const struct snd_kcontrol_new ac97_controls[] = { AC97_VOLUME("Mic Capture Volume", AC97_MIC), AC97_SWITCH("Mic Capture Switch", AC97_MIC, 15, 1), AC97_SWITCH("Mic Boost (+20dB)", AC97_MIC, 6, 0), Loading @@ -617,7 +620,9 @@ static void oxygen_any_ctl_free(struct snd_kcontrol *ctl) chip->controls[i] = NULL; } int oxygen_mixer_init(struct oxygen *chip) static int add_controls(struct oxygen *chip, const struct snd_kcontrol_new controls[], unsigned int count) { static const char *const known_ctl_names[CONTROL_COUNT] = { [CONTROL_SPDIF_PCM] = Loading @@ -633,7 +638,7 @@ int oxygen_mixer_init(struct oxygen *chip) struct snd_kcontrol *ctl; int err; for (i = 0; i < ARRAY_SIZE(controls); ++i) { for (i = 0; i < count; ++i) { ctl = snd_ctl_new1(&controls[i], chip); if (!ctl) return -ENOMEM; Loading @@ -651,5 +656,21 @@ int oxygen_mixer_init(struct oxygen *chip) ctl->private_free = oxygen_any_ctl_free; } } return 0; } int oxygen_mixer_init(struct oxygen *chip) { int err; err = add_controls(chip, controls, ARRAY_SIZE(controls)); if (err < 0) return err; if (chip->has_ac97_0) { err = add_controls(chip, ac97_controls, ARRAY_SIZE(ac97_controls)); if (err < 0) return err; } return chip->model->mixer_init ? chip->model->mixer_init(chip) : 0; } sound/pci/oxygen/oxygen_pcm.c +1 −1 Original line number Diff line number Diff line Loading @@ -714,7 +714,7 @@ int __devinit oxygen_pcm_init(struct oxygen *chip) snd_dma_pci_data(chip->pci), 128 * 1024, 256 * 1024); if (chip->has_2nd_ac97_codec) { if (chip->has_ac97_1) { err = snd_pcm_new(chip->card, "AC97", 2, 1, 0, &pcm); if (err < 0) return err; Loading Loading
sound/pci/oxygen/oxygen.h +2 −1 Original line number Diff line number Diff line Loading @@ -56,7 +56,8 @@ struct oxygen { u8 spdif_playback_enable; u8 ak4396_reg1; u8 revision; u8 has_2nd_ac97_codec; u8 has_ac97_0; u8 has_ac97_1; u32 spdif_bits; u32 spdif_pcm_bits; struct snd_pcm_substream *streams[PCM_COUNT]; Loading
sound/pci/oxygen/oxygen_lib.c +50 −32 Original line number Diff line number Diff line Loading @@ -142,6 +142,7 @@ static void oxygen_proc_read(struct snd_info_entry *entry, } if (mutex_lock_interruptible(&chip->mutex) < 0) return; if (chip->has_ac97_0) { snd_iprintf(buffer, "\nAC97\n"); for (i = 0; i < 0x80; i += 0x10) { snd_iprintf(buffer, "%02x:", i); Loading @@ -150,6 +151,17 @@ static void oxygen_proc_read(struct snd_info_entry *entry, oxygen_read_ac97(chip, 0, i + j)); snd_iprintf(buffer, "\n"); } } if (chip->has_ac97_1) { snd_iprintf(buffer, "\nAC97 2\n"); for (i = 0; i < 0x80; i += 0x10) { snd_iprintf(buffer, "%02x:", i); for (j = 0; j < 0x10; j += 2) snd_iprintf(buffer, " %04x", oxygen_read_ac97(chip, 1, i + j)); snd_iprintf(buffer, "\n"); } } mutex_unlock(&chip->mutex); } Loading Loading @@ -184,6 +196,10 @@ static void __devinit oxygen_init(struct oxygen *chip) if (chip->revision == 1) oxygen_set_bits8(chip, OXYGEN_MISC, OXYGEN_MISC_MAGIC); i = oxygen_read16(chip, OXYGEN_AC97_CONTROL); chip->has_ac97_0 = (i & OXYGEN_AC97_CODEC_0) != 0; chip->has_ac97_1 = (i & OXYGEN_AC97_CODEC_1) != 0; oxygen_set_bits8(chip, OXYGEN_FUNCTION, OXYGEN_FUNCTION_RESET_CODEC | OXYGEN_FUNCTION_ENABLE_SPI_4_5); Loading @@ -202,6 +218,7 @@ static void __devinit oxygen_init(struct oxygen *chip) oxygen_write16(chip, OXYGEN_DMA_STATUS, 0); oxygen_write8(chip, OXYGEN_AC97_INTERRUPT_MASK, 0x00); if (chip->has_ac97_0) { oxygen_clear_bits16(chip, OXYGEN_AC97_OUT_CONFIG, OXYGEN_AC97_OUT_MAGIC3); oxygen_set_bits16(chip, OXYGEN_AC97_IN_CONFIG, Loading @@ -228,6 +245,7 @@ static void __devinit oxygen_init(struct oxygen *chip) oxygen_ac97_set_bits(chip, 0, AC97_EXTENDED_STATUS, AC97_EA_PRI | AC97_EA_PRJ | AC97_EA_PRK); } } static void oxygen_card_free(struct snd_card *card) { Loading
sound/pci/oxygen/oxygen_mixer.c +23 −2 Original line number Diff line number Diff line Loading @@ -597,6 +597,9 @@ static const struct snd_kcontrol_new controls[] = { .info = spdif_info, .get = spdif_input_default_get, }, }; static const struct snd_kcontrol_new ac97_controls[] = { AC97_VOLUME("Mic Capture Volume", AC97_MIC), AC97_SWITCH("Mic Capture Switch", AC97_MIC, 15, 1), AC97_SWITCH("Mic Boost (+20dB)", AC97_MIC, 6, 0), Loading @@ -617,7 +620,9 @@ static void oxygen_any_ctl_free(struct snd_kcontrol *ctl) chip->controls[i] = NULL; } int oxygen_mixer_init(struct oxygen *chip) static int add_controls(struct oxygen *chip, const struct snd_kcontrol_new controls[], unsigned int count) { static const char *const known_ctl_names[CONTROL_COUNT] = { [CONTROL_SPDIF_PCM] = Loading @@ -633,7 +638,7 @@ int oxygen_mixer_init(struct oxygen *chip) struct snd_kcontrol *ctl; int err; for (i = 0; i < ARRAY_SIZE(controls); ++i) { for (i = 0; i < count; ++i) { ctl = snd_ctl_new1(&controls[i], chip); if (!ctl) return -ENOMEM; Loading @@ -651,5 +656,21 @@ int oxygen_mixer_init(struct oxygen *chip) ctl->private_free = oxygen_any_ctl_free; } } return 0; } int oxygen_mixer_init(struct oxygen *chip) { int err; err = add_controls(chip, controls, ARRAY_SIZE(controls)); if (err < 0) return err; if (chip->has_ac97_0) { err = add_controls(chip, ac97_controls, ARRAY_SIZE(ac97_controls)); if (err < 0) return err; } return chip->model->mixer_init ? chip->model->mixer_init(chip) : 0; }
sound/pci/oxygen/oxygen_pcm.c +1 −1 Original line number Diff line number Diff line Loading @@ -714,7 +714,7 @@ int __devinit oxygen_pcm_init(struct oxygen *chip) snd_dma_pci_data(chip->pci), 128 * 1024, 256 * 1024); if (chip->has_2nd_ac97_codec) { if (chip->has_ac97_1) { err = snd_pcm_new(chip->card, "AC97", 2, 1, 0, &pcm); if (err < 0) return err; Loading