#define SUN8I_CODEC_PASSTHROUGH_SAMPLE_RATE 48000
 
+#define SUN8I_CODEC_PCM_FORMATS        (SNDRV_PCM_FMTBIT_S8     |\
+                                SNDRV_PCM_FMTBIT_S16_LE |\
+                                SNDRV_PCM_FMTBIT_S20_LE |\
+                                SNDRV_PCM_FMTBIT_S24_LE |\
+                                SNDRV_PCM_FMTBIT_S20_3LE|\
+                                SNDRV_PCM_FMTBIT_S24_3LE)
+
 #define SUN8I_CODEC_PCM_RATES  (SNDRV_PCM_RATE_8000_48000|\
                                 SNDRV_PCM_RATE_88200     |\
                                 SNDRV_PCM_RATE_96000     |\
                        .channels_min   = 1,
                        .channels_max   = 2,
                        .rates          = SUN8I_CODEC_PCM_RATES,
-                       .formats        = SNDRV_PCM_FMTBIT_S16_LE,
+                       .formats        = SUN8I_CODEC_PCM_FORMATS,
                        .sig_bits       = 24,
                },
                /* playback capabilities */
                        .channels_min   = 1,
                        .channels_max   = 2,
                        .rates          = SUN8I_CODEC_PCM_RATES,
-                       .formats        = SNDRV_PCM_FMTBIT_S16_LE,
+                       .formats        = SUN8I_CODEC_PCM_FORMATS,
                },
                .symmetric_rates        = true,
                .symmetric_channels     = true,