hdmi_write(audio, (u8)~HDMI_MC_SWRSTZ_I2SSWRST_REQ, HDMI_MC_SWRSTZ);
 
        inputclkfs      = HDMI_AUD_INPUTCLKFS_64FS;
-       conf0           = HDMI_AUD_CONF0_I2S_ALL_ENABLE;
+       conf0           = (HDMI_AUD_CONF0_I2S_SELECT | HDMI_AUD_CONF0_I2S_EN0);
+
+       /* Enable the required i2s lanes */
+       switch (hparms->channels) {
+       case 7 ... 8:
+               conf0 |= HDMI_AUD_CONF0_I2S_EN3;
+               /* Fall-thru */
+       case 5 ... 6:
+               conf0 |= HDMI_AUD_CONF0_I2S_EN2;
+               /* Fall-thru */
+       case 3 ... 4:
+               conf0 |= HDMI_AUD_CONF0_I2S_EN1;
+               /* Fall-thru */
+       }
 
        switch (hparms->sample_width) {
        case 16:
 
 
 /* AUD_CONF0 field values */
        HDMI_AUD_CONF0_SW_RESET = 0x80,
-       HDMI_AUD_CONF0_I2S_ALL_ENABLE = 0x2F,
+       HDMI_AUD_CONF0_I2S_SELECT = 0x20,
+       HDMI_AUD_CONF0_I2S_EN3 = 0x08,
+       HDMI_AUD_CONF0_I2S_EN2 = 0x04,
+       HDMI_AUD_CONF0_I2S_EN1 = 0x02,
+       HDMI_AUD_CONF0_I2S_EN0 = 0x01,
 
 /* AUD_CONF1 field values */
        HDMI_AUD_CONF1_MODE_I2S = 0x00,