48 lines · c
1// SPDX-License-Identifier: MIT2/*3 * Copyright © 2021 Intel Corporation4 */5 6#include <drm/drm_managed.h>7 8#include "i915_drv.h"9#include "gt/intel_gt.h"10#include "gt/intel_sa_media.h"11 12int intel_sa_mediagt_setup(struct intel_gt *gt, phys_addr_t phys_addr,13 u32 gsi_offset)14{15 struct drm_i915_private *i915 = gt->i915;16 struct intel_uncore *uncore;17 18 uncore = drmm_kzalloc(&i915->drm, sizeof(*uncore), GFP_KERNEL);19 if (!uncore)20 return -ENOMEM;21 22 uncore->gsi_offset = gsi_offset;23 24 gt->irq_lock = to_gt(i915)->irq_lock;25 intel_gt_common_init_early(gt);26 intel_uncore_init_early(uncore, gt);27 28 /*29 * Standalone media shares the general MMIO space with the primary30 * GT. We'll re-use the primary GT's mapping.31 */32 uncore->regs = intel_uncore_regs(&i915->uncore);33 if (drm_WARN_ON(&i915->drm, uncore->regs == NULL))34 return -EIO;35 36 gt->uncore = uncore;37 gt->phys_addr = phys_addr;38 39 /*40 * For current platforms we can assume there's only a single41 * media GT and cache it for quick lookup.42 */43 drm_WARN_ON(&i915->drm, i915->media_gt);44 i915->media_gt = gt;45 46 return 0;47}48