root/arch/sh/kernel/cpu/adc.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. adc_single

   1 // SPDX-License-Identifier: GPL-2.0
   2 /*
   3  * linux/arch/sh/kernel/adc.c -- SH3 on-chip ADC support
   4  *
   5  *  Copyright (C) 2004  Andriy Skulysh <askulysh@image.kiev.ua>
   6  */
   7 
   8 #include <linux/module.h>
   9 #include <asm/adc.h>
  10 #include <asm/io.h>
  11 
  12 
  13 int adc_single(unsigned int channel)
  14 {
  15         int off;
  16         unsigned char csr;
  17 
  18         if (channel >= 8) return -1;
  19 
  20         off = (channel & 0x03) << 2;
  21 
  22         csr = __raw_readb(ADCSR);
  23         csr = channel | ADCSR_ADST | ADCSR_CKS;
  24         __raw_writeb(csr, ADCSR);
  25 
  26         do {
  27                 csr = __raw_readb(ADCSR);
  28         } while ((csr & ADCSR_ADF) == 0);
  29 
  30         csr &= ~(ADCSR_ADF | ADCSR_ADST);
  31         __raw_writeb(csr, ADCSR);
  32 
  33         return (((__raw_readb(ADDRAH + off) << 8) |
  34                 __raw_readb(ADDRAL + off)) >> 6);
  35 }
  36 
  37 EXPORT_SYMBOL(adc_single);

/* [<][>][^][v][top][bottom][index][help] */