Commit 9e7a0323 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull power management updates from Rafael Wysocki:
 "These include cpuidle changes to use nanoseconds (instead of
  microseconds) as the unit of time and to simplify checks for disabled
  idle states in the idle loop, some cpuidle fixes and governor updates,
  assorted cpufreq updates (driver updates mostly and a few core fixes
  and cleanups), devfreq updates (dominated by the tegra30 driver
  changes), new CPU IDs for the RAPL power capping driver, relatively
  minor updates of the generic power domains (genpd) and operation
  performance points (OPP) frameworks, and assorted fixes and cleanups.

  There are also two maintainer information updates: Chanwoo Choi will
  be maintaining the devfreq subsystem going forward and Todd Brandt is
  going to maintain the pm-graph utility (created by him).

  Specifics:

   - Use nanoseconds (instead of microseconds) as the unit of time in
     the cpuidle core and simplify checks for disabled idle states in
     the idle loop (Rafael Wysocki)

   - Fix and clean up the teo cpuidle governor (Rafael Wysocki)

   - Fix the cpuidle registration error code path (Zhenzhong Duan)

   - Avoid excessive vmexits in the ACPI cpuidle driver (Yin Fengwei)

   - Extend the idle injection infrastructure to be able to measure the
     requested duration in nanoseconds and to allow an exit latency
     limit for idle states to be specified (Daniel Lezcano)

   - Fix cpufreq driver registration and clarify a comment in the
     cpufreq core (Viresh Kumar)

   - Add NULL checks to the show() and store() methods of sysfs
     attributes exposed by cpufreq (Kai Shen)

   - Update cpufreq drivers:
      * Fix for a plain int as pointer warning from sparse in
        intel_pstate (Jamal Shareef)
      * Fix for a hardcoded number of CPUs and stack bloat in the
        powernv driver (John Hubbard)
      * Updates to the ti-cpufreq driver and DT files to support new
        platforms and migrate bindings from opp-v1 to opp-v2 (Adam Ford,
        H. Nikolaus Schaller)
      * Merging of the arm_big_little and vexpress-spc drivers and
        related cleanup (Sudeep Holla)
      * Fix for imx's default speed grade value (Anson Huang)
      * Minor cleanup of the s3c64xx driver (Nathan Chancellor)
      * CPU speed bin detection fix for sun50i (Ondrej Jirman)

   - Appoint Chanwoo Choi as the new devfreq maintainer.

   - Update the devfreq core:
      * Check NULL governor in available_governors_show sysfs to prevent
        showing wrong governor information and fix a race condition
        between devfreq_update_status() and trans_stat_show() (Leonard
        Crestez)
      * Add new 'interrupt-driven' flag for devfreq governors to allow
        interrupt-driven governors to prevent the devfreq core from
        polling devices for status (Dmitry Osipenko)
      * Improve an error message in devfreq_add_device() (Matthias
        Kaehlcke)

   - Update devfreq drivers:
      * tegra30 driver fixes and cleanups (Dmitry Osipenko)
      * Removal of unused property from dt-binding documentation for the
        exynos-bus driver (Kamil Konieczny)
      * exynos-ppmu cleanup and DT bindings update (Lukasz Luba, Marek
        Szyprowski)

   - Add new CPU IDs for CometLake Mobile and Desktop to the Intel RAPL
     power capping driver (Zhang Rui)

   - Allow device initialization in the generic power domains (genpd)
     framework to be more straightforward and clean it up (Ulf Hansson)

   - Add support for adjusting OPP voltages at run time to the OPP
     framework (Stephen Boyd)

   - Avoid freeing memory that has never been allocated in the
     hibernation core (Andy Whitcroft)

   - Clean up function headers in a header file and coding style in the
     wakeup IRQs handling code (Ulf Hansson, Xiaofei Tan)

   - Clean up the SmartReflex adaptive voltage scaling (AVS) driver for
     ARM (Ben Dooks, Geert Uytterhoeven)

   - Wrap power management documentation to fit in 80 columns (Bjorn
     Helgaas)

   - Add pm-graph utility entry to MAINTAINERS (Todd Brandt)

   - Update the cpupower utility:
      * Fix the handling of set and info subcommands (Abhishek Goel)
      * Fix build warnings (Nathan Chancellor)
      * Improve mperf_monitor handling (Janakarajan Natarajan)"

* tag 'pm-5.5-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: (83 commits)
  PM: Wrap documentation to fit in 80 columns
  cpuidle: Pass exit latency limit to cpuidle_use_deepest_state()
  cpuidle: Allow idle injection to apply exit latency limit
  cpuidle: Introduce cpuidle_driver_state_disabled() for driver quirks
  cpuidle: teo: Avoid code duplication in conditionals
  cpufreq: Register drivers only after CPU devices have been registered
  cpuidle: teo: Avoid using "early hits" incorrectly
  cpuidle: teo: Exclude cpuidle overhead from computations
  PM / Domains: Convert to dev_to_genpd_safe() in genpd_syscore_switch()
  mmc: tmio: Avoid boilerplate code in ->runtime_suspend()
  PM / Domains: Implement the ->start() callback for genpd
  PM / Domains: Introduce dev_pm_domain_start()
  ARM: OMAP2+: SmartReflex: add omap_sr_pdata definition
  PM / wakeirq: remove unnecessary parentheses
  power: avs: smartreflex: Remove superfluous cast in debugfs_create_file() call
  cpuidle: Use nanoseconds as the unit of time
  PM / OPP: Support adjusting OPP voltages at runtime
  PM / core: Clean up some function headers in power.h
  cpufreq: Add NULL checks to show() and store() methods of cpufreq
  cpufreq: intel_pstate: Fix plain int as pointer warning from sparse
  ...
parents c2da5bdc e350b60f
Loading
Loading
Loading
Loading
+17 −13
Original line number Diff line number Diff line
@@ -43,7 +43,7 @@ SoC Families:

- OMAP2 generic - defaults to OMAP2420
  compatible = "ti,omap2"
- OMAP3 generic - defaults to OMAP3430
- OMAP3 generic
  compatible = "ti,omap3"
- OMAP4 generic - defaults to OMAP4430
  compatible = "ti,omap4"
@@ -51,6 +51,8 @@ SoC Families:
  compatible = "ti,omap5"
- DRA7 generic - defaults to DRA742
  compatible = "ti,dra7"
- AM33x generic
  compatible = "ti,am33xx"
- AM43x generic - defaults to AM4372
  compatible = "ti,am43"

@@ -63,12 +65,14 @@ SoCs:

- OMAP3430
  compatible = "ti,omap3430", "ti,omap3"
  legacy: "ti,omap34xx" - please do not use any more
- AM3517
  compatible = "ti,am3517", "ti,omap3"
- OMAP3630
  compatible = "ti,omap36xx", "ti,omap3"
- AM33xx
  compatible = "ti,am33xx", "ti,omap3"
  compatible = "ti,omap3630", "ti,omap3"
  legacy: "ti,omap36xx" - please do not use any more
- AM335x
  compatible = "ti,am33xx"

- OMAP4430
  compatible = "ti,omap4430", "ti,omap4"
@@ -110,19 +114,19 @@ SoCs:
- AM4372
  compatible = "ti,am4372", "ti,am43"

Boards:
Boards (incomplete list of examples):

- OMAP3 BeagleBoard : Low cost community board
  compatible = "ti,omap3-beagle", "ti,omap3"
  compatible = "ti,omap3-beagle", "ti,omap3430", "ti,omap3"

- OMAP3 Tobi with Overo : Commercial expansion board with daughter board
  compatible = "gumstix,omap3-overo-tobi", "gumstix,omap3-overo", "ti,omap3"
  compatible = "gumstix,omap3-overo-tobi", "gumstix,omap3-overo", "ti,omap3430", "ti,omap3"

- OMAP4 SDP : Software Development Board
  compatible = "ti,omap4-sdp", "ti,omap4430"
  compatible = "ti,omap4-sdp", "ti,omap4430", "ti,omap4"

- OMAP4 PandaBoard : Low cost community board
  compatible = "ti,omap4-panda", "ti,omap4430"
  compatible = "ti,omap4-panda", "ti,omap4430", "ti,omap4"

- OMAP4 DuoVero with Parlor : Commercial expansion board with daughter board
  compatible = "gumstix,omap4-duovero-parlor", "gumstix,omap4-duovero", "ti,omap4430", "ti,omap4";
@@ -134,16 +138,16 @@ Boards:
  compatible = "variscite,var-dvk-om44", "variscite,var-som-om44", "ti,omap4460", "ti,omap4";

- OMAP3 EVM : Software Development Board for OMAP35x, AM/DM37x
  compatible = "ti,omap3-evm", "ti,omap3"
  compatible = "ti,omap3-evm", "ti,omap3630", "ti,omap3"

- AM335X EVM : Software Development Board for AM335x
  compatible = "ti,am335x-evm", "ti,am33xx", "ti,omap3"
  compatible = "ti,am335x-evm", "ti,am33xx"

- AM335X Bone : Low cost community board
  compatible = "ti,am335x-bone", "ti,am33xx", "ti,omap3"
  compatible = "ti,am335x-bone", "ti,am33xx"

- AM3359 ICEv2 : Low cost Industrial Communication Engine EVM.
  compatible = "ti,am3359-icev2", "ti,am33xx", "ti,omap3"
  compatible = "ti,am3359-icev2", "ti,am33xx"

- AM335X OrionLXm : Substation Automation Platform
  compatible = "novatech,am335x-lxm", "ti,am33xx"
+5 −1
Original line number Diff line number Diff line
@@ -15,12 +15,16 @@ In 'cpus' nodes:

In 'operating-points-v2' table:
- compatible: Should be
	- 'operating-points-v2-ti-cpu' for am335x, am43xx, and dra7xx/am57xx SoCs
	- 'operating-points-v2-ti-cpu' for am335x, am43xx, and dra7xx/am57xx,
	  omap34xx, omap36xx and am3517 SoCs
- syscon: A phandle pointing to a syscon node representing the control module
	  register space of the SoC.

Optional properties:
--------------------
- "vdd-supply", "vbb-supply": to define two regulators for dra7xx
- "cpu0-supply", "vbb-supply": to define two regulators for omap36xx

For each opp entry in 'operating-points-v2' table:
- opp-supported-hw: Two bitfields indicating:
	1. Which revision of the SoC the OPP is supported by
+24 −2
Original line number Diff line number Diff line
@@ -10,14 +10,23 @@ The Exynos PPMU driver uses the devfreq-event class to provide event data
to various devfreq devices. The devfreq devices would use the event data when
derterming the current state of each IP.

Required properties:
Required properties for PPMU device:
- compatible: Should be "samsung,exynos-ppmu" or "samsung,exynos-ppmu-v2.
- reg: physical base address of each PPMU and length of memory mapped region.

Optional properties:
Optional properties for PPMU device:
- clock-names : the name of clock used by the PPMU, "ppmu"
- clocks : phandles for clock specified in "clock-names" property

Required properties for 'events' child node of PPMU device:
- event-name : the unique event name among PPMU device
Optional properties for 'events' child node of PPMU device:
- event-data-type : Define the type of data which shell be counted
by the counter. You can check include/dt-bindings/pmu/exynos_ppmu.h for
all possible type, i.e. count read requests, count write data in bytes,
etc. This field is optional and when it is missing, the driver code
will use default data type.

Example1 : PPMUv1 nodes in exynos3250.dtsi are listed below.

		ppmu_dmc0: ppmu_dmc0@106a0000 {
@@ -145,3 +154,16 @@ Example3 : PPMUv2 nodes in exynos5433.dtsi are listed below.
			reg = <0x104d0000 0x2000>;
			status = "disabled";
		};

Example4 : 'event-data-type' in exynos4412-ppmu-common.dtsi are listed below.

	&ppmu_dmc0 {
		status = "okay";
		events {
			ppmu_dmc0_3: ppmu-event3-dmc0 {
			event-name = "ppmu-event3-dmc0";
			event-data-type = <(PPMU_RO_DATA_CNT |
					PPMU_WO_DATA_CNT)>;
			};
		};
	};
+0 −2
Original line number Diff line number Diff line
@@ -50,8 +50,6 @@ Required properties only for passive bus device:
Optional properties only for parent bus device:
- exynos,saturation-ratio: the percentage value which is used to calibrate
			the performance count against total cycle count.
- exynos,voltage-tolerance: the percentage value for bus voltage tolerance
			which is used to calculate the max voltage.

Detailed correlation between sub-blocks and power line according to Exynos SoC:
- In case of Exynos3250, there are two power line as following:
+4 −3
Original line number Diff line number Diff line
@@ -39,9 +39,10 @@ c) Compile the driver directly into the kernel and try the test modes of
d) Attempt to hibernate with the driver compiled directly into the kernel
   in the "reboot", "shutdown" and "platform" modes.

e) Try the test modes of suspend (see: Documentation/power/basic-pm-debugging.rst,
   2).  [As far as the STR tests are concerned, it should not matter whether or
   not the driver is built as a module.]
e) Try the test modes of suspend (see:
   Documentation/power/basic-pm-debugging.rst, 2).  [As far as the STR tests are
   concerned, it should not matter whether or not the driver is built as a
   module.]

f) Attempt to suspend to RAM using the s2ram tool with the driver loaded
   (see: Documentation/power/basic-pm-debugging.rst, 2).
Loading