Copied Chip Data XML from Hostboot project
Signed-off-by: Zane Shelley <zshelle@us.ibm.com>
Change-Id: I0a230be8ba2840768e2097fd4e479c8feb8fc452
diff --git a/xml/node.xsd b/xml/node.xsd
new file mode 100644
index 0000000..5edcb32
--- /dev/null
+++ b/xml/node.xsd
@@ -0,0 +1,223 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="unqualified">
+
+<!-- Root element: attn_node -->
+<xsd:element name="attn_node">
+ <xsd:complexType>
+
+ <xsd:sequence>
+ <!-- Note that local_fir will eventually generate register,
+ capture_group, and rule, which is why those are optional in
+ the schema, but are still required in the binary files. -->
+ <xsd:element name="local_fir" type="local_fir" minOccurs="0"
+ maxOccurs="255"/>
+ <xsd:element name="register" type="register" minOccurs="0"
+ maxOccurs="255"/>
+ <xsd:element name="capture_group" type="capture_group" minOccurs="0"
+ maxOccurs="255"/>
+ <xsd:element name="rule" type="rule" minOccurs="0" maxOccurs="255"/>
+ <xsd:element name="bit" type="bit" minOccurs="1" maxOccurs="255"/>
+ </xsd:sequence>
+
+ <xsd:attribute name="name" type="name_type" use="required"/>
+ <xsd:attribute name="model_ec" type="model_ec_type" use="required"/>
+ <xsd:attribute name="reg_type" type="reg_type_enum" use="required"/>
+
+ </xsd:complexType>
+</xsd:element>
+
+<!-- Element: chip/register -->
+<xsd:complexType name="register">
+
+ <xsd:sequence>
+ <xsd:element name="instance" type="instance" minOccurs="1"
+ maxOccurs="255"/>
+ </xsd:sequence>
+
+ <xsd:attribute name="name" type="name_type" use="required"/>
+ <xsd:attribute name="access" type="access_enum" use="optional"/>
+
+</xsd:complexType>
+
+<!-- Element: chip/register/instance -->
+<!-- Element: chip/local_fir/instance -->
+<xsd:complexType name="instance">
+ <xsd:attribute name="reg_inst" type="inst_type" use="required"/>
+ <xsd:attribute name="addr" type="addr_type" use="required"/>
+</xsd:complexType>
+
+<!-- Element: chip/capture_group -->
+<xsd:complexType name="capture_group">
+
+ <xsd:sequence>
+ <xsd:element name="capture_register" type="capture_register"
+ minOccurs="1" maxOccurs="255"/>
+ </xsd:sequence>
+
+ <xsd:attribute name="node_inst" type="int_range" use="required"/>
+
+</xsd:complexType>
+
+<!-- Element: chip/capture_group/capture_register -->
+<xsd:complexType name="capture_register">
+ <xsd:attribute name="reg_name" type="name_type" use="required"/>
+ <xsd:attribute name="reg_inst" type="int_range" use="required"/>
+</xsd:complexType>
+
+<!-- Element: chip/rule -->
+<xsd:complexType name="rule">
+
+ <xsd:sequence>
+ <xsd:element name="expr" type="expr" minOccurs="1" maxOccurs="1"/>
+ </xsd:sequence>
+
+ <xsd:attribute name="attn_type" type="attn_type_enum" use="required"/>
+ <xsd:attribute name="node_inst" type="int_range" use="required"/>
+
+</xsd:complexType>
+
+<!-- Element: chip/rule/expr -->
+<!-- Element: chip/rule/expr/expr... -->
+<xsd:complexType name="expr">
+
+ <xsd:sequence>
+ <xsd:element name="expr" type="expr" minOccurs="0" maxOccurs="255"/>
+ </xsd:sequence>
+
+ <xsd:attribute name="type" type="expr_type_enum" use="required"/>
+ <xsd:attribute name="value1" use="optional"/>
+ <xsd:attribute name="value2" use="optional"/>
+
+</xsd:complexType>
+
+<!-- Element: chip/bit -->
+<xsd:complexType name="bit">
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:string">
+ <xsd:attribute name="pos" type="int_range" use="required"/>
+ <xsd:attribute name="child_node" type="name_type" use="optional"/>
+ <xsd:attribute name="node_inst" type="int_range" use="optional"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+</xsd:complexType>
+
+<!-- Element: chip/local_fir -->
+<xsd:complexType name="local_fir">
+
+ <xsd:sequence>
+ <xsd:element name="instance" type="instance" minOccurs="1"
+ maxOccurs="255"/>
+ <xsd:element name="action" type="action" minOccurs="1"
+ maxOccurs="255"/>
+ </xsd:sequence>
+
+ <xsd:attribute name="name" type="name_type" use="required"/>
+ <xsd:attribute name="config" type="local_fir_config_enum" use="required"/>
+
+</xsd:complexType>
+
+<!-- Element: chip/local_fir/action -->
+<xsd:complexType name="action">
+
+ <xsd:attribute name="attn_type" type="attn_type_enum" use="required"/>
+ <xsd:attribute name="config" type="action_config_enum" use="required"/>
+
+</xsd:complexType>
+
+<!-- Names must be alphanumeric or underscores, no spaces or other symbols
+ allowed. -->
+<xsd:simpleType name="name_type">
+ <xsd:restriction base="xsd:string">
+ <xsd:pattern value="[a-zA-Z0-9_]+"/>
+ </xsd:restriction>
+</xsd:simpleType>
+
+<!-- A comma separated list of names (see name_type for name definition). -->
+<xsd:simpleType name="model_ec_type">
+ <xsd:restriction base="xsd:string">
+ <xsd:pattern value="[a-zA-Z0-9_]+(,[a-zA-Z0-9_]+)*"/>
+ </xsd:restriction>
+</xsd:simpleType>
+
+<!-- Instance values are integers from 0-255. -->
+<xsd:simpleType name="inst_type">
+ <xsd:restriction base="xsd:integer">
+ <xsd:minInclusive value="0"/>
+ <xsd:maxInclusive value="255"/>
+ </xsd:restriction>
+</xsd:simpleType>
+
+<!-- Instance values are integers from 0-255. -->
+<xsd:simpleType name="int_range">
+ <xsd:restriction base="xsd:string">
+ <xsd:pattern value="[0-9]+([,:][0-9]+)*"/>
+ </xsd:restriction>
+</xsd:simpleType>
+
+<!-- Instance values are integers from 0-255. -->
+<xsd:simpleType name="addr_type">
+ <xsd:restriction base="xsd:string">
+ <xsd:pattern value="0x([0-9a-fA-F]{8}|[0-9a-fA-F]{16})"/>
+ </xsd:restriction>
+</xsd:simpleType>
+
+<!-- Attention type enum. -->
+<xsd:simpleType name="attn_type_enum">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="CS"/>
+ <xsd:enumeration value="RE"/>
+ <xsd:enumeration value="UCS"/>
+ <xsd:enumeration value="SPA"/>
+ <xsd:enumeration value="HA"/>
+ </xsd:restriction>
+</xsd:simpleType>
+
+<!-- Attention type enum. -->
+<xsd:simpleType name="reg_type_enum">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="SCOM"/>
+ <xsd:enumeration value="IDSCOM"/>
+ </xsd:restriction>
+</xsd:simpleType>
+
+<!-- Attention type enum. -->
+<xsd:simpleType name="access_enum">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="RO"/>
+ <xsd:enumeration value="WO"/>
+ <xsd:enumeration value="RW"/>
+ </xsd:restriction>
+</xsd:simpleType>
+
+<!-- Expression type enum. -->
+<xsd:simpleType name="expr_type_enum">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="reg"/>
+ <xsd:enumeration value="int"/>
+ <xsd:enumeration value="and"/>
+ <xsd:enumeration value="or"/>
+ <xsd:enumeration value="not"/>
+ <xsd:enumeration value="lshift"/>
+ <xsd:enumeration value="rshift"/>
+ </xsd:restriction>
+</xsd:simpleType>
+
+<!-- Local FIR config. -->
+<xsd:simpleType name="local_fir_config_enum">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value=""/>
+ <xsd:enumeration value="W"/>
+ <xsd:enumeration value="2"/>
+ <xsd:enumeration value="W2"/>
+ </xsd:restriction>
+</xsd:simpleType>
+
+<!-- Local FIR action config. -->
+<xsd:simpleType name="action_config_enum">
+ <xsd:restriction base="xsd:string">
+ <xsd:pattern value="[0-1]{2,3}"/>
+ </xsd:restriction>
+</xsd:simpleType>
+
+</xsd:schema>