drm/xe: Reinstate media GT support
Now that tiles and GTs are handled separately and other prerequisite changes are in place, we're ready to re-enable the media GT. Reviewed-by: Lucas De Marchi <lucas.demarchi@intel.com> Link: https://lore.kernel.org/r/20230601215244.678611-31-matthew.d.roper@intel.com Signed-off-by: Matt Roper <matthew.d.roper@intel.com> Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
This commit is contained in:
@ -8,6 +8,14 @@
|
|||||||
|
|
||||||
#include "regs/xe_reg_defs.h"
|
#include "regs/xe_reg_defs.h"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The GSI register range [0x0 - 0x40000) is replicated at a higher offset
|
||||||
|
* for the media GT. xe_mmio and xe_gt_mcr functions will automatically
|
||||||
|
* translate offsets by MEDIA_GT_GSI_OFFSET when operating on the media GT.
|
||||||
|
*/
|
||||||
|
#define MEDIA_GT_GSI_OFFSET 0x380000
|
||||||
|
#define MEDIA_GT_GSI_LENGTH 0x40000
|
||||||
|
|
||||||
/* RPM unit config (Gen8+) */
|
/* RPM unit config (Gen8+) */
|
||||||
#define RPM_CONFIG0 XE_REG(0xd00)
|
#define RPM_CONFIG0 XE_REG(0xd00)
|
||||||
#define RPM_CONFIG0_CRYSTAL_CLOCK_FREQ_MASK REG_GENMASK(5, 3)
|
#define RPM_CONFIG0_CRYSTAL_CLOCK_FREQ_MASK REG_GENMASK(5, 3)
|
||||||
|
@ -545,7 +545,31 @@ static int xe_info_init(struct xe_device *xe,
|
|||||||
if (MEDIA_VER(xe) < 13 && media_desc)
|
if (MEDIA_VER(xe) < 13 && media_desc)
|
||||||
gt->info.__engine_mask |= media_desc->hw_engine_mask;
|
gt->info.__engine_mask |= media_desc->hw_engine_mask;
|
||||||
|
|
||||||
/* TODO: Init media GT, if present */
|
if (MEDIA_VER(xe) < 13 || !media_desc)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Allocate and setup media GT for platforms with standalone
|
||||||
|
* media.
|
||||||
|
*/
|
||||||
|
tile->media_gt = xe_gt_alloc(tile);
|
||||||
|
if (IS_ERR(tile->media_gt))
|
||||||
|
return PTR_ERR(tile->media_gt);
|
||||||
|
|
||||||
|
gt = tile->media_gt;
|
||||||
|
gt->info.type = XE_GT_TYPE_MEDIA;
|
||||||
|
gt->info.__engine_mask = media_desc->hw_engine_mask;
|
||||||
|
gt->mmio.adj_offset = MEDIA_GT_GSI_OFFSET;
|
||||||
|
gt->mmio.adj_limit = MEDIA_GT_GSI_LENGTH;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* FIXME: At the moment multi-tile and standalone media are
|
||||||
|
* mutually exclusive on current platforms. We'll need to
|
||||||
|
* come up with a better way to number GTs if we ever wind
|
||||||
|
* up with platforms that support both together.
|
||||||
|
*/
|
||||||
|
drm_WARN_ON(&xe->drm, id != 0);
|
||||||
|
gt->info.id = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
Reference in New Issue
Block a user