linux-i2c.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: neil.armstrong@linaro.org
To: Mukesh Kumar Savaliya <quic_msavaliy@quicinc.com>,
	konrad.dybcio@linaro.org, andersson@kernel.org,
	andi.shyti@kernel.org, linux-arm-msm@vger.kernel.org,
	dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-i2c@vger.kernel.org
Cc: quic_vdadhani@quicinc.com
Subject: Re: [PATCH v1 0/4] Enable shared SE support over I2C
Date: Fri, 30 Aug 2024 09:47:06 +0200	[thread overview]
Message-ID: <d1ceab6e-907a-4939-8be4-6b460d6c594f@linaro.org> (raw)
In-Reply-To: <20240829092418.2863659-1-quic_msavaliy@quicinc.com>

Hi,

On 29/08/2024 11:24, Mukesh Kumar Savaliya wrote:
> This Series adds support to share QUP based I2C SE between subsystems.
> Each subsystem should have its own GPII which interacts between SE and
> GSI DMA HW engine.
> 
> Subsystem must acquire Lock over the SE on GPII channel so that it
> gets uninterrupted control till it unlocks the SE. It also makes sure
> the commonly shared TLMM GPIOs are not touched which can impact other
> subsystem or cause any interruption. Generally, GPIOs are being
> unconfigured during suspend time.
> 
> GSI DMA engine is capable to perform requested transfer operations
> from any of the SE in a seamless way and its transparent to the
> subsystems. Make sure to enable “qcom,shared-se” flag only while
> enabling this feature. I2C client should add in its respective parent
> node.
> 
> ---
> Mukesh Kumar Savaliya (4):
>    dt-bindindgs: i2c: qcom,i2c-geni: Document shared flag
>    dma: gpi: Add Lock and Unlock TRE support to access SE exclusively
>    soc: qcom: geni-se: Export function geni_se_clks_off()
>    i2c: i2c-qcom-geni: Enable i2c controller sharing between two
>      subsystems
> 
>   .../bindings/i2c/qcom,i2c-geni-qcom.yaml      |  4 ++
>   drivers/dma/qcom/gpi.c                        | 37 ++++++++++++++++++-
>   drivers/i2c/busses/i2c-qcom-geni.c            | 29 +++++++++++----
>   drivers/soc/qcom/qcom-geni-se.c               |  4 +-
>   include/linux/dma/qcom-gpi-dma.h              |  6 +++
>   include/linux/soc/qcom/geni-se.h              |  3 ++
>   6 files changed, 74 insertions(+), 9 deletions(-)
> 

I see in downstream that this flag is used on the SM8650 qupv3_se6_i2c,
and that on the SM8650-HDK this i2c is shared between the aDSP battmgr and
the linux to access the HDMI controller.

Is this is the target use-case ?

We have some issues on this platform that crashes the system when Linux
does some I2C transfers while battmgr does some access at the same time,
the problem is that on the Linux side the i2c uses the SE DMA and not GPI
because fifo_disable=0 so by default this bypasses GPI.

A temporary fix has been merged:
https://lore.kernel.org/all/20240605-topic-sm8650-upstream-hdk-iommu-fix-v1-1-9fd7233725fa@linaro.org/
but it's clearly not a real solution

What would be the solution to use the shared i2c with on one side battmgr
using GPI and the kernel using SE DMA ?

In this case, shouldn't we force using GPI on linux with:
==============><=====================================================================
diff --git a/drivers/i2c/busses/i2c-qcom-geni.c b/drivers/i2c/busses/i2c-qcom-geni.c
index ee2e431601a6..a15825ea56de 100644
--- a/drivers/i2c/busses/i2c-qcom-geni.c
+++ b/drivers/i2c/busses/i2c-qcom-geni.c
@@ -885,7 +885,7 @@ static int geni_i2c_probe(struct platform_device *pdev)
         else
                 fifo_disable = readl_relaxed(gi2c->se.base + GENI_IF_DISABLE_RO) & FIFO_IF_DISABLE;

-       if (fifo_disable) {
+       if (gi2c->is_shared || fifo_disable) {
                 /* FIFO is disabled, so we can only use GPI DMA */
                 gi2c->gpi_mode = true;
                 ret = setup_gpi_dma(gi2c);
==============><=====================================================================

Neil

  parent reply	other threads:[~2024-08-30  7:47 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-08-29  9:24 [PATCH v1 0/4] Enable shared SE support over I2C Mukesh Kumar Savaliya
2024-08-29  9:24 ` [PATCH v1 1/4] dt-bindindgs: i2c: qcom,i2c-geni: Document shared flag Mukesh Kumar Savaliya
2024-08-29  9:58   ` Bryan O'Donoghue
2024-08-29 10:01     ` Bryan O'Donoghue
2024-09-04 18:26       ` Mukesh Kumar Savaliya
2024-09-04 18:37     ` Mukesh Kumar Savaliya
2024-08-30  8:11   ` Krzysztof Kozlowski
2024-09-04 18:12     ` Mukesh Kumar Savaliya
2024-09-04 18:20       ` Krzysztof Kozlowski
2024-09-05  5:43         ` Mukesh Kumar Savaliya
2024-09-05  6:21           ` Krzysztof Kozlowski
2024-09-05 11:17             ` Mukesh Kumar Savaliya
2024-08-29  9:24 ` [PATCH v1 2/4] dma: gpi: Add Lock and Unlock TRE support to access SE exclusively Mukesh Kumar Savaliya
2024-08-29 10:05   ` Bryan O'Donoghue
2024-09-04 18:23     ` Mukesh Kumar Savaliya
2024-08-29  9:24 ` [PATCH v1 3/4] soc: qcom: geni-se: Export function geni_se_clks_off() Mukesh Kumar Savaliya
2024-08-29 10:19   ` Bryan O'Donoghue
2024-09-04 18:12     ` Mukesh Kumar Savaliya
2024-08-29  9:24 ` [PATCH v1 4/4] i2c: i2c-qcom-geni: Enable i2c controller sharing between two subsystems Mukesh Kumar Savaliya
2024-08-29  9:56 ` [PATCH v1 0/4] Enable shared SE support over I2C Bryan O'Donoghue
2024-09-04 18:21   ` Mukesh Kumar Savaliya
2024-08-29 10:10 ` Bryan O'Donoghue
2024-09-04 18:08   ` Mukesh Kumar Savaliya
2024-08-29 17:01 ` Vinod Koul
2024-08-30  7:47 ` neil.armstrong [this message]
2024-09-04 18:07   ` Mukesh Kumar Savaliya
2024-09-05  7:09     ` neil.armstrong
2024-09-05  9:28       ` Mukesh Kumar Savaliya

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=d1ceab6e-907a-4939-8be4-6b460d6c594f@linaro.org \
    --to=neil.armstrong@linaro.org \
    --cc=andersson@kernel.org \
    --cc=andi.shyti@kernel.org \
    --cc=dmaengine@vger.kernel.org \
    --cc=konrad.dybcio@linaro.org \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-i2c@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=quic_msavaliy@quicinc.com \
    --cc=quic_vdadhani@quicinc.com \
    /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).