From: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
To: stanimir.varbanov@linaro.org, agross@kernel.org,
bjorn.andersson@linaro.org, mchehab@kernel.org,
linux-media@vger.kernel.org, linux-arm-msm@vger.kernel.org
Cc: bryan.odonoghue@linaro.org, dikshita@codeaurora.org,
jonathan@marek.ca, vgarodia@codeaurora.org
Subject: [PATCH 18/25] media: venus: hfi: Add 6xx AXI halt logic
Date: Mon, 22 Feb 2021 16:02:53 +0000 [thread overview]
Message-ID: <20210222160300.1811121-19-bryan.odonoghue@linaro.org> (raw)
In-Reply-To: <20210222160300.1811121-1-bryan.odonoghue@linaro.org>
From: Dikshita Agarwal <dikshita@codeaurora.org>
This patch takes the downstream AXI halt routine and applies it when
IS_V6() is true.
bod: Converted to readl_poll_timeout()
Converted LPI update timeout to dev_dbg. In practice this register
never appears to update with the value 0x07. Discussing with contacts
in qcom video team, this toggle only pertains to low-power mode.
Keeping the write for the sake of fidelity with downstream.
Signed-off-by: Dikshita Agarwal <dikshita@codeaurora.org>
Co-developed-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
---
drivers/media/platform/qcom/venus/hfi_venus.c | 45 +++++++++++++++++++
1 file changed, 45 insertions(+)
diff --git a/drivers/media/platform/qcom/venus/hfi_venus.c b/drivers/media/platform/qcom/venus/hfi_venus.c
index 24cf20f76e7f..01c100db07d3 100644
--- a/drivers/media/platform/qcom/venus/hfi_venus.c
+++ b/drivers/media/platform/qcom/venus/hfi_venus.c
@@ -541,10 +541,55 @@ static int venus_halt_axi(struct venus_hfi_device *hdev)
{
void __iomem *wrapper_base = hdev->core->wrapper_base;
void __iomem *vbif_base = hdev->core->vbif_base;
+ void __iomem *cpu_cs_base = hdev->core->cpu_cs_base;
+ void __iomem *aon_base = hdev->core->aon_base;
struct device *dev = hdev->core->dev;
u32 val;
+ u32 mask_val;
int ret;
+ if (IS_V6(hdev->core)) {
+ writel(0x3, cpu_cs_base + CPU_CS_X2RPMH_V6);
+
+ writel(0x1, aon_base + AON_WRAPPER_MVP_NOC_LPI_CONTROL);
+ ret = readl_poll_timeout(aon_base + AON_WRAPPER_MVP_NOC_LPI_STATUS,
+ val,
+ val & BIT(0),
+ POLL_INTERVAL_US,
+ VBIF_AXI_HALT_ACK_TIMEOUT_US);
+ if (ret) {
+ dev_err(dev, "NOC not in qaccept status %x\n", val);
+ return -ETIMEDOUT;
+ }
+
+ /* HPG 6.1.2 Step 3, debug bridge to low power */
+ mask_val = (BIT(2) | BIT(1) | BIT(0));
+ writel(mask_val, wrapper_base + WRAPPER_DEBUG_BRIDGE_LPI_CONTROL_V6);
+
+ ret = readl_poll_timeout(wrapper_base + WRAPPER_DEBUG_BRIDGE_LPI_STATUS_V6,
+ val,
+ (val & mask_val) == mask_val,
+ POLL_INTERVAL_US,
+ VBIF_AXI_HALT_ACK_TIMEOUT_US);
+
+ if (ret)
+ dev_dbg(dev, "DBLP Set: status %x\n", val);
+
+ /* HPG 6.1.2 Step 4, debug bridge to lpi release */
+ writel(0x00, wrapper_base + WRAPPER_DEBUG_BRIDGE_LPI_CONTROL_V6);
+ ret = readl_poll_timeout(wrapper_base + WRAPPER_DEBUG_BRIDGE_LPI_STATUS_V6,
+ val,
+ val == 0,
+ POLL_INTERVAL_US,
+ VBIF_AXI_HALT_ACK_TIMEOUT_US);
+
+ if (ret) {
+ dev_err(dev, "DBLP Release: lpi_status %x\n", val);
+ return -ETIMEDOUT;
+ }
+ return 0;
+ }
+
if (IS_V4(hdev->core)) {
val = readl(wrapper_base + WRAPPER_CPU_AXI_HALT);
val |= WRAPPER_CPU_AXI_HALT_HALT;
--
2.29.2
next prev parent reply other threads:[~2021-02-22 16:04 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-02-22 16:02 [PATCH 00/25] media: venus: Enable 6xx support Bryan O'Donoghue
2021-02-22 16:02 ` [PATCH 01/25] media: venus: Update v6 buffer descriptors Bryan O'Donoghue
2021-02-23 13:11 ` Stanimir Varbanov
2021-02-22 16:02 ` [PATCH 02/25] media: venus: core,pm: Add handling for resets Bryan O'Donoghue
2021-02-22 16:02 ` [PATCH 03/25] media: venus: core: add sm8250 DT compatible and resource data Bryan O'Donoghue
2021-02-23 13:48 ` Stanimir Varbanov
2021-02-22 16:02 ` [PATCH 04/25] media: venus: core,pm: Vote for min clk freq during venus boot Bryan O'Donoghue
2021-02-23 13:25 ` Stanimir Varbanov
2021-03-06 15:01 ` Stanimir Varbanov
2021-03-06 16:48 ` Bryan O'Donoghue
2021-03-07 10:44 ` Stanimir Varbanov
2021-03-10 17:33 ` Bryan O'Donoghue
2021-03-10 22:02 ` Stanimir Varbanov
2021-02-22 16:02 ` [PATCH 05/25] media: venus: core: Add io base variables for each block Bryan O'Donoghue
2021-02-23 13:28 ` Stanimir Varbanov
2021-02-22 16:02 ` [PATCH 06/25] media: venus: hfi,pm,firmware: Convert to block relative addressing Bryan O'Donoghue
2021-02-23 13:31 ` Stanimir Varbanov
2021-02-22 16:02 ` [PATCH 07/25] media: venus: hfi: Define block offsets for V6 hardware Bryan O'Donoghue
2021-02-23 13:32 ` Stanimir Varbanov
2021-02-22 16:02 ` [PATCH 08/25] media: venus: hfi: Define additional 6xx registers Bryan O'Donoghue
2021-02-22 16:02 ` [PATCH 09/25] media: venus: core: Add differentiator IS_V6(core) Bryan O'Donoghue
2021-02-22 16:02 ` [PATCH 10/25] media: venus: core: Add an io base for TZ wrapper regs Bryan O'Donoghue
2021-02-22 16:02 ` [PATCH 11/25] media: venus: core: Add an io base for AON regs Bryan O'Donoghue
2021-02-22 16:02 ` [PATCH 12/25] media: venus: core: Hook to V6 base registers when appropriate Bryan O'Donoghue
2021-02-22 16:02 ` [PATCH 13/25] media: venus: hfi: Add a 6xx boot logic Bryan O'Donoghue
2021-02-22 16:02 ` [PATCH 14/25] media: venus: hfi: Add 6xx interrupt support Bryan O'Donoghue
2021-02-22 16:02 ` [PATCH 15/25] media: venus: hfi: Read WRAPPER_TZ_CPU_STATUS_V6 on 6xx Bryan O'Donoghue
2021-02-22 16:02 ` [PATCH 16/25] media: venus: hfi, vdec: v6 Add IS_V6() to existing IS_V4() if locations Bryan O'Donoghue
2021-02-22 16:02 ` [PATCH 17/25] media: venus: pm: Hook 6xx pm ops into 4xx pm ops Bryan O'Donoghue
2021-02-22 16:02 ` Bryan O'Donoghue [this message]
2021-02-25 7:29 ` [PATCH 18/25] media: venus: hfi: Add 6xx AXI halt logic Stanimir Varbanov
2021-02-22 16:02 ` [PATCH 19/25] media: venus: pm: Toggle 6xx wrapper power in vcodec_control Bryan O'Donoghue
2021-02-22 16:02 ` [PATCH 20/25] media: venus: firmware: Do not toggle WRAPPER_A9SS_SW_RESET on 6xx Bryan O'Donoghue
2021-02-22 16:02 ` [PATCH 21/25] media: venus: helpers: Add internal buffer list for v6 Bryan O'Donoghue
2021-02-25 7:57 ` Stanimir Varbanov
2021-02-22 16:02 ` [PATCH 22/25] media: venus: helpers, hfi, vdec: Set actual plane constraints to FW Bryan O'Donoghue
2021-02-25 8:00 ` Stanimir Varbanov
2021-03-12 2:58 ` Bryan O'Donoghue
2021-02-22 16:02 ` [PATCH 23/25] media: venus: hfi: Increase plat_buf_v6 o/p buffer count Bryan O'Donoghue
2021-02-22 16:02 ` [PATCH 24/25] media: venus: helper: Decide work mode Bryan O'Donoghue
2021-02-22 16:03 ` [PATCH 25/25] media: venus: vdec: Fix decoder cmd STOP issue Bryan O'Donoghue
2021-02-26 10:25 ` Stanimir Varbanov
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=20210222160300.1811121-19-bryan.odonoghue@linaro.org \
--to=bryan.odonoghue@linaro.org \
--cc=agross@kernel.org \
--cc=bjorn.andersson@linaro.org \
--cc=dikshita@codeaurora.org \
--cc=jonathan@marek.ca \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=mchehab@kernel.org \
--cc=stanimir.varbanov@linaro.org \
--cc=vgarodia@codeaurora.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;
as well as URLs for NNTP newsgroup(s).