Hello developers. Here is a patch which enables to do audio input on this particular card even when not doing a soft reboot from windows. The problem with the current driver is that the PCA9554 is set to input mode for all IO pins after a cold reset. In order to set the pins to output mode register 3 of this chip has to be set.
As I don't know if there are any pins used as input I have set register 3 to 0x80, so the MSB is input. Hopefully my patch won't do any damage! Maybe someone can check the content of this register after a warm reboot from windows. I have a linux only machine. Keep on the good work. bye, Eduard. PS: Sorry if this email arrives twice, it didn't seem to come through the first time.
--- alsa/alsa-driver-0.9.4/sound/pci/ice1712/ews.c 2003-04-30 13:43:01.000000000 +0200 +++ alsa-driver-0.9.4/sound/pci/ice1712/ews.c 2003-06-22 13:13:55.000000000 +0200 @@ -389,6 +389,12 @@ * initialize the chip */ +#define PCF9554_REG_INPUT 0 +#define PCF9554_REG_OUTPUT 1 +#define PCF9554_REG_POLARITY 2 +#define PCF9554_REG_CONFIG 3 +static int snd_ice1712_6fire_write_pca(ice1712_t *ice, unsigned char reg, unsigned char data); + static int __devinit snd_ice1712_ews_init(ice1712_t *ice) { int err; @@ -425,6 +431,7 @@ snd_printk("PCF9554 initialization failed\n"); return err; } + snd_ice1712_6fire_write_pca(ice, PCF9554_REG_CONFIG, 0x80); break; case ICE1712_SUBDEVICE_EWS88MT: case ICE1712_SUBDEVICE_EWS88MT_NEW: @@ -750,11 +757,6 @@ * DMX 6Fire specific controls */ -#define PCF9554_REG_INPUT 0 -#define PCF9554_REG_OUTPUT 1 -#define PCF9554_REG_POLARITY 2 -#define PCF9554_REG_CONFIG 3 - static int snd_ice1712_6fire_read_pca(ice1712_t *ice, unsigned char reg) { unsigned char byte;