28,7 → 28,6 |
|
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt |
|
#include <linux/async.h> |
#include <drm/drmP.h> |
#include <drm/drm_crtc_helper.h> |
#include <drm/drm_fb_helper.h> |
44,6 → 43,7 |
//#include <linux/pnp.h> |
//#include <linux/vga_switcheroo.h> |
#include <linux/slab.h> |
//#include <acpi/video.h> |
#include <linux/pm.h> |
#include <linux/pm_runtime.h> |
|
130,7 → 130,7 |
value = 1; |
break; |
case I915_PARAM_HAS_SECURE_BATCHES: |
value = 1; |
value = capable(CAP_SYS_ADMIN); |
break; |
case I915_PARAM_HAS_PINNED_BATCHES: |
value = 1; |
206,7 → 206,7 |
u32 temp; |
bool enabled; |
|
if (IS_VALLEYVIEW(dev)) |
if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) |
return; |
|
dev_priv->mchbar_need_disable = false; |
286,7 → 286,7 |
struct drm_i915_private *dev_priv = dev->dev_private; |
int ret; |
|
ret = intel_parse_bios(dev); |
ret = intel_bios_init(dev_priv); |
if (ret) |
DRM_INFO("failed to find VBIOS tables\n"); |
|
305,8 → 305,10 |
if (ret) |
goto cleanup_vga_switcheroo; |
|
intel_power_domains_init_hw(dev_priv); |
intel_power_domains_init_hw(dev_priv, false); |
|
intel_csr_ucode_init(dev_priv); |
|
ret = intel_irq_install(dev_priv); |
if (ret) |
goto cleanup_gem_stolen; |
317,6 → 319,8 |
* working irqs for e.g. gmbus and dp aux transfers. */ |
intel_modeset_init(dev); |
|
intel_guc_ucode_init(dev); |
|
ret = i915_gem_init(dev); |
if (ret) |
goto cleanup_irq; |
358,6 → 362,7 |
i915_gem_context_fini(dev); |
mutex_unlock(&dev->struct_mutex); |
cleanup_irq: |
intel_guc_ucode_fini(dev); |
// drm_irq_uninstall(dev); |
cleanup_gem_stolen: |
i915_gem_cleanup_stolen(dev); |
571,7 → 576,8 |
* supports EU power gating on devices with more than one EU |
* pair per subslice. |
*/ |
info->has_slice_pg = (IS_SKYLAKE(dev) && (info->slice_total > 1)); |
info->has_slice_pg = ((IS_SKYLAKE(dev) || IS_KABYLAKE(dev)) && |
(info->slice_total > 1)); |
info->has_subslice_pg = (IS_BROXTON(dev) && (info->subslice_total > 1)); |
info->has_eu_pg = (info->eu_per_subslice > 2); |
} |
685,7 → 691,7 |
info->num_sprites[PIPE_A] = 2; |
info->num_sprites[PIPE_B] = 2; |
info->num_sprites[PIPE_C] = 1; |
} else if (IS_VALLEYVIEW(dev)) |
} else if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) |
for_each_pipe(dev_priv, pipe) |
info->num_sprites[pipe] = 2; |
else |
697,7 → 703,7 |
info->num_pipes = 0; |
} else if (info->num_pipes > 0 && |
(INTEL_INFO(dev)->gen == 7 || INTEL_INFO(dev)->gen == 8) && |
!IS_VALLEYVIEW(dev)) { |
HAS_PCH_SPLIT(dev)) { |
u32 fuse_strap = I915_READ(FUSE_STRAP); |
u32 sfuse_strap = I915_READ(SFUSE_STRAP); |
|
742,9 → 748,6 |
|
static void intel_init_dpio(struct drm_i915_private *dev_priv) |
{ |
if (!IS_VALLEYVIEW(dev_priv)) |
return; |
|
/* |
* IOSF_PORT_DPIO is used for VLV x2 PHY (DP/HDMI B and C), |
* CHV x1 PHY (DP/HDMI D) |
753,7 → 756,7 |
if (IS_CHERRYVIEW(dev_priv)) { |
DPIO_PHY_IOSF_PORT(DPIO_PHY0) = IOSF_PORT_DPIO_2; |
DPIO_PHY_IOSF_PORT(DPIO_PHY1) = IOSF_PORT_DPIO; |
} else { |
} else if (IS_VALLEYVIEW(dev_priv)) { |
DPIO_PHY_IOSF_PORT(DPIO_PHY0) = IOSF_PORT_DPIO; |
} |
} |
798,11 → 801,12 |
spin_lock_init(&dev_priv->mmio_flip_lock); |
mutex_init(&dev_priv->sb_lock); |
mutex_init(&dev_priv->modeset_restore_lock); |
mutex_init(&dev_priv->csr_lock); |
mutex_init(&dev_priv->av_mutex); |
|
intel_pm_setup(dev); |
|
intel_runtime_pm_get(dev_priv); |
|
intel_display_crc_init(dev); |
|
i915_dump_device_info(dev_priv); |
847,9 → 851,6 |
|
intel_uncore_init(dev); |
|
/* Load CSR Firmware for SKL */ |
intel_csr_ucode_init(dev); |
|
ret = i915_gem_gtt_init(dev); |
if (ret) |
goto out_freecsr; |
998,6 → 999,8 |
struct drm_i915_private *dev_priv = dev->dev_private; |
int ret; |
|
intel_fbdev_fini(dev); |
|
i915_audio_component_cleanup(dev_priv); |
|
ret = i915_gem_suspend(dev); |
1020,8 → 1023,6 |
|
acpi_video_unregister(); |
|
intel_fbdev_fini(dev); |
|
drm_vblank_cleanup(dev); |
|
intel_modeset_cleanup(dev); |
1063,7 → 1064,7 |
intel_fbc_cleanup_cfb(dev_priv); |
i915_gem_cleanup_stolen(dev); |
|
intel_csr_ucode_fini(dev); |
intel_csr_ucode_fini(dev_priv); |
|
intel_teardown_mchbar(dev); |
|
1132,8 → 1133,6 |
{ |
struct drm_i915_file_private *file_priv = file->driver_priv; |
|
if (file_priv && file_priv->bsd_ring) |
file_priv->bsd_ring = NULL; |
kfree(file_priv); |
} |
|