Initial import of Microsemi Driver
Change-Id: I431d5f2c18e0b66a84c36273c3d9f0b84f223841
Added in BUCK files for building driver
Change-Id: I70681327f5b89f67e904c45d5974ab393652d51f
Corrected some syntax errors
Change-Id: I11150cc499c212005f80619e3900e747f1c23d96
Updated pom file to clean build
Change-Id: I6613ddc9e6802aa882e716cf04df210249870835
Added in utility functions for EA1000 Init
Change-Id: I51ffe0cf0daf9ffcea0e2479ee9982fcd1755440
Added YMS code to Microsemi Driver
Change-Id: I6f2a14e454c6909bf9e9f6025321c74c98c13c72
Updated driver to work with YMS and YCH
Change-Id: If7dbe3cd5bd1b6f902d09d6b2dc3895605d70f70
Implemented IetfSystemManager as a service and call on YMS as a service
Change-Id: If1c5e8482b1f53f578a3b0b770accd50024111cf
Moved YMS calls over in to Yang Service implementation
Change-Id: I044aad06f1ef7452bc48e88987787a683666cd72
improved unit test for IetfSystemManager
Change-Id: I48fbf831e7e5ca0e1ef3de8288e56da1b5ebb7a4
Major changes to IetfSystemManager to work in live system
Change-Id: I6e3aa118ba422151f314b9a666860d90905c9929
Added in retry mechanism for DeviceDescription to wait for YCH
Change-Id: If8e0f2c2f315ffd6db15627a11382a00217dd262
Added in implementation of MseaSaFiltering and unit tests
Change-Id: I34bf888e0e732bd4664d1fb8ef5abb679b1506fe
Updated driver with unit tests for MseaSaFiltering
Change-Id: I7ea2407a546622ff55d1ab21610c45697546d632
Modified removeFlowRules of Ea1000FlowRuleProgrammable
Change-Id: Ibb4a555f61887a8e6e42af588bb42f7b70f58efb
Added in manager for MseaUniEvc service with unit tests
Change-Id: Idc5853f46051548973f52a0659f7f88982ff960c
Implemented getFlowEntries() for EVCs from EA1000
Change-Id: Ie85dadfa7760f0b30a9bdf6ccd09cca9f097fff9
Added in translation of FlowRules in to EVC on EA1000
Change-Id: Icfb65171c3300c96b3ca4e18cbd327f0ed2190be
Added in handling of FlowRule deletion including complex ceVlanMaps
Change-Id: I7fd0bb0ef04d1b40e4b7d6a6db7f7ee662329780
Updated Service entries for new onos-yang-tools
Change-Id: I44e655202f3a45073e1e16f83737caed6e01afa8
Revert "Updated Service entries for new onos-yang-tools"
This reverts commit 642b550ef1de12ed59bad2eaa3a2da414d2e5e59.
Improved timeout mechanism for YANG model loading
Change-Id: If744ecd206372e822edf2b736c83226321a12256
Minor edits of EVC creation
Change-Id: Ib0a4763deaf6dce37625ba77f5095b39cd98272d
Added in CustomEvc and supporting classes
Change-Id: Iad60eb1bcd48d2aec55b894b2d419b51852c3b2f
Created CeVlanUtils to resolve loading problem
Change-Id: I0d63931ad2c5ad2725861ebc7dccc4d5fe7b9298
Modified startup check
Change-Id: I6e6bcfa7e615044cb08fe7ee2f8a6c8b89aabb21
Modified handlin of flow rules
Change-Id: I965a79c23298866122aeb94c6d9d584aafee3bd5
Fixed problem with ceVlanMap
Change-Id: If1458c35d0b95b5b25b6636f098292f9e91c06c6
Minor Pom edits
Change-Id: I5cefb18674aa04b1f50bd7e2306260c1c3ad3814
Commented out extension references in YANG files to avoid onos-yang-tools problems
Change-Id: I32fdb34c4f476f495fe28e75d0f410aaf14e2ec1
Corrected error in removing 0 in CeVlanMapUtils
Change-Id: I8cd1fd02788b81c2613364d5639ef6e090057f80
Changes in YMS to accomodate EA1000 driver
Change-Id: I6ae2b9bd2be49eae8d4ad2f929dfe3214c514550
diff --git a/drivers/microsemi/ea1000yang/src/main/yang/fpga-internal.yang b/drivers/microsemi/ea1000yang/src/main/yang/fpga-internal.yang
new file mode 100644
index 0000000..87fabb1
--- /dev/null
+++ b/drivers/microsemi/ea1000yang/src/main/yang/fpga-internal.yang
@@ -0,0 +1,266 @@
+module fpga-internal {
+
+ /*** NAMESPACE / PREFIX DEFINITION ***/
+
+ namespace "http://www.microsemi.com/fpga-int";
+ prefix "fpga-int";
+
+ /*** META INFORMATION ***/
+
+ organization
+ "Microsemi Inc., FTD Division";
+
+ contact
+ "Web URL: http://www.microsemi.com/
+ E-mail: info@microsemi.com
+ Postal: Microsemi Corporation Corporate Headquarters
+ One Enterprise Aliso Viejo,
+ CA 92656
+ U.S.A.
+ Phone: +1 949 380 6100
+ Fax: +1 949 215-4996";
+
+ description
+ "This YANG module add internal procedures to access FPAA hardware
+
+ Copyright 2015 Microsemi Inc.
+ All rights reserved.";
+
+ revision "2015-11-30" {
+ description
+ "Initial version - Sean Condon, Microsemi";
+ }
+
+ typedef sixteen-bit-hex {
+ type string {
+ pattern '0x[0-9a-fA-F]{4}';
+ }
+
+ description
+ "A 16-bit address represented as a hexadecimal number";
+ }
+
+ typedef thirtytwo-bit-hex {
+ type string {
+ pattern '0x[0-9a-fA-F]{8}';
+ }
+
+ description
+ "A 32-bit address represented as a hexadecimal number";
+ }
+
+ typedef thirtytwobit-data {
+ type string {
+ pattern '([0-9a-fA-F]{8}(:[0-9a-fA-F]{8})*)?';
+ }
+
+ description
+ "A set of 32 bit data values represented as colon separated
+ hex strings e.g. 'A1B2C3D4:B2C3D4F5:C3D4E5F6'";
+ }
+
+ typedef select-ram-enum {
+ type enumeration {
+ enum pkt-store-sel {value 0;}
+ enum probe-store-sel {value 1;}
+ enum xconn-store-sel {value 2;}
+ enum rmep-err-store-sel {value 3;}
+ enum rx-lmep-map-sel {value 4;}
+ enum cpu-sys-capt-fifo-sel {value 5;}
+ enum rmep-ram-sel {value 6;}
+ enum xconn-ram-sel {value 7;}
+ enum rmep-err-ram-sel {value 8;}
+ enum tx-lmep-map-sel {value 9;}
+ enum ext-sram-sel {value 10;}
+ enum car-rmac-sel {value 11;}
+ enum sys-mac-sel {value 12;}
+ enum rx-carr-data-fifo-sel {value 13;}
+ enum line-stats-ram-sel {value 14;}
+ enum cpu-sys-capt-info-fifo-sel {value 15;}
+ enum vlan-info-ram-sel {value 16;}
+ enum lbm-store-sel {value 17;}
+ enum lbr-ram-sel {value 18;}
+ enum mc-lbr-store-sel {value 19;}
+ enum port-mac-ram-sel {value 20;}
+ enum pm-db-ram-sel {value 22;}
+ enum tx-lb-ram-sel {value 24;}
+ enum tlv-ram-sel {value 25;}
+ enum cpu-capt-fifo-sel {value 26;}
+ enum cpu-capt-info-fifo-sel {value 27;}
+ enum policer-cfg-ram-sel {value 28;}
+ enum policer-ctxt-ram-sel {value 29;}
+ enum cpu-sys-tx-ram-sel {value 30;}
+ enum policer-stats-ram-sel {value 31;}
+ }
+ }
+
+
+ container fpga-internal {
+ presence "Supports FPGA direct access";
+ }
+
+ rpc read-registers {
+
+ description "Method to read directly from hardware registers";
+ input {
+ choice hex-or-dec {
+
+ description "Enter the starting address in either decimal (0-65535)
+ or hexadecimal (preceeded with 0x)";
+ mandatory true;
+
+ case hex {
+ leaf start-address-hex {
+ type sixteen-bit-hex;
+ }
+ }
+
+ case decimal {
+ leaf start-address-dec {
+ type uint16;
+ }
+ }
+ }
+
+ leaf num-locations {
+ type uint8 {
+ range 1..max;
+ }
+ description "The number of following locations (addresses) to read from";
+ default 1;
+ }
+ }
+
+ output {
+ anyxml data {
+ description "A set of 32 bit data values represented
+ as colon separated 8 character hexadecimal values";
+ }
+ }
+ }
+
+
+ rpc write-registers {
+
+ description "Method to write directly to hardware registers.
+ If a number of data values are given then subsequent
+ locations are written to";
+ input {
+ choice hex-or-dec {
+
+ description "Enter the starting address in either decimal (0-65535)
+ or hexadecimal (preceeded with 0x)";
+
+ case hex {
+ leaf start-address-hex {
+ type sixteen-bit-hex;
+ }
+ }
+
+ case decimal {
+ leaf start-address-dec {
+ type uint16;
+ }
+ }
+ }
+
+ leaf value-hex-32 {
+ type thirtytwobit-data;
+ description "A set of 32 bit data values represented
+ as colon separated 8 character hexadecimal values
+ e.g. ffffffff:ffffffff:ffffffff
+ The number of locations written to will be
+ determinted by the number of such values given";
+ }
+ }
+ }
+
+ rpc read-ram {
+
+ description "Method to read directly from hardware RAM";
+ input {
+ leaf ram {
+ type select-ram-enum;
+ mandatory true;
+ description "The type of RAM to read from";
+ }
+
+ choice hex-or-dec {
+
+ description "Enter the starting address in either decimal (0-65535)
+ or hexadecimal (preceeded with 0x)";
+ mandatory true;
+
+ case hex {
+ leaf start-address-hex {
+ type thirtytwo-bit-hex;
+ }
+ }
+
+ case decimal {
+ leaf start-address-dec {
+ type uint32;
+ }
+ }
+ }
+
+ leaf num-locations {
+ type uint8 {
+ range 1..max;
+ }
+ description "The number of following locations (addresses) to read from";
+ default 1;
+ }
+ }
+
+ output {
+ anyxml data {
+ description "A set of 32 bit data values represented
+ as colon separated 8 character hexadecimal values";
+ }
+ }
+ }
+
+ rpc write-ram {
+
+ description "Method to write directly to RAM registers.
+ If a number of data values are given then subsequent
+ locations are written to";
+ input {
+ leaf ram {
+ type select-ram-enum;
+ mandatory true;
+ description "The type of RAM to read from";
+ }
+
+ choice hex-or-dec {
+
+ description "Enter the starting address in either decimal (0-65535)
+ or hexadecimal (preceeded with 0x)";
+ mandatory true;
+
+ case hex {
+ leaf start-address-hex {
+ type thirtytwo-bit-hex;
+ }
+ }
+
+ case decimal {
+ leaf start-address-dec {
+ type uint32;
+ }
+ }
+ }
+
+ leaf value-hex-32 {
+ type thirtytwobit-data;
+ description "A set of 32 bit data values represented
+ as colon separated 8 character hexadecimal values
+ e.g. ffffffff:ffffffff:ffffffff
+ The number of locations written to will be
+ determinted by the number of such values given";
+ }
+ }
+ }
+
+}
\ No newline at end of file