ASoC: sti: define tdm type & default tdm hw config
authorMoise Gergaud <moise.gergaud@st.com>
Thu, 7 Apr 2016 09:25:32 +0000 (11:25 +0200)
committerMark Brown <broonie@kernel.org>
Tue, 12 Apr 2016 01:58:59 +0000 (02:58 +0100)
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>
sound/soc/sti/uniperif.h

index 75116ab3cbc0d933288d18d7e6b40ee9aae06767..750eb5a07e6cf98e9e549dba33b8fac34e2e9b81 100644 (file)
 #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);