diff options
Diffstat (limited to 'sound/pci/ice1712/ice1712.h')
-rw-r--r-- | sound/pci/ice1712/ice1712.h | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/sound/pci/ice1712/ice1712.h b/sound/pci/ice1712/ice1712.h index 303cffe08bd8..3208901c740e 100644 --- a/sound/pci/ice1712/ice1712.h +++ b/sound/pci/ice1712/ice1712.h | |||
@@ -367,6 +367,15 @@ struct snd_ice1712 { | |||
367 | 367 | ||
368 | /* other board-specific data */ | 368 | /* other board-specific data */ |
369 | void *spec; | 369 | void *spec; |
370 | |||
371 | /* VT172x specific */ | ||
372 | int pro_rate_default; | ||
373 | int (*is_spdif_master)(struct snd_ice1712 *ice); | ||
374 | unsigned int (*get_rate)(struct snd_ice1712 *ice); | ||
375 | void (*set_rate)(struct snd_ice1712 *ice, unsigned int rate); | ||
376 | unsigned char (*set_mclk)(struct snd_ice1712 *ice, unsigned int rate); | ||
377 | void (*set_spdif_clock)(struct snd_ice1712 *ice); | ||
378 | |||
370 | }; | 379 | }; |
371 | 380 | ||
372 | 381 | ||
@@ -429,10 +438,14 @@ int snd_ice1712_gpio_put(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_valu | |||
429 | static inline void snd_ice1712_gpio_write_bits(struct snd_ice1712 *ice, | 438 | static inline void snd_ice1712_gpio_write_bits(struct snd_ice1712 *ice, |
430 | unsigned int mask, unsigned int bits) | 439 | unsigned int mask, unsigned int bits) |
431 | { | 440 | { |
441 | unsigned val; | ||
442 | |||
432 | ice->gpio.direction |= mask; | 443 | ice->gpio.direction |= mask; |
433 | snd_ice1712_gpio_set_dir(ice, ice->gpio.direction); | 444 | snd_ice1712_gpio_set_dir(ice, ice->gpio.direction); |
434 | snd_ice1712_gpio_set_mask(ice, ~mask); | 445 | val = snd_ice1712_gpio_read(ice); |
435 | snd_ice1712_gpio_write(ice, mask & bits); | 446 | val &= ~mask; |
447 | val |= mask & bits; | ||
448 | snd_ice1712_gpio_write(ice, val); | ||
436 | } | 449 | } |
437 | 450 | ||
438 | static inline int snd_ice1712_gpio_read_bits(struct snd_ice1712 *ice, | 451 | static inline int snd_ice1712_gpio_read_bits(struct snd_ice1712 *ice, |