dsd

Created 7 years ago
Maintained by ahs3
experimental tools for registering _DSD device properties
Members 1
dsd -- a command line tool for _DSD device property registrations
-----------------------------------------------------------------
This is a simple command line tool to help in the collection,
registration and maintenance of entries describing the device properties
allowed via the _DSD method in ACPI [0] -- and in Device Tree (DT).

The issue is that there is a desire to share device properties not only
across devices (e.g., is more than one "mac-address" really needed?), but
between the users of ACPI via _DSD, and possibly the users of Device Tree
(DT), where the key-value model is used extensively.  

While DT documentation seems to be reasonably well cared for (at least in
the Linux kernel documentation) and there is a process for maintaining the
device property definitions, the same is not true of ACPI.  In fact, device
properties as used by _DSD are maintained completely outside of the 
specification, and there is no history of maintaining -- or registering --
them as there is for DT, since this is all relatively new to ACPI.

However, regardless of its quality, keeping documentatation in the Linux 
kernel does present some problems.  For one, firmware developers are not
likely to look at the Linux source for information on the device properties
they might want to use or need to define.  The OS is not really where their
focus lies.  For two, sharing device properties with the Windows OS becomes
very difficult; asking Microsoft engineers to go use the Linux source code
as reference material puts them in an untenable position.

What this tool -- dsd -- is attempting to do is provide a standard, neutral
location and format for the definition of these properties, so that anyone
that needs to can easily get to them, register new ones, or share existing
properties.

Each property set is described in a text file, using a simple formal
language described in [1].  This can in turn be stored in a database
created by dsd, as described in [2].  The dsd command provides several
functions for dealing with this database of device properties:

   -- initialize the data base
   -- verify a property-set text file is correct
   -- queue a property-set text file for review and possible inclusion
   -- approve a property-set text file for inclusion, and update the
      database accordingly
   -- list the property-sets queued for approval
   -- list the property-sets that have been approved
   -- list the current configuration variable settings

Additional functions can be added (all the source is provided), and should
this project work out, more will be -- for example, summaries of all of
the properties for a given device, or analysis indicating whether or not
a property is needed and by what devices, or perhaps even more clever things.


Building the tool
-----------------
The dsd command is all Python 3.  From this directory, just run it:

   % ./dsd

There is no formal install at this time.  Run the command:

   % ./dsd help

to show what options are available.


References
----------
[0] For a description of _DSD, see:

    http://www.uefi.org/sites/default/files/resources/_DSD-implementation-guide-toplevel.htm

    For the device properties UUID of _DSD, see:

    http://www.uefi.org/sites/default/files/resources/_DSD-device-properties-UUID.pdf

[1] documentation/formal_language.txt

[2] documentation/database_rules.txt

[3] documentation/process_rules.txt -- how to submit a property set for
    possible inclusion