diff options
Diffstat (limited to 'drivers/mfd')
| -rw-r--r-- | drivers/mfd/ucb1400_core.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/drivers/mfd/ucb1400_core.c b/drivers/mfd/ucb1400_core.c index 178159e264ce..78c2135c5de6 100644 --- a/drivers/mfd/ucb1400_core.c +++ b/drivers/mfd/ucb1400_core.c | |||
| @@ -23,6 +23,26 @@ | |||
| 23 | #include <linux/module.h> | 23 | #include <linux/module.h> |
| 24 | #include <linux/ucb1400.h> | 24 | #include <linux/ucb1400.h> |
| 25 | 25 | ||
| 26 | unsigned int ucb1400_adc_read(struct snd_ac97 *ac97, u16 adc_channel, | ||
| 27 | int adcsync) | ||
| 28 | { | ||
| 29 | unsigned int val; | ||
| 30 | |||
| 31 | if (adcsync) | ||
| 32 | adc_channel |= UCB_ADC_SYNC_ENA; | ||
| 33 | |||
| 34 | ucb1400_reg_write(ac97, UCB_ADC_CR, UCB_ADC_ENA | adc_channel); | ||
| 35 | ucb1400_reg_write(ac97, UCB_ADC_CR, UCB_ADC_ENA | adc_channel | | ||
| 36 | UCB_ADC_START); | ||
| 37 | |||
| 38 | while (!((val = ucb1400_reg_read(ac97, UCB_ADC_DATA)) | ||
| 39 | & UCB_ADC_DAT_VALID)) | ||
| 40 | schedule_timeout_uninterruptible(1); | ||
| 41 | |||
| 42 | return val & UCB_ADC_DAT_MASK; | ||
| 43 | } | ||
| 44 | EXPORT_SYMBOL_GPL(ucb1400_adc_read); | ||
| 45 | |||
| 26 | static int ucb1400_core_probe(struct device *dev) | 46 | static int ucb1400_core_probe(struct device *dev) |
| 27 | { | 47 | { |
| 28 | int err; | 48 | int err; |
