Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 43e88f67 authored by Jerome Brunet's avatar Jerome Brunet Committed by Neil Armstrong
Browse files

drm/bridge: dw-hdmi-i2s: enable only the required i2s lanes



Enable the i2s lanes depending on the number of channel in the stream

Reviewed-by: default avatarJonas Karlman <jonas@kwiboo.se>
Signed-off-by: default avatarJerome Brunet <jbrunet@baylibre.com>
Reviewed-by: default avatarNeil Armstrong <narmstrong@baylibre.com>
Signed-off-by: default avatarNeil Armstrong <narmstrong@baylibre.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20190812120726.1528-8-jbrunet@baylibre.com
parent 46cecde3
Loading
Loading
Loading
Loading
+14 −1
Original line number Diff line number Diff line
@@ -54,7 +54,20 @@ static int dw_hdmi_i2s_hw_params(struct device *dev, void *data,
	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:
+5 −1
Original line number Diff line number Diff line
@@ -865,7 +865,11 @@ enum {

/* 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,