Re: [PATCH v6 5/6] arm64: dts: qcom: sm8450: Add opp table support to PCIe

From: Viresh Kumar
Date: Tue Jan 30 2024 - 01:11:38 EST


On 29-01-24, 21:34, Manivannan Sadhasivam wrote:
> On Fri, Jan 12, 2024 at 07:52:04PM +0530, Krishna chaitanya chundru wrote:
> > PCIe needs to choose the appropriate performance state of RPMH power
> > domain and interconnect bandwidth based up on the PCIe gen speed.
> >
> > Add the OPP table support to specify RPMH performance states and
> > interconnect peak bandwidth.
> >
> > Signed-off-by: Krishna chaitanya chundru <quic_krichai@xxxxxxxxxxx>
> > ---
> > arch/arm64/boot/dts/qcom/sm8450.dtsi | 74 ++++++++++++++++++++++++++++++++++++
> > 1 file changed, 74 insertions(+)
> >
> > diff --git a/arch/arm64/boot/dts/qcom/sm8450.dtsi b/arch/arm64/boot/dts/qcom/sm8450.dtsi
> > index 6b1d2e0d9d14..eab85ecaeff0 100644
> > --- a/arch/arm64/boot/dts/qcom/sm8450.dtsi
> > +++ b/arch/arm64/boot/dts/qcom/sm8450.dtsi
> > @@ -1827,7 +1827,32 @@ pcie0: pcie@1c00000 {
> > pinctrl-names = "default";
> > pinctrl-0 = <&pcie0_default_state>;
> >
> > + operating-points-v2 = <&pcie0_opp_table>;
> > +
> > status = "disabled";
> > +
> > + pcie0_opp_table: opp-table {
> > + compatible = "operating-points-v2";
> > +
> > + opp-2500000 {
> > + opp-hz = /bits/ 64 <2500000>;
> > + required-opps = <&rpmhpd_opp_low_svs>;
> > + opp-peak-kBps = <250000 250000>;
>
> This is a question for Viresh: We already have macros in the driver to derive
> the bandwidth based on link speed. So if OPP core exposes a callback to allow
> the consumers to set the bw on its own, we can get rid of this entry.
>
> Similar to config_clks()/config_regulators(). Is that feasible?

I don't have any issues with a new callback for bw. But, AFAIU, the DT
is required to represent the hardware irrespective of what any OS
would do with it. So DT should ideally have these values here, right ?

Also, the driver has already moved away from using those macros now
and depend on the OPP core to do the right thing. It only uses the
macro for the cases where the DT OPP table isn't available. And as
said by few others as well already, the driver really should try to
add OPPs dynamically in that case to avoid multiple code paths and
stick to a single OPP based solution.

--
viresh