From: Ulf Hansson <ulf.hansson@linaro.org>
To: Dmitry Osipenko <digetx@gmail.com>
Cc: Thierry Reding <thierry.reding@gmail.com>,
Jonathan Hunter <jonathanh@nvidia.com>,
Viresh Kumar <vireshk@kernel.org>,
Stephen Boyd <sboyd@kernel.org>,
Peter De Schrijver <pdeschrijver@nvidia.com>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
linux-tegra <linux-tegra@vger.kernel.org>,
Linux PM <linux-pm@vger.kernel.org>
Subject: Re: [PATCH v7 00/37] NVIDIA Tegra power management patches for 5.15
Date: Fri, 9 Jul 2021 15:01:45 +0200 [thread overview]
Message-ID: <CAPDyKFry00yzp9upsVy+yb7oX-k-bBgfrff+Q7qbK0cGh8ishQ@mail.gmail.com> (raw)
In-Reply-To: <20210701232728.23591-1-digetx@gmail.com>
On Fri, 2 Jul 2021 at 01:28, Dmitry Osipenko <digetx@gmail.com> wrote:
>
> 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
>
Dmitry, I am happy to help to review this, but unfortunately(?) I am
moving into holiday mode for a couple of weeks, very soon. I will do
my best to move forward with the review, but please be patient.
Kind regards
Uffe
next prev parent reply other threads:[~2021-07-09 13:02 UTC|newest]
Thread overview: 56+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-07-01 23:26 [PATCH v7 00/37] NVIDIA Tegra power management patches for 5.15 Dmitry Osipenko
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 ` Ulf Hansson [this message]
2021-07-09 21:23 ` [PATCH v7 00/37] NVIDIA Tegra power management patches for 5.15 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=CAPDyKFry00yzp9upsVy+yb7oX-k-bBgfrff+Q7qbK0cGh8ishQ@mail.gmail.com \
--to=ulf.hansson@linaro.org \
--cc=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=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).