diff options
Diffstat (limited to 'drivers/gpu/drm/i915/i915_drv.h')
| -rw-r--r-- | drivers/gpu/drm/i915/i915_drv.h | 62 |
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 | ||
| 1700 | struct ddi_vbt_port_info { | 1707 | struct 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 | ||
| 2229 | struct intel_cdclk_state { | 2238 | struct intel_cdclk_state { |
| 2230 | unsigned int cdclk, vco, ref; | 2239 | unsigned int cdclk, vco, ref; |
| 2240 | u8 voltage_level; | ||
| 2231 | }; | 2241 | }; |
| 2232 | 2242 | ||
| 2233 | struct drm_i915_private { | 2243 | struct 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 | ||
| 3317 | extern bool intel_has_reset_engine(struct drm_i915_private *dev_priv); | 3334 | extern bool intel_has_reset_engine(struct drm_i915_private *dev_priv); |
| 3318 | extern int intel_guc_reset(struct drm_i915_private *dev_priv); | 3335 | extern int intel_reset_guc(struct drm_i915_private *dev_priv); |
| 3336 | extern int intel_guc_reset_engine(struct intel_guc *guc, | ||
| 3337 | struct intel_engine_cs *engine); | ||
| 3319 | extern void intel_engine_init_hangcheck(struct intel_engine_cs *engine); | 3338 | extern void intel_engine_init_hangcheck(struct intel_engine_cs *engine); |
| 3320 | extern void intel_hangcheck_init(struct drm_i915_private *dev_priv); | 3339 | extern void intel_hangcheck_init(struct drm_i915_private *dev_priv); |
| 3321 | extern unsigned long i915_chipset_val(struct drm_i915_private *dev_priv); | 3340 | extern 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 */ |
| 4108 | extern void intel_modeset_init_hw(struct drm_device *dev); | 4127 | extern void intel_modeset_init_hw(struct drm_device *dev); |
| 4109 | extern int intel_modeset_init(struct drm_device *dev); | 4128 | extern int intel_modeset_init(struct drm_device *dev); |
| 4110 | extern void intel_modeset_gem_init(struct drm_device *dev); | ||
| 4111 | extern void intel_modeset_cleanup(struct drm_device *dev); | 4129 | extern void intel_modeset_cleanup(struct drm_device *dev); |
| 4112 | extern int intel_connector_register(struct drm_connector *); | 4130 | extern int intel_connector_register(struct drm_connector *); |
| 4113 | extern void intel_connector_unregister(struct drm_connector *); | 4131 | extern 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); |
| 4175 | bool bxt_ddi_phy_verify_state(struct drm_i915_private *dev_priv, | 4193 | bool bxt_ddi_phy_verify_state(struct drm_i915_private *dev_priv, |
| 4176 | enum dpio_phy phy); | 4194 | enum dpio_phy phy); |
| 4177 | uint8_t bxt_ddi_phy_calc_lane_lat_optim_mask(struct intel_encoder *encoder, | 4195 | uint8_t bxt_ddi_phy_calc_lane_lat_optim_mask(uint8_t lane_count); |
| 4178 | uint8_t lane_count); | ||
| 4179 | void bxt_ddi_phy_set_lane_optim_mask(struct intel_encoder *encoder, | 4196 | void 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); |
| 4181 | uint8_t bxt_ddi_phy_get_lane_lat_optim_mask(struct intel_encoder *encoder); | 4198 | uint8_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); |
| 4186 | void chv_data_lane_soft_reset(struct intel_encoder *encoder, | 4203 | void chv_data_lane_soft_reset(struct intel_encoder *encoder, |
| 4204 | const struct intel_crtc_state *crtc_state, | ||
| 4187 | bool reset); | 4205 | bool reset); |
| 4188 | void chv_phy_pre_pll_enable(struct intel_encoder *encoder); | 4206 | void chv_phy_pre_pll_enable(struct intel_encoder *encoder, |
| 4189 | void chv_phy_pre_encoder_enable(struct intel_encoder *encoder); | 4207 | const struct intel_crtc_state *crtc_state); |
| 4208 | void chv_phy_pre_encoder_enable(struct intel_encoder *encoder, | ||
| 4209 | const struct intel_crtc_state *crtc_state); | ||
| 4190 | void chv_phy_release_cl2_override(struct intel_encoder *encoder); | 4210 | void chv_phy_release_cl2_override(struct intel_encoder *encoder); |
| 4191 | void chv_phy_post_pll_disable(struct intel_encoder *encoder); | 4211 | void chv_phy_post_pll_disable(struct intel_encoder *encoder, |
| 4212 | const struct intel_crtc_state *old_crtc_state); | ||
| 4192 | 4213 | ||
| 4193 | void vlv_set_phy_signal_level(struct intel_encoder *encoder, | 4214 | void 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); |
| 4196 | void vlv_phy_pre_pll_enable(struct intel_encoder *encoder); | 4217 | void vlv_phy_pre_pll_enable(struct intel_encoder *encoder, |
| 4197 | void vlv_phy_pre_encoder_enable(struct intel_encoder *encoder); | 4218 | const struct intel_crtc_state *crtc_state); |
| 4198 | void vlv_phy_reset_lanes(struct intel_encoder *encoder); | 4219 | void vlv_phy_pre_encoder_enable(struct intel_encoder *encoder, |
| 4220 | const struct intel_crtc_state *crtc_state); | ||
| 4221 | void vlv_phy_reset_lanes(struct intel_encoder *encoder, | ||
| 4222 | const struct intel_crtc_state *old_crtc_state); | ||
| 4199 | 4223 | ||
| 4200 | int intel_gpu_freq(struct drm_i915_private *dev_priv, int val); | 4224 | int intel_gpu_freq(struct drm_i915_private *dev_priv, int val); |
| 4201 | int intel_freq_opcode(struct drm_i915_private *dev_priv, int val); | 4225 | int intel_freq_opcode(struct drm_i915_private *dev_priv, int val); |
