|
@@ -102,7 +102,9 @@
|
|
|
#include "rsnd.h"
|
|
|
|
|
|
#define RSND_RATES SNDRV_PCM_RATE_8000_192000
|
|
|
-#define RSND_FMTS (SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S16_LE)
|
|
|
+#define RSND_FMTS (SNDRV_PCM_FMTBIT_S8 |\
|
|
|
+ SNDRV_PCM_FMTBIT_S16_LE |\
|
|
|
+ SNDRV_PCM_FMTBIT_S24_LE)
|
|
|
|
|
|
static const struct of_device_id rsnd_of_match[] = {
|
|
|
{ .compatible = "renesas,rcar_sound-gen1", .data = (void *)RSND_GEN1 },
|
|
@@ -280,6 +282,8 @@ u32 rsnd_get_adinr_bit(struct rsnd_mod *mod, struct rsnd_dai_stream *io)
|
|
|
struct device *dev = rsnd_priv_to_dev(priv);
|
|
|
|
|
|
switch (snd_pcm_format_width(runtime->format)) {
|
|
|
+ case 8:
|
|
|
+ return 16 << 16;
|
|
|
case 16:
|
|
|
return 8 << 16;
|
|
|
case 24:
|
|
@@ -331,7 +335,7 @@ u32 rsnd_get_dalign(struct rsnd_mod *mod, struct rsnd_dai_stream *io)
|
|
|
target = cmd ? cmd : ssiu;
|
|
|
}
|
|
|
|
|
|
- /* Non target mod or 24bit data needs normal DALIGN */
|
|
|
+ /* Non target mod or non 16bit needs normal DALIGN */
|
|
|
if ((snd_pcm_format_width(runtime->format) != 16) ||
|
|
|
(mod != target))
|
|
|
return 0x76543210;
|
|
@@ -367,7 +371,7 @@ u32 rsnd_get_busif_shift(struct rsnd_dai_stream *io, struct rsnd_mod *mod)
|
|
|
* HW 24bit data is located as 0x******00
|
|
|
*
|
|
|
*/
|
|
|
- if (snd_pcm_format_width(runtime->format) == 16)
|
|
|
+ if (snd_pcm_format_width(runtime->format) != 24)
|
|
|
return 0;
|
|
|
|
|
|
for (i = 0; i < ARRAY_SIZE(playback_mods); i++) {
|