^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) # SPDX-License-Identifier: GPL-2.0-only
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) %YAML 1.2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) ---
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) $id: http://devicetree.org/schemas/powerpc/sleep.yaml#
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) $schema: http://devicetree.org/meta-schemas/core.yaml#
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) title: PowerPC sleep property
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) maintainers:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) - Rob Herring <robh@kernel.org>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) description: |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) Devices on SOCs often have mechanisms for placing devices into low-power
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) states that are decoupled from the devices' own register blocks. Sometimes,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) this information is more complicated than a cell-index property can
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) reasonably describe. Thus, each device controlled in such a manner
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) may contain a "sleep" property which describes these connections.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) The sleep property consists of one or more sleep resources, each of
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) which consists of a phandle to a sleep controller, followed by a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) controller-specific sleep specifier of zero or more cells.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) The semantics of what type of low power modes are possible are defined
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) by the sleep controller. Some examples of the types of low power modes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) that may be supported are:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) - Dynamic: The device may be disabled or enabled at any time.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) - System Suspend: The device may request to be disabled or remain
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) awake during system suspend, but will not be disabled until then.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) - Permanent: The device is disabled permanently (until the next hard
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) reset).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) Some devices may share a clock domain with each other, such that they should
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) only be suspended when none of the devices are in use. Where reasonable,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) such nodes should be placed on a virtual bus, where the bus has the sleep
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) property. If the clock domain is shared among devices that cannot be
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) reasonably grouped in this manner, then create a virtual sleep controller
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) (similar to an interrupt nexus, except that defining a standardized
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) sleep-map should wait until its necessity is demonstrated).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) select: true
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) properties:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) sleep:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) $ref: /schemas/types.yaml#definitions/phandle-array
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) additionalProperties: true