All of lore.kernel.org
 help / color / mirror / Atom feed
From: Krishna Kurapati PSSNV <quic_kriskura@quicinc.com>
To: Johan Hovold <johan@kernel.org>
Cc: Thinh Nguyen <Thinh.Nguyen@synopsys.com>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Philipp Zabel <p.zabel@pengutronix.de>,
	"Andy Gross" <agross@kernel.org>,
	Bjorn Andersson <andersson@kernel.org>,
	"Konrad Dybcio" <konrad.dybcio@linaro.org>,
	Rob Herring <robh+dt@kernel.org>,
	Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>,
	Felipe Balbi <balbi@kernel.org>,
	Wesley Cheng <quic_wcheng@quicinc.com>,
	<linux-usb@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
	<linux-arm-msm@vger.kernel.org>, <devicetree@vger.kernel.org>,
	<quic_pkondeti@quicinc.com>, <quic_ppratap@quicinc.com>,
	<quic_jackp@quicinc.com>, <ahalaney@redhat.com>,
	<quic_shazhuss@quicinc.com>
Subject: Re: [PATCH v13 05/10] usb: dwc3: qcom: Refactor IRQ handling in QCOM Glue driver
Date: Fri, 3 Nov 2023 15:34:52 +0530	[thread overview]
Message-ID: <04615205-e380-4719-aff1-f32c26004b14@quicinc.com> (raw)
In-Reply-To: <ZTdqnSHq_Jo8AuPW@hovoldconsulting.com>



On 10/24/2023 12:26 PM, Johan Hovold wrote:
> On Mon, Oct 23, 2023 at 10:42:31PM +0530, Krishna Kurapati PSSNV wrote:
>> On 10/23/2023 7:37 PM, Johan Hovold wrote:
> 
>>> Right. And I assume there are hs_phy_irqs also for the first two USB
>>> controllers on sc8280xp?
> 
>> There are, I can dig through and find out. Atleast in downstream I don't
>> see any use of them.
> 
> Yes, please do post how these are wired as well for completeness.
> 
>>> Can you find out anything more about what hs_phy_irq is used for? It
>>> appears to be an HS wakeup interrupt like the dp/dm ones, but there are
>>> not really any details on how it is supposed to be used.
>>
>>    This IRQ is really not used in downstream controllers. Not sure if its
>> a good idea to add driver code for that. I did some digging and I got
>> the reason why I first said that there is only one hs_phy_irq for
>> tertiary port of controller. The hardware programming sequence doesn't
>> specify usage of these 4 IRQ's but the hw specifics mention that there
>> are 4 of them. Adding driver support for these IRQ's is not a good idea
>> (atleast at this point because they are not used in downstream and I am
>> not sure what would be the side effect). For now I suggest we can add
>> them in bindings and DT and not handle the 4 hs_phy_irq's in the driver
>> code (meaning not add the hs_phy_irq to port structure we plan on adding
>> to dwc3_qcom).
> 
> But there is already support for these interrupts in the driver. You
> work for Qualcomm who built the thing so surely you can figure how they
> intended these to be used?
> 
> You need to provide this information so that we can determine what the
> binding should look like. The implementation would also be simplified if
> we don't have to add random hacks to it just because we don't know why
> the vendor driver you refer does not use it currently on this particular
> platform.
> 

Hi Johan,

Regarding the points of discussion we had last week on [1], here are 
some clarifications:

1. We do have hs_phy_irq 1/2/3/4 for tertiary port of Sc8280 as 
mentioned. Why do we need them and would we use it in multiport targets ?

DPSE and DMSE are single ended line state of DP and DM lines. The DP 
line and DM line stay in steady High or Low during suspend and they flip 
when there is a RESUME or REMOTE WAKE. This is what we do/check in 
dwc3_qcom_enable_interrupts call for dp/dm irq's based on usb2_speed.

Initially in QUSB2 targets, the interrupts were enabled and configured 
in phy and the wakeup was interrupt was read on hs_phy_irq vector - [2].
In that case, we modify DP/DM interrupts in phy registers, specifically 
QUSB2PHY_INTR_CTRL and when wakeup signal comes in, hs_phy_irq is 
triggered. But in femto targets, this is done via DP/DM interrupts and 
there is no use of hs_phy_irq. Even hw folks confirmed they dont use 
hs_ph_irq in femto phy targets.

As an experiment, I tried to test wakeup by pressing buttons on 
connected keyboard when in suspend state or connecting/disconnecting 
keyboard in suspended state on different ports and only see dp/dm IRQ's 
getting fired although we register for hs_phy_irq as well:

/ # cat /proc/interrupts  |grep phy_
171:   1  0   0   0  0  0  0  0       PDC 127 Edge      dp_hs_phy_1
172:   2  0   0   0  0  0  0  0       PDC 126 Edge      dm_hs_phy_1
173:   3  0   0   0  0  0  0  0       PDC 129 Edge      dp_hs_phy_2
174:   4  0   0   0  0  0  0  0       PDC 128 Edge      dm_hs_phy_2
175:   0  0   0   0  0  0  0  0       PDC 131 Edge      dp_hs_phy_3
176:   2  0   0   0  0  0  0  0       PDC 130 Edge      dm_hs_phy_3
177:   2  0   0   0  0  0  0  0       PDC 133 Edge      dp_hs_phy_4
178:   5  0   0   0  0  0  0  0       PDC 132 Edge      dm_hs_phy_4
179:   0  0   0   0  0  0  0  0       PDC  16 Level     ss_phy_1
180:   0  0   0   0  0  0  0  0       PDC  17 Level     ss_phy_2
181:   0  0   0   0  0  0  0  0     GICv3 163 Level     hs_phy_1
182:   0  0   0   0  0  0  0  0     GICv3 168 Level     hs_phy_2
183:   0  0   0   0  0  0  0  0     GICv3 892 Level     hs_phy_3
184:   0  0   0   0  0  0  0  0     GICv3 891 Level     hs_phy_4

Since the hs_phy_irq is applicable only for qusb2 targets, do we still 
need to add it to DT.

2. BAM Irq usage (u_usb31_scnd_mvs_pipe_wrapper_usb31_bam_irq[0]):

BAM IRQ is not needed in host-only controller. It was just added in 
process of porting/deriving code from DRD controllers and is 
non-functional (confirmed by HW team here). We can skip this from DT of 
multiport.

3. ctrl_irq[1] usage:

This is a feature of SNPS controller, not qcom glue wrapper, and is 
present on all targets (non-QC as well probably). As mentioned before on 
[3], this is used for HW acceleration.

In host mode, XHCI spec does allow for multiple interrupters when 
multiple event rings are used. A possible usage is multiple execution 
environments something like what we are doing on mobile with ADSP audio 
offload [4]. Another possibility could be some of virtualization where 
host/hyp would manage the first interrupter and could allow a guest to 
operate only with the second (though current design does not go far 
enough to offer true isolation for real VM type workloads). The 
additional interrupts (ones other than ctrl_irq[0]) are either for 
virtualization use cases, or for our various “hw offload” features. In 
device mode, these are used for offloading tethering functionality to 
IPA FW.

Since the DeviceTree passed to the OS, should describe the hardware to 
the OS, and should represent the hardware from the point-of-view of the 
OS, adding one interrupt (ctrl_irq[0]) might be sufficient as Linux 
would not use the other interrupts. Furthermore AFAIK even UEFI/Windows 
also use only ctrl_irq[0] for host mode in their execution environment 
today. Do we still need to add this to bindings and DT ?

[1]: https://lore.kernel.org/all/ZTJ_T1UL8-s2cgNz@hovoldconsulting.com/
[2]: 
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/phy/qualcomm/phy-qcom-qusb2.c?h=v6.6#n626
[3]: https://lore.kernel.org/all/ZTduh5LULBMYf3wq@hovoldconsulting.com/
[4]: 
https://lore.kernel.org/all/20231017200109.11407-1-quic_wcheng@quicinc.com/

Regards,
Krishna,

  parent reply	other threads:[~2023-11-03 10:05 UTC|newest]

Thread overview: 87+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-10-07 15:47 [PATCH v13 00/10] Add multiport support for DWC3 controllers Krishna Kurapati
2023-10-07 15:47 ` [PATCH v13 01/10] usb: dwc3: core: Access XHCI address space temporarily to read port info Krishna Kurapati
2023-10-20  8:32   ` Johan Hovold
2023-10-20  9:42     ` Krishna Kurapati PSSNV
2023-10-23  8:44       ` Johan Hovold
2023-10-07 15:47 ` [PATCH v13 02/10] usb: dwc3: core: Skip setting event buffers for host only controllers Krishna Kurapati
2023-10-20  8:38   ` Johan Hovold
2023-10-07 15:47 ` [PATCH v13 03/10] usb: dwc3: core: Refactor PHY logic to support Multiport Controller Krishna Kurapati
2023-10-12 17:26   ` Thinh Nguyen
2023-10-20  9:57   ` Johan Hovold
2023-10-20 11:41     ` Krishna Kurapati PSSNV
2023-10-23  8:52       ` Johan Hovold
2023-10-22 18:03     ` Krishna Kurapati PSSNV
2023-10-23  9:11       ` Johan Hovold
2023-10-23 12:33         ` Krishna Kurapati PSSNV
2023-10-23 14:10           ` Johan Hovold
2023-10-07 15:48 ` [PATCH v13 04/10] usb: dwc3: qcom: Add helper function to request threaded IRQ Krishna Kurapati
2023-10-20 12:30   ` Johan Hovold
2023-10-07 15:48 ` [PATCH v13 05/10] usb: dwc3: qcom: Refactor IRQ handling in QCOM Glue driver Krishna Kurapati
2023-10-20 13:23   ` Johan Hovold
2023-10-22 18:41     ` Krishna Kurapati PSSNV
2023-10-23  9:21       ` Johan Hovold
2023-10-23 11:24         ` Krishna Kurapati PSSNV
2023-10-23 14:07           ` Johan Hovold
2023-10-23 17:12             ` Krishna Kurapati PSSNV
2023-10-24  6:56               ` Johan Hovold
2023-10-24  8:53                 ` Krishna Kurapati PSSNV
2023-10-24  9:18                   ` Johan Hovold
2023-10-24  9:23                     ` Greg Kroah-Hartman
2023-10-24  9:29                       ` Johan Hovold
2023-10-24  9:54                         ` Greg Kroah-Hartman
2023-11-03 10:04                 ` Krishna Kurapati PSSNV [this message]
2023-11-07  8:29                   ` Krishna Kurapati PSSNV
2023-11-09 15:18                   ` Johan Hovold
2023-11-09 16:38                     ` Krishna Kurapati PSSNV
2023-11-09 20:25                       ` Wesley Cheng
2023-11-10  9:28                         ` Johan Hovold
2023-11-10  9:18                       ` Johan Hovold
2023-11-10 10:01                         ` Krishna Kurapati PSSNV
2023-11-10 10:44                           ` Johan Hovold
2023-11-10 11:09                             ` Krishna Kurapati PSSNV
2023-11-15 17:42                     ` Krishna Kurapati PSSNV
2023-11-16 13:03                       ` Johan Hovold
2023-11-22 19:32                         ` Krishna Kurapati PSSNV
2023-11-23 13:44                           ` Johan Hovold
2023-11-24  9:00                             ` Krishna Kurapati PSSNV
2023-11-24  9:13                               ` Krzysztof Kozlowski
2023-11-24 10:13                               ` Johan Hovold
2023-11-24 10:38                                 ` Krishna Kurapati PSSNV
2023-11-24 11:19                                   ` Johan Hovold
2023-10-07 15:48 ` [PATCH v13 06/10] usb: dwc3: qcom: Enable wakeup for applicable ports of multiport Krishna Kurapati
2023-10-23 15:47   ` Johan Hovold
2023-10-23 17:27     ` Krishna Kurapati PSSNV
2023-10-24  7:10       ` Johan Hovold
2023-10-24  8:41         ` Krishna Kurapati PSSNV
2023-10-24  9:06           ` Johan Hovold
2023-10-07 15:48 ` [PATCH v13 07/10] usb: dwc3: qcom: Add multiport suspend/resume support for wrapper Krishna Kurapati
2023-10-23 15:58   ` Johan Hovold
2023-10-23 17:22     ` Krishna Kurapati PSSNV
2023-10-24  7:03       ` Johan Hovold
2023-10-07 15:48 ` [PATCH v13 08/10] arm64: dts: qcom: sc8280xp: Add multiport controller node for SC8280 Krishna Kurapati
2023-10-08 11:11   ` Krzysztof Kozlowski
2023-10-08 11:21     ` Krishna Kurapati PSSNV
2023-10-08 11:23       ` Krzysztof Kozlowski
2023-10-12 16:40   ` Konrad Dybcio
2023-10-12 17:02     ` Krishna Kurapati PSSNV
2023-10-18 11:57       ` Krishna Kurapati PSSNV
2023-10-23 16:09   ` Johan Hovold
2023-10-23 17:16     ` Krzysztof Kozlowski
2023-10-23 17:34     ` Krishna Kurapati PSSNV
2023-10-24  7:13       ` Johan Hovold
2023-10-07 15:48 ` [PATCH v13 09/10] arm64: dts: qcom: sa8295p: Enable tertiary controller and its 4 USB ports Krishna Kurapati
2023-10-12 16:40   ` Konrad Dybcio
2023-10-23 16:23   ` Johan Hovold
2023-10-23 17:42     ` Krishna Kurapati PSSNV
2023-10-24  7:20       ` Johan Hovold
2023-10-24  8:26         ` Krishna Kurapati PSSNV
2023-10-07 15:48 ` [PATCH v13 10/10] arm64: dts: qcom: sa8540-ride: Enable first port of tertiary usb controller Krishna Kurapati
2023-10-12 16:41   ` Konrad Dybcio
2023-10-23 16:30   ` Johan Hovold
2023-10-08 10:43 ` [PATCH v13 00/10] Add multiport support for DWC3 controllers Krzysztof Kozlowski
2023-10-08 11:01   ` Krishna Kurapati PSSNV
2023-10-08 11:09     ` Krzysztof Kozlowski
2023-10-10 20:51 ` Konrad Dybcio
2023-10-11  5:11   ` Krishna Kurapati PSSNV
2023-10-11  9:34     ` Konrad Dybcio
2023-10-12  6:17       ` Krishna Kurapati PSSNV

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=04615205-e380-4719-aff1-f32c26004b14@quicinc.com \
    --to=quic_kriskura@quicinc.com \
    --cc=Thinh.Nguyen@synopsys.com \
    --cc=agross@kernel.org \
    --cc=ahalaney@redhat.com \
    --cc=andersson@kernel.org \
    --cc=balbi@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=johan@kernel.org \
    --cc=konrad.dybcio@linaro.org \
    --cc=krzysztof.kozlowski+dt@linaro.org \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=p.zabel@pengutronix.de \
    --cc=quic_jackp@quicinc.com \
    --cc=quic_pkondeti@quicinc.com \
    --cc=quic_ppratap@quicinc.com \
    --cc=quic_shazhuss@quicinc.com \
    --cc=quic_wcheng@quicinc.com \
    --cc=robh+dt@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.