diff options
Diffstat (limited to 'drivers/gpu/drm/i915/i915_pci.c')
| -rw-r--r-- | drivers/gpu/drm/i915/i915_pci.c | 65 | 
1 files changed, 50 insertions, 15 deletions
diff --git a/drivers/gpu/drm/i915/i915_pci.c b/drivers/gpu/drm/i915/i915_pci.c index 6c9f46fc3e12..1974e4c78a43 100644 --- a/drivers/gpu/drm/i915/i915_pci.c +++ b/drivers/gpu/drm/i915/i915_pci.c @@ -522,8 +522,6 @@ static const struct intel_device_info intel_haswell_gt3_info = {  #define GEN8_FEATURES \  	G75_FEATURES, \  	GEN(8), \ -	.page_sizes = I915_GTT_PAGE_SIZE_4K | \ -		      I915_GTT_PAGE_SIZE_2M, \  	.has_logical_ring_contexts = 1, \  	.ppgtt_type = INTEL_PPGTT_FULL, \  	.ppgtt_size = 48, \ @@ -586,8 +584,7 @@ static const struct intel_device_info intel_cherryview_info = {  #define GEN9_DEFAULT_PAGE_SIZES \  	.page_sizes = I915_GTT_PAGE_SIZE_4K | \ -		      I915_GTT_PAGE_SIZE_64K | \ -		      I915_GTT_PAGE_SIZE_2M +		      I915_GTT_PAGE_SIZE_64K  #define GEN9_FEATURES \  	GEN8_FEATURES, \ @@ -595,7 +592,7 @@ static const struct intel_device_info intel_cherryview_info = {  	GEN9_DEFAULT_PAGE_SIZES, \  	.has_logical_ring_preemption = 1, \  	.display.has_csr = 1, \ -	.has_guc = 1, \ +	.has_gt_uc = 1, \  	.display.has_ipc = 1, \  	.ddb_size = 896 @@ -647,7 +644,7 @@ static const struct intel_device_info intel_skylake_gt4_info = {  	.display.has_dp_mst = 1, \  	.has_logical_ring_contexts = 1, \  	.has_logical_ring_preemption = 1, \ -	.has_guc = 1, \ +	.has_gt_uc = 1, \  	.ppgtt_type = INTEL_PPGTT_FULL, \  	.ppgtt_size = 48, \  	.has_reset_engine = 1, \ @@ -727,8 +724,14 @@ static const struct intel_device_info intel_cannonlake_info = {  	.gt = 2,  }; +#define GEN11_DEFAULT_PAGE_SIZES \ +	.page_sizes = I915_GTT_PAGE_SIZE_4K | \ +		      I915_GTT_PAGE_SIZE_64K | \ +		      I915_GTT_PAGE_SIZE_2M +  #define GEN11_FEATURES \  	GEN10_FEATURES, \ +	GEN11_DEFAULT_PAGE_SIZES, \  	.pipe_offsets = { \  		[TRANSCODER_A] = PIPE_A_OFFSET, \  		[TRANSCODER_B] = PIPE_B_OFFSET, \ @@ -761,10 +764,41 @@ static const struct intel_device_info intel_elkhartlake_info = {  	GEN11_FEATURES,  	PLATFORM(INTEL_ELKHARTLAKE),  	.require_force_probe = 1, -	.engine_mask = BIT(RCS0) | BIT(BCS0) | BIT(VCS0), +	.engine_mask = BIT(RCS0) | BIT(BCS0) | BIT(VCS0) | BIT(VECS0),  	.ppgtt_size = 36,  }; +#define GEN12_FEATURES \ +	GEN11_FEATURES, \ +	GEN(12), \ +	.pipe_offsets = { \ +		[TRANSCODER_A] = PIPE_A_OFFSET, \ +		[TRANSCODER_B] = PIPE_B_OFFSET, \ +		[TRANSCODER_C] = PIPE_C_OFFSET, \ +		[TRANSCODER_D] = PIPE_D_OFFSET, \ +		[TRANSCODER_DSI_0] = PIPE_DSI0_OFFSET, \ +		[TRANSCODER_DSI_1] = PIPE_DSI1_OFFSET, \ +	}, \ +	.trans_offsets = { \ +		[TRANSCODER_A] = TRANSCODER_A_OFFSET, \ +		[TRANSCODER_B] = TRANSCODER_B_OFFSET, \ +		[TRANSCODER_C] = TRANSCODER_C_OFFSET, \ +		[TRANSCODER_D] = TRANSCODER_D_OFFSET, \ +		[TRANSCODER_DSI_0] = TRANSCODER_DSI0_OFFSET, \ +		[TRANSCODER_DSI_1] = TRANSCODER_DSI1_OFFSET, \ +	}, \ +	.has_global_mocs = 1 + +static const struct intel_device_info intel_tigerlake_12_info = { +	GEN12_FEATURES, +	PLATFORM(INTEL_TIGERLAKE), +	.num_pipes = 4, +	.require_force_probe = 1, +	.display.has_modular_fia = 1, +	.engine_mask = +		BIT(RCS0) | BIT(BCS0) | BIT(VECS0) | BIT(VCS0) | BIT(VCS2), +}; +  #undef GEN  #undef PLATFORM @@ -836,22 +870,23 @@ static const struct pci_device_id pciidlist[] = {  	INTEL_CNL_IDS(&intel_cannonlake_info),  	INTEL_ICL_11_IDS(&intel_icelake_11_info),  	INTEL_EHL_IDS(&intel_elkhartlake_info), +	INTEL_TGL_12_IDS(&intel_tigerlake_12_info),  	{0, 0, 0}  };  MODULE_DEVICE_TABLE(pci, pciidlist);  static void i915_pci_remove(struct pci_dev *pdev)  { -	struct drm_device *dev; +	struct drm_i915_private *i915; -	dev = pci_get_drvdata(pdev); -	if (!dev) /* driver load aborted, nothing to cleanup */ +	i915 = pci_get_drvdata(pdev); +	if (!i915) /* driver load aborted, nothing to cleanup */  		return; -	i915_driver_unload(dev); -	drm_dev_put(dev); - +	i915_driver_remove(i915);  	pci_set_drvdata(pdev, NULL); + +	drm_dev_put(&i915->drm);  }  /* is device_id present in comma separated list of ids */ @@ -923,11 +958,11 @@ static int i915_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)  	if (vga_switcheroo_client_probe_defer(pdev))  		return -EPROBE_DEFER; -	err = i915_driver_load(pdev, ent); +	err = i915_driver_probe(pdev, ent);  	if (err)  		return err; -	if (i915_inject_load_failure()) { +	if (i915_inject_probe_failure(pci_get_drvdata(pdev))) {  		i915_pci_remove(pdev);  		return -ENODEV;  	}  |