2008-07-09 16:27:56 +02:00
/*
* Au12x0 / Au1550 PSC ALSA ASoC audio support .
*
* ( c ) 2007 - 2008 MSC Vertriebsges . m . b . H . ,
2009-10-31 20:15:08 +01:00
* Manuel Lauss < manuel . lauss @ gmail . com >
2008-07-09 16:27:56 +02:00
*
* This program is free software ; you can redistribute it and / or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation .
*
*/
# ifndef _AU1X_PCM_H
# define _AU1X_PCM_H
2009-10-31 20:15:08 +01:00
/* DBDMA helpers */
extern struct platform_device * au1xpsc_pcm_add ( struct platform_device * pdev ) ;
extern void au1xpsc_pcm_destroy ( struct platform_device * dmapd ) ;
2008-07-09 16:27:56 +02:00
struct au1xpsc_audio_data {
void __iomem * mmio ;
unsigned long cfg ;
unsigned long rate ;
2010-08-26 14:53:51 +02:00
struct snd_soc_dai_driver dai_drv ;
2008-07-09 16:27:56 +02:00
unsigned long pm [ 2 ] ;
2009-09-08 19:45:17 +02:00
struct mutex lock ;
2009-10-31 20:15:08 +01:00
struct platform_device * dmapd ;
2008-07-09 16:27:56 +02:00
} ;
# define PCM_TX 0
# define PCM_RX 1
# define SUBSTREAM_TYPE(substream) \
( ( substream ) - > stream = = SNDRV_PCM_STREAM_PLAYBACK ? PCM_TX : PCM_RX )
/* easy access macros */
# define PSC_CTRL(x) ((unsigned long)((x)->mmio) + PSC_CTRL_OFFSET)
# define PSC_SEL(x) ((unsigned long)((x)->mmio) + PSC_SEL_OFFSET)
# define I2S_STAT(x) ((unsigned long)((x)->mmio) + PSC_I2SSTAT_OFFSET)
# define I2S_CFG(x) ((unsigned long)((x)->mmio) + PSC_I2SCFG_OFFSET)
# define I2S_PCR(x) ((unsigned long)((x)->mmio) + PSC_I2SPCR_OFFSET)
# define AC97_CFG(x) ((unsigned long)((x)->mmio) + PSC_AC97CFG_OFFSET)
# define AC97_CDC(x) ((unsigned long)((x)->mmio) + PSC_AC97CDC_OFFSET)
# define AC97_EVNT(x) ((unsigned long)((x)->mmio) + PSC_AC97EVNT_OFFSET)
# define AC97_PCR(x) ((unsigned long)((x)->mmio) + PSC_AC97PCR_OFFSET)
# define AC97_RST(x) ((unsigned long)((x)->mmio) + PSC_AC97RST_OFFSET)
# define AC97_STAT(x) ((unsigned long)((x)->mmio) + PSC_AC97STAT_OFFSET)
# endif