| Andrew Victor | ce813b9 | 2007-05-02 17:08:13 +0100 | [diff] [blame] | 1 | /* | 
|  | 2 | * include/asm-arm/arch-at91/at91_adc.h | 
|  | 3 | * | 
|  | 4 | * Copyright (C) SAN People | 
|  | 5 | * | 
|  | 6 | * Analog-to-Digital Converter (ADC) registers. | 
|  | 7 | * Based on AT91SAM9260 datasheet revision D. | 
|  | 8 | * | 
|  | 9 | * This program is free software; you can redistribute it and/or modify | 
|  | 10 | * it under the terms of the GNU General Public License as published by | 
|  | 11 | * the Free Software Foundation; either version 2 of the License, or | 
|  | 12 | * (at your option) any later version. | 
|  | 13 | */ | 
|  | 14 |  | 
|  | 15 | #ifndef AT91_ADC_H | 
|  | 16 | #define AT91_ADC_H | 
|  | 17 |  | 
|  | 18 | #define AT91_ADC_CR		0x00		/* Control Register */ | 
|  | 19 | #define		AT91_ADC_SWRST		(1 << 0)	/* Software Reset */ | 
|  | 20 | #define		AT91_ADC_START		(1 << 1)	/* Start Conversion */ | 
|  | 21 |  | 
|  | 22 | #define AT91_ADC_MR		0x04		/* Mode Register */ | 
|  | 23 | #define		AT91_ADC_TRGEN		(1 << 0)	/* Trigger Enable */ | 
|  | 24 | #define		AT91_ADC_TRGSEL		(7 << 1)	/* Trigger Selection */ | 
|  | 25 | #define			AT91_ADC_TRGSEL_TC0		(0 << 1) | 
|  | 26 | #define			AT91_ADC_TRGSEL_TC1		(1 << 1) | 
|  | 27 | #define			AT91_ADC_TRGSEL_TC2		(2 << 1) | 
|  | 28 | #define			AT91_ADC_TRGSEL_EXTERNAL	(6 << 1) | 
|  | 29 | #define		AT91_ADC_LOWRES		(1 << 4)	/* Low Resolution */ | 
|  | 30 | #define		AT91_ADC_SLEEP		(1 << 5)	/* Sleep Mode */ | 
|  | 31 | #define		AT91_ADC_PRESCAL	(0x3f << 8)	/* Prescalar Rate Selection */ | 
|  | 32 | #define			AT91_ADC_PRESCAL_(x)	((x) << 8) | 
|  | 33 | #define		AT91_ADC_STARTUP	(0x1f << 16)	/* Startup Up Time */ | 
|  | 34 | #define			AT91_ADC_STARTUP_(x)	((x) << 16) | 
|  | 35 | #define		AT91_ADC_SHTIM		(0xf  << 24)	/* Sample & Hold Time */ | 
|  | 36 | #define			AT91_ADC_SHTIM_(x)	((x) << 24) | 
|  | 37 |  | 
|  | 38 | #define AT91_ADC_CHER		0x10		/* Channel Enable Register */ | 
|  | 39 | #define AT91_ADC_CHDR		0x14		/* Channel Disable Register */ | 
|  | 40 | #define AT91_ADC_CHSR		0x18		/* Channel Status Register */ | 
|  | 41 | #define		AT91_ADC_CH(n)		(1 << (n))	/* Channel Number */ | 
|  | 42 |  | 
|  | 43 | #define AT91_ADC_SR		0x1C		/* Status Register */ | 
|  | 44 | #define		AT91_ADC_EOC(n)		(1 << (n))	/* End of Conversion on Channel N */ | 
|  | 45 | #define		AT91_ADC_OVRE(n)	(1 << ((n) + 8))/* Overrun Error on Channel N */ | 
|  | 46 | #define		AT91_ADC_DRDY		(1 << 16)	/* Data Ready */ | 
|  | 47 | #define		AT91_ADC_GOVRE		(1 << 17)	/* General Overrun Error */ | 
|  | 48 | #define		AT91_ADC_ENDRX		(1 << 18)	/* End of RX Buffer */ | 
|  | 49 | #define		AT91_ADC_RXFUFF		(1 << 19)	/* RX Buffer Full */ | 
|  | 50 |  | 
|  | 51 | #define AT91_ADC_LCDR		0x20		/* Last Converted Data Register */ | 
|  | 52 | #define		AT91_ADC_LDATA		(0x3ff) | 
|  | 53 |  | 
|  | 54 | #define AT91_ADC_IER		0x24		/* Interrupt Enable Register */ | 
|  | 55 | #define AT91_ADC_IDR		0x28		/* Interrupt Disable Register */ | 
|  | 56 | #define AT91_ADC_IMR		0x2C		/* Interrupt Mask Register */ | 
|  | 57 |  | 
| Mariusz Kozlowski | fc432e1 | 2007-05-19 00:39:36 +0200 | [diff] [blame] | 58 | #define AT91_ADC_CHR(n)		(0x30 + ((n) * 4))	/* Channel Data Register N */ | 
| Andrew Victor | ce813b9 | 2007-05-02 17:08:13 +0100 | [diff] [blame] | 59 | #define		AT91_ADC_DATA		(0x3ff) | 
|  | 60 |  | 
|  | 61 | #endif |