diff options
Diffstat (limited to 'sound')
| -rw-r--r-- | sound/pci/ice1712/ice1724.c | 5 | ||||
| -rw-r--r-- | sound/pci/ice1712/prodigy192.c | 12 |
2 files changed, 16 insertions, 1 deletions
diff --git a/sound/pci/ice1712/ice1724.c b/sound/pci/ice1712/ice1724.c index 6a29bcf19042..ee620dea7ef3 100644 --- a/sound/pci/ice1712/ice1724.c +++ b/sound/pci/ice1712/ice1724.c | |||
| @@ -1666,7 +1666,12 @@ static int snd_vt1724_pro_internal_clock_put(struct snd_kcontrol *kcontrol, | |||
| 1666 | spin_lock_irq(&ice->reg_lock); | 1666 | spin_lock_irq(&ice->reg_lock); |
| 1667 | oval = inb(ICEMT1724(ice, RATE)); | 1667 | oval = inb(ICEMT1724(ice, RATE)); |
| 1668 | if (ucontrol->value.enumerated.item[0] == spdif) { | 1668 | if (ucontrol->value.enumerated.item[0] == spdif) { |
| 1669 | unsigned char i2s_oval; | ||
| 1669 | outb(oval | VT1724_SPDIF_MASTER, ICEMT1724(ice, RATE)); | 1670 | outb(oval | VT1724_SPDIF_MASTER, ICEMT1724(ice, RATE)); |
| 1671 | /* setting 256fs */ | ||
| 1672 | i2s_oval = inb(ICEMT1724(ice, I2S_FORMAT)); | ||
| 1673 | outb(i2s_oval & ~VT1724_MT_I2S_MCLK_128X, | ||
| 1674 | ICEMT1724(ice, I2S_FORMAT)); | ||
| 1670 | } else { | 1675 | } else { |
| 1671 | rate = rates[ucontrol->value.integer.value[0] % 15]; | 1676 | rate = rates[ucontrol->value.integer.value[0] % 15]; |
| 1672 | if (rate <= get_max_rate(ice)) { | 1677 | if (rate <= get_max_rate(ice)) { |
diff --git a/sound/pci/ice1712/prodigy192.c b/sound/pci/ice1712/prodigy192.c index ae08a079a413..f03c02c07743 100644 --- a/sound/pci/ice1712/prodigy192.c +++ b/sound/pci/ice1712/prodigy192.c | |||
| @@ -26,6 +26,13 @@ | |||
| 26 | * CCLK (pin 34) -- GPIO9 pin 76 | 26 | * CCLK (pin 34) -- GPIO9 pin 76 |
| 27 | * CSN (pin 35) -- GPIO8 pin 75 | 27 | * CSN (pin 35) -- GPIO8 pin 75 |
| 28 | * - output data Mode 7 (24bit, I2S, slave) | 28 | * - output data Mode 7 (24bit, I2S, slave) |
| 29 | * - both MCKO1 and MCKO2 of ak4114 are fed to FPGA, which | ||
| 30 | * outputs master clock to SPMCLKIN of ice1724. | ||
| 31 | * Experimentally I found out that only a combination of | ||
| 32 | * OCKS0=1, OCKS1=1 (128fs, 64fs output) and ice1724 - | ||
| 33 | * VT1724_MT_I2S_MCLK_128X=0 (256fs input) yields correct | ||
| 34 | * sampling rate. That means the the FPGA doubles the | ||
| 35 | * MCK01 rate. | ||
| 29 | * | 36 | * |
| 30 | * Copyright (c) 2003 Takashi Iwai <tiwai@suse.de> | 37 | * Copyright (c) 2003 Takashi Iwai <tiwai@suse.de> |
| 31 | * Copyright (c) 2003 Dimitromanolakis Apostolos <apostol@cs.utoronto.ca> | 38 | * Copyright (c) 2003 Dimitromanolakis Apostolos <apostol@cs.utoronto.ca> |
| @@ -714,7 +721,10 @@ static int prodigy192_ak4114_init(struct snd_ice1712 *ice) | |||
| 714 | { | 721 | { |
| 715 | static const unsigned char ak4114_init_vals[] = { | 722 | static const unsigned char ak4114_init_vals[] = { |
| 716 | AK4114_RST | AK4114_PWN | AK4114_OCKS0 | AK4114_OCKS1, | 723 | AK4114_RST | AK4114_PWN | AK4114_OCKS0 | AK4114_OCKS1, |
| 717 | AK4114_DIF_I24I2S, /* ice1724 expects I2S and provides clock */ | 724 | /* ice1724 expects I2S and provides clock, |
| 725 | * DEM0 disables the deemphasis filter | ||
| 726 | */ | ||
| 727 | AK4114_DIF_I24I2S | AK4114_DEM0 , | ||
| 718 | AK4114_TX1E, | 728 | AK4114_TX1E, |
| 719 | AK4114_EFH_1024 | AK4114_DIT, /* default input RX0 */ | 729 | AK4114_EFH_1024 | AK4114_DIT, /* default input RX0 */ |
| 720 | 0, | 730 | 0, |
