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