2 * linux/arch/sh/kernel/adc.c -- SH3 on-chip ADC support
4 * Copyright (C) 2004 Andriy Skulysh <askulysh@image.kiev.ua>
7 #include <linux/module.h>
12 int adc_single(unsigned int channel
)
17 if (channel
>= 8) return -1;
19 off
= (channel
& 0x03) << 2;
21 csr
= __raw_readb(ADCSR
);
22 csr
= channel
| ADCSR_ADST
| ADCSR_CKS
;
23 __raw_writeb(csr
, ADCSR
);
26 csr
= __raw_readb(ADCSR
);
27 } while ((csr
& ADCSR_ADF
) == 0);
29 csr
&= ~(ADCSR_ADF
| ADCSR_ADST
);
30 __raw_writeb(csr
, ADCSR
);
32 return (((__raw_readb(ADDRAH
+ off
) << 8) |
33 __raw_readb(ADDRAL
+ off
)) >> 6);
36 EXPORT_SYMBOL(adc_single
);