aboutsummaryrefslogtreecommitdiffstats
path: root/sound
diff options
context:
space:
mode:
authorJaroslav Kysela <perex@suse.cz>2004-05-17 19:23:52 +0200
committerJaroslav Kysela <perex@suse.cz>2004-05-17 19:23:52 +0200
commit2979867e25d0419b4b84e1ad1a2884751b2e5068 (patch)
tree9c672b9961caa063ef8fcab2f030934394b58fee /sound
parentd9acfcc9e99c55bec0d7c828c21aef1e56888b60 (diff)
downloadhistory-2979867e25d0419b4b84e1ad1a2884751b2e5068.tar.gz
ALSA CVS update - Clemens Ladisch <clemens@ladisch.de>
ICE1712 driver fix Hoontech DSP* box configuration
Diffstat (limited to 'sound')
-rw-r--r--sound/pci/ice1712/hoontech.c21
1 files changed, 13 insertions, 8 deletions
diff --git a/sound/pci/ice1712/hoontech.c b/sound/pci/ice1712/hoontech.c
index 16f323f6a5cf76..074121fb375a3f 100644
--- a/sound/pci/ice1712/hoontech.c
+++ b/sound/pci/ice1712/hoontech.c
@@ -83,6 +83,7 @@ static void __devinit snd_ice1712_stdsp24_box_channel(ice1712_t *ice, int box, i
ICE1712_STDSP24_2_CHN4(ice->hoontech_boxbits, 0);
ICE1712_STDSP24_2_MIDI1(ice->hoontech_boxbits, activate);
snd_ice1712_stdsp24_gpio_write(ice, ice->hoontech_boxbits[2]);
+ snd_ice1712_stdsp24_gpio_write(ice, ice->hoontech_boxbits[3]);
ICE1712_STDSP24_1_CHN1(ice->hoontech_boxbits, 1);
ICE1712_STDSP24_1_CHN2(ice->hoontech_boxbits, 1);
@@ -117,7 +118,7 @@ static void __devinit snd_ice1712_stdsp24_box_channel(ice1712_t *ice, int box, i
up(&ice->gpio_mutex);
}
-static void __devinit snd_ice1712_stdsp24_box_midi(ice1712_t *ice, int box, int master, int slave)
+static void __devinit snd_ice1712_stdsp24_box_midi(ice1712_t *ice, int box, int master)
{
down(&ice->gpio_mutex);
@@ -128,23 +129,26 @@ static void __devinit snd_ice1712_stdsp24_box_midi(ice1712_t *ice, int box, int
ICE1712_STDSP24_2_MIDIIN(ice->hoontech_boxbits, 1);
ICE1712_STDSP24_2_MIDI1(ice->hoontech_boxbits, master);
snd_ice1712_stdsp24_gpio_write(ice, ice->hoontech_boxbits[2]);
+ snd_ice1712_stdsp24_gpio_write(ice, ice->hoontech_boxbits[3]);
udelay(100);
ICE1712_STDSP24_2_MIDIIN(ice->hoontech_boxbits, 0);
snd_ice1712_stdsp24_gpio_write(ice, ice->hoontech_boxbits[2]);
- udelay(100);
+ mdelay(10);
ICE1712_STDSP24_2_MIDIIN(ice->hoontech_boxbits, 1);
snd_ice1712_stdsp24_gpio_write(ice, ice->hoontech_boxbits[2]);
- udelay(100);
+ up(&ice->gpio_mutex);
+}
- /* MIDI2 is direct */
- ICE1712_STDSP24_3_MIDI2(ice->hoontech_boxbits, slave);
+static void __devinit snd_ice1712_stdsp24_midi2(ice1712_t *ice, int activate)
+{
+ down(&ice->gpio_mutex);
+ ICE1712_STDSP24_3_MIDI2(ice->hoontech_boxbits, activate);
snd_ice1712_stdsp24_gpio_write(ice, ice->hoontech_boxbits[3]);
-
up(&ice->gpio_mutex);
}
@@ -218,8 +222,9 @@ static int __devinit snd_ice1712_hoontech_init(ice1712_t *ice)
for (chn = 0; chn < 4; chn++)
snd_ice1712_stdsp24_box_channel(ice, box, chn, (ice->hoontech_boxconfig[box] & (1 << chn)) ? 1 : 0);
snd_ice1712_stdsp24_box_midi(ice, box,
- (ice->hoontech_boxconfig[box] & ICE1712_STDSP24_BOX_MIDI1) ? 1 : 0,
- (ice->hoontech_boxconfig[box] & ICE1712_STDSP24_BOX_MIDI2) ? 1 : 0);
+ (ice->hoontech_boxconfig[box] & ICE1712_STDSP24_BOX_MIDI1) ? 1 : 0);
+ if (ice->hoontech_boxconfig[box] & ICE1712_STDSP24_BOX_MIDI2)
+ snd_ice1712_stdsp24_midi2(ice, 1);
}
return 0;