drm/i915/gvt: Export intel_gvt_render_mmio_to_ring_id()
Since many emulation logic needs to convert the offset of ring registers into ring id, we export it for other caller which might need it. Signed-off-by: Zhi Wang <zhi.a.wang@intel.com>
This commit is contained in:
Родитель
7d1e5cdf01
Коммит
62a6a53786
|
@ -137,17 +137,26 @@ static int new_mmio_info(struct intel_gvt *gvt,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int render_mmio_to_ring_id(struct intel_gvt *gvt, unsigned int reg)
|
/**
|
||||||
|
* intel_gvt_render_mmio_to_ring_id - convert a mmio offset into ring id
|
||||||
|
* @gvt: a GVT device
|
||||||
|
* @offset: register offset
|
||||||
|
*
|
||||||
|
* Returns:
|
||||||
|
* Ring ID on success, negative error code if failed.
|
||||||
|
*/
|
||||||
|
int intel_gvt_render_mmio_to_ring_id(struct intel_gvt *gvt,
|
||||||
|
unsigned int offset)
|
||||||
{
|
{
|
||||||
enum intel_engine_id id;
|
enum intel_engine_id id;
|
||||||
struct intel_engine_cs *engine;
|
struct intel_engine_cs *engine;
|
||||||
|
|
||||||
reg &= ~GENMASK(11, 0);
|
offset &= ~GENMASK(11, 0);
|
||||||
for_each_engine(engine, gvt->dev_priv, id) {
|
for_each_engine(engine, gvt->dev_priv, id) {
|
||||||
if (engine->mmio_base == reg)
|
if (engine->mmio_base == offset)
|
||||||
return id;
|
return id;
|
||||||
}
|
}
|
||||||
return -1;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define offset_to_fence_num(offset) \
|
#define offset_to_fence_num(offset) \
|
||||||
|
@ -1445,7 +1454,7 @@ static int mmio_read_from_hw(struct intel_vgpu *vgpu,
|
||||||
static int elsp_mmio_write(struct intel_vgpu *vgpu, unsigned int offset,
|
static int elsp_mmio_write(struct intel_vgpu *vgpu, unsigned int offset,
|
||||||
void *p_data, unsigned int bytes)
|
void *p_data, unsigned int bytes)
|
||||||
{
|
{
|
||||||
int ring_id = render_mmio_to_ring_id(vgpu->gvt, offset);
|
int ring_id = intel_gvt_render_mmio_to_ring_id(vgpu->gvt, offset);
|
||||||
struct intel_vgpu_execlist *execlist;
|
struct intel_vgpu_execlist *execlist;
|
||||||
u32 data = *(u32 *)p_data;
|
u32 data = *(u32 *)p_data;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
@ -1473,7 +1482,7 @@ static int ring_mode_mmio_write(struct intel_vgpu *vgpu, unsigned int offset,
|
||||||
{
|
{
|
||||||
struct intel_vgpu_submission *s = &vgpu->submission;
|
struct intel_vgpu_submission *s = &vgpu->submission;
|
||||||
u32 data = *(u32 *)p_data;
|
u32 data = *(u32 *)p_data;
|
||||||
int ring_id = render_mmio_to_ring_id(vgpu->gvt, offset);
|
int ring_id = intel_gvt_render_mmio_to_ring_id(vgpu->gvt, offset);
|
||||||
bool enable_execlist;
|
bool enable_execlist;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
|
|
|
@ -65,6 +65,8 @@ struct intel_gvt_mmio_info {
|
||||||
struct hlist_node node;
|
struct hlist_node node;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
int intel_gvt_render_mmio_to_ring_id(struct intel_gvt *gvt,
|
||||||
|
unsigned int reg);
|
||||||
unsigned long intel_gvt_get_device_type(struct intel_gvt *gvt);
|
unsigned long intel_gvt_get_device_type(struct intel_gvt *gvt);
|
||||||
bool intel_gvt_match_device(struct intel_gvt *gvt, unsigned long device);
|
bool intel_gvt_match_device(struct intel_gvt *gvt, unsigned long device);
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче