ahs3
Al Stonemaintainer
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