Linux Audio

Check our new training course

Loading...
Note: File does not exist in v5.14.15.
  1/*
  2 * arch/arm/mach-at91/include/mach/at91_tc.h
  3 *
  4 * Copyright (C) SAN People
  5 *
  6 * Timer/Counter Unit (TC) registers.
  7 * Based on AT91RM9200 datasheet revision E.
  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_TC_H
 16#define AT91_TC_H
 17
 18#define AT91_TC_BCR		0xc0		/* TC Block Control Register */
 19#define		AT91_TC_SYNC		(1 << 0)	/* Synchro Command */
 20
 21#define AT91_TC_BMR		0xc4		/* TC Block Mode Register */
 22#define		AT91_TC_TC0XC0S		(3 << 0)	/* External Clock Signal 0 Selection */
 23#define			AT91_TC_TC0XC0S_TCLK0		(0 << 0)
 24#define			AT91_TC_TC0XC0S_NONE		(1 << 0)
 25#define			AT91_TC_TC0XC0S_TIOA1		(2 << 0)
 26#define			AT91_TC_TC0XC0S_TIOA2		(3 << 0)
 27#define		AT91_TC_TC1XC1S		(3 << 2)	/* External Clock Signal 1 Selection */
 28#define			AT91_TC_TC1XC1S_TCLK1		(0 << 2)
 29#define			AT91_TC_TC1XC1S_NONE		(1 << 2)
 30#define			AT91_TC_TC1XC1S_TIOA0		(2 << 2)
 31#define			AT91_TC_TC1XC1S_TIOA2		(3 << 2)
 32#define		AT91_TC_TC2XC2S		(3 << 4)	/* External Clock Signal 2 Selection */
 33#define			AT91_TC_TC2XC2S_TCLK2		(0 << 4)
 34#define			AT91_TC_TC2XC2S_NONE		(1 << 4)
 35#define			AT91_TC_TC2XC2S_TIOA0		(2 << 4)
 36#define			AT91_TC_TC2XC2S_TIOA1		(3 << 4)
 37
 38
 39#define AT91_TC_CCR		0x00		/* Channel Control Register */
 40#define		AT91_TC_CLKEN		(1 << 0)	/* Counter Clock Enable Command */
 41#define		AT91_TC_CLKDIS		(1 << 1)	/* Counter CLock Disable Command */
 42#define		AT91_TC_SWTRG		(1 << 2)	/* Software Trigger Command */
 43
 44#define AT91_TC_CMR		0x04		/* Channel Mode Register */
 45#define		AT91_TC_TCCLKS		(7 << 0)	/* Capture/Waveform Mode: Clock Selection */
 46#define			AT91_TC_TIMER_CLOCK1		(0 << 0)
 47#define			AT91_TC_TIMER_CLOCK2		(1 << 0)
 48#define			AT91_TC_TIMER_CLOCK3		(2 << 0)
 49#define			AT91_TC_TIMER_CLOCK4		(3 << 0)
 50#define			AT91_TC_TIMER_CLOCK5		(4 << 0)
 51#define			AT91_TC_XC0			(5 << 0)
 52#define			AT91_TC_XC1			(6 << 0)
 53#define			AT91_TC_XC2			(7 << 0)
 54#define		AT91_TC_CLKI		(1 << 3)	/* Capture/Waveform Mode: Clock Invert */
 55#define		AT91_TC_BURST		(3 << 4)	/* Capture/Waveform Mode: Burst Signal Selection */
 56#define		AT91_TC_LDBSTOP		(1 << 6)	/* Capture Mode: Counter Clock Stopped with TB Loading */
 57#define		AT91_TC_LDBDIS		(1 << 7)	/* Capture Mode: Counter Clock Disable with RB Loading */
 58#define		AT91_TC_ETRGEDG		(3 << 8)	/* Capture Mode: External Trigger Edge Selection */
 59#define		AT91_TC_ABETRG		(1 << 10)	/* Capture Mode: TIOA or TIOB External Trigger Selection */
 60#define		AT91_TC_CPCTRG		(1 << 14)	/* Capture Mode: RC Compare Trigger Enable */
 61#define		AT91_TC_WAVE		(1 << 15)	/* Capture/Waveform mode */
 62#define		AT91_TC_LDRA		(3 << 16)	/* Capture Mode: RA Loading Selection */
 63#define		AT91_TC_LDRB		(3 << 18)	/* Capture Mode: RB Loading Selection */
 64
 65#define		AT91_TC_CPCSTOP		(1 <<  6)	/* Waveform Mode: Counter Clock Stopped with RC Compare */
 66#define		AT91_TC_CPCDIS		(1 <<  7)	/* Waveform Mode: Counter Clock Disable with RC Compare */
 67#define		AT91_TC_EEVTEDG		(3 <<  8)	/* Waveform Mode: External Event Edge Selection */
 68#define			AT91_TC_EEVTEDG_NONE		(0 << 8)
 69#define			AT91_TC_EEVTEDG_RISING		(1 << 8)
 70#define			AT91_TC_EEVTEDG_FALLING		(2 << 8)
 71#define			AT91_TC_EEVTEDG_BOTH		(3 << 8)
 72#define		AT91_TC_EEVT		(3 << 10)	/* Waveform Mode: External Event Selection */
 73#define			AT91_TC_EEVT_TIOB		(0 << 10)
 74#define			AT91_TC_EEVT_XC0		(1 << 10)
 75#define			AT91_TC_EEVT_XC1		(2 << 10)
 76#define			AT91_TC_EEVT_XC2		(3 << 10)
 77#define		AT91_TC_ENETRG		(1 << 12)	/* Waveform Mode: External Event Trigger Enable */
 78#define		AT91_TC_WAVESEL		(3 << 13)	/* Waveform Mode: Waveform Selection */
 79#define			AT91_TC_WAVESEL_UP		(0 << 13)
 80#define			AT91_TC_WAVESEL_UP_AUTO		(2 << 13)
 81#define			AT91_TC_WAVESEL_UPDOWN		(1 << 13)
 82#define			AT91_TC_WAVESEL_UPDOWN_AUTO	(3 << 13)
 83#define		AT91_TC_ACPA		(3 << 16)	/* Waveform Mode: RA Compare Effect on TIOA */
 84#define			AT91_TC_ACPA_NONE		(0 << 16)
 85#define			AT91_TC_ACPA_SET		(1 << 16)
 86#define			AT91_TC_ACPA_CLEAR		(2 << 16)
 87#define			AT91_TC_ACPA_TOGGLE		(3 << 16)
 88#define		AT91_TC_ACPC		(3 << 18)	/* Waveform Mode: RC Compre Effect on TIOA */
 89#define			AT91_TC_ACPC_NONE		(0 << 18)
 90#define			AT91_TC_ACPC_SET		(1 << 18)
 91#define			AT91_TC_ACPC_CLEAR		(2 << 18)
 92#define			AT91_TC_ACPC_TOGGLE		(3 << 18)
 93#define		AT91_TC_AEEVT		(3 << 20)	/* Waveform Mode: External Event Effect on TIOA */
 94#define			AT91_TC_AEEVT_NONE		(0 << 20)
 95#define			AT91_TC_AEEVT_SET		(1 << 20)
 96#define			AT91_TC_AEEVT_CLEAR		(2 << 20)
 97#define			AT91_TC_AEEVT_TOGGLE		(3 << 20)
 98#define		AT91_TC_ASWTRG		(3 << 22)	/* Waveform Mode: Software Trigger Effect on TIOA */
 99#define			AT91_TC_ASWTRG_NONE		(0 << 22)
100#define			AT91_TC_ASWTRG_SET		(1 << 22)
101#define			AT91_TC_ASWTRG_CLEAR		(2 << 22)
102#define			AT91_TC_ASWTRG_TOGGLE		(3 << 22)
103#define		AT91_TC_BCPB		(3 << 24)	/* Waveform Mode: RB Compare Effect on TIOB */
104#define			AT91_TC_BCPB_NONE		(0 << 24)
105#define			AT91_TC_BCPB_SET		(1 << 24)
106#define			AT91_TC_BCPB_CLEAR		(2 << 24)
107#define			AT91_TC_BCPB_TOGGLE		(3 << 24)
108#define		AT91_TC_BCPC		(3 << 26)	/* Waveform Mode: RC Compare Effect on TIOB */
109#define			AT91_TC_BCPC_NONE		(0 << 26)
110#define			AT91_TC_BCPC_SET		(1 << 26)
111#define			AT91_TC_BCPC_CLEAR		(2 << 26)
112#define			AT91_TC_BCPC_TOGGLE		(3 << 26)
113#define		AT91_TC_BEEVT		(3 << 28)	/* Waveform Mode: External Event Effect on TIOB */
114#define			AT91_TC_BEEVT_NONE		(0 << 28)
115#define			AT91_TC_BEEVT_SET		(1 << 28)
116#define			AT91_TC_BEEVT_CLEAR		(2 << 28)
117#define			AT91_TC_BEEVT_TOGGLE		(3 << 28)
118#define		AT91_TC_BSWTRG		(3 << 30)	/* Waveform Mode: Software Trigger Effect on TIOB */
119#define			AT91_TC_BSWTRG_NONE		(0 << 30)
120#define			AT91_TC_BSWTRG_SET		(1 << 30)
121#define			AT91_TC_BSWTRG_CLEAR		(2 << 30)
122#define			AT91_TC_BSWTRG_TOGGLE		(3 << 30)
123
124#define AT91_TC_CV		0x10		/* Counter Value */
125#define AT91_TC_RA		0x14		/* Register A */
126#define AT91_TC_RB		0x18		/* Register B */
127#define AT91_TC_RC		0x1c		/* Register C */
128
129#define AT91_TC_SR		0x20		/* Status Register */
130#define		AT91_TC_COVFS		(1 <<  0)	/* Counter Overflow Status */
131#define		AT91_TC_LOVRS		(1 <<  1)	/* Load Overrun Status */
132#define		AT91_TC_CPAS		(1 <<  2)	/* RA Compare Status */
133#define		AT91_TC_CPBS		(1 <<  3)	/* RB Compare Status */
134#define		AT91_TC_CPCS		(1 <<  4)	/* RC Compare Status */
135#define		AT91_TC_LDRAS		(1 <<  5)	/* RA Loading Status */
136#define		AT91_TC_LDRBS		(1 <<  6)	/* RB Loading Status */
137#define		AT91_TC_ETRGS		(1 <<  7)	/* External Trigger Status */
138#define		AT91_TC_CLKSTA		(1 << 16)	/* Clock Enabling Status */
139#define		AT91_TC_MTIOA		(1 << 17)	/* TIOA Mirror */
140#define		AT91_TC_MTIOB		(1 << 18)	/* TIOB Mirror */
141
142#define AT91_TC_IER		0x24		/* Interrupt Enable Register */
143#define AT91_TC_IDR		0x28		/* Interrupt Disable Register */
144#define AT91_TC_IMR		0x2c		/* Interrupt Mask Register */
145
146#endif