ALSA: emu10k1: use high-level I/O functions also during init
... and also use more pre-defined constants on the way (some of which required adjustment). Signed-off-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de> Link: https://lore.kernel.org/r/20230422161021.1143967-1-oswald.buddenhagen@gmx.de Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
14a2956539
commit
8d60d5cabe
|
@ -852,10 +852,11 @@
|
|||
#define A_SPDIF_MUTED 0x000000c0
|
||||
|
||||
#define A_I2S_CAPTURE_RATE_MASK 0x00000e00 /* This sets the capture PCM rate, but it is */
|
||||
#define A_I2S_CAPTURE_48000 0x00000000 /* unclear if this sets the ADC rate as well. */
|
||||
#define A_I2S_CAPTURE_192000 0x00000200
|
||||
#define A_I2S_CAPTURE_96000 0x00000400
|
||||
#define A_I2S_CAPTURE_44100 0x00000800
|
||||
#define A_I2S_CAPTURE_RATE 0x03090076 /* unclear if this sets the ADC rate as well. */
|
||||
#define A_I2S_CAPTURE_48000 0x0
|
||||
#define A_I2S_CAPTURE_192000 0x1
|
||||
#define A_I2S_CAPTURE_96000 0x2
|
||||
#define A_I2S_CAPTURE_44100 0x4
|
||||
|
||||
#define A_EHC_SRC48_MASK 0x0000e000 /* This sets the playback PCM rate on the P16V */
|
||||
#define A_EHC_SRC48_BYPASS 0x00000000
|
||||
|
|
|
@ -187,10 +187,7 @@ static int snd_emu10k1_init(struct snd_emu10k1 *emu, int enable_ir)
|
|||
} else if (emu->card_capabilities->ca0151_chip) { /* audigy2 */
|
||||
/* Hacks for Alice3 to work independent of haP16V driver */
|
||||
/* Setup SRCMulti_I2S SamplingRate */
|
||||
tmp = snd_emu10k1_ptr_read(emu, A_SPDIF_SAMPLERATE, 0);
|
||||
tmp &= 0xfffff1ff;
|
||||
tmp |= (0x2<<9);
|
||||
snd_emu10k1_ptr_write(emu, A_SPDIF_SAMPLERATE, 0, tmp);
|
||||
snd_emu10k1_ptr_write(emu, A_I2S_CAPTURE_RATE, 0, A_I2S_CAPTURE_96000);
|
||||
|
||||
/* Setup SRCSel (Enable Spdif,I2S SRCMulti) */
|
||||
snd_emu10k1_ptr20_write(emu, SRCSel, 0, 0x14);
|
||||
|
@ -206,25 +203,20 @@ static int snd_emu10k1_init(struct snd_emu10k1 *emu, int enable_ir)
|
|||
/* Hacks for Alice3 to work independent of haP16V driver */
|
||||
dev_info(emu->card->dev, "Audigy2 value: Special config.\n");
|
||||
/* Setup SRCMulti_I2S SamplingRate */
|
||||
tmp = snd_emu10k1_ptr_read(emu, A_SPDIF_SAMPLERATE, 0);
|
||||
tmp &= 0xfffff1ff;
|
||||
tmp |= (0x2<<9);
|
||||
snd_emu10k1_ptr_write(emu, A_SPDIF_SAMPLERATE, 0, tmp);
|
||||
snd_emu10k1_ptr_write(emu, A_I2S_CAPTURE_RATE, 0, A_I2S_CAPTURE_96000);
|
||||
|
||||
/* Setup SRCSel (Enable Spdif,I2S SRCMulti) */
|
||||
outl(0x600000, emu->port + 0x20);
|
||||
outl(0x14, emu->port + 0x24);
|
||||
snd_emu10k1_ptr20_write(emu, P17V_SRCSel, 0, 0x14);
|
||||
|
||||
/* Setup SRCMulti Input Audio Enable */
|
||||
outl(0x7b0000, emu->port + 0x20);
|
||||
outl(0xFF000000, emu->port + 0x24);
|
||||
snd_emu10k1_ptr20_write(emu, P17V_MIXER_I2S_ENABLE, 0, 0xFF000000);
|
||||
|
||||
/* Setup SPDIF Out Audio Enable */
|
||||
/* The Audigy 2 Value has a separate SPDIF out,
|
||||
* so no need for a mixer switch
|
||||
*/
|
||||
outl(0x7a0000, emu->port + 0x20);
|
||||
outl(0xFF000000, emu->port + 0x24);
|
||||
snd_emu10k1_ptr20_write(emu, P17V_MIXER_SPDIF_ENABLE, 0, 0xFF000000);
|
||||
|
||||
tmp = inw(emu->port + A_IOCFG) & ~0x8; /* Clear bit 3 */
|
||||
outw(tmp, emu->port + A_IOCFG);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue