#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 },
        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:
                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;
         * 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++) {