[PATCH 07/18] media: venus: core: Assign registers based on VPU version

Konrad Dybcio posted 18 patches 2 years, 11 months ago
There is a newer version of this series
[PATCH 07/18] media: venus: core: Assign registers based on VPU version
Posted by Konrad Dybcio 2 years, 11 months ago
IRIS2(_1) has a different register map compared to other HFI6XX-
using VPUs. Take care of it.

Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org>
---
 drivers/media/platform/qcom/venus/core.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/media/platform/qcom/venus/core.c b/drivers/media/platform/qcom/venus/core.c
index c13436d58ed3..bdc14acc8399 100644
--- a/drivers/media/platform/qcom/venus/core.c
+++ b/drivers/media/platform/qcom/venus/core.c
@@ -246,7 +246,7 @@ static int venus_enumerate_codecs(struct venus_core *core, u32 type)
 
 static void venus_assign_register_offsets(struct venus_core *core)
 {
-	if (IS_V6(core)) {
+	if (IS_IRIS2(core) || IS_IRIS2_1(core)) {
 		core->vbif_base = core->base + VBIF_BASE;
 		core->cpu_base = core->base + CPU_BASE_V6;
 		core->cpu_cs_base = core->base + CPU_CS_BASE_V6;

-- 
2.39.2
Re: [PATCH 07/18] media: venus: core: Assign registers based on VPU version
Posted by Dikshita Agarwal 2 years, 11 months ago
On 2/28/2023 8:54 PM, Konrad Dybcio wrote:
> IRIS2(_1) has a different register map compared to other HFI6XX-
> using VPUs. Take care of it.
>
> Signed-off-by: Konrad Dybcio<konrad.dybcio@linaro.org>
> ---
>   drivers/media/platform/qcom/venus/core.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/media/platform/qcom/venus/core.c b/drivers/media/platform/qcom/venus/core.c
> index c13436d58ed3..bdc14acc8399 100644
> --- a/drivers/media/platform/qcom/venus/core.c
> +++ b/drivers/media/platform/qcom/venus/core.c
> @@ -246,7 +246,7 @@ static int venus_enumerate_codecs(struct venus_core *core, u32 type)
>   
>   static void venus_assign_register_offsets(struct venus_core *core)
>   {
> -	if (IS_V6(core)) {
> +	if (IS_IRIS2(core) || IS_IRIS2_1(core)) {
>   		core->vbif_base = core->base + VBIF_BASE;
>   		core->cpu_base = core->base + CPU_BASE_V6;
>   		core->cpu_cs_base = core->base + CPU_CS_BASE_V6;

AR50_LITE also should be added here, as I see you have added the same to 
places where we are using V6 based registers.

if the base addresses are not assigned here properly. the register 
writing at other places will be wrong, ex: patch 05/18

Thanks,

Dikshita
Re: [PATCH 07/18] media: venus: core: Assign registers based on VPU version
Posted by Konrad Dybcio 2 years, 11 months ago

On 7.03.2023 05:57, Dikshita Agarwal wrote:
> 
> On 2/28/2023 8:54 PM, Konrad Dybcio wrote:
>> IRIS2(_1) has a different register map compared to other HFI6XX-
>> using VPUs. Take care of it.
>>
>> Signed-off-by: Konrad Dybcio<konrad.dybcio@linaro.org>
>> ---
>>   drivers/media/platform/qcom/venus/core.c | 2 +-
>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/drivers/media/platform/qcom/venus/core.c b/drivers/media/platform/qcom/venus/core.c
>> index c13436d58ed3..bdc14acc8399 100644
>> --- a/drivers/media/platform/qcom/venus/core.c
>> +++ b/drivers/media/platform/qcom/venus/core.c
>> @@ -246,7 +246,7 @@ static int venus_enumerate_codecs(struct venus_core *core, u32 type)
>>     static void venus_assign_register_offsets(struct venus_core *core)
>>   {
>> -    if (IS_V6(core)) {
>> +    if (IS_IRIS2(core) || IS_IRIS2_1(core)) {
>>           core->vbif_base = core->base + VBIF_BASE;
>>           core->cpu_base = core->base + CPU_BASE_V6;
>>           core->cpu_cs_base = core->base + CPU_CS_BASE_V6;
> 
> AR50_LITE also should be added here, as I see you have added the same to places where we are using V6 based registers.
> 
> if the base addresses are not assigned here properly. the register writing at other places will be wrong, ex: patch 05/18
I have a separate patch set which specifically adds AR50L data,
and they're not 1:1, vbif_base and aon_base are gone (at least
according to techpack/video). I intend to push it when I get it
all working, but here's what it looks like right now:


diff --git a/drivers/media/platform/qcom/venus/core.c b/drivers/media/platform/qcom/venus/core.c
index fd9ecb1f7a05..f88b4781c5d0 100644
--- a/drivers/media/platform/qcom/venus/core.c
+++ b/drivers/media/platform/qcom/venus/core.c
@@ -254,6 +254,14 @@ static void venus_assign_register_offsets(struct venus_core *core)
                core->wrapper_base = core->base + WRAPPER_BASE_V6;
                core->wrapper_tz_base = core->base + WRAPPER_TZ_BASE_V6;
                core->aon_base = core->base + AON_BASE_V6;
+       } else if (IS_AR50_LITE(core)) {
+               core->vbif_base = NULL;
+               core->cpu_base = core->base + CPU_BASE_V6;
+               core->cpu_cs_base = core->base + CPU_CS_BASE_V6;
+               core->cpu_ic_base = core->base + CPU_IC_BASE_V6;
+               core->wrapper_base = core->base + WRAPPER_BASE_V6;
+               core->wrapper_tz_base = core->base + WRAPPER_TZ_BASE_V6;
+               core->aon_base = NULL;
        } else {
                core->vbif_base = core->base + VBIF_BASE;
                core->cpu_base = core->base + CPU_BASE;
-- 
2.39.2


Konrad

> 
> Thanks,
> 
> Dikshita
>