diff options
author | Jaroslav Kysela <perex@suse.cz> | 2004-05-17 19:23:52 +0200 |
---|---|---|
committer | Jaroslav Kysela <perex@suse.cz> | 2004-05-17 19:23:52 +0200 |
commit | 2979867e25d0419b4b84e1ad1a2884751b2e5068 (patch) | |
tree | 9c672b9961caa063ef8fcab2f030934394b58fee /sound | |
parent | d9acfcc9e99c55bec0d7c828c21aef1e56888b60 (diff) | |
download | history-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.c | 21 |
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; |