mbox series

[0/3] USB DWC3 QCOM Multi power domain support

Message ID 1630346073-7099-1-git-send-email-sanm@codeaurora.org
Headers show
Series USB DWC3 QCOM Multi power domain support | expand

Message

Sandeep Maheswaram Aug. 30, 2021, 5:54 p.m. UTC
Add multi pd support to set performance state for cx domain
to maintain minimum corner voltage for USB clocks.

Add corresponding dt bindings, driver changes and dt changes.

Sandeep Maheswaram (3):
  dt-bindings: usb: qcom,dwc3: Add multi-pd bindings for dwc3 qcom
  usb: dwc3: qcom: Add multi-pd support
  arm64: dts: qcom: sc7280: Add cx power domain support

 .../devicetree/bindings/usb/qcom,dwc3.yaml         | 13 +++++-
 arch/arm64/boot/dts/qcom/sc7280.dtsi               |  5 ++-
 drivers/usb/dwc3/dwc3-qcom.c                       | 49 ++++++++++++++++++++++
 3 files changed, 65 insertions(+), 2 deletions(-)

Comments

Doug Anderson Aug. 30, 2021, 8:07 p.m. UTC | #1
Hi,

On Mon, Aug 30, 2021 at 10:55 AM Sandeep Maheswaram <sanm@codeaurora.org> wrote:
>
> Add multi pd bindings to set performance state for cx domain
> to maintain minimum corner voltage for USB clocks.
>
> Signed-off-by: Sandeep Maheswaram <sanm@codeaurora.org>
> ---
>  Documentation/devicetree/bindings/usb/qcom,dwc3.yaml | 13 ++++++++++++-
>  1 file changed, 12 insertions(+), 1 deletion(-)
>
> diff --git a/Documentation/devicetree/bindings/usb/qcom,dwc3.yaml b/Documentation/devicetree/bindings/usb/qcom,dwc3.yaml
> index e70afc4..838d9c4 100644
> --- a/Documentation/devicetree/bindings/usb/qcom,dwc3.yaml
> +++ b/Documentation/devicetree/bindings/usb/qcom,dwc3.yaml
> @@ -41,7 +41,18 @@ properties:
>
>    power-domains:
>      description: specifies a phandle to PM domain provider node
> -    maxItems: 1
> +    minItems: 1
> +    items:
> +      - description: optional,cx power domain
> +      - description: USB gdsc power domain

You need to re-order the above. The optional one needs to be second, not first.


> +  power-domain-names:
> +     items:
> +      - const: cx
> +      - const: usb_gdsc

Why do you need the names at all? The ordering of power-domains is
well defined and there are no holes in it and there are no legacy
reasons for having the names (like there are for clocks), so you
should drop. This is much like reg-names and I always point people to
this message from Rob Herring about reg-names:

https://lore.kernel.org/r/CAL_Jsq+MMunmVWqeW9v2RyzsMKP+=kMzeTHNMG4JDHM7Fy0HBg@mail.gmail.com/

You'll have to change your driver to use dev_pm_domain_attach_by_id()
but that should be fine.

-Doug
Bjorn Andersson Sept. 7, 2021, 1:50 p.m. UTC | #2
On Mon 30 Aug 10:54 PDT 2021, Sandeep Maheswaram wrote:

> Add multi pd bindings to set performance state for cx domain
> to maintain minimum corner voltage for USB clocks.
> 
> Signed-off-by: Sandeep Maheswaram <sanm@codeaurora.org>
> ---
>  Documentation/devicetree/bindings/usb/qcom,dwc3.yaml | 13 ++++++++++++-
>  1 file changed, 12 insertions(+), 1 deletion(-)
> 
> diff --git a/Documentation/devicetree/bindings/usb/qcom,dwc3.yaml b/Documentation/devicetree/bindings/usb/qcom,dwc3.yaml
> index e70afc4..838d9c4 100644
> --- a/Documentation/devicetree/bindings/usb/qcom,dwc3.yaml
> +++ b/Documentation/devicetree/bindings/usb/qcom,dwc3.yaml
> @@ -41,7 +41,18 @@ properties:
>  
>    power-domains:
>      description: specifies a phandle to PM domain provider node
> -    maxItems: 1
> +    minItems: 1
> +    items:
> +      - description: optional,cx power domain
> +      - description: USB gdsc power domain
> +
> +  power-domain-names:
> +     items:
> +      - const: cx
> +      - const: usb_gdsc

But "usb_gdsc" is a subdomain of "cx", why can't we describe this fact
in gcc?

Regards,
Bjorn

> +
> +  required-opps:
> +    description: specifies the performance state to cx power domain
>  
>    clocks:
>      description:
> -- 
> QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member
> of Code Aurora Forum, hosted by The Linux Foundation
>
Bjorn Andersson Sept. 30, 2021, 4:07 p.m. UTC | #3
On Thu 30 Sep 02:41 PDT 2021, Sandeep Maheswaram wrote:

> 

> On 9/7/2021 7:20 PM, Bjorn Andersson wrote:

> > On Mon 30 Aug 10:54 PDT 2021, Sandeep Maheswaram wrote:

> > 

> > > Add multi pd bindings to set performance state for cx domain

> > > to maintain minimum corner voltage for USB clocks.

> > > 

> > > Signed-off-by: Sandeep Maheswaram <sanm@codeaurora.org>

> > > ---

> > >   Documentation/devicetree/bindings/usb/qcom,dwc3.yaml | 13 ++++++++++++-

> > >   1 file changed, 12 insertions(+), 1 deletion(-)

> > > 

> > > diff --git a/Documentation/devicetree/bindings/usb/qcom,dwc3.yaml b/Documentation/devicetree/bindings/usb/qcom,dwc3.yaml

> > > index e70afc4..838d9c4 100644

> > > --- a/Documentation/devicetree/bindings/usb/qcom,dwc3.yaml

> > > +++ b/Documentation/devicetree/bindings/usb/qcom,dwc3.yaml

> > > @@ -41,7 +41,18 @@ properties:

> > >     power-domains:

> > >       description: specifies a phandle to PM domain provider node

> > > -    maxItems: 1

> > > +    minItems: 1

> > > +    items:

> > > +      - description: optional,cx power domain

> > > +      - description: USB gdsc power domain

> > > +

> > > +  power-domain-names:

> > > +     items:

> > > +      - const: cx

> > > +      - const: usb_gdsc

> > But "usb_gdsc" is a subdomain of "cx", why can't we describe this fact

> > in gcc?

> > 

> > Regards,

> > Bjorn

> Thanks for your review.

> Any idea on how can this be described in gcc ? Can you point any reference

> for this .

> 


There's a series from Dmitry that defines such a relationship between
MDSS_GDSC and the MMCX domain on SM8250. This seems like a continuation
of that support, given that we have multiple parent domains (cx, mx
etc).

You can find that discussion here:

https://lore.kernel.org/all/20210727202004.712665-1-dmitry.baryshkov@linaro.org/

Regards,
Bjorn

> Regards

> Sandeep

> > > +

> > > +  required-opps:

> > > +    description: specifies the performance state to cx power domain

> > >     clocks:

> > >       description:

> > > -- 

> > > QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member

> > > of Code Aurora Forum, hosted by The Linux Foundation

> > >