diff mbox series

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

Message ID 20230228-topic-venus-v1-7-58c2c88384e9@linaro.org
State New
Headers show
Series Venus QoL / maintainability fixes | expand

Commit Message

Konrad Dybcio Feb. 28, 2023, 3:24 p.m. UTC
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(-)

Comments

Dikshita Agarwal March 7, 2023, 4:57 a.m. UTC | #1
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
Konrad Dybcio March 7, 2023, 11:18 a.m. UTC | #2
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;
diff mbox series

Patch

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;