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 3902239e5cff2b4df1fe67e6b4bc362ca022ab51 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: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> From: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Date: Tue, 1 Mar 2016 16:25:04 -0600 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 Add header files for interface available on Baytrail and CherryTrail
@ -181,18 +154,18 @@ index 0000000..165bba5
+ +
+#endif /* __HDMI_AUDIO_IF_H */ +#endif /* __HDMI_AUDIO_IF_H */
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.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 --- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h +++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -63,6 +63,7 @@ @@ -64,6 +64,7 @@
#include "i915_gem_render_state.h" #include "i915_gem_request.h"
#include "intel_gvt.h" #include "intel_gvt.h"
+#include "hdmi_audio_if.h" +#include "hdmi_audio_if.h"
/* General customization: /* General customization:
*/ */
@@ -1208,6 +1209,18 @@ struct intel_gen6_power_mgmt { @@ -1236,6 +1237,18 @@ struct intel_gen6_power_mgmt {
struct mutex hw_lock; struct mutex hw_lock;
}; };
@ -211,7 +184,7 @@ index f68c789..4c682fae 100644
/* defined intel_pm.c */ /* defined intel_pm.c */
extern spinlock_t mchdev_lock; 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]; 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 * NOTE: This is the dri1/ums dungeon, don't add stuff here. Your patch
* will be rejected. Instead look for a better place. * 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); \ } while (upper != old_upper && loop++ < 2); \
(u64)upper << 32 | lower; }) (u64)upper << 32 | lower; })
@ -244,7 +217,7 @@ index f68c789..4c682fae 100644
#define POSTING_READ16(reg) (void)I915_READ16_NOTRACE(reg) #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 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 --- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h +++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -2131,7 +2131,25 @@ enum skl_disp_power_wells { @@ -2131,7 +2131,25 @@ enum skl_disp_power_wells {
@ -292,10 +265,10 @@ index bf2cad3..bb0378f2d 100644
#define PORT_DFT_I9XX _MMIO(0x61150) #define PORT_DFT_I9XX _MMIO(0x61150)
#define DC_BALANCE_RESET (1 << 25) #define DC_BALANCE_RESET (1 << 25)
diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h 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 --- a/drivers/gpu/drm/i915/intel_drv.h
+++ b/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 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) #define intel_fb_obj(x) (x ? to_intel_framebuffer(x)->obj : NULL)
@ -310,7 +283,7 @@ index ff399b9..83915b1 100644
struct intel_hdmi { struct intel_hdmi {
i915_reg_t hdmi_reg; i915_reg_t hdmi_reg;
int ddc_bus; int ddc_bus;
@@ -811,6 +819,9 @@ struct intel_hdmi { @@ -839,6 +847,9 @@ struct intel_hdmi {
bool rgb_quant_range_selectable; bool rgb_quant_range_selectable;
enum hdmi_picture_aspect aspect_ratio; enum hdmi_picture_aspect aspect_ratio;
struct intel_connector *attached_connector; struct intel_connector *attached_connector;
@ -320,7 +293,7 @@ index ff399b9..83915b1 100644
void (*write_infoframe)(struct drm_encoder *encoder, void (*write_infoframe)(struct drm_encoder *encoder,
enum hdmi_infoframe_type type, enum hdmi_infoframe_type type,
const void *frame, ssize_t len); 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, void intel_create_rotation_property(struct drm_device *dev,
struct intel_plane *plane); struct intel_plane *plane);
@ -330,10 +303,10 @@ index ff399b9..83915b1 100644
void assert_pch_transcoder_disabled(struct drm_i915_private *dev_priv, void assert_pch_transcoder_disabled(struct drm_i915_private *dev_priv,
enum pipe pipe); 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> From: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Date: Tue, 1 Mar 2016 16:25:04 -0600 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 Changes to existing code for interface available on Baytrail and
CherryTrail 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: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Toyo Abe <toyo.abe@gmail.com> Signed-off-by: Toyo Abe <toyo.abe@gmail.com>
--- ---
drivers/gpu/drm/i915/i915_irq.c | 169 +++++++++++++++++++++++++++- drivers/gpu/drm/i915/i915_irq.c | 169 ++++++++++++++++++++++++++-
drivers/gpu/drm/i915/intel_display.c | 100 +++++++++++++++++ drivers/gpu/drm/i915/intel_display.c | 100 ++++++++++++++++
drivers/gpu/drm/i915/intel_hdmi.c | 212 ++++++++++++++++++++++++++++++++++- drivers/gpu/drm/i915/intel_hdmi.c | 215 ++++++++++++++++++++++++++++++++++-
3 files changed, 478 insertions(+), 3 deletions(-) 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 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 --- a/drivers/gpu/drm/i915/i915_irq.c
+++ b/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); __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 * i915_enable_asle_pipestat - enable ASLE pipestat for OpRegion
* @dev_priv: i915 device private * @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; return ret;
} }
@ -436,7 +409,7 @@ index 1c2aec3..93ad21e 100644
static void valleyview_pipestat_irq_ack(struct drm_i915_private *dev_priv, static void valleyview_pipestat_irq_ack(struct drm_i915_private *dev_priv,
u32 iir, u32 pipe_stats[I915_MAX_PIPES]) 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); i9xx_hpd_irq_handler(dev_priv, hotplug_status);
valleyview_pipestat_irq_handler(dev_priv, pipe_stats); valleyview_pipestat_irq_handler(dev_priv, pipe_stats);
@ -460,7 +433,7 @@ index 1c2aec3..93ad21e 100644
} while (0); } while (0);
enable_rpm_wakeref_asserts(dev_priv); 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); i9xx_hpd_irq_handler(dev_priv, hotplug_status);
valleyview_pipestat_irq_handler(dev_priv, pipe_stats); valleyview_pipestat_irq_handler(dev_priv, pipe_stats);
@ -484,7 +457,7 @@ index 1c2aec3..93ad21e 100644
} while (0); } while (0);
enable_rpm_wakeref_asserts(dev_priv); 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); spin_unlock_irqrestore(&dev_priv->irq_lock, irqflags);
} }
@ -555,9 +528,9 @@ index 1c2aec3..93ad21e 100644
+} +}
+ +
static bool 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 pipestat_mask;
u32 enable_mask; u32 enable_mask;
enum pipe pipe; enum pipe pipe;
@ -567,7 +540,7 @@ index 1c2aec3..93ad21e 100644
pipestat_mask = PLANE_FLIP_DONE_INT_STATUS_VLV | pipestat_mask = PLANE_FLIP_DONE_INT_STATUS_VLV |
PIPE_CRC_DONE_INTERRUPT_STATUS; 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)) if (IS_CHERRYVIEW(dev_priv))
enable_mask |= I915_DISPLAY_PIPE_C_EVENT_INTERRUPT; enable_mask |= I915_DISPLAY_PIPE_C_EVENT_INTERRUPT;
@ -587,10 +560,10 @@ index 1c2aec3..93ad21e 100644
dev_priv->irq_mask = ~enable_mask; dev_priv->irq_mask = ~enable_mask;
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c 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 --- a/drivers/gpu/drm/i915/intel_display.c
+++ b/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; int refclk = 100000;
const struct intel_limit *limit = &intel_limits_chv; const struct intel_limit *limit = &intel_limits_chv;
@ -599,7 +572,7 @@ index 175595f..d4499ff 100644
memset(&crtc_state->dpll_hw_state, 0, memset(&crtc_state->dpll_hw_state, 0,
sizeof(crtc_state->dpll_hw_state)); 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); chv_compute_dpll(crtc, crtc_state);
@ -616,7 +589,7 @@ index 175595f..d4499ff 100644
return 0; 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; int refclk = 100000;
const struct intel_limit *limit = &intel_limits_vlv; const struct intel_limit *limit = &intel_limits_vlv;
@ -625,7 +598,7 @@ index 175595f..d4499ff 100644
memset(&crtc_state->dpll_hw_state, 0, memset(&crtc_state->dpll_hw_state, 0,
sizeof(crtc_state->dpll_hw_state)); 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); vlv_compute_dpll(crtc, crtc_state);
@ -642,7 +615,7 @@ index 175595f..d4499ff 100644
return 0; 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); drm_helper_move_panel_connectors_to_head(dev);
} }
@ -726,7 +699,7 @@ index 175595f..d4499ff 100644
{ {
struct drm_device *dev = fb->dev; struct drm_device *dev = fb->dev;
diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c 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 --- a/drivers/gpu/drm/i915/intel_hdmi.c
+++ b/drivers/gpu/drm/i915/intel_hdmi.c +++ b/drivers/gpu/drm/i915/intel_hdmi.c
@@ -38,6 +38,8 @@ @@ -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) static struct drm_device *intel_hdmi_to_dev(struct intel_hdmi *intel_hdmi)
{ {
return hdmi_to_dig_port(intel_hdmi)->base.base.dev; 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; return connected;
} }
@ -863,16 +836,24 @@ index 34e497f..67cbf17 100644
static enum drm_connector_status static enum drm_connector_status
intel_hdmi_detect(struct drm_connector *connector, bool force) 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); struct drm_i915_private *dev_priv = to_i915(connector->dev);
bool live_status = false;
unsigned int try;
+ bool inform_audio = false; + bool inform_audio = false;
+ struct drm_device *dev = connector->dev; + struct drm_device *dev = connector->dev;
+ struct intel_hdmi *intel_hdmi;
DRM_DEBUG_KMS("[CONNECTOR:%d:%s]\n", DRM_DEBUG_KMS("[CONNECTOR:%d:%s]\n",
connector->base.id, connector->name); 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); intel_display_power_put(dev_priv, POWER_DOMAIN_GMBUS);
@ -904,7 +885,7 @@ index 34e497f..67cbf17 100644
return status; 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) static int intel_hdmi_get_modes(struct drm_connector *connector)
{ {
struct edid *edid; struct edid *edid;
@ -935,7 +916,7 @@ index 34e497f..67cbf17 100644
} }
static bool 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); u32 temp = I915_READ(PEG_BAND_GAP_DATA);
I915_WRITE(PEG_BAND_GAP_DATA, (temp & ~0xf) | 0xd); 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, 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_digital_port *intel_dig_port;
struct intel_encoder *intel_encoder; struct intel_encoder *intel_encoder;
struct intel_connector *intel_connector; struct intel_connector *intel_connector;
@ -969,7 +950,7 @@ index 34e497f..67cbf17 100644
intel_dig_port = kzalloc(sizeof(*intel_dig_port), GFP_KERNEL); intel_dig_port = kzalloc(sizeof(*intel_dig_port), GFP_KERNEL);
if (!intel_dig_port) if (!intel_dig_port)
return; 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; return;
} }
@ -977,7 +958,7 @@ index 34e497f..67cbf17 100644
intel_encoder = &intel_dig_port->base; intel_encoder = &intel_dig_port->base;
drm_encoder_init(dev, &intel_encoder->base, &intel_hdmi_enc_funcs, 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_dig_port->max_lanes = 4;
intel_hdmi_init_connector(intel_dig_port, intel_connector); 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> From: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Date: Tue, 1 Mar 2016 16:25:04 -0600 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 interface
PM and RPM changes for interface available on Baytrail and CherryTrail PM and RPM changes for interface available on Baytrail and CherryTrail
@ -1513,7 +1494,7 @@ index 0000000..511311c
+ +
+#endif /*CONFIG_PM_RUNTIME*/ +#endif /*CONFIG_PM_RUNTIME*/
diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c 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 --- a/drivers/gpu/drm/i915/intel_pm.c
+++ b/drivers/gpu/drm/i915/intel_pm.c +++ b/drivers/gpu/drm/i915/intel_pm.c
@@ -32,6 +32,17 @@ @@ -32,6 +32,17 @@
@ -1534,7 +1515,7 @@ index 2d24813..23206de 100644
/** /**
* DOC: RC6 * 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) void intel_init_pm(struct drm_device *dev)
{ {
struct drm_i915_private *dev_priv = to_i915(dev); struct drm_i915_private *dev_priv = to_i915(dev);
@ -1542,7 +1523,7 @@ index 2d24813..23206de 100644
intel_fbc_init(dev_priv); 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.wakeref_count, 0);
atomic_set(&dev_priv->pm.atomic_seq, 0); atomic_set(&dev_priv->pm.atomic_seq, 0);
} }
@ -1588,10 +1569,10 @@ index 2d24813..23206de 100644
+} +}
+EXPORT_SYMBOL(ospm_power_using_hw_end); +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> From: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Date: Thu, 3 Mar 2016 11:08:10 -0600 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 Add API code for interface available on Baytrail and CherryTrail
@ -2041,10 +2022,10 @@ index 0000000..d176b25
+EXPORT_SYMBOL(mid_hdmi_audio_register); +EXPORT_SYMBOL(mid_hdmi_audio_register);
+#endif +#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> From: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Date: Tue, 1 Mar 2016 16:25:04 -0600 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 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(-) 1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/i915/Makefile b/drivers/gpu/drm/i915/Makefile 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 --- a/drivers/gpu/drm/i915/Makefile
+++ b/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_csr.o \
intel_device_info.o \ intel_device_info.o \
intel_pm.o \ intel_pm.o \
@ -2074,8 +2055,8 @@ index 684fc1c..ea14a7c 100644
i915-$(CONFIG_COMPAT) += i915_ioc32.o i915-$(CONFIG_COMPAT) += i915_ioc32.o
i915-$(CONFIG_DEBUG_FS) += i915_debugfs.o i915-$(CONFIG_DEBUG_FS) += i915_debugfs.o
@@ -42,6 +43,7 @@ i915-y += i915_cmd_parser.o \ @@ -48,6 +49,7 @@ i915-y += i915_cmd_parser.o \
intel_breadcrumbs.o \ intel_engine_cs.o \
intel_lrc.o \ intel_lrc.o \
intel_mocs.o \ intel_mocs.o \
+ i915_rpm.o \ + i915_rpm.o \
@ -2083,10 +2064,10 @@ index 684fc1c..ea14a7c 100644
intel_uncore.o 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> From: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Date: Thu, 3 Mar 2016 11:09:26 -0600 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 Add support interface available on Baytrail and CherryTrail
@ -5474,10 +5455,10 @@ index 0000000..acc407d
+ return retval; + 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> From: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Date: Sat, 20 Feb 2016 18:08:41 -0600 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> Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
--- ---
@ -5497,10 +5478,10 @@ index 75c679e..b8b4fce 100644
help help
Choose this option to support HDMI. 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> From: David Henningsson <david.henningsson@canonical.com>
Date: Fri, 21 Aug 2015 11:08:47 +0200 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. 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> From: David Henningsson <david.henningsson@canonical.com>
Date: Fri, 21 Aug 2015 11:18:19 +0200 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 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. on some monitor brand. I'm not sure what this patch actually does.
@ -5602,10 +5583,10 @@ index b2337c3..1667748 100644
return 0; 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> From: Toyo Abe <toyo.abe@gmail.com>
Date: Thu, 3 Mar 2016 12:57:41 +0900 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. register.
According to the datasheet, write one to clear these UNDERRUN flag bits. According to the datasheet, write one to clear these UNDERRUN flag bits.
@ -5632,10 +5613,10 @@ index 1667748..86db38e 100644
} else } else
break; 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> From: Jerome Anand <jerome.anand@intel.com>
Date: Fri, 1 Apr 2016 11:07:48 +0530 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 allocate full resources
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> 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); late_initcall(alsa_card_intelhad_init);
module_exit(alsa_card_intelhad_exit); 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