.. SPDX-License-Identifier: GPL-2.0

==================================
_DSD Device Properties Usage Rules
==================================

Properties, Property Sets and Property Subsets
==============================================

The _DSD (Device Specific Data) configuration object, introduced in ACPI 5.1,
allows any type of device configuration data to be provided via the ACPI
namespace.  In principle, the format of the data may be arbitrary, but it has to
be identified by a UUID which must be recognized by the driver processing the
_DSD output.  However, there are generic UUIDs defined for _DSD recognized by
the ACPI subsystem in the Linux kernel which automatically processes the data
packages associated with them and makes those data available to device drivers
as "device properties".

A device property is a data item consisting of a string key and a value (of a
specific type) associated with it.

In the ACPI _DSD context it is an element of the sub-package following the
generic Device Properties UUID in the _DSD return package as specified in the
Device Properties UUID definition document [1]_.

It also may be regarded as the definition of a key and the associated data type
that can be returned by _DSD in the Device Properties UUID sub-package for a
given device.

A property set is a collection of properties applicable to a hardware entity
like a device.  In the ACPI _DSD context it is the set of all properties that
can be returned in the Device Properties UUID sub-package for the device in
question.

Property subsets are nested collections of properties.  Each of them is
associated with an additional key (name) allowing the subset to be referred
to as a whole (and to be treated as a separate entity).  The canonical
representation of property subsets is via the mechanism specified in the
Hierarchical Properties Extension UUID definition document [2]_.

Property sets may be hierarchical.  That is, a property set may contain
multiple property subsets that each may contain property subsets of its
own and so on.

General Validity Rule for Property Sets
=======================================

Valid property sets must follow the guidance given by the Device Properties UUID
definition document [1].

_DSD properties are intended to be used in addition to, and not instead of, the
existing mechanisms defined by the ACPI specification.  Therefore, as a rule,
they should only be used if the ACPI specification does not make direct
provisions for handling the underlying use case.  It generally is invalid to
return property sets which do not follow that rule from _DSD in data packages
associated with the Device Properties UUID.

Additional Considerations
-------------------------

There are cases in which, even if the general rule given above is followed in
principle, the property set may still not be regarded as a valid one.

For example, that applies to device properties which may cause kernel code
(either a device driver or a library/subsystem) to access hardware in a way
possibly leading to a conflict with AML methods in the ACPI namespace.  In
particular, that may happen if the kernel code uses device properties to
manipulate hardware normally controlled by ACPI methods related to power
management, like _PSx and _DSW (for device objects) or _ON and _OFF (for power
resource objects), or by ACPI device disabling/enabling methods, like _DIS and
_SRS.

In all cases in which kernel code may do something that will confuse AML as a
result of using device properties, the device properties in question are not
suitable for the ACPI environment and consequently they cannot belong to a valid
property set.

Property Sets and Device Tree Bindings
======================================

It often is useful to make _DSD return property sets that follow Device Tree
bindings.

In those cases, however, the above validity considerations must be taken into
account in the first place and returning invalid property sets from _DSD must be
avoided.  For this reason, it may not be possible to make _DSD return a property
set following the given DT binding literally and completely.  Still, for the
sake of code re-use, it may make sense to provide as much of the configuration
data as possible in the form of device properties and complement that with an
ACPI-specific mechanism suitable for the use case at hand.

In any case, property sets following DT bindings literally should not be
expected to automatically work in the ACPI environment regardless of their
contents.

References
==========

.. [1] https://www.uefi.org/sites/default/files/resources/_DSD-device-properties-UUID.pdf
.. [2] https://www.uefi.org/sites/default/files/resources/_DSD-hierarchical-data-extension-UUID-v1.1.pdf
