From 4d318a2eb3b3f1755ade27f47845187937424a42 Mon Sep 17 00:00:00 2001 From: MilhouseVH Date: Tue, 1 Nov 2016 17:54:40 +0000 Subject: [PATCH] linux: update Cherry Trail support --- .../linux-030-BYT-CHT-SOC-audio-support.patch | 272 +++++++++++------- 1 file changed, 175 insertions(+), 97 deletions(-) diff --git a/projects/Generic/patches/linux/linux-030-BYT-CHT-SOC-audio-support.patch b/projects/Generic/patches/linux/linux-030-BYT-CHT-SOC-audio-support.patch index 9d5d1c5b17..8d15755afb 100644 --- a/projects/Generic/patches/linux/linux-030-BYT-CHT-SOC-audio-support.patch +++ b/projects/Generic/patches/linux/linux-030-BYT-CHT-SOC-audio-support.patch @@ -1,34 +1,7 @@ -From 982a9c5bbe16cabc297e75d6d9e8d2926f5641b8 Mon Sep 17 00:00:00 2001 -From: Pierre-Louis Bossart -Date: Wed, 2 Mar 2016 14:30:44 -0600 -Subject: [PATCH 01/12] drm: i915: remove intel_hdmi variable declaration - -'intel_hdmi' variable is redeclared, use same variable declared in -function scope. - -Signed-off-by: Pierre-Louis Bossart ---- - drivers/gpu/drm/i915/intel_hdmi.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c -index 4df9f38..34e497f 100644 ---- a/drivers/gpu/drm/i915/intel_hdmi.c -+++ b/drivers/gpu/drm/i915/intel_hdmi.c -@@ -1496,7 +1496,7 @@ intel_hdmi_detect(struct drm_connector *connector, bool force) - intel_hdmi_unset_edid(connector); - - if (intel_hdmi_set_edid(connector, live_status)) { -- struct intel_hdmi *intel_hdmi = intel_attached_hdmi(connector); -+ intel_hdmi = intel_attached_hdmi(connector); - - hdmi_to_dig_port(intel_hdmi)->base.type = INTEL_OUTPUT_HDMI; - status = connector_status_connected; - -From 9a4bb140fbca791441bcf93ddf0a2ae062bc9945 Mon Sep 17 00:00:00 2001 +From 3902239e5cff2b4df1fe67e6b4bc362ca022ab51 Mon Sep 17 00:00:00 2001 From: Pierre-Louis Bossart Date: Tue, 1 Mar 2016 16:25:04 -0600 -Subject: [PATCH 02/12] drm/i915: Add headers for non-HDAudio HDMI interface +Subject: [PATCH 01/12] drm/i915: Add headers for non-HDAudio HDMI interface Add header files for interface available on Baytrail and CherryTrail @@ -181,18 +154,18 @@ index 0000000..165bba5 + +#endif /* __HDMI_AUDIO_IF_H */ diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h -index f68c789..4c682fae 100644 +index 8b9ee4e..12582b1 100644 --- a/drivers/gpu/drm/i915/i915_drv.h +++ b/drivers/gpu/drm/i915/i915_drv.h -@@ -63,6 +63,7 @@ - #include "i915_gem_render_state.h" +@@ -64,6 +64,7 @@ + #include "i915_gem_request.h" #include "intel_gvt.h" +#include "hdmi_audio_if.h" /* General customization: */ -@@ -1208,6 +1209,18 @@ struct intel_gen6_power_mgmt { +@@ -1236,6 +1237,18 @@ struct intel_gen6_power_mgmt { struct mutex hw_lock; }; @@ -211,7 +184,7 @@ index f68c789..4c682fae 100644 /* defined intel_pm.c */ extern spinlock_t mchdev_lock; -@@ -2066,6 +2079,19 @@ struct drm_i915_private { +@@ -2081,6 +2094,19 @@ struct drm_i915_private { struct intel_encoder *dig_port_map[I915_MAX_PORTS]; @@ -231,7 +204,7 @@ index f68c789..4c682fae 100644 /* * NOTE: This is the dri1/ums dungeon, don't add stuff here. Your patch * will be rejected. Instead look for a better place. -@@ -3903,6 +3929,11 @@ int intel_freq_opcode(struct drm_i915_private *dev_priv, int val); +@@ -3761,6 +3787,11 @@ int intel_freq_opcode(struct drm_i915_private *dev_priv, int val); } while (upper != old_upper && loop++ < 2); \ (u64)upper << 32 | lower; }) @@ -244,7 +217,7 @@ index f68c789..4c682fae 100644 #define POSTING_READ16(reg) (void)I915_READ16_NOTRACE(reg) diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h -index bf2cad3..bb0378f2d 100644 +index 70d9616..72ea5a8 100644 --- a/drivers/gpu/drm/i915/i915_reg.h +++ b/drivers/gpu/drm/i915/i915_reg.h @@ -2131,7 +2131,25 @@ enum skl_disp_power_wells { @@ -292,10 +265,10 @@ index bf2cad3..bb0378f2d 100644 #define PORT_DFT_I9XX _MMIO(0x61150) #define DC_BALANCE_RESET (1 << 25) diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h -index ff399b9..83915b1 100644 +index a19ec06..b781c0b 100644 --- a/drivers/gpu/drm/i915/intel_drv.h +++ b/drivers/gpu/drm/i915/intel_drv.h -@@ -796,6 +796,14 @@ struct cxsr_latency { +@@ -824,6 +824,14 @@ struct cxsr_latency { #define to_intel_plane_state(x) container_of(x, struct intel_plane_state, base) #define intel_fb_obj(x) (x ? to_intel_framebuffer(x)->obj : NULL) @@ -310,7 +283,7 @@ index ff399b9..83915b1 100644 struct intel_hdmi { i915_reg_t hdmi_reg; int ddc_bus; -@@ -811,6 +819,9 @@ struct intel_hdmi { +@@ -839,6 +847,9 @@ struct intel_hdmi { bool rgb_quant_range_selectable; enum hdmi_picture_aspect aspect_ratio; struct intel_connector *attached_connector; @@ -320,7 +293,7 @@ index ff399b9..83915b1 100644 void (*write_infoframe)(struct drm_encoder *encoder, enum hdmi_infoframe_type type, const void *frame, ssize_t len); -@@ -1263,6 +1274,8 @@ intel_rotation_90_or_270(unsigned int rotation) +@@ -1293,6 +1304,8 @@ intel_rotation_90_or_270(unsigned int rotation) void intel_create_rotation_property(struct drm_device *dev, struct intel_plane *plane); @@ -330,10 +303,10 @@ index ff399b9..83915b1 100644 void assert_pch_transcoder_disabled(struct drm_i915_private *dev_priv, enum pipe pipe); -From 0aca8e42f07b0f84970a39d7f91b33a9899001a9 Mon Sep 17 00:00:00 2001 +From ea1770285c030c114d62204799ef0b583fcd7b12 Mon Sep 17 00:00:00 2001 From: Pierre-Louis Bossart Date: Tue, 1 Mar 2016 16:25:04 -0600 -Subject: [PATCH 03/12] drm/i915: changes for non-HDAudio HDMI interface +Subject: [PATCH 02/12] drm/i915: changes for non-HDAudio HDMI interface Changes to existing code for interface available on Baytrail and CherryTrail @@ -359,16 +332,16 @@ Signed-off-by: David Henningsson Signed-off-by: Pierre-Louis Bossart Signed-off-by: Toyo Abe --- - drivers/gpu/drm/i915/i915_irq.c | 169 +++++++++++++++++++++++++++- - drivers/gpu/drm/i915/intel_display.c | 100 +++++++++++++++++ - drivers/gpu/drm/i915/intel_hdmi.c | 212 ++++++++++++++++++++++++++++++++++- - 3 files changed, 478 insertions(+), 3 deletions(-) + drivers/gpu/drm/i915/i915_irq.c | 169 ++++++++++++++++++++++++++- + drivers/gpu/drm/i915/intel_display.c | 100 ++++++++++++++++ + drivers/gpu/drm/i915/intel_hdmi.c | 215 ++++++++++++++++++++++++++++++++++- + 3 files changed, 480 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c -index 1c2aec3..93ad21e 100644 +index 3fc286c..82ff6ed 100644 --- a/drivers/gpu/drm/i915/i915_irq.c +++ b/drivers/gpu/drm/i915/i915_irq.c -@@ -587,6 +587,42 @@ i915_disable_pipestat(struct drm_i915_private *dev_priv, enum pipe pipe, +@@ -593,6 +593,42 @@ i915_disable_pipestat(struct drm_i915_private *dev_priv, enum pipe pipe, __i915_disable_pipestat(dev_priv, pipe, enable_mask, status_mask); } @@ -411,7 +384,7 @@ index 1c2aec3..93ad21e 100644 /** * i915_enable_asle_pipestat - enable ASLE pipestat for OpRegion * @dev_priv: i915 device private -@@ -1618,6 +1654,24 @@ static bool intel_pipe_handle_vblank(struct drm_i915_private *dev_priv, +@@ -1617,6 +1653,24 @@ static bool intel_pipe_handle_vblank(struct drm_i915_private *dev_priv, return ret; } @@ -436,7 +409,7 @@ index 1c2aec3..93ad21e 100644 static void valleyview_pipestat_irq_ack(struct drm_i915_private *dev_priv, u32 iir, u32 pipe_stats[I915_MAX_PIPES]) { -@@ -1817,6 +1871,23 @@ static irqreturn_t valleyview_irq_handler(int irq, void *arg) +@@ -1816,6 +1870,23 @@ static irqreturn_t valleyview_irq_handler(int irq, void *arg) i9xx_hpd_irq_handler(dev_priv, hotplug_status); valleyview_pipestat_irq_handler(dev_priv, pipe_stats); @@ -460,7 +433,7 @@ index 1c2aec3..93ad21e 100644 } while (0); enable_rpm_wakeref_asserts(dev_priv); -@@ -1894,6 +1965,23 @@ static irqreturn_t cherryview_irq_handler(int irq, void *arg) +@@ -1893,6 +1964,23 @@ static irqreturn_t cherryview_irq_handler(int irq, void *arg) i9xx_hpd_irq_handler(dev_priv, hotplug_status); valleyview_pipestat_irq_handler(dev_priv, pipe_stats); @@ -484,7 +457,7 @@ index 1c2aec3..93ad21e 100644 } while (0); enable_rpm_wakeref_asserts(dev_priv); -@@ -2803,6 +2891,72 @@ static void gen8_disable_vblank(struct drm_device *dev, unsigned int pipe) +@@ -2798,6 +2886,72 @@ static void gen8_disable_vblank(struct drm_device *dev, unsigned int pipe) spin_unlock_irqrestore(&dev_priv->irq_lock, irqflags); } @@ -555,9 +528,9 @@ index 1c2aec3..93ad21e 100644 +} + static bool - ring_idle(struct intel_engine_cs *engine, u32 seqno) + ipehr_is_semaphore_wait(struct intel_engine_cs *engine, u32 ipehr) { -@@ -3293,7 +3447,8 @@ static void vlv_display_irq_postinstall(struct drm_i915_private *dev_priv) +@@ -3263,7 +3417,8 @@ static void vlv_display_irq_postinstall(struct drm_i915_private *dev_priv) u32 pipestat_mask; u32 enable_mask; enum pipe pipe; @@ -567,7 +540,7 @@ index 1c2aec3..93ad21e 100644 pipestat_mask = PLANE_FLIP_DONE_INT_STATUS_VLV | PIPE_CRC_DONE_INTERRUPT_STATUS; -@@ -3307,6 +3462,18 @@ static void vlv_display_irq_postinstall(struct drm_i915_private *dev_priv) +@@ -3277,6 +3432,18 @@ static void vlv_display_irq_postinstall(struct drm_i915_private *dev_priv) if (IS_CHERRYVIEW(dev_priv)) enable_mask |= I915_DISPLAY_PIPE_C_EVENT_INTERRUPT; @@ -587,10 +560,10 @@ index 1c2aec3..93ad21e 100644 dev_priv->irq_mask = ~enable_mask; diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c -index 175595f..d4499ff 100644 +index fbcfed6..73e887c 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c -@@ -8096,6 +8096,8 @@ static int chv_crtc_compute_clock(struct intel_crtc *crtc, +@@ -8613,6 +8613,8 @@ static int chv_crtc_compute_clock(struct intel_crtc *crtc, { int refclk = 100000; const struct intel_limit *limit = &intel_limits_chv; @@ -599,7 +572,7 @@ index 175595f..d4499ff 100644 memset(&crtc_state->dpll_hw_state, 0, sizeof(crtc_state->dpll_hw_state)); -@@ -8109,6 +8111,16 @@ static int chv_crtc_compute_clock(struct intel_crtc *crtc, +@@ -8626,6 +8628,16 @@ static int chv_crtc_compute_clock(struct intel_crtc *crtc, chv_compute_dpll(crtc, crtc_state); @@ -616,7 +589,7 @@ index 175595f..d4499ff 100644 return 0; } -@@ -8117,6 +8129,8 @@ static int vlv_crtc_compute_clock(struct intel_crtc *crtc, +@@ -8634,6 +8646,8 @@ static int vlv_crtc_compute_clock(struct intel_crtc *crtc, { int refclk = 100000; const struct intel_limit *limit = &intel_limits_vlv; @@ -625,7 +598,7 @@ index 175595f..d4499ff 100644 memset(&crtc_state->dpll_hw_state, 0, sizeof(crtc_state->dpll_hw_state)); -@@ -8130,6 +8144,16 @@ static int vlv_crtc_compute_clock(struct intel_crtc *crtc, +@@ -8647,6 +8661,16 @@ static int vlv_crtc_compute_clock(struct intel_crtc *crtc, vlv_compute_dpll(crtc, crtc_state); @@ -642,7 +615,7 @@ index 175595f..d4499ff 100644 return 0; } -@@ -14913,6 +14937,82 @@ static void intel_setup_outputs(struct drm_device *dev) +@@ -15565,6 +15589,82 @@ static void intel_setup_outputs(struct drm_device *dev) drm_helper_move_panel_connectors_to_head(dev); } @@ -726,7 +699,7 @@ index 175595f..d4499ff 100644 { struct drm_device *dev = fb->dev; diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c -index 34e497f..67cbf17 100644 +index f40a35f..8ddddce 100644 --- a/drivers/gpu/drm/i915/intel_hdmi.c +++ b/drivers/gpu/drm/i915/intel_hdmi.c @@ -38,6 +38,8 @@ @@ -738,7 +711,7 @@ index 34e497f..67cbf17 100644 static struct drm_device *intel_hdmi_to_dev(struct intel_hdmi *intel_hdmi) { return hdmi_to_dig_port(intel_hdmi)->base.base.dev; -@@ -1461,6 +1463,124 @@ intel_hdmi_set_edid(struct drm_connector *connector, bool force) +@@ -1483,11 +1485,132 @@ intel_hdmi_set_edid(struct drm_connector *connector) return connected; } @@ -863,16 +836,24 @@ index 34e497f..67cbf17 100644 static enum drm_connector_status intel_hdmi_detect(struct drm_connector *connector, bool force) { -@@ -1469,6 +1589,8 @@ intel_hdmi_detect(struct drm_connector *connector, bool force) + enum drm_connector_status status; struct drm_i915_private *dev_priv = to_i915(connector->dev); - bool live_status = false; - unsigned int try; + bool inform_audio = false; + struct drm_device *dev = connector->dev; ++ struct intel_hdmi *intel_hdmi; DRM_DEBUG_KMS("[CONNECTOR:%d:%s]\n", connector->base.id, connector->name); -@@ -1505,6 +1627,31 @@ intel_hdmi_detect(struct drm_connector *connector, bool force) +@@ -1497,7 +1620,7 @@ intel_hdmi_detect(struct drm_connector *connector, bool force) + intel_hdmi_unset_edid(connector); + + if (intel_hdmi_set_edid(connector)) { +- struct intel_hdmi *intel_hdmi = intel_attached_hdmi(connector); ++ intel_hdmi = intel_attached_hdmi(connector); + + hdmi_to_dig_port(intel_hdmi)->base.type = INTEL_OUTPUT_HDMI; + status = connector_status_connected; +@@ -1506,6 +1629,31 @@ intel_hdmi_detect(struct drm_connector *connector, bool force) intel_display_power_put(dev_priv, POWER_DOMAIN_GMBUS); @@ -904,7 +885,7 @@ index 34e497f..67cbf17 100644 return status; } -@@ -1528,12 +1675,29 @@ intel_hdmi_force(struct drm_connector *connector) +@@ -1529,12 +1677,29 @@ intel_hdmi_force(struct drm_connector *connector) static int intel_hdmi_get_modes(struct drm_connector *connector) { struct edid *edid; @@ -935,7 +916,7 @@ index 34e497f..67cbf17 100644 } static bool -@@ -1907,6 +2071,21 @@ void intel_hdmi_init_connector(struct intel_digital_port *intel_dig_port, +@@ -1924,6 +2089,21 @@ void intel_hdmi_init_connector(struct intel_digital_port *intel_dig_port, u32 temp = I915_READ(PEG_BAND_GAP_DATA); I915_WRITE(PEG_BAND_GAP_DATA, (temp & ~0xf) | 0xd); } @@ -957,7 +938,7 @@ index 34e497f..67cbf17 100644 } void intel_hdmi_init(struct drm_device *dev, -@@ -1915,7 +2094,10 @@ void intel_hdmi_init(struct drm_device *dev, +@@ -1932,7 +2112,10 @@ void intel_hdmi_init(struct drm_device *dev, struct intel_digital_port *intel_dig_port; struct intel_encoder *intel_encoder; struct intel_connector *intel_connector; @@ -969,7 +950,7 @@ index 34e497f..67cbf17 100644 intel_dig_port = kzalloc(sizeof(*intel_dig_port), GFP_KERNEL); if (!intel_dig_port) return; -@@ -1926,6 +2108,7 @@ void intel_hdmi_init(struct drm_device *dev, +@@ -1943,6 +2126,7 @@ void intel_hdmi_init(struct drm_device *dev, return; } @@ -977,7 +958,7 @@ index 34e497f..67cbf17 100644 intel_encoder = &intel_dig_port->base; drm_encoder_init(dev, &intel_encoder->base, &intel_hdmi_enc_funcs, -@@ -1985,4 +2168,29 @@ void intel_hdmi_init(struct drm_device *dev, +@@ -2002,4 +2186,29 @@ void intel_hdmi_init(struct drm_device *dev, intel_dig_port->max_lanes = 4; intel_hdmi_init_connector(intel_dig_port, intel_connector); @@ -1008,10 +989,10 @@ index 34e497f..67cbf17 100644 + } -From c2fc8a0fadd274be5b75f6ca10c3ca35c381d611 Mon Sep 17 00:00:00 2001 +From 3ef992c6d560220679822eb3fb00459774b33e69 Mon Sep 17 00:00:00 2001 From: Pierre-Louis Bossart Date: Tue, 1 Mar 2016 16:25:04 -0600 -Subject: [PATCH 04/12] drm/i915: power-related changes non-HDAudio HDMI +Subject: [PATCH 03/12] drm/i915: power-related changes non-HDAudio HDMI interface PM and RPM changes for interface available on Baytrail and CherryTrail @@ -1513,7 +1494,7 @@ index 0000000..511311c + +#endif /*CONFIG_PM_RUNTIME*/ diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c -index 2d24813..23206de 100644 +index a2f751c..f1fbe8f 100644 --- a/drivers/gpu/drm/i915/intel_pm.c +++ b/drivers/gpu/drm/i915/intel_pm.c @@ -32,6 +32,17 @@ @@ -1534,7 +1515,7 @@ index 2d24813..23206de 100644 /** * DOC: RC6 * -@@ -7774,6 +7785,7 @@ void intel_init_clock_gating_hooks(struct drm_i915_private *dev_priv) +@@ -7715,6 +7726,7 @@ void intel_init_clock_gating_hooks(struct drm_i915_private *dev_priv) void intel_init_pm(struct drm_device *dev) { struct drm_i915_private *dev_priv = to_i915(dev); @@ -1542,7 +1523,7 @@ index 2d24813..23206de 100644 intel_fbc_init(dev_priv); -@@ -8088,3 +8100,44 @@ void intel_pm_setup(struct drm_device *dev) +@@ -8026,3 +8038,44 @@ void intel_pm_setup(struct drm_device *dev) atomic_set(&dev_priv->pm.wakeref_count, 0); atomic_set(&dev_priv->pm.atomic_seq, 0); } @@ -1588,10 +1569,10 @@ index 2d24813..23206de 100644 +} +EXPORT_SYMBOL(ospm_power_using_hw_end); -From d37021d5405ce4eb5f42328b575f07fa5d6f34a9 Mon Sep 17 00:00:00 2001 +From aa6c7b9b1a10c119f04baf70f888c892cf22e5a4 Mon Sep 17 00:00:00 2001 From: Pierre-Louis Bossart Date: Thu, 3 Mar 2016 11:08:10 -0600 -Subject: [PATCH 05/12] drm/i915: Add API code for non-HDAudio HDMI interface +Subject: [PATCH 04/12] drm/i915: Add API code for non-HDAudio HDMI interface Add API code for interface available on Baytrail and CherryTrail @@ -2041,10 +2022,10 @@ index 0000000..d176b25 +EXPORT_SYMBOL(mid_hdmi_audio_register); +#endif -From fee88eee7f0b174a146bf612ef19bc0602b5f89b Mon Sep 17 00:00:00 2001 +From 9ea272c3fdd4c3353f6250328403d371b0920977 Mon Sep 17 00:00:00 2001 From: Pierre-Louis Bossart Date: Tue, 1 Mar 2016 16:25:04 -0600 -Subject: [PATCH 06/12] drm/i915: enable non-HDAudio HDMI interface Makefile +Subject: [PATCH 05/12] drm/i915: enable non-HDAudio HDMI interface Makefile Makefile for all previous patches @@ -2061,10 +2042,10 @@ Signed-off-by: Pierre-Louis Bossart 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/i915/Makefile b/drivers/gpu/drm/i915/Makefile -index 684fc1c..ea14a7c 100644 +index a998c2b..5402ab7 100644 --- a/drivers/gpu/drm/i915/Makefile +++ b/drivers/gpu/drm/i915/Makefile -@@ -16,7 +16,8 @@ i915-y := i915_drv.o \ +@@ -21,7 +21,8 @@ i915-y := i915_drv.o \ intel_csr.o \ intel_device_info.o \ intel_pm.o \ @@ -2074,8 +2055,8 @@ index 684fc1c..ea14a7c 100644 i915-$(CONFIG_COMPAT) += i915_ioc32.o i915-$(CONFIG_DEBUG_FS) += i915_debugfs.o -@@ -42,6 +43,7 @@ i915-y += i915_cmd_parser.o \ - intel_breadcrumbs.o \ +@@ -48,6 +49,7 @@ i915-y += i915_cmd_parser.o \ + intel_engine_cs.o \ intel_lrc.o \ intel_mocs.o \ + i915_rpm.o \ @@ -2083,10 +2064,10 @@ index 684fc1c..ea14a7c 100644 intel_uncore.o -From 138e6f7e00064d2d94a76308771f4f4b7e528a48 Mon Sep 17 00:00:00 2001 +From cbcf16ad5687aad3576bf9217fb418870e9c2008 Mon Sep 17 00:00:00 2001 From: Pierre-Louis Bossart Date: Thu, 3 Mar 2016 11:09:26 -0600 -Subject: [PATCH 07/12] ALSA: Intel: Atom: add Atom non-HDAudio HDMI interface +Subject: [PATCH 06/12] ALSA: Intel: Atom: add Atom non-HDAudio HDMI interface Add support interface available on Baytrail and CherryTrail @@ -5474,10 +5455,10 @@ index 0000000..acc407d + return retval; +} -From ba7b36acd4d4f2bcf9c84c885d385d3d1327b221 Mon Sep 17 00:00:00 2001 +From 1caa516a989aa3e8556b46b546e32b864d3672da Mon Sep 17 00:00:00 2001 From: Pierre-Louis Bossart Date: Sat, 20 Feb 2016 18:08:41 -0600 -Subject: [PATCH 08/12] add dependency on PM_RUNTIME +Subject: [PATCH 07/12] add dependency on PM_RUNTIME Signed-off-by: Pierre-Louis Bossart --- @@ -5497,10 +5478,10 @@ index 75c679e..b8b4fce 100644 help Choose this option to support HDMI. -From 30f9d3b223b28623431348350cdf00409b8cef24 Mon Sep 17 00:00:00 2001 +From 68d6ff8799a8921bb0e798d6a4bba298e804af04 Mon Sep 17 00:00:00 2001 From: David Henningsson Date: Fri, 21 Aug 2015 11:08:47 +0200 -Subject: [PATCH 09/12] hdmi_audio: Improve position reporting +Subject: [PATCH 08/12] hdmi_audio: Improve position reporting Using a hw register to calculate sub-period position reports. @@ -5550,10 +5531,10 @@ index d8c5574..b2337c3 100644 } -From 25f0028061dcb8c4ed3d464419e4095570a68441 Mon Sep 17 00:00:00 2001 +From 3d7c6630dcb6e25f27b6a4c699d4efe552c6c6fe Mon Sep 17 00:00:00 2001 From: David Henningsson Date: Fri, 21 Aug 2015 11:18:19 +0200 -Subject: [PATCH 10/12] hdmi_audio: Fixup some monitor +Subject: [PATCH 09/12] hdmi_audio: Fixup some monitor I think this change was given to us, and they claimed it fixed an issue on some monitor brand. I'm not sure what this patch actually does. @@ -5602,10 +5583,10 @@ index b2337c3..1667748 100644 return 0; } -From 0ef07c8e6cf8505f89ceab0b27895d8a21062d70 Mon Sep 17 00:00:00 2001 +From e8e4a06465137d4b8d22ab320af22c381413805c Mon Sep 17 00:00:00 2001 From: Toyo Abe Date: Thu, 3 Mar 2016 12:57:41 +0900 -Subject: [PATCH 11/12] hdmi_audio: Fix mishandling of AUD_HDMI_STATUS_v2 +Subject: [PATCH 10/12] hdmi_audio: Fix mishandling of AUD_HDMI_STATUS_v2 register. According to the datasheet, write one to clear these UNDERRUN flag bits. @@ -5632,10 +5613,10 @@ index 1667748..86db38e 100644 } else break; -From 71729bb7f7f080b68e36a4e4b9f65fce67d5e869 Mon Sep 17 00:00:00 2001 +From 881b1fcdde86076b2de7b7d30bbfa0477fd0ac0e Mon Sep 17 00:00:00 2001 From: Jerome Anand Date: Fri, 1 Apr 2016 11:07:48 +0530 -Subject: [PATCH 12/12] Create a platform device for hdmi audio driver and +Subject: [PATCH 11/12] Create a platform device for hdmi audio driver and allocate full resources Signed-off-by: Pierre-Louis Bossart @@ -5708,3 +5689,100 @@ index 86db38e..6497b6f 100644 } late_initcall(alsa_card_intelhad_init); module_exit(alsa_card_intelhad_exit); + +From dcbfbf5f551942b55e8a01ac4269d5435a59a562 Mon Sep 17 00:00:00 2001 +From: Pierre-Louis Bossart +Date: Thu, 13 Oct 2016 12:52:27 -0500 +Subject: [PATCH 12/12] hdmi_audio: fix GCC compilation issues with inline + functions + +remove inlining to avoid errors reported by GCC 6 +--- + sound/hdmi_audio/intel_mid_hdmi_audio.c | 12 ++++++------ + sound/hdmi_audio/intel_mid_hdmi_audio.h | 14 +++++++------- + 2 files changed, 13 insertions(+), 13 deletions(-) + +diff --git a/sound/hdmi_audio/intel_mid_hdmi_audio.c b/sound/hdmi_audio/intel_mid_hdmi_audio.c +index 6497b6f..4857a4b 100644 +--- a/sound/hdmi_audio/intel_mid_hdmi_audio.c ++++ b/sound/hdmi_audio/intel_mid_hdmi_audio.c +@@ -197,7 +197,7 @@ static const struct snd_pcm_hardware snd_intel_hadstream = { + + /* Register access functions */ + +-inline int had_get_hwstate(struct snd_intelhad *intelhaddata) ++int had_get_hwstate(struct snd_intelhad *intelhaddata) + { + /* Check for device presence -SW state */ + if (intelhaddata->drv_status == HAD_DRV_DISCONNECTED) { +@@ -220,7 +220,7 @@ inline int had_get_hwstate(struct snd_intelhad *intelhaddata) + return 0; + } + +-inline int had_get_caps(enum had_caps_list query, void *caps) ++int had_get_caps(enum had_caps_list query, void *caps) + { + int retval; + struct snd_intelhad *intelhaddata = had_data; +@@ -233,7 +233,7 @@ inline int had_get_caps(enum had_caps_list query, void *caps) + return retval; + } + +-inline int had_set_caps(enum had_caps_list set_element, void *caps) ++int had_set_caps(enum had_caps_list set_element, void *caps) + { + int retval; + struct snd_intelhad *intelhaddata = had_data; +@@ -246,7 +246,7 @@ inline int had_set_caps(enum had_caps_list set_element, void *caps) + return retval; + } + +-inline int had_read_register(uint32_t offset, uint32_t *data) ++int had_read_register(uint32_t offset, uint32_t *data) + { + int retval; + struct snd_intelhad *intelhaddata = had_data; +@@ -260,7 +260,7 @@ inline int had_read_register(uint32_t offset, uint32_t *data) + return retval; + } + +-inline int had_write_register(uint32_t offset, uint32_t data) ++int had_write_register(uint32_t offset, uint32_t data) + { + int retval; + struct snd_intelhad *intelhaddata = had_data; +@@ -274,7 +274,7 @@ inline int had_write_register(uint32_t offset, uint32_t data) + return retval; + } + +-inline int had_read_modify(uint32_t offset, uint32_t data, uint32_t mask) ++int had_read_modify(uint32_t offset, uint32_t data, uint32_t mask) + { + int retval; + struct snd_intelhad *intelhaddata = had_data; +diff --git a/sound/hdmi_audio/intel_mid_hdmi_audio.h b/sound/hdmi_audio/intel_mid_hdmi_audio.h +index 7c54b97..53a1049 100644 +--- a/sound/hdmi_audio/intel_mid_hdmi_audio.h ++++ b/sound/hdmi_audio/intel_mid_hdmi_audio.h +@@ -727,14 +727,14 @@ int snd_intelhad_init_audio_ctrl(struct snd_pcm_substream *substream, + int snd_intelhad_prog_buffer(struct snd_intelhad *intelhaddata, + int start, int end); + int snd_intelhad_invd_buffer(int start, int end); +-inline int snd_intelhad_read_len(struct snd_intelhad *intelhaddata); ++int snd_intelhad_read_len(struct snd_intelhad *intelhaddata); + void had_build_channel_allocation_map(struct snd_intelhad *intelhaddata); + + /* Register access functions */ +-inline int had_get_hwstate(struct snd_intelhad *intelhaddata); +-inline int had_get_caps(enum had_caps_list query_element, void *capabilties); +-inline int had_set_caps(enum had_caps_list set_element, void *capabilties); +-inline int had_read_register(uint32_t reg_addr, uint32_t *data); +-inline int had_write_register(uint32_t reg_addr, uint32_t data); +-inline int had_read_modify(uint32_t reg_addr, uint32_t data, uint32_t mask); ++int had_get_hwstate(struct snd_intelhad *intelhaddata); ++int had_get_caps(enum had_caps_list query_element, void *capabilties); ++int had_set_caps(enum had_caps_list set_element, void *capabilties); ++int had_read_register(uint32_t reg_addr, uint32_t *data); ++int had_write_register(uint32_t reg_addr, uint32_t data); ++int had_read_modify(uint32_t reg_addr, uint32_t data, uint32_t mask); + #endif