linux: update Cherry Trail support

This commit is contained in:
MilhouseVH 2016-11-01 17:54:40 +00:00
parent 7f659b671d
commit 4d318a2eb3

View File

@ -1,34 +1,7 @@
From 982a9c5bbe16cabc297e75d6d9e8d2926f5641b8 Mon Sep 17 00:00:00 2001
From: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
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 <pierre-louis.bossart@linux.intel.com>
---
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 <pierre-louis.bossart@linux.intel.com>
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 <pierre-louis.bossart@linux.intel.com>
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 <david.henningsson@canonical.com>
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Toyo Abe <toyo.abe@gmail.com>
---
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 <pierre-louis.bossart@linux.intel.com>
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 <pierre-louis.bossart@linux.intel.com>
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 <pierre-louis.bossart@linux.intel.com>
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 <pierre-louis.bossart@linux.intel.com>
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 <pierre-louis.bossart@linux.intel.com>
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 <pierre-louis.bossart@linux.intel.com>
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 <pierre-louis.bossart@linux.intel.com>
---
@ -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 <david.henningsson@canonical.com>
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 <david.henningsson@canonical.com>
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 <toyo.abe@gmail.com>
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 <jerome.anand@intel.com>
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 <pierre-louis.bossart@linux.intel.com>
@ -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 <pierre-louis.bossart@linux.intel.com>
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