Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
sound
soc
atmel
atmel-pcm.h
Go to the documentation of this file.
1
/*
2
* at91-pcm.h - ALSA PCM interface for the Atmel AT91 SoC.
3
*
4
* Copyright (C) 2005 SAN People
5
* Copyright (C) 2008 Atmel
6
*
7
* Authors: Sedji Gaouaou <
[email protected]
>
8
*
9
* Based on at91-pcm. by:
10
* Frank Mandarino <
[email protected]
>
11
* Copyright 2006 Endrelia Technologies Inc.
12
*
13
* Based on pxa2xx-pcm.c by:
14
*
15
* Author: Nicolas Pitre
16
* Created: Nov 30, 2004
17
* Copyright: (C) 2004 MontaVista Software, Inc.
18
*
19
* This program is free software; you can redistribute it and/or modify
20
* it under the terms of the GNU General Public License as published by
21
* the Free Software Foundation; either version 2 of the License, or
22
* (at your option) any later version.
23
*
24
* This program is distributed in the hope that it will be useful,
25
* but WITHOUT ANY WARRANTY; without even the implied warranty of
26
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
27
* GNU General Public License for more details.
28
*
29
* You should have received a copy of the GNU General Public License
30
* along with this program; if not, write to the Free Software
31
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
32
*/
33
34
#ifndef _ATMEL_PCM_H
35
#define _ATMEL_PCM_H
36
37
#include <
linux/atmel-ssc.h
>
38
39
/*
40
* Registers and status bits that are required by the PCM driver.
41
*/
42
struct
atmel_pdc_regs
{
43
unsigned
int
xpr
;
/* PDC recv/trans pointer */
44
unsigned
int
xcr
;
/* PDC recv/trans counter */
45
unsigned
int
xnpr
;
/* PDC next recv/trans pointer */
46
unsigned
int
xncr
;
/* PDC next recv/trans counter */
47
unsigned
int
ptcr
;
/* PDC transfer control */
48
};
49
50
struct
atmel_ssc_mask
{
51
u32
ssc_enable
;
/* SSC recv/trans enable */
52
u32
ssc_disable
;
/* SSC recv/trans disable */
53
u32
ssc_endx
;
/* SSC ENDTX or ENDRX */
54
u32
ssc_endbuf
;
/* SSC TXBUFE or RXBUFF */
55
u32
pdc_enable
;
/* PDC recv/trans enable */
56
u32
pdc_disable
;
/* PDC recv/trans disable */
57
};
58
59
/*
60
* This structure, shared between the PCM driver and the interface,
61
* contains all information required by the PCM driver to perform the
62
* PDC DMA operation. All fields except dma_intr_handler() are initialized
63
* by the interface. The dma_intr_handler() pointer is set by the PCM
64
* driver and called by the interface SSC interrupt handler if it is
65
* non-NULL.
66
*/
67
struct
atmel_pcm_dma_params
{
68
char
*
name
;
/* stream identifier */
69
int
pdc_xfer_size
;
/* PDC counter increment in bytes */
70
struct
ssc_device
*
ssc
;
/* SSC device for stream */
71
struct
atmel_pdc_regs
*
pdc
;
/* PDC receive or transmit registers */
72
struct
atmel_ssc_mask
*
mask
;
/* SSC & PDC status bits */
73
struct
snd_pcm_substream
*
substream
;
74
void
(*
dma_intr_handler
)(
u32
,
struct
snd_pcm_substream
*);
75
};
76
77
/*
78
* SSC register access (since ssc_writel() / ssc_readl() require literal name)
79
*/
80
#define ssc_readx(base, reg) (__raw_readl((base) + (reg)))
81
#define ssc_writex(base, reg, value) __raw_writel((value), (base) + (reg))
82
83
#endif
/* _ATMEL_PCM_H */
Generated on Thu Jan 10 2013 15:07:21 for Linux Kernel by
1.8.2