1*f0e2f00cSMatt Roper // SPDX-License-Identifier: MIT
2*f0e2f00cSMatt Roper /*
3*f0e2f00cSMatt Roper  * Copyright © 2021 Intel Corporation
4*f0e2f00cSMatt Roper  */
5*f0e2f00cSMatt Roper 
6*f0e2f00cSMatt Roper #include <drm/drm_managed.h>
7*f0e2f00cSMatt Roper 
8*f0e2f00cSMatt Roper #include "i915_drv.h"
9*f0e2f00cSMatt Roper #include "gt/intel_gt.h"
10*f0e2f00cSMatt Roper #include "gt/intel_sa_media.h"
11*f0e2f00cSMatt Roper 
12*f0e2f00cSMatt Roper int intel_sa_mediagt_setup(struct intel_gt *gt, phys_addr_t phys_addr,
13*f0e2f00cSMatt Roper 			   u32 gsi_offset)
14*f0e2f00cSMatt Roper {
15*f0e2f00cSMatt Roper 	struct drm_i915_private *i915 = gt->i915;
16*f0e2f00cSMatt Roper 	struct intel_uncore *uncore;
17*f0e2f00cSMatt Roper 
18*f0e2f00cSMatt Roper 	uncore = drmm_kzalloc(&i915->drm, sizeof(*uncore), GFP_KERNEL);
19*f0e2f00cSMatt Roper 	if (!uncore)
20*f0e2f00cSMatt Roper 		return -ENOMEM;
21*f0e2f00cSMatt Roper 
22*f0e2f00cSMatt Roper 	uncore->gsi_offset = gsi_offset;
23*f0e2f00cSMatt Roper 
24*f0e2f00cSMatt Roper 	intel_gt_common_init_early(gt);
25*f0e2f00cSMatt Roper 	intel_uncore_init_early(uncore, gt);
26*f0e2f00cSMatt Roper 
27*f0e2f00cSMatt Roper 	/*
28*f0e2f00cSMatt Roper 	 * Standalone media shares the general MMIO space with the primary
29*f0e2f00cSMatt Roper 	 * GT.  We'll re-use the primary GT's mapping.
30*f0e2f00cSMatt Roper 	 */
31*f0e2f00cSMatt Roper 	uncore->regs = i915->uncore.regs;
32*f0e2f00cSMatt Roper 	if (drm_WARN_ON(&i915->drm, uncore->regs == NULL))
33*f0e2f00cSMatt Roper 		return -EIO;
34*f0e2f00cSMatt Roper 
35*f0e2f00cSMatt Roper 	gt->uncore = uncore;
36*f0e2f00cSMatt Roper 	gt->phys_addr = phys_addr;
37*f0e2f00cSMatt Roper 
38*f0e2f00cSMatt Roper 	return 0;
39*f0e2f00cSMatt Roper }
40