18c2ecf20Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0-only
28c2ecf20Sopenharmony_ci%YAML 1.2
38c2ecf20Sopenharmony_ci---
48c2ecf20Sopenharmony_ci$id: http://devicetree.org/schemas/powerpc/sleep.yaml#
58c2ecf20Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
68c2ecf20Sopenharmony_ci
78c2ecf20Sopenharmony_cititle: PowerPC sleep property
88c2ecf20Sopenharmony_ci
98c2ecf20Sopenharmony_cimaintainers:
108c2ecf20Sopenharmony_ci  - Rob Herring <robh@kernel.org>
118c2ecf20Sopenharmony_ci
128c2ecf20Sopenharmony_cidescription: |
138c2ecf20Sopenharmony_ci  Devices on SOCs often have mechanisms for placing devices into low-power
148c2ecf20Sopenharmony_ci  states that are decoupled from the devices' own register blocks.  Sometimes,
158c2ecf20Sopenharmony_ci  this information is more complicated than a cell-index property can
168c2ecf20Sopenharmony_ci  reasonably describe.  Thus, each device controlled in such a manner
178c2ecf20Sopenharmony_ci  may contain a "sleep" property which describes these connections.
188c2ecf20Sopenharmony_ci
198c2ecf20Sopenharmony_ci  The sleep property consists of one or more sleep resources, each of
208c2ecf20Sopenharmony_ci  which consists of a phandle to a sleep controller, followed by a
218c2ecf20Sopenharmony_ci  controller-specific sleep specifier of zero or more cells.
228c2ecf20Sopenharmony_ci
238c2ecf20Sopenharmony_ci  The semantics of what type of low power modes are possible are defined
248c2ecf20Sopenharmony_ci  by the sleep controller.  Some examples of the types of low power modes
258c2ecf20Sopenharmony_ci  that may be supported are:
268c2ecf20Sopenharmony_ci
278c2ecf20Sopenharmony_ci   - Dynamic: The device may be disabled or enabled at any time.
288c2ecf20Sopenharmony_ci   - System Suspend: The device may request to be disabled or remain
298c2ecf20Sopenharmony_ci     awake during system suspend, but will not be disabled until then.
308c2ecf20Sopenharmony_ci   - Permanent: The device is disabled permanently (until the next hard
318c2ecf20Sopenharmony_ci     reset).
328c2ecf20Sopenharmony_ci
338c2ecf20Sopenharmony_ci  Some devices may share a clock domain with each other, such that they should
348c2ecf20Sopenharmony_ci  only be suspended when none of the devices are in use.  Where reasonable,
358c2ecf20Sopenharmony_ci  such nodes should be placed on a virtual bus, where the bus has the sleep
368c2ecf20Sopenharmony_ci  property.  If the clock domain is shared among devices that cannot be
378c2ecf20Sopenharmony_ci  reasonably grouped in this manner, then create a virtual sleep controller
388c2ecf20Sopenharmony_ci  (similar to an interrupt nexus, except that defining a standardized
398c2ecf20Sopenharmony_ci  sleep-map should wait until its necessity is demonstrated).
408c2ecf20Sopenharmony_ci
418c2ecf20Sopenharmony_ciselect: true
428c2ecf20Sopenharmony_ci
438c2ecf20Sopenharmony_ciproperties:
448c2ecf20Sopenharmony_ci  sleep:
458c2ecf20Sopenharmony_ci    $ref: /schemas/types.yaml#definitions/phandle-array
468c2ecf20Sopenharmony_ci
478c2ecf20Sopenharmony_ciadditionalProperties: true
48