linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
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

  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).