linux/Documentation/acpi/DSD-properties-rules.txt
<<
>>
Prefs
   1_DSD Device Properties Usage Rules
   2----------------------------------
   3
   4Properties, Property Sets and Property Subsets
   5----------------------------------------------
   6
   7The _DSD (Device Specific Data) configuration object, introduced in ACPI 5.1,
   8allows any type of device configuration data to be provided via the ACPI
   9namespace.  In principle, the format of the data may be arbitrary, but it has to
  10be identified by a UUID which must be recognized by the driver processing the
  11_DSD output.  However, there are generic UUIDs defined for _DSD recognized by
  12the ACPI subsystem in the Linux kernel which automatically processes the data
  13packages associated with them and makes those data available to device drivers
  14as "device properties".
  15
  16A device property is a data item consisting of a string key and a value (of a
  17specific type) associated with it.
  18
  19In the ACPI _DSD context it is an element of the sub-package following the
  20generic Device Properties UUID in the _DSD return package as specified in the
  21Device Properties UUID definition document [1].
  22
  23It also may be regarded as the definition of a key and the associated data type
  24that can be returned by _DSD in the Device Properties UUID sub-package for a
  25given device.
  26
  27A property set is a collection of properties applicable to a hardware entity
  28like a device.  In the ACPI _DSD context it is the set of all properties that
  29can be returned in the Device Properties UUID sub-package for the device in
  30question.
  31
  32Property subsets are nested collections of properties.  Each of them is
  33associated with an additional key (name) allowing the subset to be referred
  34to as a whole (and to be treated as a separate entity).  The canonical
  35representation of property subsets is via the mechanism specified in the
  36Hierarchical Properties Extension UUID definition document [2].
  37
  38Property sets may be hierarchical.  That is, a property set may contain
  39multiple property subsets that each may contain property subsets of its
  40own and so on.
  41
  42General Validity Rule for Property Sets
  43---------------------------------------
  44
  45Valid property sets must follow the guidance given by the Device Properties UUID
  46definition document [1].
  47
  48_DSD properties are intended to be used in addition to, and not instead of, the
  49existing mechanisms defined by the ACPI specification.  Therefore, as a rule,
  50they should only be used if the ACPI specification does not make direct
  51provisions for handling the underlying use case.  It generally is invalid to
  52return property sets which do not follow that rule from _DSD in data packages
  53associated with the Device Properties UUID.
  54
  55Additional Considerations
  56-------------------------
  57
  58There are cases in which, even if the general rule given above is followed in
  59principle, the property set may still not be regarded as a valid one.
  60
  61For example, that applies to device properties which may cause kernel code
  62(either a device driver or a library/subsystem) to access hardware in a way
  63possibly leading to a conflict with AML methods in the ACPI namespace.  In
  64particular, that may happen if the kernel code uses device properties to
  65manipulate hardware normally controlled by ACPI methods related to power
  66management, like _PSx and _DSW (for device objects) or _ON and _OFF (for power
  67resource objects), or by ACPI device disabling/enabling methods, like _DIS and
  68_SRS.
  69
  70In all cases in which kernel code may do something that will confuse AML as a
  71result of using device properties, the device properties in question are not
  72suitable for the ACPI environment and consequently they cannot belong to a valid
  73property set.
  74
  75Property Sets and Device Tree Bindings
  76--------------------------------------
  77
  78It often is useful to make _DSD return property sets that follow Device Tree
  79bindings.
  80
  81In those cases, however, the above validity considerations must be taken into
  82account in the first place and returning invalid property sets from _DSD must be
  83avoided.  For this reason, it may not be possible to make _DSD return a property
  84set following the given DT binding literally and completely.  Still, for the
  85sake of code re-use, it may make sense to provide as much of the configuration
  86data as possible in the form of device properties and complement that with an
  87ACPI-specific mechanism suitable for the use case at hand.
  88
  89In any case, property sets following DT bindings literally should not be
  90expected to automatically work in the ACPI environment regardless of their
  91contents.
  92
  93References
  94----------
  95
  96[1] http://www.uefi.org/sites/default/files/resources/_DSD-device-properties-UUID.pdf
  97[2] http://www.uefi.org/sites/default/files/resources/_DSD-hierarchical-data-extension-UUID-v1.1.pdf
  98