The firmware-overrides element is the root element. An empty firmware-overrides element implies there are no firmware overrides for a given platform. The firmware-overrides element can have any number of attribute or group elements. A group element defines a logical collection of firmware-overrides, and sub-groups of the same. A group element contains a name element and any number of attribute + group elements, but it must have at least one element other than the name element. An attribute element must have an id element, and up to one each of a description element, display-name element, targetRestriction element. It may also have either a numericOverride element (if signed/unsigned number) or enumerationOverride element (if enumeration), in that order. A numeric override limits the set of values an attribute can be set to. A numericOverride element must have a start and end element in any order. A target restriction restricts the attribute to apply only to the target indicated by the sub-restrictions. A targetRestriction element may have up to one each of a type, node, position, and unit element, in any order, provided at least one of those appears. This schema cannot easily restrict the latter condition, so the code must ensure at least one child element is present. An enumerationOverride allows an attribute to change the behavior of the underlying enumeration. An enumerationOverride element can have one allowedEnumerator element, any number of enumeratorOverride elements, or a union of those. An allowedEnumerator restricts which enumerators can be used by the attribute.An allowedEnumerators element requires one or more name elements. An enumeratorOverride allows an attribute to change the default text associated with an enumerator. An enumeratorOverride requires a name element and a display-name element, descriptionElement, or union of both. An id element provides a symbolic attribute ID that maps to a valid attribute in targeting A description element provides a longer help text for an attribute, enumeration, etc. A display-name element provides a short name for an enumeration, attribute, etc. A type element restricts the attribute to a specific named attribute type. A start element gives the first value, inclusive, of one of the valid ranges for a numerical attribute. It cannot fall outside of the base range allowed for the given attribute type, and must be at least one less than the max of the base range. An end element gives the last value, inclusive, of one of the valid ranges for a numerical attribute. It cannot fall outside of the base range allowed for the given attribute type, and must be at least one less than the max of the base range. A name element gives the name of the attribute group, etc. A unit element allows an attribute to restrict its scope to a specific target unit. If a position element is specified in a targetRestriction along with a unit, then the unit's chip's position must match that as well. A position element allows an attribute to restrict its scope to a specific position. Only applicable for targets with positions, unless used in conjuction with the unit element. A node element allows an attribute to restrict its scope to a specific node.