ice1712: Add support for Philips PSC724 Ultimate Edge
PATCH 1/1 ice1712: Add support for Philips PSC724 Ultimate Edge
Hello,
I'm trying do implement support for Philips PSC724 Ultimate Edge card, which is based on VT1722 + WM8776 + WM8766 chips. I've examined the connections and commented them in the code. The patch is heavily based on se.c.
When trying to play a sound, the player runs but no sound comes from the output, no matter what I do with alsamixer.
The interesting thing is that recording works - I can record something from e.g. line-in and play it on another machine. Recording source selection in alsamixer works too (if line-in is deselected, only silence is recorded). So WM8776 I2C control works.
I'm missing something but don't know what. Any ideas?
sound/pci/ice1712/Makefile +0 -1
@@ -5,7 +5,7 @@ snd-ice17xx-ak4xxx-objs := ak4xxx.o snd-ice1712-objs := ice1712.o delta.o hoontech.o ews.o -snd-ice1724-objs := ice1724.o amp.o revo.o aureon.o vt1720_mobo.o pontis.o prodigy192.o prodigy_hifi.o juli.o phase.o wtm.o se.o maya44.o
quartet.o
+snd-ice1724-objs := ice1724.o amp.o revo.o aureon.o vt1720_mobo.o pontis.o prodigy192.o prodigy_hifi.o juli.o phase.o wtm.o se.o maya44.o quartet.o psc724.o
# Toplevel Module Dependency obj-$(CONFIG_SND_ICE1712) += snd-ice1712.o snd-ice17xx-ak4xxx.o
sound/pci/ice1712/ice1724.c +3 -1
@@ -54,6 +54,7 @@#include "wtm.h" #include "se.h" #include "quartet.h" +#include "psc724.h" MODULE_AUTHOR ("Jaroslav Kysela <[email protected]>" );MODULE_DESCRIPTION ("VIA ICEnsemble ICE1724/1720 (Envy24HT/PT)" );
@@ -2234,6 +2235,7 @@ static struct snd_ice1712_card_info *card_tables[] __devinitdata = { snd_vt1724_se_cards, snd_vt1724_qtet_cards, snd_vt1724_ooaoo_cards, + snd_vt1724_psc724_cards, NULL, };
@@ -2348,7 +2350,7 @@ static int __devinit snd_vt1724_read_eeprom(struct snd_ice1712 *ice,return -EIO ; } ice->eeprom.version =snd_vt1724_read_i2c (ice, dev,0x05 ); -if (ice->eeprom.version !=2 ) +if (ice->eeprom.version !=1 && ice->eeprom.version !=2 )printk (KERN_WARNING "ice1724: Invalid EEPROM version %i\n" , ice->eeprom.version); size = ice->eeprom.size -6 ;
sound/pci/ice1712/psc724.c new file +664 -0
664 lines not on this page · raw message
sound/pci/ice1712/psc724.h new file +13 -0
@@ -0,0 +1,13 @@ +#ifndef __SOUND_PSC724_H +#define __SOUND_PSC724_H + +/* ID */ +#define PSC724_DEVICE_DESC \ + "{Philips,PSC724 Ultimate Edge}," + +#define VT1724_SUBDEVICE_PSC724 0xab170619 + +/* entry struct */ +extern struct snd_ice1712_card_info snd_vt1724_psc724_cards[]; + +#endif /* __SOUND_PSC724_H */
Signature · 1 line
Ondrej Zary
Dne 13.3.2012 21:59, Ondrej Zary napsal(a):
Quoted 8 lines
Hello,
I'm trying do implement support for Philips PSC724 Ultimate Edge card, which is based on VT1722 + WM8776 + WM8766 chips. I've examined the connections and commented them in the code. The patch is heavily based onse.c.When trying to play a sound, the player runs but no sound comes from the output, no matter what I do with alsamixer.
Quoted 7 lines
The interesting thing is that recording works - I can record something from e.g. line-in and play it on another machine. Recording source selection in alsamixer works too (if line-in is deselected, only silence is recorded). So WM8776 I2C control works.
I'm missing something but don't know what. Any ideas?
I always found that a simple proc interface listing all register values of the chips onboard greatly helped with troubleshooting. E.g.
http://git.alsa-project.org/?p=alsa-kmirror.git;a=blob;f=i2c/other/ak4xxx-adda.c;h=cef813d23641afcd39b56a57c5fc8058cb99bfb0;hb=HEAD#l879
Regards,
Pavel.
Quoted 5 lines · Pavel Hofman
I always found that a simple proc interface listing all register values of the chips onboard greatly helped with troubleshooting. E.g.
http://git.alsa-project.org/?p=alsa-kmirror.git;a=blob;f=i2c/other/ak4xxx-adda.c;h=cef813d23641afcd39b56a57c5fc8058cb99bfb0;hb=HEAD#l879
If you use regmap for your register I/O you get this for free (plus some other infrastructure stuff).
Dne 13.3.2012 22:33, Mark Brown napsal(a):
Quoted 10 lines · Pavel Hofman
Quoted 6 lines
I always found that a simple proc interface listing all register values of the chips onboard greatly helped with troubleshooting. E.g.
http://git.alsa-project.org/?p=alsa-kmirror.git;a=blob;f=i2c/other/ak4xxx-adda.c;h=cef813d23641afcd39b56a57c5fc8058cb99bfb0;hb=HEAD#l879If you use regmap for your register I/O you get this for free (plus some other infrastructure stuff).
Mark, thanks for the information. I searched sound-2.6 tree and found the only reference to linux/regmap.h in soc-io.c. Please could you point me to a place where it is used in alsa source code so that I could take it as an example? I have no problem with using the latest kernel infrastructure helpers but there are just too many of them.
Thanks a lot,
Pavel.
Quoted 5 lines · Pavel Hofman
Mark, thanks for the information. I searched sound-2.6 tree and found the only reference to
linux/regmap.hinsoc-io.c. Please could you point me to a place where it is used in alsa source code so that I could take it as an example? I have no problem with using the latest kernel infrastructure helpers but there are just too many of them.
You've already found an example, what problems are you having with that example? There's also other examples in the kernel, especially in more recent kernels.
Quoted 9 lines · On Tuesday 13 March 2012 21:59:16 Ondrej Zary wrote:
Hello,
I'm trying do implement support for Philips PSC724 Ultimate Edge card, which is based on VT1722 + WM8776 + WM8766 chips. I've examined the connections and commented them in the code. The patch is heavily based onse.c.When trying to play a sound, the player runs but no sound comes from the output, no matter what I do with alsamixer.
Quoted 6 lines
The interesting thing is that recording works - I can record something from e.g. line-in and play it on another machine. Recording source selection in alsamixer works too (if line-in is deselected, only silence is recorded). So WM8776 I2C control works.
I'm missing something but don't know what. Any ideas?
I've missed a mute-all circuit (which grounds all outputs) controlled by GPIO22. Now the driver works - front, rear and center/lfe outputs. TODO:
- support headphone output
- move WM8776 and WM8766 code out
sound/pci/ice1712/Makefile +1 -1
@@ -5,7 +5,7 @@ snd-ice17xx-ak4xxx-objs := ak4xxx.o snd-ice1712-objs := ice1712.o delta.o hoontech.o ews.o -snd-ice1724-objs := ice1724.o amp.o revo.o aureon.o vt1720_mobo.o pontis.o prodigy192.o prodigy_hifi.o juli.o phase.o wtm.o se.o maya44.o quartet.o +snd-ice1724-objs := ice1724.o amp.o revo.o aureon.o vt1720_mobo.o pontis.o prodigy192.o prodigy_hifi.o juli.o phase.o wtm.o se.o maya44.o quartet.o psc724.o # Toplevel Module Dependency obj-$(CONFIG_SND_ICE1712) += snd-ice1712.o snd-ice17xx-ak4xxx.o
sound/pci/ice1712/ice1724.c +3 -1
@@ -54,6 +54,7 @@#include "wtm.h" #include "se.h" #include "quartet.h" +#include "psc724.h" MODULE_AUTHOR ("Jaroslav Kysela <[email protected]>" );MODULE_DESCRIPTION ("VIA ICEnsemble ICE1724/1720 (Envy24HT/PT)" );
@@ -2234,6 +2235,7 @@ static struct snd_ice1712_card_info *card_tables[] __devinitdata = { snd_vt1724_se_cards, snd_vt1724_qtet_cards, snd_vt1724_ooaoo_cards, + snd_vt1724_psc724_cards, NULL, };
@@ -2348,7 +2350,7 @@ static int __devinit snd_vt1724_read_eeprom(struct snd_ice1712 *ice,return -EIO ; } ice->eeprom.version =snd_vt1724_read_i2c (ice, dev,0x05 ); -if (ice->eeprom.version !=2 ) +if (ice->eeprom.version !=1 && ice->eeprom.version !=2 )printk (KERN_WARNING "ice1724: Invalid EEPROM version %i\n" , ice->eeprom.version); size = ice->eeprom.size -6 ;
sound/pci/ice1712/psc724.c new file +688 -0
688 lines not on this page · raw message
sound/pci/ice1712/psc724.h new file +13 -0
@@ -0,0 +1,13 @@ +#ifndef __SOUND_PSC724_H +#define __SOUND_PSC724_H + +/* ID */ +#define PSC724_DEVICE_DESC \ + "{Philips,PSC724 Ultimate Edge}," + +#define VT1724_SUBDEVICE_PSC724 0xab170619 + +/* entry struct */ +extern struct snd_ice1712_card_info snd_vt1724_psc724_cards[]; + +#endif /* __SOUND_PSC724_H */
Signature · 1 line
Ondrej Zary
Quoted 15 lines · On Wednesday 21 March 2012 00:03:42 Ondrej Zary wrote:
Quoted 14 lines · On Tuesday 13 March 2012 21:59:16 Ondrej Zary wrote:
Hello,
I'm trying do implement support for Philips PSC724 Ultimate Edge card, which is based on VT1722 + WM8776 + WM8766 chips. I've examined the connections and commented them in the code. The patch is heavily based onse.c.When trying to play a sound, the player runs but no sound comes from the output, no matter what I do with alsamixer.
The interesting thing is that recording works - I can record something from e.g. line-in and play it on another machine. Recording source selection in alsamixer works too (if line-in is deselected, only silence is recorded). So WM8776 I2C control works.
Quoted 8 lines
Quoted 1 line
I'm missing something but don't know what. Any ideas?
I've missed a mute-all circuit (which grounds all outputs) controlled by GPIO22. Now the driver works - front, rear and center/lfe outputs. TODO:
- support headphone output
- move WM8776 and WM8766 code out
New version again, this time with headphone output support. Including (simple and broken) headphone jack detection (using GPIO14).
sound/pci/ice1712/Makefile +1 -1
@@ -5,7 +5,7 @@ snd-ice17xx-ak4xxx-objs := ak4xxx.o snd-ice1712-objs := ice1712.o delta.o hoontech.o ews.o -snd-ice1724-objs := ice1724.o amp.o revo.o aureon.o vt1720_mobo.o pontis.o prodigy192.o prodigy_hifi.o juli.o phase.o wtm.o se.o maya44.o quartet.o +snd-ice1724-objs := ice1724.o amp.o revo.o aureon.o vt1720_mobo.o pontis.o prodigy192.o prodigy_hifi.o juli.o phase.o wtm.o se.o maya44.o quartet.o psc724.o # Toplevel Module Dependency obj-$(CONFIG_SND_ICE1712) += snd-ice1712.o snd-ice17xx-ak4xxx.o
sound/pci/ice1712/ice1724.c +3 -1
@@ -54,6 +54,7 @@#include "wtm.h" #include "se.h" #include "quartet.h" +#include "psc724.h" MODULE_AUTHOR ("Jaroslav Kysela <[email protected]>" );MODULE_DESCRIPTION ("VIA ICEnsemble ICE1724/1720 (Envy24HT/PT)" );
@@ -2234,6 +2235,7 @@ static struct snd_ice1712_card_info *card_tables[] __devinitdata = { snd_vt1724_se_cards, snd_vt1724_qtet_cards, snd_vt1724_ooaoo_cards, + snd_vt1724_psc724_cards, NULL, };
@@ -2348,7 +2350,7 @@ static int __devinit snd_vt1724_read_eeprom(struct snd_ice1712 *ice,return -EIO ; } ice->eeprom.version =snd_vt1724_read_i2c (ice, dev,0x05 ); -if (ice->eeprom.version !=2 ) +if (ice->eeprom.version !=1 && ice->eeprom.version !=2 )printk (KERN_WARNING "ice1724: Invalid EEPROM version %i\n" , ice->eeprom.version); size = ice->eeprom.size -6 ;
sound/pci/ice1712/psc724.c new file +755 -0
755 lines not on this page · raw message
sound/pci/ice1712/psc724.h new file +13 -0
@@ -0,0 +1,13 @@ +#ifndef __SOUND_PSC724_H +#define __SOUND_PSC724_H + +/* ID */ +#define PSC724_DEVICE_DESC \ + "{Philips,PSC724 Ultimate Edge}," + +#define VT1724_SUBDEVICE_PSC724 0xab170619 + +/* entry struct */ +extern struct snd_ice1712_card_info snd_vt1724_psc724_cards[]; + +#endif /* __SOUND_PSC724_H */
Signature · 1 line
Ondrej Zary