|
@@ -317,7 +317,6 @@ static void snd_ice1712_set_gpio_data(struct snd_ice1712 *ice, unsigned int val)
|
|
inb(ICEREG(ice, DATA)); /* dummy read for pci-posting */
|
|
inb(ICEREG(ice, DATA)); /* dummy read for pci-posting */
|
|
}
|
|
}
|
|
|
|
|
|
-
|
|
|
|
/*
|
|
/*
|
|
*
|
|
*
|
|
* CS8427 interface
|
|
* CS8427 interface
|
|
@@ -397,6 +396,20 @@ int __devinit snd_ice1712_init_cs8427(struct snd_ice1712 *ice, int addr)
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+static void snd_ice1712_set_input_clock_source(struct snd_ice1712 *ice, int spdif_is_master)
|
|
|
|
+{
|
|
|
|
+ /* change CS8427 clock source too */
|
|
|
|
+ if (ice->cs8427)
|
|
|
|
+ snd_ice1712_cs8427_set_input_clock(ice, spdif_is_master);
|
|
|
|
+ /* notify ak4524 chip as well */
|
|
|
|
+ if (spdif_is_master) {
|
|
|
|
+ unsigned int i;
|
|
|
|
+ for (i = 0; i < ice->akm_codecs; i++) {
|
|
|
|
+ if (ice->akm[i].ops.set_rate_val)
|
|
|
|
+ ice->akm[i].ops.set_rate_val(&ice->akm[i], 0);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
|
|
/*
|
|
/*
|
|
* Interrupt handler
|
|
* Interrupt handler
|
|
@@ -1857,20 +1870,8 @@ static int snd_ice1712_pro_internal_clock_put(struct snd_kcontrol *kcontrol,
|
|
spin_unlock_irq(&ice->reg_lock);
|
|
spin_unlock_irq(&ice->reg_lock);
|
|
|
|
|
|
if ((oval & ICE1712_SPDIF_MASTER) !=
|
|
if ((oval & ICE1712_SPDIF_MASTER) !=
|
|
- (inb(ICEMT(ice, RATE)) & ICE1712_SPDIF_MASTER)) {
|
|
|
|
- /* change CS8427 clock source too */
|
|
|
|
- if (ice->cs8427) {
|
|
|
|
- snd_ice1712_cs8427_set_input_clock(ice, is_spdif_master(ice));
|
|
|
|
- }
|
|
|
|
- /* notify ak4524 chip as well */
|
|
|
|
- if (is_spdif_master(ice)) {
|
|
|
|
- unsigned int i;
|
|
|
|
- for (i = 0; i < ice->akm_codecs; i++) {
|
|
|
|
- if (ice->akm[i].ops.set_rate_val)
|
|
|
|
- ice->akm[i].ops.set_rate_val(&ice->akm[i], 0);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
|
|
+ (inb(ICEMT(ice, RATE)) & ICE1712_SPDIF_MASTER))
|
|
|
|
+ snd_ice1712_set_input_clock_source(ice, is_spdif_master(ice));
|
|
|
|
|
|
return change;
|
|
return change;
|
|
}
|
|
}
|
|
@@ -2736,6 +2737,8 @@ static int __devinit snd_ice1712_probe(struct pci_dev *pci,
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ snd_ice1712_set_input_clock_source(ice, 0);
|
|
|
|
+
|
|
sprintf(card->longname, "%s at 0x%lx, irq %i",
|
|
sprintf(card->longname, "%s at 0x%lx, irq %i",
|
|
card->shortname, ice->port, ice->irq);
|
|
card->shortname, ice->port, ice->irq);
|
|
|
|
|