From 8e6a02346818494c309b287ac9ec1fa5adaeb9a9 Mon Sep 17 00:00:00 2001 From: MilhouseVH Date: Wed, 10 Jul 2019 16:24:09 +0100 Subject: [PATCH] Allwinner: rebase HDMI patch on 5.1.17 --- .../linux/0001-hdmi-sound-improvements.patch | 245 +++++++++--------- 1 file changed, 120 insertions(+), 125 deletions(-) diff --git a/projects/Allwinner/patches/linux/0001-hdmi-sound-improvements.patch b/projects/Allwinner/patches/linux/0001-hdmi-sound-improvements.patch index 105944ec2a..9fa34d581c 100644 --- a/projects/Allwinner/patches/linux/0001-hdmi-sound-improvements.patch +++ b/projects/Allwinner/patches/linux/0001-hdmi-sound-improvements.patch @@ -1,4 +1,4 @@ -From 856cf7018cd05c18d1693b04cad6d81450ed2948 Mon Sep 17 00:00:00 2001 +From 99b0611417b9864ae57b6646e143f748f80964c9 Mon Sep 17 00:00:00 2001 From: Jonas Karlman Date: Sun, 16 Dec 2018 10:22:09 +0100 Subject: [PATCH 01/15] drm: dw-hdmi: extract dw_hdmi_connector_update_edid() @@ -12,10 +12,10 @@ Signed-off-by: Jonas Karlman 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c -index 5971976284bf..e89efed80357 100644 +index ab7968c..fb35ee9 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c -@@ -1905,7 +1905,8 @@ dw_hdmi_connector_detect(struct drm_connector *connector, bool force) +@@ -2059,7 +2059,8 @@ dw_hdmi_connector_detect(struct drm_connector *connector, bool force) return hdmi->phy.ops->read_hpd(hdmi, hdmi->phy.data); } @@ -25,7 +25,7 @@ index 5971976284bf..e89efed80357 100644 { struct dw_hdmi *hdmi = container_of(connector, struct dw_hdmi, connector); -@@ -1924,7 +1925,8 @@ static int dw_hdmi_connector_get_modes(struct drm_connector *connector) +@@ -2078,7 +2079,8 @@ static int dw_hdmi_connector_get_modes(struct drm_connector *connector) hdmi->sink_has_audio = drm_detect_monitor_audio(edid); drm_connector_update_edid_property(connector, edid); cec_notifier_set_phys_addr_from_edid(hdmi->cec_notifier, edid); @@ -35,7 +35,7 @@ index 5971976284bf..e89efed80357 100644 kfree(edid); } else { dev_dbg(hdmi->dev, "failed to get edid\n"); -@@ -1933,6 +1935,11 @@ static int dw_hdmi_connector_get_modes(struct drm_connector *connector) +@@ -2087,6 +2089,11 @@ static int dw_hdmi_connector_get_modes(struct drm_connector *connector) return ret; } @@ -48,10 +48,10 @@ index 5971976284bf..e89efed80357 100644 { struct dw_hdmi *hdmi = container_of(connector, struct dw_hdmi, -- -2.20.0 +2.14.1 -From 5176a54a40006c739c05b109ab32b361d5cae350 Mon Sep 17 00:00:00 2001 +From 834da8a94754f25fdfac1995cc7ea72e569e9fbd Mon Sep 17 00:00:00 2001 From: Jonas Karlman Date: Sun, 16 Dec 2018 11:38:43 +0100 Subject: [PATCH 02/15] drm: dw-hdmi: move dw_hdmi_connector_detect() @@ -60,14 +60,14 @@ Move dw_hdmi_connector_detect() it will call dw_hdmi_connector_update_edid(). Signed-off-by: Jonas Karlman --- - drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 30 +++++++++++------------ + drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c -index e89efed80357..b293290ac525 100644 +index fb35ee9..eb9e5d8 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c -@@ -1890,21 +1890,6 @@ static void dw_hdmi_update_phy_mask(struct dw_hdmi *hdmi) +@@ -2044,21 +2044,6 @@ static void dw_hdmi_update_phy_mask(struct dw_hdmi *hdmi) hdmi->rxsense); } @@ -89,7 +89,7 @@ index e89efed80357..b293290ac525 100644 static int dw_hdmi_connector_update_edid(struct drm_connector *connector, bool add_modes) { -@@ -1935,6 +1920,21 @@ static int dw_hdmi_connector_update_edid(struct drm_connector *connector, +@@ -2089,6 +2074,21 @@ static int dw_hdmi_connector_update_edid(struct drm_connector *connector, return ret; } @@ -112,10 +112,10 @@ index e89efed80357..b293290ac525 100644 { return dw_hdmi_connector_update_edid(connector, true); -- -2.20.0 +2.14.1 -From 46f3c1a32813d7e822a62188ba820b15e87ba49c Mon Sep 17 00:00:00 2001 +From f1d41eb5ac2193f2a6c4a746a9fac27c3bfe7af5 Mon Sep 17 00:00:00 2001 From: Jonas Karlman Date: Sun, 16 Dec 2018 10:22:09 +0100 Subject: [PATCH 03/15] drm: dw-hdmi: update CEC phys addr and EDID on HPD @@ -130,10 +130,10 @@ Signed-off-by: Jonas Karlman 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c -index b293290ac525..6334bfe5c802 100644 +index eb9e5d8..d079bde 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c -@@ -1923,6 +1923,7 @@ static int dw_hdmi_connector_update_edid(struct drm_connector *connector, +@@ -2077,6 +2077,7 @@ static int dw_hdmi_connector_update_edid(struct drm_connector *connector, static enum drm_connector_status dw_hdmi_connector_detect(struct drm_connector *connector, bool force) { @@ -141,7 +141,7 @@ index b293290ac525..6334bfe5c802 100644 struct dw_hdmi *hdmi = container_of(connector, struct dw_hdmi, connector); -@@ -1932,7 +1933,14 @@ dw_hdmi_connector_detect(struct drm_connector *connector, bool force) +@@ -2086,7 +2087,14 @@ dw_hdmi_connector_detect(struct drm_connector *connector, bool force) dw_hdmi_update_phy_mask(hdmi); mutex_unlock(&hdmi->mutex); @@ -157,7 +157,7 @@ index b293290ac525..6334bfe5c802 100644 } static int dw_hdmi_connector_get_modes(struct drm_connector *connector) -@@ -2148,10 +2156,6 @@ static irqreturn_t dw_hdmi_irq(int irq, void *dev_id) +@@ -2301,10 +2309,6 @@ static irqreturn_t dw_hdmi_irq(int irq, void *dev_id) dw_hdmi_setup_rx_sense(hdmi, phy_stat & HDMI_PHY_HPD, phy_stat & HDMI_PHY_RX_SENSE); @@ -169,10 +169,10 @@ index b293290ac525..6334bfe5c802 100644 if (intr_stat & HDMI_IH_PHY_STAT0_HPD) { -- -2.20.0 +2.14.1 -From 2d47e06b748342aa49c7d9871a1fac87f68341be Mon Sep 17 00:00:00 2001 +From e20d93cd15aad779acfad254bac23d37ea7b7fe9 Mon Sep 17 00:00:00 2001 From: Jonas Karlman Date: Sun, 16 Dec 2018 10:22:09 +0100 Subject: [PATCH 04/15] Revert "drm/edid: make drm_edid_to_eld() static" @@ -188,10 +188,10 @@ Signed-off-by: Jonas Karlman 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c -index b506e3622b08..694336e678f9 100644 +index d947789..cc71a3c 100644 --- a/drivers/gpu/drm/drm_edid.c +++ b/drivers/gpu/drm/drm_edid.c -@@ -3892,7 +3892,7 @@ static void clear_eld(struct drm_connector *connector) +@@ -3970,7 +3970,7 @@ static void clear_eld(struct drm_connector *connector) connector->audio_latency[1] = 0; } @@ -200,7 +200,7 @@ index b506e3622b08..694336e678f9 100644 * drm_edid_to_eld - build ELD from EDID * @connector: connector corresponding to the HDMI/DP sink * @edid: EDID to parse -@@ -3900,7 +3900,7 @@ static void clear_eld(struct drm_connector *connector) +@@ -3978,7 +3978,7 @@ static void clear_eld(struct drm_connector *connector) * Fill the ELD (EDID-Like Data) buffer for passing to the audio driver. The * HDCP and Port_ID ELD fields are left for the graphics driver to fill in. */ @@ -209,7 +209,7 @@ index b506e3622b08..694336e678f9 100644 { uint8_t *eld = connector->eld; u8 *cea; -@@ -3985,6 +3985,7 @@ static void drm_edid_to_eld(struct drm_connector *connector, struct edid *edid) +@@ -4063,6 +4063,7 @@ static void drm_edid_to_eld(struct drm_connector *connector, struct edid *edid) DRM_DEBUG_KMS("ELD size %d, SAD count %d\n", drm_eld_size(eld), total_sad_count); } @@ -218,7 +218,7 @@ index b506e3622b08..694336e678f9 100644 /** * drm_edid_to_sad - extracts SADs from EDID diff --git a/include/drm/drm_edid.h b/include/drm/drm_edid.h -index e3c404833115..3942d551be67 100644 +index 19b15fd..185870b 100644 --- a/include/drm/drm_edid.h +++ b/include/drm/drm_edid.h @@ -333,6 +333,7 @@ struct drm_encoder; @@ -230,10 +230,10 @@ index e3c404833115..3942d551be67 100644 int drm_edid_to_speaker_allocation(struct edid *edid, u8 **sadb); int drm_av_sync_delay(struct drm_connector *connector, -- -2.20.0 +2.14.1 -From c9c9158f4f78735c3c220624a89e0354fe4a2807 Mon Sep 17 00:00:00 2001 +From 901b76d639e09e7d829b4974c174ab8595310bcd Mon Sep 17 00:00:00 2001 From: Jonas Karlman Date: Sun, 16 Dec 2018 10:22:09 +0100 Subject: [PATCH 05/15] drm: dw-hdmi: update ELD on HPD event @@ -247,10 +247,10 @@ Signed-off-by: Jonas Karlman 1 file changed, 2 insertions(+) diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c -index 6334bfe5c802..1f36c6944e60 100644 +index d079bde..f13ac2c 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c -@@ -1912,6 +1912,8 @@ static int dw_hdmi_connector_update_edid(struct drm_connector *connector, +@@ -2066,6 +2066,8 @@ static int dw_hdmi_connector_update_edid(struct drm_connector *connector, cec_notifier_set_phys_addr_from_edid(hdmi->cec_notifier, edid); if (add_modes) ret = drm_add_edid_modes(connector, edid); @@ -260,10 +260,10 @@ index 6334bfe5c802..1f36c6944e60 100644 } else { dev_dbg(hdmi->dev, "failed to get edid\n"); -- -2.20.0 +2.14.1 -From f534ca70362421fa028bd64ec1ece3abf559357e Mon Sep 17 00:00:00 2001 +From e77725c0dc43a3d8d8641dea4abfb92225bf6e72 Mon Sep 17 00:00:00 2001 From: Jonas Karlman Date: Sun, 16 Dec 2018 10:22:09 +0100 Subject: [PATCH 06/15] ASoC: hdmi-codec: add hdmi_codec_eld_notify() @@ -277,7 +277,7 @@ Signed-off-by: Jonas Karlman 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/include/sound/hdmi-codec.h b/include/sound/hdmi-codec.h -index 9483c55f871b..7cf66a4c79fb 100644 +index 9483c55..7cf66a4 100644 --- a/include/sound/hdmi-codec.h +++ b/include/sound/hdmi-codec.h @@ -107,6 +107,8 @@ struct hdmi_codec_pdata { @@ -290,7 +290,7 @@ index 9483c55f871b..7cf66a4c79fb 100644 #endif /* __HDMI_CODEC_H__ */ diff --git a/sound/soc/codecs/hdmi-codec.c b/sound/soc/codecs/hdmi-codec.c -index d00734d31e04..4bf9ec7f6650 100644 +index fb2f0ac..bfb1519 100644 --- a/sound/soc/codecs/hdmi-codec.c +++ b/sound/soc/codecs/hdmi-codec.c @@ -285,6 +285,8 @@ struct hdmi_codec_priv { @@ -302,7 +302,7 @@ index d00734d31e04..4bf9ec7f6650 100644 }; static const struct snd_soc_dapm_widget hdmi_widgets[] = { -@@ -649,7 +651,6 @@ static int hdmi_codec_pcm_new(struct snd_soc_pcm_runtime *rtd, +@@ -648,7 +650,6 @@ static int hdmi_codec_pcm_new(struct snd_soc_pcm_runtime *rtd, { struct snd_soc_dai_driver *drv = dai->driver; struct hdmi_codec_priv *hcp = snd_soc_dai_get_drvdata(dai); @@ -310,7 +310,7 @@ index d00734d31e04..4bf9ec7f6650 100644 struct snd_kcontrol_new hdmi_eld_ctl = { .access = SNDRV_CTL_ELEM_ACCESS_READ | SNDRV_CTL_ELEM_ACCESS_VOLATILE, -@@ -678,12 +679,27 @@ static int hdmi_codec_pcm_new(struct snd_soc_pcm_runtime *rtd, +@@ -677,12 +678,27 @@ static int hdmi_codec_pcm_new(struct snd_soc_pcm_runtime *rtd, hcp->chmap_idx = HDMI_CODEC_CHMAP_IDX_UNKNOWN; /* add ELD ctl with the device number corresponding to the PCM stream */ @@ -342,10 +342,10 @@ index d00734d31e04..4bf9ec7f6650 100644 static int hdmi_dai_probe(struct snd_soc_dai *dai) { -- -2.20.0 +2.14.1 -From e6330c025b17045a1c050b85ac832a6ce5a9b3aa Mon Sep 17 00:00:00 2001 +From 2f1f2bdbc0f6d02235310e87c1de7a193dcda178 Mon Sep 17 00:00:00 2001 From: Jonas Karlman Date: Sun, 16 Dec 2018 12:56:33 +0100 Subject: [PATCH 07/15] drm: dw-hdmi: add dw_hdmi_update_eld() callback @@ -357,10 +357,10 @@ Signed-off-by: Jonas Karlman 2 files changed, 17 insertions(+) diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c -index 1f36c6944e60..3664a89eddad 100644 +index f13ac2c..a7040c1 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c -@@ -181,6 +181,7 @@ struct dw_hdmi { +@@ -188,6 +188,7 @@ struct dw_hdmi { struct regmap *regm; void (*enable_audio)(struct dw_hdmi *hdmi); void (*disable_audio)(struct dw_hdmi *hdmi); @@ -368,7 +368,7 @@ index 1f36c6944e60..3664a89eddad 100644 struct cec_notifier *cec_notifier; }; -@@ -606,6 +607,19 @@ void dw_hdmi_audio_disable(struct dw_hdmi *hdmi) +@@ -613,6 +614,19 @@ void dw_hdmi_audio_disable(struct dw_hdmi *hdmi) } EXPORT_SYMBOL_GPL(dw_hdmi_audio_disable); @@ -388,7 +388,7 @@ index 1f36c6944e60..3664a89eddad 100644 static bool hdmi_bus_fmt_is_rgb(unsigned int bus_format) { switch (bus_format) { -@@ -1914,6 +1928,7 @@ static int dw_hdmi_connector_update_edid(struct drm_connector *connector, +@@ -2068,6 +2082,7 @@ static int dw_hdmi_connector_update_edid(struct drm_connector *connector, ret = drm_add_edid_modes(connector, edid); else drm_edid_to_eld(connector, edid); @@ -397,10 +397,10 @@ index 1f36c6944e60..3664a89eddad 100644 } else { dev_dbg(hdmi->dev, "failed to get edid\n"); diff --git a/include/drm/bridge/dw_hdmi.h b/include/drm/bridge/dw_hdmi.h -index ccb5aa8468e0..e78be449e763 100644 +index 66e7077..323febe 100644 --- a/include/drm/bridge/dw_hdmi.h +++ b/include/drm/bridge/dw_hdmi.h -@@ -156,6 +156,8 @@ void dw_hdmi_setup_rx_sense(struct dw_hdmi *hdmi, bool hpd, bool rx_sense); +@@ -160,6 +160,8 @@ void dw_hdmi_set_sample_rate(struct dw_hdmi *hdmi, unsigned int rate); void dw_hdmi_audio_enable(struct dw_hdmi *hdmi); void dw_hdmi_audio_disable(struct dw_hdmi *hdmi); void dw_hdmi_set_high_tmds_clock_ratio(struct dw_hdmi *hdmi); @@ -410,10 +410,10 @@ index ccb5aa8468e0..e78be449e763 100644 /* PHY configuration */ void dw_hdmi_phy_i2c_set_addr(struct dw_hdmi *hdmi, u8 address); -- -2.20.0 +2.14.1 -From 43d6faaba7ff0d5d832f1642ea0ee6c87584e0f7 Mon Sep 17 00:00:00 2001 +From 8a20ea0cfb4c6e97d2ccde1fc77e1f4cdd03e5d2 Mon Sep 17 00:00:00 2001 From: Jonas Karlman Date: Sun, 16 Dec 2018 10:22:09 +0100 Subject: [PATCH 08/15] drm: dw-hdmi-i2s: add .get_eld callback for ALSA SoC @@ -422,12 +422,12 @@ Add get_eld() callback and call hdmi_codec_eld_notify() when ELD has changed. Signed-off-by: Jonas Karlman --- - .../gpu/drm/bridge/synopsys/dw-hdmi-audio.h | 1 + - .../drm/bridge/synopsys/dw-hdmi-i2s-audio.c | 36 ++++++++++++++++++- + drivers/gpu/drm/bridge/synopsys/dw-hdmi-audio.h | 1 + + .../gpu/drm/bridge/synopsys/dw-hdmi-i2s-audio.c | 36 +++++++++++++++++++++- 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi-audio.h b/drivers/gpu/drm/bridge/synopsys/dw-hdmi-audio.h -index 63b5756f463b..69b8a9734c34 100644 +index 63b5756..69b8a97 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi-audio.h +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi-audio.h @@ -14,6 +14,7 @@ struct dw_hdmi_audio_data { @@ -439,10 +439,10 @@ index 63b5756f463b..69b8a9734c34 100644 void (*write)(struct dw_hdmi *hdmi, u8 val, int offset); u8 (*read)(struct dw_hdmi *hdmi, int offset); diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi-i2s-audio.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi-i2s-audio.c -index 8f9c8a6b46de..609ebad4bd0b 100644 +index 5cbb71a..a397505 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi-i2s-audio.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi-i2s-audio.c -@@ -83,6 +83,32 @@ static void dw_hdmi_i2s_audio_shutdown(struct device *dev, void *data) +@@ -84,6 +84,32 @@ static void dw_hdmi_i2s_audio_shutdown(struct device *dev, void *data) hdmi_write(audio, HDMI_AUD_CONF0_SW_RESET, HDMI_AUD_CONF0); } @@ -475,7 +475,7 @@ index 8f9c8a6b46de..609ebad4bd0b 100644 static int dw_hdmi_i2s_get_dai_id(struct snd_soc_component *component, struct device_node *endpoint) { -@@ -106,16 +132,19 @@ static int dw_hdmi_i2s_get_dai_id(struct snd_soc_component *component, +@@ -107,16 +133,19 @@ static int dw_hdmi_i2s_get_dai_id(struct snd_soc_component *component, static struct hdmi_codec_ops dw_hdmi_i2s_ops = { .hw_params = dw_hdmi_i2s_hw_params, .audio_shutdown = dw_hdmi_i2s_audio_shutdown, @@ -496,7 +496,7 @@ index 8f9c8a6b46de..609ebad4bd0b 100644 pdata.ops = &dw_hdmi_i2s_ops; pdata.i2s = 1; pdata.max_i2s_channels = 6; -@@ -135,13 +164,18 @@ static int snd_dw_hdmi_probe(struct platform_device *pdev) +@@ -136,13 +165,18 @@ static int snd_dw_hdmi_probe(struct platform_device *pdev) dev_set_drvdata(&pdev->dev, platform); @@ -516,10 +516,10 @@ index 8f9c8a6b46de..609ebad4bd0b 100644 return 0; -- -2.20.0 +2.14.1 -From dc25172bb38b6e5a39c7254295bf73daf9296120 Mon Sep 17 00:00:00 2001 +From dcdde5c3641e7e92b8ead0624d548f918e126b2f Mon Sep 17 00:00:00 2001 From: Neil Armstrong Date: Mon, 2 Jul 2018 12:21:55 +0200 Subject: [PATCH 09/15] drm: bridge: dw-hdmi: Use AUTO CTS setup mode when @@ -527,14 +527,14 @@ Subject: [PATCH 09/15] drm: bridge: dw-hdmi: Use AUTO CTS setup mode when Signed-off-by: Neil Armstrong --- - drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 41 ++++++++++++++--------- + drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 41 ++++++++++++++++++++----------- 1 file changed, 26 insertions(+), 15 deletions(-) diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c -index 3664a89eddad..3b3834ff2506 100644 +index a7040c1..3f46522 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c -@@ -431,8 +431,12 @@ static void hdmi_set_cts_n(struct dw_hdmi *hdmi, unsigned int cts, +@@ -438,8 +438,12 @@ static void hdmi_set_cts_n(struct dw_hdmi *hdmi, unsigned int cts, /* nshift factor = 0 */ hdmi_modb(hdmi, 0, HDMI_AUD_CTS3_N_SHIFT_MASK, HDMI_AUD_CTS3); @@ -549,7 +549,7 @@ index 3664a89eddad..3b3834ff2506 100644 hdmi_writeb(hdmi, (cts >> 8) & 0xff, HDMI_AUD_CTS2); hdmi_writeb(hdmi, cts & 0xff, HDMI_AUD_CTS1); -@@ -502,24 +506,31 @@ static void hdmi_set_clk_regenerator(struct dw_hdmi *hdmi, +@@ -509,24 +513,31 @@ static void hdmi_set_clk_regenerator(struct dw_hdmi *hdmi, { unsigned long ftdms = pixel_clk; unsigned int n, cts; @@ -595,20 +595,20 @@ index 3664a89eddad..3b3834ff2506 100644 spin_lock_irq(&hdmi->audio_lock); hdmi->audio_n = n; -- -2.20.0 +2.14.1 -From fd248f45d63ab907ffe75b2889d5a3fa63b68039 Mon Sep 17 00:00:00 2001 +From e7b2f400507263f12872db06f4cd69bc80f62c2f Mon Sep 17 00:00:00 2001 From: Jonas Karlman Date: Sun, 25 Mar 2018 22:17:06 +0200 Subject: [PATCH 10/15] ASoC: hdmi-codec: fix channel allocation --- - sound/soc/codecs/hdmi-codec.c | 113 ++++++++++++++++------------------ + sound/soc/codecs/hdmi-codec.c | 113 +++++++++++++++++++----------------------- 1 file changed, 52 insertions(+), 61 deletions(-) diff --git a/sound/soc/codecs/hdmi-codec.c b/sound/soc/codecs/hdmi-codec.c -index 4bf9ec7f6650..dc84bfbe7e87 100644 +index bfb1519..47632a3 100644 --- a/sound/soc/codecs/hdmi-codec.c +++ b/sound/soc/codecs/hdmi-codec.c @@ -202,78 +202,69 @@ static const struct snd_pcm_chmap_elem hdmi_codec_8ch_chmaps[] = { @@ -743,23 +743,23 @@ index 4bf9ec7f6650..dc84bfbe7e87 100644 struct hdmi_codec_priv { -- -2.20.0 +2.14.1 -From c66fc8b2d97b6c03ab79791578a86c8eb4b099db Mon Sep 17 00:00:00 2001 +From 9ea978d398bedf15ffeec2102517f9faae94d82e Mon Sep 17 00:00:00 2001 From: Jonas Karlman Date: Tue, 10 Jul 2018 20:54:33 +0200 Subject: [PATCH 11/15] drm: dw-hdmi-i2s: add multi-channel lpcm support --- - .../gpu/drm/bridge/synopsys/dw-hdmi-audio.h | 1 + - .../drm/bridge/synopsys/dw-hdmi-i2s-audio.c | 75 ++++++++++++++++++- - drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 1 + - drivers/gpu/drm/bridge/synopsys/dw-hdmi.h | 24 ++++++ + drivers/gpu/drm/bridge/synopsys/dw-hdmi-audio.h | 1 + + .../gpu/drm/bridge/synopsys/dw-hdmi-i2s-audio.c | 75 +++++++++++++++++++++- + drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 1 + + drivers/gpu/drm/bridge/synopsys/dw-hdmi.h | 24 +++++++ 4 files changed, 98 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi-audio.h b/drivers/gpu/drm/bridge/synopsys/dw-hdmi-audio.h -index 69b8a9734c34..9e9cbf934d96 100644 +index 69b8a97..9e9cbf9 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi-audio.h +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi-audio.h @@ -18,6 +18,7 @@ struct dw_hdmi_i2s_audio_data { @@ -771,10 +771,10 @@ index 69b8a9734c34..9e9cbf934d96 100644 #endif diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi-i2s-audio.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi-i2s-audio.c -index 609ebad4bd0b..637ef1f567fc 100644 +index a397505..d0d32a9 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi-i2s-audio.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi-i2s-audio.c -@@ -32,6 +32,14 @@ static inline u8 hdmi_read(struct dw_hdmi_i2s_audio_data *audio, int offset) +@@ -33,6 +33,14 @@ static inline u8 hdmi_read(struct dw_hdmi_i2s_audio_data *audio, int offset) return audio->read(hdmi, offset); } @@ -789,7 +789,7 @@ index 609ebad4bd0b..637ef1f567fc 100644 static int dw_hdmi_i2s_hw_params(struct device *dev, void *data, struct hdmi_codec_daifmt *fmt, struct hdmi_codec_params *hparms) -@@ -41,6 +49,7 @@ static int dw_hdmi_i2s_hw_params(struct device *dev, void *data, +@@ -42,6 +50,7 @@ static int dw_hdmi_i2s_hw_params(struct device *dev, void *data, u8 conf0 = 0; u8 conf1 = 0; u8 inputclkfs = 0; @@ -797,7 +797,7 @@ index 609ebad4bd0b..637ef1f567fc 100644 /* it cares I2S only */ if ((fmt->fmt != HDMI_I2S) || -@@ -49,8 +58,23 @@ static int dw_hdmi_i2s_hw_params(struct device *dev, void *data, +@@ -50,8 +59,23 @@ static int dw_hdmi_i2s_hw_params(struct device *dev, void *data, return -EINVAL; } @@ -823,7 +823,7 @@ index 609ebad4bd0b..637ef1f567fc 100644 switch (hparms->sample_width) { case 16: -@@ -62,12 +86,56 @@ static int dw_hdmi_i2s_hw_params(struct device *dev, void *data, +@@ -63,12 +87,56 @@ static int dw_hdmi_i2s_hw_params(struct device *dev, void *data, break; } @@ -880,7 +880,7 @@ index 609ebad4bd0b..637ef1f567fc 100644 dw_hdmi_audio_enable(hdmi); return 0; -@@ -81,6 +149,7 @@ static void dw_hdmi_i2s_audio_shutdown(struct device *dev, void *data) +@@ -82,6 +150,7 @@ static void dw_hdmi_i2s_audio_shutdown(struct device *dev, void *data) dw_hdmi_audio_disable(hdmi); hdmi_write(audio, HDMI_AUD_CONF0_SW_RESET, HDMI_AUD_CONF0); @@ -888,7 +888,7 @@ index 609ebad4bd0b..637ef1f567fc 100644 } static void dw_hdmi_i2s_update_eld(struct device *dev, u8 *eld) -@@ -147,7 +216,7 @@ static int snd_dw_hdmi_probe(struct platform_device *pdev) +@@ -148,7 +217,7 @@ static int snd_dw_hdmi_probe(struct platform_device *pdev) pdata.ops = &dw_hdmi_i2s_ops; pdata.i2s = 1; @@ -898,10 +898,10 @@ index 609ebad4bd0b..637ef1f567fc 100644 memset(&pdevinfo, 0, sizeof(pdevinfo)); diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c -index 3b3834ff2506..cad4800f5480 100644 +index 3f46522..9718443 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c -@@ -2542,6 +2542,7 @@ __dw_hdmi_probe(struct platform_device *pdev, +@@ -2697,6 +2697,7 @@ __dw_hdmi_probe(struct platform_device *pdev, audio.hdmi = hdmi; audio.write = hdmi_writeb; audio.read = hdmi_readb; @@ -910,7 +910,7 @@ index 3b3834ff2506..cad4800f5480 100644 hdmi->disable_audio = dw_hdmi_i2s_audio_disable; diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.h b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.h -index 9d90eb9c46e5..760a087d2c68 100644 +index 3f3c616..26d2f1b 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.h +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.h @@ -162,6 +162,15 @@ @@ -929,7 +929,7 @@ index 9d90eb9c46e5..760a087d2c68 100644 #define HDMI_FC_DATACH0FILL 0x1070 #define HDMI_FC_DATACH1FILL 0x1071 #define HDMI_FC_DATACH2FILL 0x1072 -@@ -709,6 +718,8 @@ enum { +@@ -710,6 +719,8 @@ enum { /* HDMI_FC_AUDSCHNLS7 field values */ HDMI_FC_AUDSCHNLS7_ACCURACY_OFFSET = 4, HDMI_FC_AUDSCHNLS7_ACCURACY_MASK = 0x30, @@ -938,7 +938,7 @@ index 9d90eb9c46e5..760a087d2c68 100644 /* HDMI_FC_AUDSCHNLS8 field values */ HDMI_FC_AUDSCHNLS8_ORIGSAMPFREQ_MASK = 0xf0, -@@ -716,6 +727,15 @@ enum { +@@ -717,6 +728,15 @@ enum { HDMI_FC_AUDSCHNLS8_WORDLEGNTH_MASK = 0x0f, HDMI_FC_AUDSCHNLS8_WORDLEGNTH_OFFSET = 0, @@ -954,7 +954,7 @@ index 9d90eb9c46e5..760a087d2c68 100644 /* FC_AUDSCONF field values */ HDMI_FC_AUDSCONF_AUD_PACKET_SAMPFIT_MASK = 0xF0, HDMI_FC_AUDSCONF_AUD_PACKET_SAMPFIT_OFFSET = 4, -@@ -868,6 +888,9 @@ enum { +@@ -869,6 +889,9 @@ enum { /* AUD_CONF0 field values */ HDMI_AUD_CONF0_SW_RESET = 0x80, @@ -964,7 +964,7 @@ index 9d90eb9c46e5..760a087d2c68 100644 HDMI_AUD_CONF0_I2S_ALL_ENABLE = 0x2F, /* AUD_CONF1 field values */ -@@ -941,6 +964,7 @@ enum { +@@ -942,6 +965,7 @@ enum { HDMI_MC_CLKDIS_PIXELCLK_DISABLE = 0x1, /* MC_SWRSTZ field values */ @@ -973,10 +973,10 @@ index 9d90eb9c46e5..760a087d2c68 100644 /* MC_FLOWCTRL field values */ -- -2.20.0 +2.14.1 -From c2f0a0cfa278e061fbfd3b957603e5f41b525043 Mon Sep 17 00:00:00 2001 +From 3996b779435bf09fd5f02b9f8bf08f3d1b42adeb Mon Sep 17 00:00:00 2001 From: Jonas Karlman Date: Mon, 9 Jul 2018 21:25:15 +0200 Subject: [PATCH 12/15] drm: dw-hdmi: call hdmi_set_cts_n after clock is @@ -987,10 +987,10 @@ Subject: [PATCH 12/15] drm: dw-hdmi: call hdmi_set_cts_n after clock is 1 file changed, 5 insertions(+) diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c -index cad4800f5480..f955a7c49c05 100644 +index 9718443..09fdc9f 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c -@@ -571,6 +571,11 @@ static void hdmi_enable_audio_clk(struct dw_hdmi *hdmi, bool enable) +@@ -578,6 +578,11 @@ static void hdmi_enable_audio_clk(struct dw_hdmi *hdmi, bool enable) else hdmi->mc_clkdis |= HDMI_MC_CLKDIS_AUDCLK_DISABLE; hdmi_writeb(hdmi, hdmi->mc_clkdis, HDMI_MC_CLKDIS); @@ -1003,20 +1003,20 @@ index cad4800f5480..f955a7c49c05 100644 static void dw_hdmi_ahb_audio_enable(struct dw_hdmi *hdmi) -- -2.20.0 +2.14.1 -From 9df27c0a0944343f565607bd8389222b18f1f2cc Mon Sep 17 00:00:00 2001 +From 76dda0ac795fd63a173c7bcf2b257291d3a8d724 Mon Sep 17 00:00:00 2001 From: Marcus Cooper Date: Sun, 16 Dec 2018 15:04:16 +0100 Subject: [PATCH 13/15] ASoC: sun4i-i2s: multichannel updates --- - sound/soc/sunxi/sun4i-i2s.c | 394 +++++++++++++++++++++++++----------- - 1 file changed, 281 insertions(+), 113 deletions(-) + sound/soc/sunxi/sun4i-i2s.c | 396 +++++++++++++++++++++++++++++++------------- + 1 file changed, 280 insertions(+), 116 deletions(-) diff --git a/sound/soc/sunxi/sun4i-i2s.c b/sound/soc/sunxi/sun4i-i2s.c -index d5ec1a20499d..2e3fc596ab64 100644 +index bc128e2..2e3fc59 100644 --- a/sound/soc/sunxi/sun4i-i2s.c +++ b/sound/soc/sunxi/sun4i-i2s.c @@ -27,10 +27,11 @@ @@ -1032,15 +1032,6 @@ index d5ec1a20499d..2e3fc596ab64 100644 #define SUN4I_I2S_CTRL_TX_EN BIT(2) #define SUN4I_I2S_CTRL_RX_EN BIT(1) #define SUN4I_I2S_CTRL_GL_EN BIT(0) -@@ -110,7 +111,7 @@ - - #define SUN8I_I2S_TX_CHAN_MAP_REG 0x44 - #define SUN8I_I2S_TX_CHAN_SEL_REG 0x34 --#define SUN8I_I2S_TX_CHAN_OFFSET_MASK GENMASK(13, 11) -+#define SUN8I_I2S_TX_CHAN_OFFSET_MASK GENMASK(13, 12) - #define SUN8I_I2S_TX_CHAN_OFFSET(offset) (offset << 12) - #define SUN8I_I2S_TX_CHAN_EN_MASK GENMASK(11, 4) - #define SUN8I_I2S_TX_CHAN_EN(num_chan) (((1 << num_chan) - 1) << 4) @@ -129,15 +130,16 @@ * @has_chsel_offset: SoC uses offset for selecting dai operational mode. * @reg_offset_txdata: offset of the tx fifo. @@ -1501,7 +1492,7 @@ index d5ec1a20499d..2e3fc596ab64 100644 break; case SND_SOC_DAIFMT_LEFT_J: val = SUN4I_I2S_FMT0_FMT_LEFT_J; -@@ -454,12 +564,8 @@ static int sun4i_i2s_set_fmt(struct snd_soc_dai *dai, unsigned int fmt) +@@ -454,16 +564,8 @@ static int sun4i_i2s_set_fmt(struct snd_soc_dai *dai, unsigned int fmt) * i2s shares the same setting with the LJ format. Increment * val so that the bit to value to write is correct. */ @@ -1511,11 +1502,15 @@ index d5ec1a20499d..2e3fc596ab64 100644 - /* blck offset determines whether i2s or LJ */ - regmap_update_bits(i2s->regmap, SUN8I_I2S_TX_CHAN_SEL_REG, - SUN8I_I2S_TX_CHAN_OFFSET_MASK, +- SUN8I_I2S_TX_CHAN_OFFSET(offset)); +- +- regmap_update_bits(i2s->regmap, SUN8I_I2S_RX_CHAN_SEL_REG, +- SUN8I_I2S_TX_CHAN_OFFSET_MASK, - SUN8I_I2S_TX_CHAN_OFFSET(offset)); } regmap_field_write(i2s->field_fmt_mode, val); -@@ -496,10 +602,12 @@ static int sun4i_i2s_set_fmt(struct snd_soc_dai *dai, unsigned int fmt) +@@ -500,10 +602,12 @@ static int sun4i_i2s_set_fmt(struct snd_soc_dai *dai, unsigned int fmt) case SND_SOC_DAIFMT_CBS_CFS: /* BCLK and LRCLK master */ val = SUN4I_I2S_CTRL_MODE_MASTER; @@ -1528,7 +1523,7 @@ index d5ec1a20499d..2e3fc596ab64 100644 break; default: dev_err(dai->dev, "Unsupported slave setting: %d\n", -@@ -520,10 +628,12 @@ static int sun4i_i2s_set_fmt(struct snd_soc_dai *dai, unsigned int fmt) +@@ -524,10 +628,12 @@ static int sun4i_i2s_set_fmt(struct snd_soc_dai *dai, unsigned int fmt) /* BCLK and LRCLK master */ val = SUN8I_I2S_CTRL_BCLK_OUT | SUN8I_I2S_CTRL_LRCK_OUT; @@ -1541,7 +1536,7 @@ index d5ec1a20499d..2e3fc596ab64 100644 break; default: dev_err(dai->dev, "Unsupported slave setting: %d\n", -@@ -542,6 +652,7 @@ static int sun4i_i2s_set_fmt(struct snd_soc_dai *dai, unsigned int fmt) +@@ -546,6 +652,7 @@ static int sun4i_i2s_set_fmt(struct snd_soc_dai *dai, unsigned int fmt) SUN4I_I2S_FIFO_CTRL_RX_MODE_MASK, SUN4I_I2S_FIFO_CTRL_TX_MODE(1) | SUN4I_I2S_FIFO_CTRL_RX_MODE(1)); @@ -1549,7 +1544,7 @@ index d5ec1a20499d..2e3fc596ab64 100644 return 0; } -@@ -564,6 +675,11 @@ static void sun4i_i2s_start_capture(struct sun4i_i2s *i2s) +@@ -568,6 +675,11 @@ static void sun4i_i2s_start_capture(struct sun4i_i2s *i2s) regmap_update_bits(i2s->regmap, SUN4I_I2S_DMA_INT_CTRL_REG, SUN4I_I2S_DMA_INT_CTRL_RX_DRQ_EN, SUN4I_I2S_DMA_INT_CTRL_RX_DRQ_EN); @@ -1561,7 +1556,7 @@ index d5ec1a20499d..2e3fc596ab64 100644 } static void sun4i_i2s_start_playback(struct sun4i_i2s *i2s) -@@ -657,11 +773,25 @@ static int sun4i_i2s_set_sysclk(struct snd_soc_dai *dai, int clk_id, +@@ -661,11 +773,25 @@ static int sun4i_i2s_set_sysclk(struct snd_soc_dai *dai, int clk_id, return 0; } @@ -1587,7 +1582,7 @@ index d5ec1a20499d..2e3fc596ab64 100644 }; static int sun4i_i2s_dai_probe(struct snd_soc_dai *dai) -@@ -677,6 +807,13 @@ static int sun4i_i2s_dai_probe(struct snd_soc_dai *dai) +@@ -681,6 +807,13 @@ static int sun4i_i2s_dai_probe(struct snd_soc_dai *dai) return 0; } @@ -1601,7 +1596,7 @@ index d5ec1a20499d..2e3fc596ab64 100644 static struct snd_soc_dai_driver sun4i_i2s_dai = { .probe = sun4i_i2s_dai_probe, .capture = { -@@ -684,14 +821,14 @@ static struct snd_soc_dai_driver sun4i_i2s_dai = { +@@ -688,14 +821,14 @@ static struct snd_soc_dai_driver sun4i_i2s_dai = { .channels_min = 2, .channels_max = 2, .rates = SNDRV_PCM_RATE_8000_192000, @@ -1618,7 +1613,7 @@ index d5ec1a20499d..2e3fc596ab64 100644 }, .ops = &sun4i_i2s_dai_ops, .symmetric_rates = 1, -@@ -887,6 +1024,7 @@ static const struct sun4i_i2s_quirks sun4i_a10_i2s_quirks = { +@@ -891,6 +1024,7 @@ static const struct sun4i_i2s_quirks sun4i_a10_i2s_quirks = { .field_fmt_lrclk = REG_FIELD(SUN4I_I2S_FMT0_REG, 7, 7), .has_slave_select_bit = true, .field_fmt_mode = REG_FIELD(SUN4I_I2S_FMT0_REG, 0, 1), @@ -1626,7 +1621,7 @@ index d5ec1a20499d..2e3fc596ab64 100644 .field_txchanmap = REG_FIELD(SUN4I_I2S_TX_CHAN_MAP_REG, 0, 31), .field_rxchanmap = REG_FIELD(SUN4I_I2S_RX_CHAN_MAP_REG, 0, 31), .field_txchansel = REG_FIELD(SUN4I_I2S_TX_CHAN_SEL_REG, 0, 2), -@@ -904,6 +1042,7 @@ static const struct sun4i_i2s_quirks sun6i_a31_i2s_quirks = { +@@ -908,6 +1042,7 @@ static const struct sun4i_i2s_quirks sun6i_a31_i2s_quirks = { .field_fmt_lrclk = REG_FIELD(SUN4I_I2S_FMT0_REG, 7, 7), .has_slave_select_bit = true, .field_fmt_mode = REG_FIELD(SUN4I_I2S_FMT0_REG, 0, 1), @@ -1634,7 +1629,7 @@ index d5ec1a20499d..2e3fc596ab64 100644 .field_txchanmap = REG_FIELD(SUN4I_I2S_TX_CHAN_MAP_REG, 0, 31), .field_rxchanmap = REG_FIELD(SUN4I_I2S_RX_CHAN_MAP_REG, 0, 31), .field_txchansel = REG_FIELD(SUN4I_I2S_TX_CHAN_SEL_REG, 0, 2), -@@ -931,8 +1070,6 @@ static const struct sun4i_i2s_quirks sun8i_h3_i2s_quirks = { +@@ -935,8 +1070,6 @@ static const struct sun4i_i2s_quirks sun8i_h3_i2s_quirks = { .has_reset = true, .reg_offset_txdata = SUN8I_I2S_FIFO_TX_REG, .sun4i_i2s_regmap = &sun8i_i2s_regmap_config, @@ -1643,7 +1638,7 @@ index d5ec1a20499d..2e3fc596ab64 100644 .fmt_offset = 3, .has_fmt_set_lrck_period = true, .has_chcfg = true, -@@ -944,6 +1081,7 @@ static const struct sun4i_i2s_quirks sun8i_h3_i2s_quirks = { +@@ -948,6 +1081,7 @@ static const struct sun4i_i2s_quirks sun8i_h3_i2s_quirks = { .field_fmt_bclk = REG_FIELD(SUN4I_I2S_FMT0_REG, 7, 7), .field_fmt_lrclk = REG_FIELD(SUN4I_I2S_FMT0_REG, 19, 19), .field_fmt_mode = REG_FIELD(SUN4I_I2S_CTRL_REG, 4, 5), @@ -1651,7 +1646,7 @@ index d5ec1a20499d..2e3fc596ab64 100644 .field_txchanmap = REG_FIELD(SUN8I_I2S_TX_CHAN_MAP_REG, 0, 31), .field_rxchanmap = REG_FIELD(SUN8I_I2S_RX_CHAN_MAP_REG, 0, 31), .field_txchansel = REG_FIELD(SUN8I_I2S_TX_CHAN_SEL_REG, 0, 2), -@@ -961,6 +1099,7 @@ static const struct sun4i_i2s_quirks sun50i_a64_codec_i2s_quirks = { +@@ -965,6 +1099,7 @@ static const struct sun4i_i2s_quirks sun50i_a64_codec_i2s_quirks = { .field_fmt_bclk = REG_FIELD(SUN4I_I2S_FMT0_REG, 6, 6), .field_fmt_lrclk = REG_FIELD(SUN4I_I2S_FMT0_REG, 7, 7), .field_fmt_mode = REG_FIELD(SUN4I_I2S_FMT0_REG, 0, 1), @@ -1659,7 +1654,7 @@ index d5ec1a20499d..2e3fc596ab64 100644 .field_txchanmap = REG_FIELD(SUN4I_I2S_TX_CHAN_MAP_REG, 0, 31), .field_rxchanmap = REG_FIELD(SUN4I_I2S_RX_CHAN_MAP_REG, 0, 31), .field_txchansel = REG_FIELD(SUN4I_I2S_TX_CHAN_SEL_REG, 0, 2), -@@ -1006,6 +1145,12 @@ static int sun4i_i2s_init_regmap_fields(struct device *dev, +@@ -1010,6 +1145,12 @@ static int sun4i_i2s_init_regmap_fields(struct device *dev, if (IS_ERR(i2s->field_fmt_mode)) return PTR_ERR(i2s->field_fmt_mode); @@ -1672,7 +1667,7 @@ index d5ec1a20499d..2e3fc596ab64 100644 i2s->field_txchanmap = devm_regmap_field_alloc(dev, i2s->regmap, i2s->variant->field_txchanmap); -@@ -1033,9 +1178,10 @@ static int sun4i_i2s_init_regmap_fields(struct device *dev, +@@ -1037,9 +1178,10 @@ static int sun4i_i2s_init_regmap_fields(struct device *dev, static int sun4i_i2s_probe(struct platform_device *pdev) { struct sun4i_i2s *i2s; @@ -1684,7 +1679,7 @@ index d5ec1a20499d..2e3fc596ab64 100644 i2s = devm_kzalloc(&pdev->dev, sizeof(*i2s), GFP_KERNEL); if (!i2s) -@@ -1102,6 +1248,28 @@ static int sun4i_i2s_probe(struct platform_device *pdev) +@@ -1106,6 +1248,28 @@ static int sun4i_i2s_probe(struct platform_device *pdev) i2s->capture_dma_data.addr = res->start + SUN4I_I2S_FIFO_RX_REG; i2s->capture_dma_data.maxburst = 8; @@ -1713,7 +1708,7 @@ index d5ec1a20499d..2e3fc596ab64 100644 pm_runtime_enable(&pdev->dev); if (!pm_runtime_enabled(&pdev->dev)) { ret = sun4i_i2s_runtime_resume(&pdev->dev); -@@ -1111,7 +1279,7 @@ static int sun4i_i2s_probe(struct platform_device *pdev) +@@ -1115,7 +1279,7 @@ static int sun4i_i2s_probe(struct platform_device *pdev) ret = devm_snd_soc_register_component(&pdev->dev, &sun4i_i2s_component, @@ -1723,10 +1718,10 @@ index d5ec1a20499d..2e3fc596ab64 100644 dev_err(&pdev->dev, "Could not register DAI\n"); goto err_suspend; -- -2.20.0 +2.14.1 -From a5a9334b7830f1ef8d3f10221c067aeeaa24b12f Mon Sep 17 00:00:00 2001 +From 7ddf707fed9780e0c72b4750a4aab5e68160493e Mon Sep 17 00:00:00 2001 From: Jonas Karlman Date: Sun, 16 Dec 2018 15:00:59 +0100 Subject: [PATCH 14/15] ASoC: sun4i-i2s: multichannel updates fixes @@ -1736,7 +1731,7 @@ Subject: [PATCH 14/15] ASoC: sun4i-i2s: multichannel updates fixes 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/sound/soc/sunxi/sun4i-i2s.c b/sound/soc/sunxi/sun4i-i2s.c -index 2e3fc596ab64..c0805bd928bf 100644 +index 2e3fc59..c0805bd 100644 --- a/sound/soc/sunxi/sun4i-i2s.c +++ b/sound/soc/sunxi/sun4i-i2s.c @@ -451,19 +451,19 @@ static int sun4i_i2s_hw_params(struct snd_pcm_substream *substream, @@ -1832,10 +1827,10 @@ index 2e3fc596ab64..c0805bd928bf 100644 ret = clk_prepare_enable(i2s->mod_clk); if (ret) { -- -2.20.0 +2.14.1 -From 7319e6b5ff8af1e23a669c235d5e1a3b165d8cd6 Mon Sep 17 00:00:00 2001 +From 774d913eec1ba16c494dafefc626fa4fbd98fdac Mon Sep 17 00:00:00 2001 From: Jonas Karlman Date: Sun, 16 Dec 2018 20:31:25 +0100 Subject: [PATCH 15/15] fixup! drm: dw-hdmi: add dw_hdmi_update_eld() callback @@ -1845,10 +1840,10 @@ Subject: [PATCH 15/15] fixup! drm: dw-hdmi: add dw_hdmi_update_eld() callback 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sound/soc/codecs/hdmi-codec.c b/sound/soc/codecs/hdmi-codec.c -index dc84bfbe7e87..eac79b2e123c 100644 +index 47632a3..f5072dc 100644 --- a/sound/soc/codecs/hdmi-codec.c +++ b/sound/soc/codecs/hdmi-codec.c -@@ -684,7 +684,9 @@ void hdmi_codec_eld_notify(struct device *dev) +@@ -683,7 +683,9 @@ void hdmi_codec_eld_notify(struct device *dev) struct hdmi_codec_priv *hcp = dev_get_drvdata(dev); struct snd_ctl_elem_id id; @@ -1860,5 +1855,5 @@ index dc84bfbe7e87..eac79b2e123c 100644 id = hcp->kctl->id; -- -2.20.0 +2.14.1