]> err.no Git - linux-2.6/blobdiff - sound/pci/ice1712/ice1712.h
Merge branches 'at91', 'dyntick', 'ep93xx', 'iop', 'ixp', 'misc', 'orion', 'omap...
[linux-2.6] / sound / pci / ice1712 / ice1712.h
index 303cffe08bd8a7abba006a95f3deb3124d92cf3b..3208901c740e075166f95bc1b8d51406ab88ba56 100644 (file)
@@ -367,6 +367,15 @@ struct snd_ice1712 {
 
        /* other board-specific data */
        void *spec;
+
+       /* VT172x specific */
+       int pro_rate_default;
+       int (*is_spdif_master)(struct snd_ice1712 *ice);
+       unsigned int (*get_rate)(struct snd_ice1712 *ice);
+       void (*set_rate)(struct snd_ice1712 *ice, unsigned int rate);
+       unsigned char (*set_mclk)(struct snd_ice1712 *ice, unsigned int rate);
+       void (*set_spdif_clock)(struct snd_ice1712 *ice);
+
 };
 
 
@@ -429,10 +438,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,