From: Neil Armstrong <neil.armstrong@linaro.org>
To: Philipp Zabel <p.zabel@pengutronix.de>,
Vikash Garodia <quic_vgarodia@quicinc.com>,
Dikshita Agarwal <quic_dikshita@quicinc.com>,
Abhinav Kumar <quic_abhinavk@quicinc.com>,
Mauro Carvalho Chehab <mchehab@kernel.org>,
Rob Herring <robh@kernel.org>,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
Conor Dooley <conor+dt@kernel.org>
Cc: linux-arm-msm@vger.kernel.org, linux-media@vger.kernel.org,
devicetree@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 3/4] media: platform: qcom/iris: add support for vpu33
Date: Mon, 3 Mar 2025 17:59:39 +0100 [thread overview]
Message-ID: <71c8e765-7eb8-4572-8461-30e4761be836@linaro.org> (raw)
In-Reply-To: <1fcf08fe37a8e14c4acae445d65bd1503b13b6d2.camel@pengutronix.de>
On 28/02/2025 17:38, Philipp Zabel wrote:
> On Di, 2025-02-25 at 10:05 +0100, Neil Armstrong wrote:
>> The IRIS acceleration found in the SM8650 platforms uses the vpu33
>> hardware version, and requires a slighly different reset and power off
>> sequences in order to properly get out of runtime suspend.
>>
>> Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
>> ---
>> drivers/media/platform/qcom/iris/Makefile | 1 +
>> drivers/media/platform/qcom/iris/iris_vpu33.c | 315 +++++++++++++++++++++
>> drivers/media/platform/qcom/iris/iris_vpu_common.h | 1 +
>> 3 files changed, 317 insertions(+)
>>
>> diff --git a/drivers/media/platform/qcom/iris/Makefile b/drivers/media/platform/qcom/iris/Makefile
>> index 35390534534e93f4617c1036a05ca0921567ba1d..6b64c9988505afd9707c704449d60bb53209229f 100644
>> --- a/drivers/media/platform/qcom/iris/Makefile
>> +++ b/drivers/media/platform/qcom/iris/Makefile
>> @@ -21,6 +21,7 @@ qcom-iris-objs += \
>> iris_vdec.o \
>> iris_vpu2.o \
>> iris_vpu3.o \
>> + iris_vpu33.o \
>> iris_vpu_buffer.o \
>> iris_vpu_common.o \
>>
>> diff --git a/drivers/media/platform/qcom/iris/iris_vpu33.c b/drivers/media/platform/qcom/iris/iris_vpu33.c
>> new file mode 100644
>> index 0000000000000000000000000000000000000000..128a050f206f99ec0d43b97ff995fa50d5684150
>> --- /dev/null
>> +++ b/drivers/media/platform/qcom/iris/iris_vpu33.c
>> @@ -0,0 +1,315 @@
>> +// SPDX-License-Identifier: GPL-2.0-only
>> +/*
>> + * Copyright (c) 2022-2024 Qualcomm Innovation Center, Inc. All rights reserved.
>> + */
>> +
>> +#include <linux/iopoll.h>
>> +#include <linux/reset.h>
>> +
>> +#include "iris_instance.h"
>> +#include "iris_vpu_common.h"
>> +#include "iris_vpu_register_defines.h"
>> +
>> +#define WRAPPER_TZ_BASE_OFFS 0x000C0000
>> +#define AON_BASE_OFFS 0x000E0000
>> +#define AON_MVP_NOC_RESET 0x0001F000
>> +
>> +#define WRAPPER_DEBUG_BRIDGE_LPI_CONTROL (WRAPPER_BASE_OFFS + 0x54)
>> +#define WRAPPER_DEBUG_BRIDGE_LPI_STATUS (WRAPPER_BASE_OFFS + 0x58)
>> +#define WRAPPER_IRIS_CPU_NOC_LPI_CONTROL (WRAPPER_BASE_OFFS + 0x5C)
>> +#define REQ_POWER_DOWN_PREP BIT(0)
>> +#define WRAPPER_IRIS_CPU_NOC_LPI_STATUS (WRAPPER_BASE_OFFS + 0x60)
>> +#define WRAPPER_CORE_CLOCK_CONFIG (WRAPPER_BASE_OFFS + 0x88)
>> +#define CORE_CLK_RUN 0x0
>> +
>> +#define WRAPPER_TZ_CTL_AXI_CLOCK_CONFIG (WRAPPER_TZ_BASE_OFFS + 0x14)
>> +#define CTL_AXI_CLK_HALT BIT(0)
>> +#define CTL_CLK_HALT BIT(1)
>> +
>> +#define WRAPPER_TZ_QNS4PDXFIFO_RESET (WRAPPER_TZ_BASE_OFFS + 0x18)
>> +#define RESET_HIGH BIT(0)
>> +
>> +#define CPU_CS_AHB_BRIDGE_SYNC_RESET (CPU_CS_BASE_OFFS + 0x160)
>> +#define CORE_BRIDGE_SW_RESET BIT(0)
>> +#define CORE_BRIDGE_HW_RESET_DISABLE BIT(1)
>> +
>> +#define CPU_CS_X2RPMH (CPU_CS_BASE_OFFS + 0x168)
>> +#define MSK_SIGNAL_FROM_TENSILICA BIT(0)
>> +#define MSK_CORE_POWER_ON BIT(1)
>> +
>> +#define AON_WRAPPER_MVP_NOC_RESET_REQ (AON_MVP_NOC_RESET + 0x000)
>> +#define VIDEO_NOC_RESET_REQ (BIT(0) | BIT(1))
>> +
>> +#define AON_WRAPPER_MVP_NOC_RESET_ACK (AON_MVP_NOC_RESET + 0x004)
>> +
>> +#define VCODEC_SS_IDLE_STATUSN (VCODEC_BASE_OFFS + 0x70)
>> +
>> +#define AON_WRAPPER_MVP_NOC_LPI_CONTROL (AON_BASE_OFFS)
>> +#define AON_WRAPPER_MVP_NOC_LPI_STATUS (AON_BASE_OFFS + 0x4)
>> +
>> +#define AON_WRAPPER_MVP_NOC_CORE_SW_RESET (AON_BASE_OFFS + 0x18)
>> +#define SW_RESET BIT(0)
>> +#define AON_WRAPPER_MVP_NOC_CORE_CLK_CONTROL (AON_BASE_OFFS + 0x20)
>> +#define NOC_HALT BIT(0)
>> +#define AON_WRAPPER_SPARE (AON_BASE_OFFS + 0x28)
>> +
>> +#define VCODEC_DMA_SPARE_3 0x87B8
>> +
>> +static int reset_control_bulk_assert_id(int num_rstcs,
>> + struct reset_control_bulk_data *rstcs,
>> + char *id)
>> +{
>> + int i;
>> +
>> + for (i = 0; i < num_rstcs; ++i) {
>> + if (!strcmp(rstcs[i].id, id))
>> + return reset_control_assert(rstcs[i].rstc);
>> + }
>> +
>> + return -ENODEV;
>> +}
>> +
>> +static int reset_control_bulk_deassert_id(int num_rstcs,
>> + struct reset_control_bulk_data *rstcs,
>> + char *id)
>> +{
>> + int i;
>> +
>> + for (i = 0; i < num_rstcs; ++i) {
>> + if (!strcmp(rstcs[i].id, id))
>> + return reset_control_deassert(rstcs[i].rstc);
>> + }
>> +
>> + return -ENODEV;
>> +}
>
> Please adapt the abstractions instead of working around them. If the
> driver isn't suited for a single reset_control_bulk_data in iris_core,
> split it into multiple groups, or store the resets individually.
>
> At the very least, this could use constant indices instead of linear
> search with string compares.
It was a first try, I'll think about something better for v2.
Neil
>
> regards
> Philipp
next prev parent reply other threads:[~2025-03-03 16:59 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-02-25 9:05 [PATCH 0/4] media: qcom: iris: add support for SM8650 Neil Armstrong
2025-02-25 9:05 ` [PATCH 1/4] dt-bindings: media: qcom,sm8550-iris: document SM8650 IRIS accelerator Neil Armstrong
2025-02-25 17:15 ` Rob Herring (Arm)
2025-02-28 12:21 ` Dikshita Agarwal
2025-03-03 16:54 ` Neil Armstrong
2025-03-03 17:16 ` Krzysztof Kozlowski
2025-02-25 9:05 ` [PATCH 2/4] media: platform: qcom/iris: add reset_controller & power_off_controller to vpu_ops Neil Armstrong
2025-02-25 10:02 ` Dmitry Baryshkov
2025-02-25 10:03 ` Neil Armstrong
2025-02-25 10:41 ` Dmitry Baryshkov
2025-02-25 17:55 ` neil.armstrong
2025-02-25 18:06 ` Dmitry Baryshkov
2025-02-25 18:10 ` neil.armstrong
2025-02-25 21:04 ` Dmitry Baryshkov
2025-02-25 9:05 ` [PATCH 3/4] media: platform: qcom/iris: add support for vpu33 Neil Armstrong
2025-02-28 11:39 ` Dikshita Agarwal
2025-02-28 12:33 ` Neil Armstrong
2025-03-03 17:03 ` Neil Armstrong
2025-03-04 8:38 ` Dikshita Agarwal
2025-03-04 9:38 ` neil.armstrong
2025-02-28 12:09 ` Vikash Garodia
2025-02-28 12:36 ` Neil Armstrong
2025-02-28 16:38 ` Philipp Zabel
2025-03-03 16:59 ` Neil Armstrong [this message]
2025-02-25 9:05 ` [PATCH 4/4] media: platform: qcom/iris: add sm8650 support Neil Armstrong
2025-02-28 12:15 ` Dikshita Agarwal
2025-02-28 12:35 ` Neil Armstrong
2025-02-28 13:35 ` Vikash Garodia
2025-02-28 13:40 ` neil.armstrong
2025-02-28 13:52 ` Vikash Garodia
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=71c8e765-7eb8-4572-8461-30e4761be836@linaro.org \
--to=neil.armstrong@linaro.org \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=krzk+dt@kernel.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=mchehab@kernel.org \
--cc=p.zabel@pengutronix.de \
--cc=quic_abhinavk@quicinc.com \
--cc=quic_dikshita@quicinc.com \
--cc=quic_vgarodia@quicinc.com \
--cc=robh@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox