summaryrefslogtreecommitdiffstats
path: root/sound/soc/sti
diff options
context:
space:
mode:
authorMoise Gergaud <moise.gergaud@st.com>2016-04-07 11:25:32 +0200
committerMark Brown <broonie@kernel.org>2016-04-12 02:58:59 +0100
commit9a00a3e9fea1ea5affa7bea971299d3a5832daad (patch)
treef9a8c0baf0a04529fe484200ed05d01228be070c /sound/soc/sti
parent5295a0dc31d5261ff64406ece25e8d9e91530d2e (diff)
downloadlinux-stable-9a00a3e9fea1ea5affa7bea971299d3a5832daad.tar.gz
linux-stable-9a00a3e9fea1ea5affa7bea971299d3a5832daad.tar.bz2
linux-stable-9a00a3e9fea1ea5affa7bea971299d3a5832daad.zip
ASoC: sti: define tdm type & default tdm hw config
Signed-off-by: Moise Gergaud <moise.gergaud@st.com> Acked-by: Arnaud Pouliquen <arnaud.pouliquen@st.com> Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'sound/soc/sti')
-rw-r--r--sound/soc/sti/uniperif.h28
1 files changed, 27 insertions, 1 deletions
diff --git a/sound/soc/sti/uniperif.h b/sound/soc/sti/uniperif.h
index 75116ab3cbc0..750eb5a07e6c 100644
--- a/sound/soc/sti/uniperif.h
+++ b/sound/soc/sti/uniperif.h
@@ -1228,6 +1228,9 @@
#define UNIPERIF_TYPE_IS_IEC958(p) \
(UNIPERIF_TYPE_IS_HDMI(p) || \
UNIPERIF_TYPE_IS_SPDIF(p))
+#define UNIPERIF_TYPE_IS_TDM(p) \
+ ((p)->info->type == SND_ST_UNIPERIF_TYPE_TDM)
+
/*
* Uniperipheral IP revisions
*/
@@ -1249,7 +1252,8 @@ enum uniperif_type {
SND_ST_UNIPERIF_TYPE_NONE,
SND_ST_UNIPERIF_TYPE_HDMI,
SND_ST_UNIPERIF_TYPE_PCM,
- SND_ST_UNIPERIF_TYPE_SPDIF
+ SND_ST_UNIPERIF_TYPE_SPDIF,
+ SND_ST_UNIPERIF_TYPE_TDM
};
enum uniperif_state {
@@ -1330,6 +1334,28 @@ struct sti_uniperiph_data {
struct sti_uniperiph_dai dai_data;
};
+static const struct snd_pcm_hardware uni_tdm_hw = {
+ .info = SNDRV_PCM_INFO_INTERLEAVED | SNDRV_PCM_INFO_BLOCK_TRANSFER |
+ SNDRV_PCM_INFO_PAUSE | SNDRV_PCM_INFO_MMAP |
+ SNDRV_PCM_INFO_MMAP_VALID,
+
+ .formats = SNDRV_PCM_FMTBIT_S32_LE | SNDRV_PCM_FMTBIT_S16_LE,
+
+ .rates = SNDRV_PCM_RATE_CONTINUOUS,
+ .rate_min = 8000,
+ .rate_max = 48000,
+
+ .channels_min = 1,
+ .channels_max = 32,
+
+ .periods_min = 2,
+ .periods_max = 10,
+
+ .period_bytes_min = 128,
+ .period_bytes_max = 64 * PAGE_SIZE,
+ .buffer_bytes_max = 256 * PAGE_SIZE
+};
+
/* uniperiph player*/
int uni_player_init(struct platform_device *pdev,
struct uniperif *uni_player);