static void __devinit snd_ice1712_stdsp24_box_midi(struct snd_ice1712 *ice, int box, int master) { mutex_lock(&ice->gpio_mutex); /* select box */ ICE1712_STDSP24_0_BOX(ice->spec.hoontech.boxbits, box); snd_ice1712_stdsp24_gpio_write(ice, ice->spec.hoontech.boxbits[0]); ICE1712_STDSP24_2_MIDIIN(ice->spec.hoontech.boxbits, 1); ICE1712_STDSP24_2_MIDI1(ice->spec.hoontech.boxbits, master); snd_ice1712_stdsp24_gpio_write(ice, ice->spec.hoontech.boxbits[2]); snd_ice1712_stdsp24_gpio_write(ice, ice->spec.hoontech.boxbits[3]); udelay(100); ICE1712_STDSP24_2_MIDIIN(ice->spec.hoontech.boxbits, 0); snd_ice1712_stdsp24_gpio_write(ice, ice->spec.hoontech.boxbits[2]); mdelay(10); ICE1712_STDSP24_2_MIDIIN(ice->spec.hoontech.boxbits, 1); snd_ice1712_stdsp24_gpio_write(ice, ice->spec.hoontech.boxbits[2]); mutex_unlock(&ice->gpio_mutex); }
static void __devinit snd_ice1712_stdsp24_box_midi(ice1712_t *ice, int box, int master, int slave) { down(&ice->gpio_mutex); /* select box */ ICE1712_STDSP24_0_BOX(ice->hoontech_boxbits, box); snd_ice1712_stdsp24_gpio_write(ice, ice->hoontech_boxbits[0]); 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]); udelay(100); ICE1712_STDSP24_2_MIDIIN(ice->hoontech_boxbits, 0); snd_ice1712_stdsp24_gpio_write(ice, ice->hoontech_boxbits[2]); udelay(100); ICE1712_STDSP24_2_MIDIIN(ice->hoontech_boxbits, 1); snd_ice1712_stdsp24_gpio_write(ice, ice->hoontech_boxbits[2]); udelay(100); /* MIDI2 is direct */ ICE1712_STDSP24_3_MIDI2(ice->hoontech_boxbits, slave); snd_ice1712_stdsp24_gpio_write(ice, ice->hoontech_boxbits[3]); up(&ice->gpio_mutex); }
static void __devinit snd_ice1712_stdsp24_box_channel(struct snd_ice1712 *ice, int box, int chn, int activate) { struct hoontech_spec *spec = ice->spec; mutex_lock(&ice->gpio_mutex); /* select box */ ICE1712_STDSP24_0_BOX(spec->boxbits, box); snd_ice1712_stdsp24_gpio_write(ice, spec->boxbits[0]); /* prepare for write */ if (chn == 3) ICE1712_STDSP24_2_CHN4(spec->boxbits, 0); ICE1712_STDSP24_2_MIDI1(spec->boxbits, activate); snd_ice1712_stdsp24_gpio_write(ice, spec->boxbits[2]); snd_ice1712_stdsp24_gpio_write(ice, spec->boxbits[3]); ICE1712_STDSP24_1_CHN1(spec->boxbits, 1); ICE1712_STDSP24_1_CHN2(spec->boxbits, 1); ICE1712_STDSP24_1_CHN3(spec->boxbits, 1); ICE1712_STDSP24_2_CHN4(spec->boxbits, 1); snd_ice1712_stdsp24_gpio_write(ice, spec->boxbits[1]); snd_ice1712_stdsp24_gpio_write(ice, spec->boxbits[2]); udelay(100); if (chn == 3) { ICE1712_STDSP24_2_CHN4(spec->boxbits, 0); snd_ice1712_stdsp24_gpio_write(ice, spec->boxbits[2]); } else { switch (chn) { case 0: ICE1712_STDSP24_1_CHN1(spec->boxbits, 0); break; case 1: ICE1712_STDSP24_1_CHN2(spec->boxbits, 0); break; case 2: ICE1712_STDSP24_1_CHN3(spec->boxbits, 0); break; } snd_ice1712_stdsp24_gpio_write(ice, spec->boxbits[1]); } udelay(100); ICE1712_STDSP24_1_CHN1(spec->boxbits, 1); ICE1712_STDSP24_1_CHN2(spec->boxbits, 1); ICE1712_STDSP24_1_CHN3(spec->boxbits, 1); ICE1712_STDSP24_2_CHN4(spec->boxbits, 1); snd_ice1712_stdsp24_gpio_write(ice, spec->boxbits[1]); snd_ice1712_stdsp24_gpio_write(ice, spec->boxbits[2]); udelay(100); ICE1712_STDSP24_2_MIDI1(spec->boxbits, 0); snd_ice1712_stdsp24_gpio_write(ice, spec->boxbits[2]); mutex_unlock(&ice->gpio_mutex); }
static void __devinit snd_ice1712_stdsp24_insel(struct snd_ice1712 *ice, int activate) { mutex_lock(&ice->gpio_mutex); ICE1712_STDSP24_3_INSEL(ice->spec.hoontech.boxbits, activate); snd_ice1712_stdsp24_gpio_write(ice, ice->spec.hoontech.boxbits[3]); mutex_unlock(&ice->gpio_mutex); }
static void __devinit snd_ice1712_stdsp24_darear(struct snd_ice1712 *ice, int activate) { mutex_lock(&ice->gpio_mutex); ICE1712_STDSP24_0_DAREAR(ice->spec.hoontech.boxbits, activate); snd_ice1712_stdsp24_gpio_write(ice, ice->spec.hoontech.boxbits[0]); mutex_unlock(&ice->gpio_mutex); }
static void __devinit snd_ice1712_stdsp24_insel(ice1712_t *ice, int activate) { down(&ice->gpio_mutex); ICE1712_STDSP24_3_INSEL(ice->spec.hoontech.boxbits, activate); snd_ice1712_stdsp24_gpio_write(ice, ice->spec.hoontech.boxbits[3]); up(&ice->gpio_mutex); }
static void __devinit snd_ice1712_stdsp24_darear(ice1712_t *ice, int activate) { down(&ice->gpio_mutex); ICE1712_STDSP24_0_DAREAR(ice->spec.hoontech.boxbits, activate); snd_ice1712_stdsp24_gpio_write(ice, ice->spec.hoontech.boxbits[0]); up(&ice->gpio_mutex); }
static void __devinit snd_ice1712_stdsp24_mute(ice1712_t *ice, int activate) { down(&ice->gpio_mutex); ICE1712_STDSP24_3_MUTE(ice->hoontech_boxbits, activate); snd_ice1712_stdsp24_gpio_write(ice, ice->hoontech_boxbits[3]); up(&ice->gpio_mutex); }
static void __devinit snd_ice1712_stdsp24_box_channel(ice1712_t *ice, int box, int chn, int activate) { down(&ice->gpio_mutex); /* select box */ ICE1712_STDSP24_0_BOX(ice->spec.hoontech.boxbits, box); snd_ice1712_stdsp24_gpio_write(ice, ice->spec.hoontech.boxbits[0]); /* prepare for write */ if (chn == 3) ICE1712_STDSP24_2_CHN4(ice->spec.hoontech.boxbits, 0); ICE1712_STDSP24_2_MIDI1(ice->spec.hoontech.boxbits, activate); snd_ice1712_stdsp24_gpio_write(ice, ice->spec.hoontech.boxbits[2]); snd_ice1712_stdsp24_gpio_write(ice, ice->spec.hoontech.boxbits[3]); ICE1712_STDSP24_1_CHN1(ice->spec.hoontech.boxbits, 1); ICE1712_STDSP24_1_CHN2(ice->spec.hoontech.boxbits, 1); ICE1712_STDSP24_1_CHN3(ice->spec.hoontech.boxbits, 1); ICE1712_STDSP24_2_CHN4(ice->spec.hoontech.boxbits, 1); snd_ice1712_stdsp24_gpio_write(ice, ice->spec.hoontech.boxbits[1]); snd_ice1712_stdsp24_gpio_write(ice, ice->spec.hoontech.boxbits[2]); udelay(100); if (chn == 3) { ICE1712_STDSP24_2_CHN4(ice->spec.hoontech.boxbits, 0); snd_ice1712_stdsp24_gpio_write(ice, ice->spec.hoontech.boxbits[2]); } else { switch (chn) { case 0: ICE1712_STDSP24_1_CHN1(ice->spec.hoontech.boxbits, 0); break; case 1: ICE1712_STDSP24_1_CHN2(ice->spec.hoontech.boxbits, 0); break; case 2: ICE1712_STDSP24_1_CHN3(ice->spec.hoontech.boxbits, 0); break; } snd_ice1712_stdsp24_gpio_write(ice, ice->spec.hoontech.boxbits[1]); } udelay(100); ICE1712_STDSP24_1_CHN1(ice->spec.hoontech.boxbits, 1); ICE1712_STDSP24_1_CHN2(ice->spec.hoontech.boxbits, 1); ICE1712_STDSP24_1_CHN3(ice->spec.hoontech.boxbits, 1); ICE1712_STDSP24_2_CHN4(ice->spec.hoontech.boxbits, 1); snd_ice1712_stdsp24_gpio_write(ice, ice->spec.hoontech.boxbits[1]); snd_ice1712_stdsp24_gpio_write(ice, ice->spec.hoontech.boxbits[2]); udelay(100); ICE1712_STDSP24_2_MIDI1(ice->spec.hoontech.boxbits, 0); snd_ice1712_stdsp24_gpio_write(ice, ice->spec.hoontech.boxbits[2]); up(&ice->gpio_mutex); }
static void __devinit snd_ice1712_stdsp24_mute(struct snd_ice1712 *ice, int activate) { struct hoontech_spec *spec = ice->spec; mutex_lock(&ice->gpio_mutex); ICE1712_STDSP24_3_MUTE(spec->boxbits, activate); snd_ice1712_stdsp24_gpio_write(ice, spec->boxbits[3]); mutex_unlock(&ice->gpio_mutex); }