]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
arm64: dts: qcom: x1e80100: Add QUP power domains and OPPs
authorStephan Gerhold <stephan.gerhold@linaro.org>
Mon, 7 Oct 2024 18:22:25 +0000 (20:22 +0200)
committerBjorn Andersson <andersson@kernel.org>
Thu, 26 Dec 2024 21:23:37 +0000 (15:23 -0600)
Add the power domains and OPP tables to all the QUP-related UART/I2C/SPI
nodes to ensure that we vote for the necessary performance states. Similar
to sm8350.dtsi, the OPPs depend on the QUP instance. The first two
instances in each geniqup group need &rpmhpd_opp_svs starting at 120MHz,
the others already starting at 100MHz. I2C always runs at a lower clock
frequency and therefore uses a fixed vote.

Signed-off-by: Stephan Gerhold <stephan.gerhold@linaro.org>
Reviewed-by: Johan Hovold <johan+linaro@kernel.org>
Tested-by: Johan Hovold <johan+linaro@kernel.org>
Link: https://lore.kernel.org/r/20241007-x1e80100-pwrseq-qcp-v1-1-f7166510ab17@linaro.org
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
arch/arm64/boot/dts/qcom/x1e80100.dtsi

index 18fb182c185c0932feb15b8a4a5c450814e68991..ba2938f438bf230a47000a4042cbceee0cf2b45f 100644 (file)
                };
        };
 
+       qup_opp_table_100mhz: opp-table-qup100mhz {
+               compatible = "operating-points-v2";
+
+               opp-75000000 {
+                       opp-hz = /bits/ 64 <75000000>;
+                       required-opps = <&rpmhpd_opp_low_svs>;
+               };
+
+               opp-100000000 {
+                       opp-hz = /bits/ 64 <100000000>;
+                       required-opps = <&rpmhpd_opp_svs>;
+               };
+       };
+
+       qup_opp_table_120mhz: opp-table-qup120mhz {
+               compatible = "operating-points-v2";
+
+               opp-75000000 {
+                       opp-hz = /bits/ 64 <75000000>;
+                       required-opps = <&rpmhpd_opp_low_svs>;
+               };
+
+               opp-120000000 {
+                       opp-hz = /bits/ 64 <120000000>;
+                       required-opps = <&rpmhpd_opp_svs>;
+               };
+       };
+
        smp2p-adsp {
                compatible = "qcom,smp2p";
 
                                                     "qup-config",
                                                     "qup-memory";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               required-opps = <&rpmhpd_opp_low_svs>;
+
                                dmas = <&gpi_dma2 0 0 QCOM_GPI_I2C>,
                                       <&gpi_dma2 1 0 QCOM_GPI_I2C>;
                                dma-names = "tx",
                                                     "qup-config",
                                                     "qup-memory";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table_120mhz>;
+
                                dmas = <&gpi_dma2 0 0 QCOM_GPI_SPI>,
                                       <&gpi_dma2 1 0 QCOM_GPI_SPI>;
                                dma-names = "tx",
                                                     "qup-config",
                                                     "qup-memory";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               required-opps = <&rpmhpd_opp_low_svs>;
+
                                dmas = <&gpi_dma2 0 1 QCOM_GPI_I2C>,
                                       <&gpi_dma2 1 1 QCOM_GPI_I2C>;
                                dma-names = "tx",
                                                     "qup-config",
                                                     "qup-memory";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table_120mhz>;
+
                                dmas = <&gpi_dma2 0 1 QCOM_GPI_SPI>,
                                       <&gpi_dma2 1 1 QCOM_GPI_SPI>;
                                dma-names = "tx",
                                                     "qup-config",
                                                     "qup-memory";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               required-opps = <&rpmhpd_opp_low_svs>;
+
                                dmas = <&gpi_dma2 0 2 QCOM_GPI_I2C>,
                                       <&gpi_dma2 1 2 QCOM_GPI_I2C>;
                                dma-names = "tx",
                                                     "qup-config",
                                                     "qup-memory";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table_100mhz>;
+
                                dmas = <&gpi_dma2 0 2 QCOM_GPI_SPI>,
                                       <&gpi_dma2 1 2 QCOM_GPI_SPI>;
                                dma-names = "tx",
                                                     "qup-config",
                                                     "qup-memory";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               required-opps = <&rpmhpd_opp_low_svs>;
+
                                dmas = <&gpi_dma2 0 3 QCOM_GPI_I2C>,
                                       <&gpi_dma2 1 3 QCOM_GPI_I2C>;
                                dma-names = "tx",
                                                     "qup-config",
                                                     "qup-memory";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table_100mhz>;
+
                                dmas = <&gpi_dma2 0 3 QCOM_GPI_SPI>,
                                       <&gpi_dma2 1 3 QCOM_GPI_SPI>;
                                dma-names = "tx",
                                                     "qup-config",
                                                     "qup-memory";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               required-opps = <&rpmhpd_opp_low_svs>;
+
                                dmas = <&gpi_dma2 0 4 QCOM_GPI_I2C>,
                                       <&gpi_dma2 1 4 QCOM_GPI_I2C>;
                                dma-names = "tx",
                                                     "qup-config",
                                                     "qup-memory";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table_100mhz>;
+
                                dmas = <&gpi_dma2 0 4 QCOM_GPI_SPI>,
                                       <&gpi_dma2 1 4 QCOM_GPI_SPI>;
                                dma-names = "tx",
                                                     "qup-config",
                                                     "qup-memory";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               required-opps = <&rpmhpd_opp_low_svs>;
+
                                dmas = <&gpi_dma2 0 5 QCOM_GPI_I2C>,
                                       <&gpi_dma2 1 5 QCOM_GPI_I2C>;
                                dma-names = "tx",
                                                     "qup-config",
                                                     "qup-memory";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table_100mhz>;
+
                                dmas = <&gpi_dma2 0 5 QCOM_GPI_SPI>,
                                       <&gpi_dma2 1 5 QCOM_GPI_SPI>;
                                dma-names = "tx",
                                interconnect-names = "qup-core",
                                                     "qup-config";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table_100mhz>;
+
                                pinctrl-0 = <&qup_uart21_default>;
                                pinctrl-names = "default";
 
                                                     "qup-config",
                                                     "qup-memory";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               required-opps = <&rpmhpd_opp_low_svs>;
+
                                dmas = <&gpi_dma2 0 6 QCOM_GPI_I2C>,
                                       <&gpi_dma2 1 6 QCOM_GPI_I2C>;
                                dma-names = "tx",
                                                     "qup-config",
                                                     "qup-memory";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table_100mhz>;
+
                                dmas = <&gpi_dma2 0 6 QCOM_GPI_SPI>,
                                       <&gpi_dma2 1 6 QCOM_GPI_SPI>;
                                dma-names = "tx",
                                                     "qup-config",
                                                     "qup-memory";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               required-opps = <&rpmhpd_opp_low_svs>;
+
                                dmas = <&gpi_dma2 0 7 QCOM_GPI_I2C>,
                                       <&gpi_dma2 1 7 QCOM_GPI_I2C>;
                                dma-names = "tx",
                                                     "qup-config",
                                                     "qup-memory";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table_100mhz>;
+
                                dmas = <&gpi_dma2 0 7 QCOM_GPI_SPI>,
                                       <&gpi_dma2 1 7 QCOM_GPI_SPI>;
                                dma-names = "tx",
                                                     "qup-config",
                                                     "qup-memory";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               required-opps = <&rpmhpd_opp_low_svs>;
+
                                dmas = <&gpi_dma1 0 0 QCOM_GPI_I2C>,
                                       <&gpi_dma1 1 0 QCOM_GPI_I2C>;
                                dma-names = "tx",
                                                     "qup-config",
                                                     "qup-memory";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table_120mhz>;
+
                                dmas = <&gpi_dma1 0 0 QCOM_GPI_SPI>,
                                       <&gpi_dma1 1 0 QCOM_GPI_SPI>;
                                dma-names = "tx",
                                                     "qup-config",
                                                     "qup-memory";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               required-opps = <&rpmhpd_opp_low_svs>;
+
                                dmas = <&gpi_dma1 0 1 QCOM_GPI_I2C>,
                                       <&gpi_dma1 1 1 QCOM_GPI_I2C>;
                                dma-names = "tx",
                                                     "qup-config",
                                                     "qup-memory";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table_120mhz>;
+
                                dmas = <&gpi_dma1 0 1 QCOM_GPI_SPI>,
                                       <&gpi_dma1 1 1 QCOM_GPI_SPI>;
                                dma-names = "tx",
                                                     "qup-config",
                                                     "qup-memory";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               required-opps = <&rpmhpd_opp_low_svs>;
+
                                dmas = <&gpi_dma1 0 2 QCOM_GPI_I2C>,
                                       <&gpi_dma1 1 2 QCOM_GPI_I2C>;
                                dma-names = "tx",
                                                     "qup-config",
                                                     "qup-memory";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table_100mhz>;
+
                                dmas = <&gpi_dma1 0 2 QCOM_GPI_SPI>,
                                       <&gpi_dma1 1 2 QCOM_GPI_SPI>;
                                dma-names = "tx",
                                                     "qup-config",
                                                     "qup-memory";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               required-opps = <&rpmhpd_opp_low_svs>;
+
                                dmas = <&gpi_dma1 0 3 QCOM_GPI_I2C>,
                                       <&gpi_dma1 1 3 QCOM_GPI_I2C>;
                                dma-names = "tx",
                                                     "qup-config",
                                                     "qup-memory";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table_100mhz>;
+
                                dmas = <&gpi_dma1 0 3 QCOM_GPI_SPI>,
                                       <&gpi_dma1 1 3 QCOM_GPI_SPI>;
                                dma-names = "tx",
                                                     "qup-config",
                                                     "qup-memory";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               required-opps = <&rpmhpd_opp_low_svs>;
+
                                dmas = <&gpi_dma1 0 4 QCOM_GPI_I2C>,
                                       <&gpi_dma1 1 4 QCOM_GPI_I2C>;
                                dma-names = "tx",
                                                     "qup-config",
                                                     "qup-memory";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table_100mhz>;
+
                                dmas = <&gpi_dma1 0 4 QCOM_GPI_SPI>,
                                       <&gpi_dma1 1 4 QCOM_GPI_SPI>;
                                dma-names = "tx",
                                                     "qup-config",
                                                     "qup-memory";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               required-opps = <&rpmhpd_opp_low_svs>;
+
                                dmas = <&gpi_dma1 0 5 QCOM_GPI_I2C>,
                                       <&gpi_dma1 1 5 QCOM_GPI_I2C>;
                                dma-names = "tx",
                                                     "qup-config",
                                                     "qup-memory";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table_100mhz>;
+
                                dmas = <&gpi_dma1 0 5 QCOM_GPI_SPI>,
                                       <&gpi_dma1 1 5 QCOM_GPI_SPI>;
                                dma-names = "tx",
                                                     "qup-config",
                                                     "qup-memory";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               required-opps = <&rpmhpd_opp_low_svs>;
+
                                dmas = <&gpi_dma1 0 6 QCOM_GPI_I2C>,
                                       <&gpi_dma1 1 6 QCOM_GPI_I2C>;
                                dma-names = "tx",
                                                     "qup-config",
                                                     "qup-memory";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table_100mhz>;
+
                                dmas = <&gpi_dma1 0 6 QCOM_GPI_SPI>,
                                       <&gpi_dma1 1 6 QCOM_GPI_SPI>;
                                dma-names = "tx",
                                                     "qup-config",
                                                     "qup-memory";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               required-opps = <&rpmhpd_opp_low_svs>;
+
                                dmas = <&gpi_dma1 0 7 QCOM_GPI_I2C>,
                                       <&gpi_dma1 1 7 QCOM_GPI_I2C>;
                                dma-names = "tx",
                                                     "qup-config",
                                                     "qup-memory";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table_100mhz>;
+
                                dmas = <&gpi_dma1 0 7 QCOM_GPI_SPI>,
                                       <&gpi_dma1 1 7 QCOM_GPI_SPI>;
                                dma-names = "tx",
                                                     "qup-config",
                                                     "qup-memory";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               required-opps = <&rpmhpd_opp_low_svs>;
+
                                dmas = <&gpi_dma0 0 0 QCOM_GPI_I2C>,
                                       <&gpi_dma0 1 0 QCOM_GPI_I2C>;
                                dma-names = "tx",
                                                     "qup-config",
                                                     "qup-memory";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table_120mhz>;
+
                                dmas = <&gpi_dma0 0 0 QCOM_GPI_SPI>,
                                       <&gpi_dma0 1 0 QCOM_GPI_SPI>;
                                dma-names = "tx",
                                                     "qup-config",
                                                     "qup-memory";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               required-opps = <&rpmhpd_opp_low_svs>;
+
                                dmas = <&gpi_dma0 0 1 QCOM_GPI_I2C>,
                                       <&gpi_dma0 1 1 QCOM_GPI_I2C>;
                                dma-names = "tx",
                                                     "qup-config",
                                                     "qup-memory";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table_120mhz>;
+
                                dmas = <&gpi_dma0 0 1 QCOM_GPI_SPI>,
                                       <&gpi_dma0 1 1 QCOM_GPI_SPI>;
                                dma-names = "tx",
                                                     "qup-config",
                                                     "qup-memory";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               required-opps = <&rpmhpd_opp_low_svs>;
+
                                dmas = <&gpi_dma0 0 2 QCOM_GPI_I2C>,
                                       <&gpi_dma0 1 2 QCOM_GPI_I2C>;
                                dma-names = "tx",
                                interconnect-names = "qup-core",
                                                     "qup-config";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table_100mhz>;
+
                                pinctrl-0 = <&qup_uart2_default>;
                                pinctrl-names = "default";
 
                                                     "qup-config",
                                                     "qup-memory";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table_100mhz>;
+
                                dmas = <&gpi_dma0 0 2 QCOM_GPI_SPI>,
                                       <&gpi_dma0 1 2 QCOM_GPI_SPI>;
                                dma-names = "tx",
                                                     "qup-config",
                                                     "qup-memory";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               required-opps = <&rpmhpd_opp_low_svs>;
+
                                dmas = <&gpi_dma0 0 3 QCOM_GPI_I2C>,
                                       <&gpi_dma0 1 3 QCOM_GPI_I2C>;
                                dma-names = "tx",
                                                     "qup-config",
                                                     "qup-memory";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table_100mhz>;
+
                                dmas = <&gpi_dma0 0 3 QCOM_GPI_SPI>,
                                       <&gpi_dma0 1 3 QCOM_GPI_SPI>;
                                dma-names = "tx",
                                                     "qup-config",
                                                     "qup-memory";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               required-opps = <&rpmhpd_opp_low_svs>;
+
                                dmas = <&gpi_dma0 0 4 QCOM_GPI_I2C>,
                                       <&gpi_dma0 1 4 QCOM_GPI_I2C>;
                                dma-names = "tx",
                                                     "qup-config",
                                                     "qup-memory";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table_100mhz>;
+
                                dmas = <&gpi_dma0 0 4 QCOM_GPI_SPI>,
                                       <&gpi_dma0 1 4 QCOM_GPI_SPI>;
                                dma-names = "tx",
                                                     "qup-config",
                                                     "qup-memory";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               required-opps = <&rpmhpd_opp_low_svs>;
+
                                dmas = <&gpi_dma0 0 5 QCOM_GPI_I2C>,
                                       <&gpi_dma0 1 5 QCOM_GPI_I2C>;
                                dma-names = "tx",
                                                     "qup-config",
                                                     "qup-memory";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table_100mhz>;
+
                                dmas = <&gpi_dma0 0 5 QCOM_GPI_SPI>,
                                       <&gpi_dma0 1 5 QCOM_GPI_SPI>;
                                dma-names = "tx",
                                                     "qup-config",
                                                     "qup-memory";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               required-opps = <&rpmhpd_opp_low_svs>;
+
                                dmas = <&gpi_dma0 0 6 QCOM_GPI_I2C>,
                                       <&gpi_dma0 1 6 QCOM_GPI_I2C>;
                                dma-names = "tx",
                                                     "qup-config",
                                                     "qup-memory";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table_100mhz>;
+
                                dmas = <&gpi_dma0 0 6 QCOM_GPI_SPI>,
                                       <&gpi_dma0 1 6 QCOM_GPI_SPI>;
                                dma-names = "tx",
                                                     "qup-config",
                                                     "qup-memory";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               required-opps = <&rpmhpd_opp_low_svs>;
+
                                dmas = <&gpi_dma0 0 7 QCOM_GPI_I2C>,
                                       <&gpi_dma0 1 7 QCOM_GPI_I2C>;
                                dma-names = "tx",
                                                     "qup-config",
                                                     "qup-memory";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table_100mhz>;
+
                                dmas = <&gpi_dma0 0 7 QCOM_GPI_SPI>,
                                       <&gpi_dma0 1 7 QCOM_GPI_SPI>;
                                dma-names = "tx",