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>