From: Dmitry Osipenko <digetx@gmail.com>
To: Thierry Reding <thierry.reding@gmail.com>,
Jonathan Hunter <jonathanh@nvidia.com>,
Ulf Hansson <ulf.hansson@linaro.org>,
Viresh Kumar <vireshk@kernel.org>,
Stephen Boyd <sboyd@kernel.org>,
Peter De Schrijver <pdeschrijver@nvidia.com>
Cc: linux-kernel@vger.kernel.org, linux-tegra@vger.kernel.org,
linux-pm@vger.kernel.org
Subject: [PATCH v7 00/37] NVIDIA Tegra power management patches for 5.15
Date: Fri, 2 Jul 2021 02:26:51 +0300 [thread overview]
Message-ID: <20210701232728.23591-1-digetx@gmail.com> (raw)
Hello,
This series continues the work on enabling voltage scaling of the core
power domain for NVIDIA Tegra SoCs. All the previous grounding work around
improving OPP API and adding the initial core power domain driver is now
landing into 5.14 kernel and already available in linux-next.
The biggest challenge left so far is the power management of the PLLs
and system clocks which don't have a dedicated hardware unit. I made a lot
of changes around it by going back to a variant where individual device
drivers are responsible for the power management in oppose to a recent
variant where the most of power management was done by the clk controller
driver. This allowed to drop the need of having a special lockdep
annotation for the power domain's mutex, which Ulf Hansson didn't like
previously. We don't have situations of a nested GENPD accesses anymore.
It also allowed to minimize the clk patch a lot. Now clk driver manages
power of the internal clocks only.
This series enables a full power management for Tegra20 and Tegra30 SoCs.
It doesn't include all the device-tree binding patches. I'll try to split
this series into a smaller parts that could be applied individually. For
now I want to get a feedback at least on the first six patches.
Example /sys/kernel/debug/pm_genpd/pm_genpd_summary from Tegra20 Acer A500:
domain status children performance
/device runtime status
----------------------------------------------------------------------------------------------
mpe off-0 0
/devices/soc0/50000000.host1x/54040000.mpe suspended 0
vdec off-0 0
/devices/soc0/6001a000.vde suspended 0
venc off-0 0
/devices/soc0/50000000.host1x/54080000.vi suspended 0
/devices/soc0/50000000.host1x/54100000.isp suspended 0
3d off-0 0
/devices/soc0/50000000.host1x/54180000.gr3d suspended 0
core-domain on 1100000
3d, venc, vdec, mpe
/devices/soc0/50000000.host1x active 1100000
/devices/soc0/50000000.host1x/540c0000.epp suspended 0
/devices/soc0/50000000.host1x/54140000.gr2d suspended 0
/devices/soc0/50000000.host1x/54280000.hdmi suspended 0
/devices/soc0/c5000000.usb active 1100000
/devices/soc0/c5008000.usb active 1100000
/devices/soc0/c8000000.mmc active 1000000
/devices/soc0/c8000400.mmc active 1000000
/devices/soc0/c8000600.mmc active 1000000
/devices/soc0/7000f400.memory-controller active 1000000
/devices/platform/tegra_clk_sclk active 950000
/devices/soc0/50000000.host1x/54200000.dc active 950000
/devices/soc0/50000000.host1x/54240000.dc suspended 0
Example /sys/kernel/debug/pm_genpd/pm_genpd_summary from Tegra30 Nexus 7:
domain status children performance
/device runtime status
----------------------------------------------------------------------------------------------
heg on 1000000
/devices/soc0/50000000.host1x active 1000000
/devices/soc0/50000000.host1x/540c0000.epp suspended 0
/devices/soc0/50000000.host1x/54140000.gr2d suspended 0
mpe off-0 0
/devices/soc0/50000000.host1x/54040000.mpe suspended 0
vdec off-0 0
/devices/soc0/6001a000.vde suspended 0
venc off-0 0
/devices/soc0/50000000.host1x/54080000.vi suspended 0
/devices/soc0/50000000.host1x/54100000.isp suspended 0
3d1 off-0 0
/devices/genpd:1:54180000.gr3d suspended 0
3d0 off-0 0
/devices/genpd:0:54180000.gr3d suspended 0
core-domain on 1000000
3d0, 3d1, venc, vdec, mpe, heg
/devices/soc0/7d000000.usb active 1000000
/devices/soc0/78000400.mmc active 950000
/devices/soc0/7000f400.memory-controller active 1000000
/devices/soc0/7000a000.pwm active 1000000
/devices/platform/tegra_clk_pll_c active 1000000
/devices/platform/tegra_clk_pll_e suspended 0
/devices/platform/tegra_clk_pll_m active 1000000
/devices/platform/tegra_clk_sclk active 1000000
/devices/soc0/7000f800.fuse suspended 0
/devices/soc0/50000000.host1x/54240000.dc suspended 0
/devices/soc0/50000000.host1x/54200000.dc active 1000000
Dmitry Osipenko (37):
soc/tegra: pmc: Temporarily disable PMC state syncing
soc/tegra: pmc: Implement attach_dev() of power domain drivers
soc/tegra: Don't print error message when OPPs not available
soc/tegra: Add devm_tegra_core_dev_init_opp_table_simple()
dt-bindings: clock: tegra-car: Document new tegra-clocks node
clk: tegra: Support runtime PM and power domain
dt-bindings: host1x: Document OPP and power domain properties
dt-bindings: host1x: Document Memory Client resets of Host1x, GR2D and
GR3D
gpu: host1x: Add host1x_channel_stop()
gpu: host1x: Add runtime PM support
gpu: host1x: Add stub driver for MPE, VI, EPP and ISP
drm/tegra: dc: Support OPP and SoC core voltage scaling
drm/tegra: hdmi: Add OPP support
drm/tegra: gr2d: Support OPP and power management
drm/tegra: gr3d: Support OPP and power management
drm/tegra: vic: Stop channel before suspending
usb: chipidea: tegra: Add runtime PM support
bus: tegra-gmi: Add runtime PM support
pwm: tegra: Add runtime PM and OPP support
mmc: sdhci-tegra: Add runtime PM and OPP support
mtd: rawnand: tegra: Add runtime PM support
soc/tegra: fuse: Clear fuse->clk on driver probe failure
soc/tegra: fuse: Add runtime PM support
soc/tegra: fuse: Enable fuse clock on suspend
clk: tegra: Remove CLK_IS_CRITICAL flag from fuse clock
spi: tegra20-slink: Improve runtime PM usage
spi: tegra20-slink: Add OPP support
memory: tegra20-emc: Add minimal runtime PM support
memory: tegra30-emc: Add minimal runtime PM support
media: dt: bindings: tegra-vde: Convert to schema
media: dt: bindings: tegra-vde: Document OPP and power domain
media: staging: tegra-vde: Support generic power domain
ARM: tegra: Add OPP tables and power domains to Tegra20 device-trees
ARM: tegra: Add OPP tables and power domains to Tegra30 device-trees
ARM: tegra: Add Memory Client resets to Tegra20 GR2D, GR3D and Host1x
ARM: tegra: Add Memory Client resets to Tegra30 GR2D, GR3D and Host1x
soc/tegra: pmc: Enable core domain support on Tegra20 and Tegra30
.../bindings/clock/nvidia,tegra20-car.yaml | 51 +
.../display/tegra/nvidia,tegra20-host1x.txt | 53 +
.../bindings/media/nvidia,tegra-vde.txt | 64 -
.../bindings/media/nvidia,tegra-vde.yaml | 119 ++
.../boot/dts/tegra20-acer-a500-picasso.dts | 1 +
arch/arm/boot/dts/tegra20-colibri.dtsi | 3 +-
arch/arm/boot/dts/tegra20-harmony.dts | 3 +-
arch/arm/boot/dts/tegra20-paz00.dts | 1 +
.../arm/boot/dts/tegra20-peripherals-opp.dtsi | 941 +++++++++++
arch/arm/boot/dts/tegra20-seaboard.dts | 3 +-
arch/arm/boot/dts/tegra20-tamonten.dtsi | 3 +-
arch/arm/boot/dts/tegra20-trimslice.dts | 9 +
arch/arm/boot/dts/tegra20-ventana.dts | 1 +
arch/arm/boot/dts/tegra20.dtsi | 115 +-
.../tegra30-asus-nexus7-grouper-common.dtsi | 1 +
arch/arm/boot/dts/tegra30-beaver.dts | 1 +
arch/arm/boot/dts/tegra30-cardhu.dtsi | 1 +
arch/arm/boot/dts/tegra30-colibri.dtsi | 17 +-
arch/arm/boot/dts/tegra30-ouya.dts | 1 +
.../arm/boot/dts/tegra30-peripherals-opp.dtsi | 1412 +++++++++++++++++
arch/arm/boot/dts/tegra30.dtsi | 170 +-
drivers/bus/tegra-gmi.c | 44 +-
drivers/clk/tegra/Makefile | 1 +
drivers/clk/tegra/clk-device.c | 222 +++
drivers/clk/tegra/clk-pll.c | 2 +-
drivers/clk/tegra/clk-super.c | 2 +-
drivers/clk/tegra/clk-tegra-periph.c | 6 +-
drivers/clk/tegra/clk-tegra20.c | 39 +-
drivers/clk/tegra/clk-tegra30.c | 70 +-
drivers/clk/tegra/clk.c | 66 +
drivers/clk/tegra/clk.h | 2 +
drivers/gpu/drm/tegra/dc.c | 69 +
drivers/gpu/drm/tegra/dc.h | 2 +
drivers/gpu/drm/tegra/gr2d.c | 156 +-
drivers/gpu/drm/tegra/gr3d.c | 401 ++++-
drivers/gpu/drm/tegra/hdmi.c | 9 +-
drivers/gpu/drm/tegra/vic.c | 15 +
drivers/gpu/host1x/channel.c | 8 +
drivers/gpu/host1x/debug.c | 15 +
drivers/gpu/host1x/dev.c | 184 ++-
drivers/gpu/host1x/dev.h | 3 +-
drivers/gpu/host1x/hw/channel_hw.c | 44 +-
drivers/gpu/host1x/intr.c | 3 -
drivers/gpu/host1x/syncpt.c | 5 +-
drivers/memory/tegra/tegra20-emc.c | 31 +
drivers/memory/tegra/tegra30-emc.c | 31 +
drivers/mmc/host/sdhci-tegra.c | 81 +-
drivers/mtd/nand/raw/tegra_nand.c | 44 +-
drivers/pwm/pwm-tegra.c | 104 +-
drivers/soc/tegra/common.c | 4 +-
drivers/soc/tegra/fuse/fuse-tegra.c | 62 +
drivers/soc/tegra/fuse/fuse-tegra20.c | 10 +-
drivers/soc/tegra/fuse/fuse-tegra30.c | 10 +-
drivers/soc/tegra/fuse/fuse.h | 2 +
drivers/soc/tegra/pmc.c | 164 ++
drivers/spi/spi-tegra20-slink.c | 76 +-
drivers/staging/media/tegra-vde/vde.c | 59 +-
drivers/usb/chipidea/ci_hdrc_tegra.c | 50 +-
include/linux/host1x.h | 1 +
include/soc/tegra/common.h | 13 +
60 files changed, 4710 insertions(+), 370 deletions(-)
delete mode 100644 Documentation/devicetree/bindings/media/nvidia,tegra-vde.txt
create mode 100644 Documentation/devicetree/bindings/media/nvidia,tegra-vde.yaml
create mode 100644 drivers/clk/tegra/clk-device.c
--
2.30.2
next reply other threads:[~2021-07-01 23:28 UTC|newest]
Thread overview: 56+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-07-01 23:26 Dmitry Osipenko [this message]
2021-07-01 23:26 ` [PATCH v7 01/37] soc/tegra: pmc: Temporarily disable PMC state syncing Dmitry Osipenko
2021-08-12 16:02 ` Dmitry Osipenko
2021-07-01 23:26 ` [PATCH v7 02/37] soc/tegra: pmc: Implement attach_dev() of power domain drivers Dmitry Osipenko
2021-08-02 14:48 ` Ulf Hansson
2021-08-02 18:23 ` Dmitry Osipenko
2021-08-04 9:59 ` Ulf Hansson
2021-08-04 21:16 ` Dmitry Osipenko
2021-08-09 14:15 ` Ulf Hansson
2021-08-09 23:56 ` Dmitry Osipenko
2021-08-10 10:51 ` Ulf Hansson
2021-08-11 19:30 ` Dmitry Osipenko
2021-08-11 22:41 ` Dmitry Osipenko
2021-08-12 1:40 ` Dmitry Osipenko
2021-08-12 11:17 ` Ulf Hansson
2021-08-12 16:24 ` Dmitry Osipenko
2021-07-01 23:26 ` [PATCH v7 03/37] soc/tegra: Don't print error message when OPPs not available Dmitry Osipenko
2021-07-01 23:26 ` [PATCH v7 04/37] soc/tegra: Add devm_tegra_core_dev_init_opp_table_simple() Dmitry Osipenko
2021-07-01 23:26 ` [PATCH v7 05/37] dt-bindings: clock: tegra-car: Document new tegra-clocks node Dmitry Osipenko
2021-07-01 23:26 ` [PATCH v7 06/37] clk: tegra: Support runtime PM and power domain Dmitry Osipenko
2021-07-01 23:26 ` [PATCH v7 07/37] dt-bindings: host1x: Document OPP and power domain properties Dmitry Osipenko
2021-07-01 23:26 ` [PATCH v7 08/37] dt-bindings: host1x: Document Memory Client resets of Host1x, GR2D and GR3D Dmitry Osipenko
2021-07-01 23:27 ` [PATCH v7 09/37] gpu: host1x: Add host1x_channel_stop() Dmitry Osipenko
2021-07-01 23:27 ` [PATCH v7 10/37] gpu: host1x: Add runtime PM support Dmitry Osipenko
2021-07-01 23:27 ` [PATCH v7 11/37] gpu: host1x: Add stub driver for MPE, VI, EPP and ISP Dmitry Osipenko
2021-07-01 23:27 ` [PATCH v7 12/37] drm/tegra: dc: Support OPP and SoC core voltage scaling Dmitry Osipenko
2021-07-01 23:27 ` [PATCH v7 13/37] drm/tegra: hdmi: Add OPP support Dmitry Osipenko
2021-07-01 23:27 ` [PATCH v7 14/37] drm/tegra: gr2d: Support OPP and power management Dmitry Osipenko
2021-07-01 23:27 ` [PATCH v7 15/37] drm/tegra: gr3d: " Dmitry Osipenko
2021-07-01 23:27 ` [PATCH v7 16/37] drm/tegra: vic: Stop channel before suspending Dmitry Osipenko
2021-07-01 23:27 ` [PATCH v7 17/37] usb: chipidea: tegra: Add runtime PM support Dmitry Osipenko
2021-07-01 23:27 ` [PATCH v7 18/37] bus: tegra-gmi: " Dmitry Osipenko
2021-07-01 23:27 ` [PATCH v7 19/37] pwm: tegra: Add runtime PM and OPP support Dmitry Osipenko
2021-07-01 23:27 ` [PATCH v7 20/37] mmc: sdhci-tegra: " Dmitry Osipenko
2021-07-02 3:39 ` kernel test robot
2021-07-01 23:27 ` [PATCH v7 21/37] mtd: rawnand: tegra: Add runtime PM support Dmitry Osipenko
2021-07-01 23:27 ` [PATCH v7 22/37] soc/tegra: fuse: Clear fuse->clk on driver probe failure Dmitry Osipenko
2021-07-01 23:27 ` [PATCH v7 23/37] soc/tegra: fuse: Add runtime PM support Dmitry Osipenko
2021-07-01 23:27 ` [PATCH v7 24/37] soc/tegra: fuse: Enable fuse clock on suspend Dmitry Osipenko
2021-07-21 16:00 ` Dmitry Osipenko
2021-07-01 23:27 ` [PATCH v7 25/37] clk: tegra: Remove CLK_IS_CRITICAL flag from fuse clock Dmitry Osipenko
2021-07-01 23:27 ` [PATCH v7 26/37] spi: tegra20-slink: Improve runtime PM usage Dmitry Osipenko
2021-07-02 8:29 ` kernel test robot
2021-07-01 23:27 ` [PATCH v7 27/37] spi: tegra20-slink: Add OPP support Dmitry Osipenko
2021-07-01 23:27 ` [PATCH v7 28/37] memory: tegra20-emc: Add minimal runtime PM support Dmitry Osipenko
2021-07-01 23:27 ` [PATCH v7 29/37] memory: tegra30-emc: " Dmitry Osipenko
2021-07-01 23:27 ` [PATCH v7 30/37] media: dt: bindings: tegra-vde: Convert to schema Dmitry Osipenko
2021-07-01 23:27 ` [PATCH v7 31/37] media: dt: bindings: tegra-vde: Document OPP and power domain Dmitry Osipenko
2021-07-01 23:27 ` [PATCH v7 32/37] media: staging: tegra-vde: Support generic " Dmitry Osipenko
2021-07-01 23:27 ` [PATCH v7 33/37] ARM: tegra: Add OPP tables and power domains to Tegra20 device-trees Dmitry Osipenko
2021-07-01 23:27 ` [PATCH v7 34/37] ARM: tegra: Add OPP tables and power domains to Tegra30 device-trees Dmitry Osipenko
2021-07-01 23:27 ` [PATCH v7 35/37] ARM: tegra: Add Memory Client resets to Tegra20 GR2D, GR3D and Host1x Dmitry Osipenko
2021-07-01 23:27 ` [PATCH v7 36/37] ARM: tegra: Add Memory Client resets to Tegra30 " Dmitry Osipenko
2021-07-01 23:27 ` [PATCH v7 37/37] soc/tegra: pmc: Enable core domain support on Tegra20 and Tegra30 Dmitry Osipenko
2021-07-09 13:01 ` [PATCH v7 00/37] NVIDIA Tegra power management patches for 5.15 Ulf Hansson
2021-07-09 21:23 ` Dmitry Osipenko
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=20210701232728.23591-1-digetx@gmail.com \
--to=digetx@gmail.com \
--cc=jonathanh@nvidia.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=linux-tegra@vger.kernel.org \
--cc=pdeschrijver@nvidia.com \
--cc=sboyd@kernel.org \
--cc=thierry.reding@gmail.com \
--cc=ulf.hansson@linaro.org \
--cc=vireshk@kernel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).