tests/amdgpu: enable vcn test based on ip query
family_id checks can be removed and instead use ip major/minor version Signed-off-by: Sathishkumar S <sathishkumar.sundararaju@amd.com> Reviewed-by: Veerabadhran Gopalakrishnan <veerabadhran.gopalakrishnan@amd.com> Reviewed-by: Leo Liu <leo.liu@amd.com>main
parent
1d92f32741
commit
d13ab997f5
|
@ -70,7 +70,13 @@ static uint32_t *ib_cpu;
|
||||||
|
|
||||||
static amdgpu_bo_handle resources[MAX_RESOURCES];
|
static amdgpu_bo_handle resources[MAX_RESOURCES];
|
||||||
static unsigned num_resources;
|
static unsigned num_resources;
|
||||||
static struct amdgpu_vcn_reg reg;
|
|
||||||
|
static uint8_t vcn_reg_index;
|
||||||
|
static struct amdgpu_vcn_reg reg[] = {
|
||||||
|
{0x81c4, 0x81c5, 0x81c3, 0x81ff, 0x81c6},
|
||||||
|
{0x504, 0x505, 0x503, 0x53f, 0x506},
|
||||||
|
{0x10, 0x11, 0xf, 0x29, 0x26d},
|
||||||
|
};
|
||||||
|
|
||||||
static void amdgpu_cs_vcn_dec_create(void);
|
static void amdgpu_cs_vcn_dec_create(void);
|
||||||
static void amdgpu_cs_vcn_dec_decode(void);
|
static void amdgpu_cs_vcn_dec_decode(void);
|
||||||
|
@ -125,45 +131,14 @@ CU_BOOL suite_vcn_tests_enable(void)
|
||||||
amdgpu_set_test_active("VCN Tests", "VCN ENC destroy", CU_FALSE);
|
amdgpu_set_test_active("VCN Tests", "VCN ENC destroy", CU_FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (family_id == AMDGPU_FAMILY_RV) {
|
if (info.hw_ip_version_major == 1)
|
||||||
if (chip_id >= (chip_rev + 0x91)) {
|
vcn_reg_index = 0;
|
||||||
reg.data0 = 0x504;
|
else if (info.hw_ip_version_major == 2)
|
||||||
reg.data1 = 0x505;
|
vcn_reg_index = 1;
|
||||||
reg.cmd = 0x503;
|
else if ((info.hw_ip_version_major == 2 && info.hw_ip_version_minor >= 5) ||
|
||||||
reg.nop = 0x53f;
|
info.hw_ip_version_major == 3)
|
||||||
reg.cntl = 0x506;
|
vcn_reg_index = 2;
|
||||||
} else {
|
else
|
||||||
reg.data0 = 0x81c4;
|
|
||||||
reg.data1 = 0x81c5;
|
|
||||||
reg.cmd = 0x81c3;
|
|
||||||
reg.nop = 0x81ff;
|
|
||||||
reg.cntl = 0x81c6;
|
|
||||||
}
|
|
||||||
} else if (family_id == AMDGPU_FAMILY_NV) {
|
|
||||||
if (chip_id == (chip_rev + 0x28) ||
|
|
||||||
chip_id == (chip_rev + 0x32) ||
|
|
||||||
chip_id == (chip_rev + 0x3c) ||
|
|
||||||
chip_id == (chip_rev + 0x46)) {
|
|
||||||
reg.data0 = 0x10;
|
|
||||||
reg.data1 = 0x11;
|
|
||||||
reg.cmd = 0xf;
|
|
||||||
reg.nop = 0x29;
|
|
||||||
reg.cntl = 0x26d;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
reg.data0 = 0x504;
|
|
||||||
reg.data1 = 0x505;
|
|
||||||
reg.cmd = 0x503;
|
|
||||||
reg.nop = 0x53f;
|
|
||||||
reg.cntl = 0x506;
|
|
||||||
}
|
|
||||||
} else if (family_id == AMDGPU_FAMILY_AI) {
|
|
||||||
reg.data0 = 0x10;
|
|
||||||
reg.data1 = 0x11;
|
|
||||||
reg.cmd = 0xf;
|
|
||||||
reg.nop = 0x29;
|
|
||||||
reg.cntl = 0x26d;
|
|
||||||
} else
|
|
||||||
return CU_FALSE;
|
return CU_FALSE;
|
||||||
|
|
||||||
return CU_TRUE;
|
return CU_TRUE;
|
||||||
|
@ -307,11 +282,11 @@ static void free_resource(struct amdgpu_vcn_bo *vcn_bo)
|
||||||
|
|
||||||
static void vcn_dec_cmd(uint64_t addr, unsigned cmd, int *idx)
|
static void vcn_dec_cmd(uint64_t addr, unsigned cmd, int *idx)
|
||||||
{
|
{
|
||||||
ib_cpu[(*idx)++] = reg.data0;
|
ib_cpu[(*idx)++] = reg[vcn_reg_index].data0;
|
||||||
ib_cpu[(*idx)++] = addr;
|
ib_cpu[(*idx)++] = addr;
|
||||||
ib_cpu[(*idx)++] = reg.data1;
|
ib_cpu[(*idx)++] = reg[vcn_reg_index].data1;
|
||||||
ib_cpu[(*idx)++] = addr >> 32;
|
ib_cpu[(*idx)++] = addr >> 32;
|
||||||
ib_cpu[(*idx)++] = reg.cmd;
|
ib_cpu[(*idx)++] = reg[vcn_reg_index].cmd;
|
||||||
ib_cpu[(*idx)++] = cmd << 1;
|
ib_cpu[(*idx)++] = cmd << 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -332,14 +307,14 @@ static void amdgpu_cs_vcn_dec_create(void)
|
||||||
memcpy(msg_buf.ptr, vcn_dec_create_msg, sizeof(vcn_dec_create_msg));
|
memcpy(msg_buf.ptr, vcn_dec_create_msg, sizeof(vcn_dec_create_msg));
|
||||||
|
|
||||||
len = 0;
|
len = 0;
|
||||||
ib_cpu[len++] = reg.data0;
|
ib_cpu[len++] = reg[vcn_reg_index].data0;
|
||||||
ib_cpu[len++] = msg_buf.addr;
|
ib_cpu[len++] = msg_buf.addr;
|
||||||
ib_cpu[len++] = reg.data1;
|
ib_cpu[len++] = reg[vcn_reg_index].data1;
|
||||||
ib_cpu[len++] = msg_buf.addr >> 32;
|
ib_cpu[len++] = msg_buf.addr >> 32;
|
||||||
ib_cpu[len++] = reg.cmd;
|
ib_cpu[len++] = reg[vcn_reg_index].cmd;
|
||||||
ib_cpu[len++] = 0;
|
ib_cpu[len++] = 0;
|
||||||
for (; len % 16; ) {
|
for (; len % 16; ) {
|
||||||
ib_cpu[len++] = reg.nop;
|
ib_cpu[len++] = reg[vcn_reg_index].nop;
|
||||||
ib_cpu[len++] = 0;
|
ib_cpu[len++] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -407,10 +382,10 @@ static void amdgpu_cs_vcn_dec_decode(void)
|
||||||
vcn_dec_cmd(it_addr, 0x204, &len);
|
vcn_dec_cmd(it_addr, 0x204, &len);
|
||||||
vcn_dec_cmd(ctx_addr, 0x206, &len);
|
vcn_dec_cmd(ctx_addr, 0x206, &len);
|
||||||
|
|
||||||
ib_cpu[len++] = reg.cntl;
|
ib_cpu[len++] = reg[vcn_reg_index].cntl;
|
||||||
ib_cpu[len++] = 0x1;
|
ib_cpu[len++] = 0x1;
|
||||||
for (; len % 16; ) {
|
for (; len % 16; ) {
|
||||||
ib_cpu[len++] = reg.nop;
|
ib_cpu[len++] = reg[vcn_reg_index].nop;
|
||||||
ib_cpu[len++] = 0;
|
ib_cpu[len++] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -442,14 +417,14 @@ static void amdgpu_cs_vcn_dec_destroy(void)
|
||||||
memcpy(msg_buf.ptr, vcn_dec_destroy_msg, sizeof(vcn_dec_destroy_msg));
|
memcpy(msg_buf.ptr, vcn_dec_destroy_msg, sizeof(vcn_dec_destroy_msg));
|
||||||
|
|
||||||
len = 0;
|
len = 0;
|
||||||
ib_cpu[len++] = reg.data0;
|
ib_cpu[len++] = reg[vcn_reg_index].data0;
|
||||||
ib_cpu[len++] = msg_buf.addr;
|
ib_cpu[len++] = msg_buf.addr;
|
||||||
ib_cpu[len++] = reg.data1;
|
ib_cpu[len++] = reg[vcn_reg_index].data1;
|
||||||
ib_cpu[len++] = msg_buf.addr >> 32;
|
ib_cpu[len++] = msg_buf.addr >> 32;
|
||||||
ib_cpu[len++] = reg.cmd;
|
ib_cpu[len++] = reg[vcn_reg_index].cmd;
|
||||||
ib_cpu[len++] = 0;
|
ib_cpu[len++] = 0;
|
||||||
for (; len % 16; ) {
|
for (; len % 16; ) {
|
||||||
ib_cpu[len++] = reg.nop;
|
ib_cpu[len++] = reg[vcn_reg_index].nop;
|
||||||
ib_cpu[len++] = 0;
|
ib_cpu[len++] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue