All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Sandeep Maheswaram (Temp)" <sanm@codeaurora.org>
To: Stephen Boyd <swboyd@chromium.org>,
	Andy Gross <agross@kernel.org>,
	Bjorn Andersson <bjorn.andersson@linaro.org>,
	Doug Anderson <dianders@chromium.org>,
	Felipe Balbi <balbi@kernel.org>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Mark Rutland <mark.rutland@arm.com>,
	Matthias Kaehlcke <mka@chromium.org>,
	Rob Herring <robh+dt@kernel.org>
Cc: linux-arm-msm@vger.kernel.org, linux-usb@vger.kernel.org,
	devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
	Manu Gautam <mgautam@codeaurora.org>,
	Chandana Kishori Chiluveru <cchiluve@codeaurora.org>
Subject: Re: [PATCH v7 2/4] usb: dwc3: qcom: Add interconnect support in dwc3 driver
Date: Thu, 4 Jun 2020 15:13:09 +0530	[thread overview]
Message-ID: <d9ccf188-4f00-d3ac-ba0f-73f06c087553@codeaurora.org> (raw)
In-Reply-To: <159120577830.69627.13288547914742515702@swboyd.mtv.corp.google.com>


On 6/3/2020 11:06 PM, Stephen Boyd wrote:
> Quoting Sandeep Maheswaram (2020-03-31 22:15:43)
>> diff --git a/drivers/usb/dwc3/dwc3-qcom.c b/drivers/usb/dwc3/dwc3-qcom.c
>> index 1dfd024..d33ae86 100644
>> --- a/drivers/usb/dwc3/dwc3-qcom.c
>> +++ b/drivers/usb/dwc3/dwc3-qcom.c
>> @@ -76,8 +85,13 @@ struct dwc3_qcom {
>>          enum usb_dr_mode        mode;
>>          bool                    is_suspended;
>>          bool                    pm_suspended;
>> +       struct icc_path         *usb_ddr_icc_path;
>> +       struct icc_path         *apps_usb_icc_path;
>>   };
>>   
>> +static int dwc3_qcom_interconnect_enable(struct dwc3_qcom *qcom);
>> +static int dwc3_qcom_interconnect_disable(struct dwc3_qcom *qcom);
> Please get rid of these. We shouldn't need forward declarations.
Will do in next version.
>
>> +
>>   static inline void dwc3_qcom_setbits(void __iomem *base, u32 offset, u32 val)
>>   {
>>          u32 reg;
>> @@ -285,6 +307,101 @@ static int dwc3_qcom_resume(struct dwc3_qcom *qcom)
>>          return 0;
>>   }
>>   
>> +
>> +/**
>> + * dwc3_qcom_interconnect_init() - Get interconnect path handles
>> + * @qcom:                      Pointer to the concerned usb core.
>> + *
>> + */
>> +static int dwc3_qcom_interconnect_init(struct dwc3_qcom *qcom)
>> +{
>> +       struct device *dev = qcom->dev;
>> +       int ret;
>> +
>> +       if (!device_is_bound(&qcom->dwc3->dev))
>> +               return -EPROBE_DEFER;
> How is this supposed to work? I see that this was added in an earlier
> revision of this patch series but there isn't any mention of why
> device_is_bound() is used here. It would be great if there was a comment
> detailing why this is necessary. It sounds like maximum_speed is
> important?
>
> Furthermore, dwc3_qcom_interconnect_init() is called by
> dwc3_qcom_probe() which is the function that registers the device for
> qcom->dwc3->dev. If that device doesn't probe between the time it is
> registered by dwc3_qcom_probe() and this function is called then we'll
> fail dwc3_qcom_probe() with -EPROBE_DEFER. And that will remove the
> qcom->dwc3->dev device from the platform bus because we call
> of_platform_depopulate() on the error path of dwc3_qcom_probe().
>
> So isn't this whole thing racy and can potentially lead us to a driver
> probe loop where the wrapper (dwc3_qcom) and the core (dwc3) are probing
> and we're trying to time it just right so that driver for dwc3 binds
> before we setup interconnects? I don't know if dwc3 can communicate to
> the wrapper but that would be more of a direct way to do this. Or maybe
> the wrapper should try to read the DT property for maximum speed and
> fallback to a worst case high bandwidth value if it can't figure it out
> itself without help from dwc3 core.
>
This was added in V4 to address comments from Matthias in V3

https://patchwork.kernel.org/patch/11148587/

-- 
QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by The Linux Foundation


  reply	other threads:[~2020-06-04  9:43 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-04-01  5:15 [PATCH v7 0/4] ADD interconnect support for Qualcomm DWC3 driver Sandeep Maheswaram
2020-04-01  5:15 ` [PATCH v7 1/4] dt-bindings: usb: qcom,dwc3: Introduce interconnect properties " Sandeep Maheswaram
2020-04-14 15:22   ` Rob Herring
2020-04-14 20:30   ` Stephen Boyd
2020-04-01  5:15 ` [PATCH v7 2/4] usb: dwc3: qcom: Add interconnect support in dwc3 driver Sandeep Maheswaram
2020-05-14 11:29   ` Felipe Balbi
2020-05-14 11:30     ` Felipe Balbi
2020-05-14 17:13       ` Matthias Kaehlcke
2020-05-14 21:02         ` Georgi Djakov
2020-05-15  3:57           ` Viresh Kumar
2020-05-15  4:23             ` Manu Gautam
2020-05-15  4:26               ` Viresh Kumar
2020-05-15  5:54           ` Felipe Balbi
2020-05-15  6:11             ` Georgi Djakov
2020-05-15  6:29               ` Felipe Balbi
2020-05-18 18:35                 ` Bjorn Andersson
2020-05-19  3:29                   ` Viresh Kumar
2020-05-26 11:04                   ` Sandeep Maheswaram (Temp)
2020-05-26 11:34                     ` Georgi Djakov
2020-05-26 11:43                       ` Felipe Balbi
2020-05-28  9:24                         ` Sandeep Maheswaram (Temp)
2020-06-03 17:36   ` Stephen Boyd
2020-06-04  9:43     ` Sandeep Maheswaram (Temp) [this message]
2020-06-04 11:16       ` Stephen Boyd
2020-06-15 19:42         ` Matthias Kaehlcke
2020-06-16  4:52           ` Sandeep Maheswaram (Temp)
2020-06-16 20:38             ` Matthias Kaehlcke
2020-06-30 22:42               ` Matthias Kaehlcke
2020-07-07  5:11                 ` Sandeep Maheswaram (Temp)
2020-07-07 15:52                   ` Matthias Kaehlcke
2020-04-01  5:15 ` [PATCH v7 3/4] arm64: dts: qcom: sdm845: Add interconnect properties for USB Sandeep Maheswaram
2020-04-14 20:31   ` Stephen Boyd
2020-04-01  5:15 ` [PATCH v7 4/4] arm64: dts: qcom: sc7180: " Sandeep Maheswaram
2020-04-14 20:32   ` Stephen Boyd
2020-04-29 18:35 ` [PATCH v7 0/4] ADD interconnect support for Qualcomm DWC3 driver Matthias Kaehlcke
2020-05-08  6:29   ` Sandeep Maheswaram (Temp)
2020-05-14 10:49     ` Felipe Balbi

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=d9ccf188-4f00-d3ac-ba0f-73f06c087553@codeaurora.org \
    --to=sanm@codeaurora.org \
    --cc=agross@kernel.org \
    --cc=balbi@kernel.org \
    --cc=bjorn.andersson@linaro.org \
    --cc=cchiluve@codeaurora.org \
    --cc=devicetree@vger.kernel.org \
    --cc=dianders@chromium.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=mgautam@codeaurora.org \
    --cc=mka@chromium.org \
    --cc=robh+dt@kernel.org \
    --cc=swboyd@chromium.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.