1 // SPDX-License-Identifier: GPL-2.0
3 * linux/arch/sh/kernel/adc.c -- SH3 on-chip ADC support
5 * Copyright (C) 2004 Andriy Skulysh <askulysh@image.kiev.ua>
8 #include <linux/module.h>
13 int adc_single(unsigned int channel
)
18 if (channel
>= 8) return -1;
20 off
= (channel
& 0x03) << 2;
22 csr
= __raw_readb(ADCSR
);
23 csr
= channel
| ADCSR_ADST
| ADCSR_CKS
;
24 __raw_writeb(csr
, ADCSR
);
27 csr
= __raw_readb(ADCSR
);
28 } while ((csr
& ADCSR_ADF
) == 0);
30 csr
&= ~(ADCSR_ADF
| ADCSR_ADST
);
31 __raw_writeb(csr
, ADCSR
);
33 return (((__raw_readb(ADDRAH
+ off
) << 8) |
34 __raw_readb(ADDRAL
+ off
)) >> 6);
37 EXPORT_SYMBOL(adc_single
);