]> err.no Git - linux-2.6/blobdiff - sound/pci/ice1712/ice1712.h
Merge branch 'tracing/for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git...
[linux-2.6] / sound / pci / ice1712 / ice1712.h
index a3bea2247c7f7d0adaebbe7972833c7fd00c3ed4..762fbd7a750710dec0ede3ee426f20cc70668b2f 100644 (file)
@@ -333,6 +333,8 @@ struct snd_ice1712 {
        unsigned int has_spdif: 1;      /* VT1720/4 - has SPDIF I/O */
        unsigned int force_pdma4: 1;    /* VT1720/4 - PDMA4 as non-spdif */
        unsigned int force_rdma1: 1;    /* VT1720/4 - RDMA1 as non-spdif */
+       unsigned int midi_output: 1;    /* VT1720/4: MIDI output triggered */
+       unsigned int midi_input: 1;     /* VT1720/4: MIDI input triggered */
        unsigned int num_total_dacs;    /* total DACs */
        unsigned int num_total_adcs;    /* total ADCs */
        unsigned int cur_rate;          /* current rate */
@@ -438,10 +440,14 @@ int snd_ice1712_gpio_put(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_valu
 static inline void snd_ice1712_gpio_write_bits(struct snd_ice1712 *ice,
                                               unsigned int mask, unsigned int bits)
 {
+       unsigned val;
+
        ice->gpio.direction |= mask;
        snd_ice1712_gpio_set_dir(ice, ice->gpio.direction);
-       snd_ice1712_gpio_set_mask(ice, ~mask);
-       snd_ice1712_gpio_write(ice, mask & bits);
+       val = snd_ice1712_gpio_read(ice);
+       val &= ~mask;
+       val |= mask & bits;
+       snd_ice1712_gpio_write(ice, val);
 }
 
 static inline int snd_ice1712_gpio_read_bits(struct snd_ice1712 *ice,