aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/i915_drv.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/i915/i915_drv.h')
-rw-r--r--drivers/gpu/drm/i915/i915_drv.h62
1 files changed, 43 insertions, 19 deletions
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 54b5d4c582b6..36bb4927484a 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -67,7 +67,6 @@
67#include "i915_gem_fence_reg.h" 67#include "i915_gem_fence_reg.h"
68#include "i915_gem_object.h" 68#include "i915_gem_object.h"
69#include "i915_gem_gtt.h" 69#include "i915_gem_gtt.h"
70#include "i915_gem_render_state.h"
71#include "i915_gem_request.h" 70#include "i915_gem_request.h"
72#include "i915_gem_timeline.h" 71#include "i915_gem_timeline.h"
73 72
@@ -80,8 +79,8 @@
80 79
81#define DRIVER_NAME "i915" 80#define DRIVER_NAME "i915"
82#define DRIVER_DESC "Intel Graphics" 81#define DRIVER_DESC "Intel Graphics"
83#define DRIVER_DATE "20171023" 82#define DRIVER_DATE "20171117"
84#define DRIVER_TIMESTAMP 1508748913 83#define DRIVER_TIMESTAMP 1510958822
85 84
86/* Use I915_STATE_WARN(x) and I915_STATE_WARN_ON() (rather than WARN() and 85/* Use I915_STATE_WARN(x) and I915_STATE_WARN_ON() (rather than WARN() and
87 * WARN_ON()) for hw state sanity checks to check for unexpected conditions 86 * WARN_ON()) for hw state sanity checks to check for unexpected conditions
@@ -726,10 +725,12 @@ struct drm_i915_display_funcs {
726 void (*crtc_disable)(struct intel_crtc_state *old_crtc_state, 725 void (*crtc_disable)(struct intel_crtc_state *old_crtc_state,
727 struct drm_atomic_state *old_state); 726 struct drm_atomic_state *old_state);
728 void (*update_crtcs)(struct drm_atomic_state *state); 727 void (*update_crtcs)(struct drm_atomic_state *state);
729 void (*audio_codec_enable)(struct drm_connector *connector, 728 void (*audio_codec_enable)(struct intel_encoder *encoder,
730 struct intel_encoder *encoder, 729 const struct intel_crtc_state *crtc_state,
731 const struct drm_display_mode *adjusted_mode); 730 const struct drm_connector_state *conn_state);
732 void (*audio_codec_disable)(struct intel_encoder *encoder); 731 void (*audio_codec_disable)(struct intel_encoder *encoder,
732 const struct intel_crtc_state *old_crtc_state,
733 const struct drm_connector_state *old_conn_state);
733 void (*fdi_link_train)(struct intel_crtc *crtc, 734 void (*fdi_link_train)(struct intel_crtc *crtc,
734 const struct intel_crtc_state *crtc_state); 735 const struct intel_crtc_state *crtc_state);
735 void (*init_clock_gating)(struct drm_i915_private *dev_priv); 736 void (*init_clock_gating)(struct drm_i915_private *dev_priv);
@@ -884,6 +885,8 @@ struct intel_device_info {
884 /* Slice/subslice/EU info */ 885 /* Slice/subslice/EU info */
885 struct sseu_dev_info sseu; 886 struct sseu_dev_info sseu;
886 887
888 u32 cs_timestamp_frequency_khz;
889
887 struct color_luts { 890 struct color_luts {
888 u16 degamma_lut_size; 891 u16 degamma_lut_size;
889 u16 gamma_lut_size; 892 u16 gamma_lut_size;
@@ -911,6 +914,12 @@ struct i915_gpu_state {
911 struct intel_device_info device_info; 914 struct intel_device_info device_info;
912 struct i915_params params; 915 struct i915_params params;
913 916
917 struct i915_error_uc {
918 struct intel_uc_fw guc_fw;
919 struct intel_uc_fw huc_fw;
920 struct drm_i915_error_object *guc_log;
921 } uc;
922
914 /* Generic register state */ 923 /* Generic register state */
915 u32 eir; 924 u32 eir;
916 u32 pgtbl_er; 925 u32 pgtbl_er;
@@ -934,7 +943,6 @@ struct i915_gpu_state {
934 struct intel_overlay_error_state *overlay; 943 struct intel_overlay_error_state *overlay;
935 struct intel_display_error_state *display; 944 struct intel_display_error_state *display;
936 struct drm_i915_error_object *semaphore; 945 struct drm_i915_error_object *semaphore;
937 struct drm_i915_error_object *guc_log;
938 946
939 struct drm_i915_error_engine { 947 struct drm_i915_error_engine {
940 int engine_id; 948 int engine_id;
@@ -1386,7 +1394,6 @@ struct intel_gen6_power_mgmt {
1386 struct intel_rps rps; 1394 struct intel_rps rps;
1387 struct intel_rc6 rc6; 1395 struct intel_rc6 rc6;
1388 struct intel_llc_pstate llc_pstate; 1396 struct intel_llc_pstate llc_pstate;
1389 struct delayed_work autoenable_work;
1390}; 1397};
1391 1398
1392/* defined intel_pm.c */ 1399/* defined intel_pm.c */
@@ -1698,6 +1705,8 @@ enum modeset_restore {
1698#define DDC_PIN_D 0x06 1705#define DDC_PIN_D 0x06
1699 1706
1700struct ddi_vbt_port_info { 1707struct ddi_vbt_port_info {
1708 int max_tmds_clock;
1709
1701 /* 1710 /*
1702 * This is an index in the HDMI/DVI DDI buffer translation table. 1711 * This is an index in the HDMI/DVI DDI buffer translation table.
1703 * The special value HDMI_LEVEL_SHIFT_UNKNOWN means the VBT didn't 1712 * The special value HDMI_LEVEL_SHIFT_UNKNOWN means the VBT didn't
@@ -2228,6 +2237,7 @@ struct i915_oa_ops {
2228 2237
2229struct intel_cdclk_state { 2238struct intel_cdclk_state {
2230 unsigned int cdclk, vco, ref; 2239 unsigned int cdclk, vco, ref;
2240 u8 voltage_level;
2231}; 2241};
2232 2242
2233struct drm_i915_private { 2243struct drm_i915_private {
@@ -2339,6 +2349,7 @@ struct drm_i915_private {
2339 unsigned int max_dotclk_freq; 2349 unsigned int max_dotclk_freq;
2340 unsigned int rawclk_freq; 2350 unsigned int rawclk_freq;
2341 unsigned int hpll_freq; 2351 unsigned int hpll_freq;
2352 unsigned int fdi_pll_freq;
2342 unsigned int czclk_freq; 2353 unsigned int czclk_freq;
2343 2354
2344 struct { 2355 struct {
@@ -2415,6 +2426,8 @@ struct drm_i915_private {
2415 unsigned int active_crtcs; 2426 unsigned int active_crtcs;
2416 /* minimum acceptable cdclk for each pipe */ 2427 /* minimum acceptable cdclk for each pipe */
2417 int min_cdclk[I915_MAX_PIPES]; 2428 int min_cdclk[I915_MAX_PIPES];
2429 /* minimum acceptable voltage level for each pipe */
2430 u8 min_voltage_level[I915_MAX_PIPES];
2418 2431
2419 int dpio_phy_iosf_port[I915_NUM_PHYS_VLV]; 2432 int dpio_phy_iosf_port[I915_NUM_PHYS_VLV];
2420 2433
@@ -3046,6 +3059,8 @@ intel_info(const struct drm_i915_private *dev_priv)
3046 (INTEL_DEVID(dev_priv) & 0x00F0) == 0x00A0) 3059 (INTEL_DEVID(dev_priv) & 0x00F0) == 0x00A0)
3047#define IS_CFL_GT2(dev_priv) (IS_COFFEELAKE(dev_priv) && \ 3060#define IS_CFL_GT2(dev_priv) (IS_COFFEELAKE(dev_priv) && \
3048 (dev_priv)->info.gt == 2) 3061 (dev_priv)->info.gt == 2)
3062#define IS_CFL_GT3(dev_priv) (IS_COFFEELAKE(dev_priv) && \
3063 (dev_priv)->info.gt == 3)
3049 3064
3050#define IS_ALPHA_SUPPORT(intel_info) ((intel_info)->is_alpha_support) 3065#define IS_ALPHA_SUPPORT(intel_info) ((intel_info)->is_alpha_support)
3051 3066
@@ -3137,6 +3152,8 @@ intel_info(const struct drm_i915_private *dev_priv)
3137 3152
3138#define HAS_LOGICAL_RING_CONTEXTS(dev_priv) \ 3153#define HAS_LOGICAL_RING_CONTEXTS(dev_priv) \
3139 ((dev_priv)->info.has_logical_ring_contexts) 3154 ((dev_priv)->info.has_logical_ring_contexts)
3155#define HAS_LOGICAL_RING_PREEMPTION(dev_priv) \
3156 ((dev_priv)->info.has_logical_ring_preemption)
3140#define USES_PPGTT(dev_priv) (i915_modparams.enable_ppgtt) 3157#define USES_PPGTT(dev_priv) (i915_modparams.enable_ppgtt)
3141#define USES_FULL_PPGTT(dev_priv) (i915_modparams.enable_ppgtt >= 2) 3158#define USES_FULL_PPGTT(dev_priv) (i915_modparams.enable_ppgtt >= 2)
3142#define USES_FULL_48BIT_PPGTT(dev_priv) (i915_modparams.enable_ppgtt == 3) 3159#define USES_FULL_48BIT_PPGTT(dev_priv) (i915_modparams.enable_ppgtt == 3)
@@ -3315,7 +3332,9 @@ extern int i915_reset_engine(struct intel_engine_cs *engine,
3315 unsigned int flags); 3332 unsigned int flags);
3316 3333
3317extern bool intel_has_reset_engine(struct drm_i915_private *dev_priv); 3334extern bool intel_has_reset_engine(struct drm_i915_private *dev_priv);
3318extern int intel_guc_reset(struct drm_i915_private *dev_priv); 3335extern int intel_reset_guc(struct drm_i915_private *dev_priv);
3336extern int intel_guc_reset_engine(struct intel_guc *guc,
3337 struct intel_engine_cs *engine);
3319extern void intel_engine_init_hangcheck(struct intel_engine_cs *engine); 3338extern void intel_engine_init_hangcheck(struct intel_engine_cs *engine);
3320extern void intel_hangcheck_init(struct drm_i915_private *dev_priv); 3339extern void intel_hangcheck_init(struct drm_i915_private *dev_priv);
3321extern unsigned long i915_chipset_val(struct drm_i915_private *dev_priv); 3340extern unsigned long i915_chipset_val(struct drm_i915_private *dev_priv);
@@ -4107,7 +4126,6 @@ void intel_device_info_dump(struct drm_i915_private *dev_priv);
4107/* modesetting */ 4126/* modesetting */
4108extern void intel_modeset_init_hw(struct drm_device *dev); 4127extern void intel_modeset_init_hw(struct drm_device *dev);
4109extern int intel_modeset_init(struct drm_device *dev); 4128extern int intel_modeset_init(struct drm_device *dev);
4110extern void intel_modeset_gem_init(struct drm_device *dev);
4111extern void intel_modeset_cleanup(struct drm_device *dev); 4129extern void intel_modeset_cleanup(struct drm_device *dev);
4112extern int intel_connector_register(struct drm_connector *); 4130extern int intel_connector_register(struct drm_connector *);
4113extern void intel_connector_unregister(struct drm_connector *); 4131extern void intel_connector_unregister(struct drm_connector *);
@@ -4174,8 +4192,7 @@ bool bxt_ddi_phy_is_enabled(struct drm_i915_private *dev_priv,
4174 enum dpio_phy phy); 4192 enum dpio_phy phy);
4175bool bxt_ddi_phy_verify_state(struct drm_i915_private *dev_priv, 4193bool bxt_ddi_phy_verify_state(struct drm_i915_private *dev_priv,
4176 enum dpio_phy phy); 4194 enum dpio_phy phy);
4177uint8_t bxt_ddi_phy_calc_lane_lat_optim_mask(struct intel_encoder *encoder, 4195uint8_t bxt_ddi_phy_calc_lane_lat_optim_mask(uint8_t lane_count);
4178 uint8_t lane_count);
4179void bxt_ddi_phy_set_lane_optim_mask(struct intel_encoder *encoder, 4196void bxt_ddi_phy_set_lane_optim_mask(struct intel_encoder *encoder,
4180 uint8_t lane_lat_optim_mask); 4197 uint8_t lane_lat_optim_mask);
4181uint8_t bxt_ddi_phy_get_lane_lat_optim_mask(struct intel_encoder *encoder); 4198uint8_t bxt_ddi_phy_get_lane_lat_optim_mask(struct intel_encoder *encoder);
@@ -4184,18 +4201,25 @@ void chv_set_phy_signal_level(struct intel_encoder *encoder,
4184 u32 deemph_reg_value, u32 margin_reg_value, 4201 u32 deemph_reg_value, u32 margin_reg_value,
4185 bool uniq_trans_scale); 4202 bool uniq_trans_scale);
4186void chv_data_lane_soft_reset(struct intel_encoder *encoder, 4203void chv_data_lane_soft_reset(struct intel_encoder *encoder,
4204 const struct intel_crtc_state *crtc_state,
4187 bool reset); 4205 bool reset);
4188void chv_phy_pre_pll_enable(struct intel_encoder *encoder); 4206void chv_phy_pre_pll_enable(struct intel_encoder *encoder,
4189void chv_phy_pre_encoder_enable(struct intel_encoder *encoder); 4207 const struct intel_crtc_state *crtc_state);
4208void chv_phy_pre_encoder_enable(struct intel_encoder *encoder,
4209 const struct intel_crtc_state *crtc_state);
4190void chv_phy_release_cl2_override(struct intel_encoder *encoder); 4210void chv_phy_release_cl2_override(struct intel_encoder *encoder);
4191void chv_phy_post_pll_disable(struct intel_encoder *encoder); 4211void chv_phy_post_pll_disable(struct intel_encoder *encoder,
4212 const struct intel_crtc_state *old_crtc_state);
4192 4213
4193void vlv_set_phy_signal_level(struct intel_encoder *encoder, 4214void vlv_set_phy_signal_level(struct intel_encoder *encoder,
4194 u32 demph_reg_value, u32 preemph_reg_value, 4215 u32 demph_reg_value, u32 preemph_reg_value,
4195 u32 uniqtranscale_reg_value, u32 tx3_demph); 4216 u32 uniqtranscale_reg_value, u32 tx3_demph);
4196void vlv_phy_pre_pll_enable(struct intel_encoder *encoder); 4217void vlv_phy_pre_pll_enable(struct intel_encoder *encoder,
4197void vlv_phy_pre_encoder_enable(struct intel_encoder *encoder); 4218 const struct intel_crtc_state *crtc_state);
4198void vlv_phy_reset_lanes(struct intel_encoder *encoder); 4219void vlv_phy_pre_encoder_enable(struct intel_encoder *encoder,
4220 const struct intel_crtc_state *crtc_state);
4221void vlv_phy_reset_lanes(struct intel_encoder *encoder,
4222 const struct intel_crtc_state *old_crtc_state);
4199 4223
4200int intel_gpu_freq(struct drm_i915_private *dev_priv, int val); 4224int intel_gpu_freq(struct drm_i915_private *dev_priv, int val);
4201int intel_freq_opcode(struct drm_i915_private *dev_priv, int val); 4225int intel_freq_opcode(struct drm_i915_private *dev_priv, int val);