Re: [PATCH v2 1/3] dt-bindings: usb: qcom,dwc3: Add multi-pd bindings for dwc3 qcom
From: Rajendra Nayak <hidden>
Date: 2021-10-28 10:47:02
Also in:
linux-arm-msm, linux-usb, lkml
On 10/28/2021 4:05 PM, Ulf Hansson wrote:
[...]quoted
quoted
quoted
quoted
Got it. So in this case we could have the various display components that are in the mdss gdsc domain set their frequency via OPP and then have that translate to a level in CX or MMCX. How do we parent the power domains outside of DT? I'm thinking that we'll need to do that if MMCX is parented by CX or something like that and the drivers for those two power domains are different. Is it basic string matching?In one way or another we need to invoke pm_genpd_add_subdomain() to link the two power-domains (actually genpds) together, like what was done in 3652265514f5 ("clk: qcom: gdsc: enable optional power domain support"). In the case of MMCX and CX, my impression of the documentation is that they are independent - but if we need to express that CX is parent of MMCX, they are both provided by rpmhpd which already supports this by just specifying .parent on mmcx to point to cx.I was trying to follow the discussion, but it turned out to be a bit complicated to catch up and answer all things. In any case, let me just add a few overall comments, perhaps that can help to move things forward. First, one domain can have two parent domains. Both from DT and from genpd point of view, just to make this clear. Although, it certainly looks questionable to me, to hook up the USB device to two separate power domains, one to control power and one to control performance. Especially, if it's really the same piece of HW that is managing both things.[]..quoted
Additionally, if it's correct to model the USB GDSC power domain as a child to the CX power domain from HW point of view, we should likely do that.I think this would still require a few things in genpd, since CX and USB GDSC are power domains from different providers. Perhaps a pm_genpd_add_subdomain_by_name()?I think of_genpd_add_subdomain() should help to address this. No?
We only describe the provider nodes in DT and not the individual power domains. For instance GCC is the power domain provider which is in DT, and USB GDSC is one of the many power domains it supports, similarly RPMHPD is the provider node in DT and CX is one of the many power domains it supports. So we would need some non-DT way of hooking up power domains from two different providers as parent/child. -- QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by The Linux Foundation